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

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

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

■Input.GetAxisで移動方向を得る

これで、キーを使って動かす基本はわかりました。が、実はこのやり方は問題があります。なぜなら、アプリケーションのキーの設定に対応できないからです。

Unityでは、基本的な操作をキーに設定することができます。Unityのプロジェクトをビルドしてできたアプリケーションでは、起動時にアプリの環境設定が行えるようになっています。そこで、キーの割当を設定したりできるようになっているんですね。水平および垂直方向の移動、ゲームのボタン、ジャンプキーなど、基本的な操作をどのキーに割り当てるかを変更できるのです。

が、Intput.GetKeyで直接キーを指定して動くようにすると、このキー割り当ての機能が使えません。せっかくですから、Unityのキー設定をそのまま使って動くようにしたいものですね。

下に、スクリプトの修正版を挙げておきます。これは、I, J, K, Lキーや矢印キーでゲームオブジェクトを動かすことができます。Unityのキー設定をもとにキー入力を取り出し処理しているのです。これを行っているのが以下の部分です。
var x:float = Input.GetAxis("Horizontal") * 0.1;
var y:float = Input.GetAxis("Vertical") * 0.1;
Input.GetAxisメソッドが、そのためのメソッドです。これは引数で"Hoizontal", "Vertical"といったテキストが指定されていますが、これらがそれぞれ「横方向の移動量」「縦方向の移動量」を示します。

キー設定されたキーを押すと、押したキーによって縦方向および横方向の移動量が設定されます。従って、これらの値を取り出してそのままtransform.positionxyに加算すれば、押したキーの方向に動かすことができるのです。

GetAxisによって得られる値は、ざっと-1~1の間です。この値を直接設定すると動きが速すぎるので、ここでは0.1をかけて値を調整し移動させています。

(※下図は、起動時に現れるキーの設定画面)

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

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

●プログラム・リスト●

function Update () {
    transform.Rotate(new Vector3(1, 1, 1));

    var x:float = Input.GetAxis("Horizontal") * 0.1;
    var y:float = Input.GetAxis("Vertical") * 0.1;
    
    transform.position.x += x;
    transform.position.y += y;
}

※関連コンテンツ

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