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

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

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

■シーン全体から見た絶対座標の移動

transform.Translateを使った移動は、そのゲームオブジェクトがどっちを向いているかによって進む方向が変わります。なにしろ、「ゲームオブジェクト自身から見た方向」で動くわけですから、どっちを向いているかによって進む方向は変化します。

そうではなくて、ゲームシーンの上下左右に移動するようにしたい、というような場合には、絶対座標(シーンのワールド座標)で移動場所を指定するように処理しないといけません。

下のサンプルは、「I」「J」「K」「L」キーでゲームオブジェクトを上下左右に動かすものです。ここではtransform.Rotateでゲームオブジェクトを回転しながら、キーで上下左右に動かします。ゲームオブジェクトが回転していると、transform.Translateによる移動は不可能です(やると、わけわからない動きになります。何しろ、常に向きが変わってますから)。

ここでは、transform.positionxyの値に加算減算して移動を行っています。transform.positionで位置を直接指定して動かすことで、ワールド座標で前後左右に動かせます。

ただし! カメラの位置によっては、ワールド座標のxyの値をどう動かすか、調整しないといけません。移動の位置をわかりやすくしたければ、カメラの向き(Rotation)をすべてゼロにして、そのカメラに表示されるようにゲームオブジェクト類を配置していくとよいでしょう。こうすれば、xyの値を操作すれば、そのまま画面上の上下左右に動くようになりますよ。

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

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

●プログラム・リスト●

function Update () {
    transform.Rotate(new Vector3(1, 1, 1));
    
    if (Input.GetKey(KeyCode.J)){
        transform.position.x -= 0.1;
    }
    if (Input.GetKey(KeyCode.L)){
        transform.position.x += 0.1;
    }
    if (Input.GetKey(KeyCode.I)){
        transform.position.y += 0.1;
    }
    if (Input.GetKey(KeyCode.K)){
        transform.position.y -= 0.1;
    }
}
※関連コンテンツ

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