キーボードによる操作 (2/5)
作成:2014-09-06 10:36
更新:2014-09-06 10:36
更新:2014-09-06 10:36
■相対的な移動について
これで、「キーを押して動かす」という基本部分はわかりました。更にキー入力を使いこなすためには、もう少し覚えておきたい事柄があります。それらについてまとめておきましょう。
まずは、相対的な移動についてです。先のサンプルでは、ワールド座標からみた絶対的な方向で移動をしていました。が、場合によっては、キャラクタのゲームオブジェクトから見た「前に進む」「右に動く」というような動きが必要な場合もあるでしょう。
こうした動きは、Translateを利用します。Translateは、引数にVector3インスタンスを指定して呼び出しましたね。このVector3インスタンスに、this.transformの「up」「right」プロパティを利用するのです。これらは以下のような値です。
transform.up――ゲームオブジェクトが1だけ前に進む方向を示すVector3インスタンス。
transform.right――ゲームオブジェクトが1だけ右に移動する方向を示すVector3インスタンス。
これらの値を引数に指定してTranslateすることで、「キャラクタから見た前・右への移動」が行えるようになります。――え、「後ろや左はどうするんだ」って? それは、-1をかければいいんですよ!
下に利用例を挙げておきます。Updateメソッドを書き換えて動かしてください。上下の矢印キーでCubeが前後に進みます。左右の矢印キーではCubeが回転します。向きを変えると、そっちの方向に進むようになります。
まずは、相対的な移動についてです。先のサンプルでは、ワールド座標からみた絶対的な方向で移動をしていました。が、場合によっては、キャラクタのゲームオブジェクトから見た「前に進む」「右に動く」というような動きが必要な場合もあるでしょう。
こうした動きは、Translateを利用します。Translateは、引数にVector3インスタンスを指定して呼び出しましたね。このVector3インスタンスに、this.transformの「up」「right」プロパティを利用するのです。これらは以下のような値です。
transform.up――ゲームオブジェクトが1だけ前に進む方向を示すVector3インスタンス。
transform.right――ゲームオブジェクトが1だけ右に移動する方向を示すVector3インスタンス。
これらの値を引数に指定してTranslateすることで、「キャラクタから見た前・右への移動」が行えるようになります。――え、「後ろや左はどうするんだ」って? それは、-1をかければいいんですよ!
下に利用例を挙げておきます。Updateメソッドを書き換えて動かしてください。上下の矢印キーでCubeが前後に進みます。左右の矢印キーではCubeが回転します。向きを変えると、そっちの方向に進むようになります。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | void Update () { if (Input.GetKey(KeyCode.RightArrow)){ this .transform.Rotate( new Vector3(0, 0, -1f)); } if (Input.GetKey(KeyCode.LeftArrow)){ this .transform.Rotate( new Vector3(0, 0, 1f)); } if (Input.GetKey(KeyCode.UpArrow)){ this .transform.Translate( this .transform.up * 0.05f); } if (Input.GetKey(KeyCode.DownArrow)){ this .transform.Translate( this .transform.up * -0.05f); } } |
※関連コンテンツ