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

キーボードで操作しよう! (2/5)

作成:2014-05-03 10:25
更新:2014-05-03 10:25

■キーで相対的に移動する

では、キーに応じてゲームオブジェクトを動かしましょう。これには、大きく2つのやり方が考えられます。いずれも、Update関数を使い、その中でGetKeyをチェックします。

下のリスト欄に簡単なサンプルを挙げておきました。「I」「J」「K」「L」キーでゲームオブジェクトを前後左右に移動するものです。スクリプトを組み込んだゲームオブジェクトをキーで動かします。

このやり方は「ゲームオブジェクトから見た相対的な方向で移動する」というものです。つまり、「前に進む」「右に移動する」というように、そのゲームオブジェクト自身から見た方向で移動を行うやり方です。

ここでは、transform.Translateを使って移動を行います。その引数には、以下のようなものを利用した値を指定しています。

transform.forward――前に1だけ移動するVector3オブジェクトが保管されます。
transform.right――右に1だけ移動するVector3オブジェクトが保管されます。

Vector3オブジェクトは、掛け算ができます。transform.right * 0.1とすると、transform.rightの10分の1のベクトル量のVector3が得られます。これで、0.1だけ右に移動するVector3が得られるわけです。

「じゃあは、左は?」と思った人。transform.right * -0.1というように、マイナスをかければ左方向になるんですよ。前後の移動も同じようにtransform.forwardを使って計算すればいいのです。

これで、ゲームオブジェクト自身から見た前後左右の移動は行えるようになります。これは、ヒューマノイド(人間型)のキャラクタを動かすようなときに用いられるやり方です。

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

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

●プログラム・リスト●

function Update () {
    if (Input.GetKey(KeyCode.J)){
        transform.Translate(transform.right * -0.1);
    }
    if (Input.GetKey(KeyCode.L)){
        transform.Translate(transform.right * 0.1);
    }
    if (Input.GetKey(KeyCode.I)){
        transform.Translate(transform.forward * 0.1);
    }
    if (Input.GetKey(KeyCode.K)){
        transform.Translate(transform.forward *- 0.1);
    }
}
※関連コンテンツ

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