libro
www.tuyano.com
C#ではじめるUnityプログラミング入門

キーボードによる操作 (2/5)

作成: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が回転します。向きを変えると、そっちの方向に進むようになります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

    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);
        }
    }
※関連コンテンツ

「C#ではじめるUnityプログラミング入門」に戻る