カテゴリー
ブログ

3D課題Unity2

こんにちは、コードオブジーニアス講師の青柳です。
今回も「3D課題Unity」のお話をさせて頂きます。

前回は「オブジェクトの落下や跳ね返り」の動画をお届けしましたが、やはりアプリ制作の際には「操作」を行いたいですよね。
今回はその基礎、第一ステップとして重要なお話を紹介させて頂きます。

赤いお皿の上にのった、お餅のような白ブロック。
今日はこの白ブロックをキーボードの「左カーソル」「右カーソル」で移動させるというプログラムを作ってみました。

※「カーソルでオブジェクトを左右に動かす」という処理の、最も簡単な書き方(旧方式)になります

よし、実行して右カーソルを押すぞ!

……あれ? お餅が消えた?

おかしい、確かにプログラムはあっている筈です。
何度確認しても 「右カーソルを押したら白ブロックを右に動かす」という記述になっています。
なぜブロックは消えてしまったのでしょうか。

その理由は、カメラをぐっと引いて見ると分かります。

画面の右の端、小さな白ブロックがあるのが見えるでしょうか。
白ブロックは消えていませんでした。ただ、目にも留まらぬスピードで画面からはみ出してしまったのです。

「右カーソルを押したら右へ動かす」という命令そのものは正常に実行されていましたが、そのスピードについて考慮していなかった事が原因です。
相手が人間であれば「ちょうど良いスピードで動いてよ」と言えばいいですが、プログラムが・機械が相手となると、その「ちょうど良いスピード」も数字でしっかりと明記しなければなりません。

※ちょうど良いスピードに落とした例です

スピードの数値(プログラム上の変数spd)を小さく設定すると、ちょうど良いスピードにする事が出来ました。

しかし、これで完璧・正解かと言うとそれは違います。
そして私としても「これが正解!」と明確に提示する事は出来ません。
なぜなら……
 「だんだん加速する動きにしたい」
 「赤い皿の中だけで動くようにしたい」
 「赤い皿から出たらブロックが消滅するようにしたい」
などなど、自分がどんなものを作りたいかによって、行うプログラムが変わってくるからです。

※上下左右移動とジャンプ、そして赤いお盆から外れたら落下するように設定した例

今後とも、3D開発をこれから始めたい人向けの紹介記事を続けて行く予定です。
実際のプログラミングに関する事はレッスン・テキストで行いますので、考え方やよくあるミスなど、そういった解説を中心にする予定ですので、よろしくお願い致します。