キーボードで操作しよう! (4/5)
作成:2014-05-03 10:31
更新:2014-05-03 10:31
更新:2014-05-03 10:31
■Input.GetAxisで移動方向を得る
これで、キーを使って動かす基本はわかりました。が、実はこのやり方は問題があります。なぜなら、アプリケーションのキーの設定に対応できないからです。
Unityでは、基本的な操作をキーに設定することができます。Unityのプロジェクトをビルドしてできたアプリケーションでは、起動時にアプリの環境設定が行えるようになっています。そこで、キーの割当を設定したりできるようになっているんですね。水平および垂直方向の移動、ゲームのボタン、ジャンプキーなど、基本的な操作をどのキーに割り当てるかを変更できるのです。
が、Intput.GetKeyで直接キーを指定して動くようにすると、このキー割り当ての機能が使えません。せっかくですから、Unityのキー設定をそのまま使って動くようにしたいものですね。
下に、スクリプトの修正版を挙げておきます。これは、I, J, K, Lキーや矢印キーでゲームオブジェクトを動かすことができます。Unityのキー設定をもとにキー入力を取り出し処理しているのです。これを行っているのが以下の部分です。
キー設定されたキーを押すと、押したキーによって縦方向および横方向の移動量が設定されます。従って、これらの値を取り出してそのままtransform.positionのxやyに加算すれば、押したキーの方向に動かすことができるのです。
GetAxisによって得られる値は、ざっと-1~1の間です。この値を直接設定すると動きが速すぎるので、ここでは0.1をかけて値を調整し移動させています。
(※下図は、起動時に現れるキーの設定画面)
Unityでは、基本的な操作をキーに設定することができます。Unityのプロジェクトをビルドしてできたアプリケーションでは、起動時にアプリの環境設定が行えるようになっています。そこで、キーの割当を設定したりできるようになっているんですね。水平および垂直方向の移動、ゲームのボタン、ジャンプキーなど、基本的な操作をどのキーに割り当てるかを変更できるのです。
が、Intput.GetKeyで直接キーを指定して動くようにすると、このキー割り当ての機能が使えません。せっかくですから、Unityのキー設定をそのまま使って動くようにしたいものですね。
下に、スクリプトの修正版を挙げておきます。これは、I, J, K, Lキーや矢印キーでゲームオブジェクトを動かすことができます。Unityのキー設定をもとにキー入力を取り出し処理しているのです。これを行っているのが以下の部分です。
var x:float = Input.GetAxis("Horizontal") * 0.1;Input.GetAxisメソッドが、そのためのメソッドです。これは引数で"Hoizontal", "Vertical"といったテキストが指定されていますが、これらがそれぞれ「横方向の移動量」「縦方向の移動量」を示します。
var y:float = Input.GetAxis("Vertical") * 0.1;
キー設定されたキーを押すと、押したキーによって縦方向および横方向の移動量が設定されます。従って、これらの値を取り出してそのままtransform.positionのxやyに加算すれば、押したキーの方向に動かすことができるのです。
GetAxisによって得られる値は、ざっと-1~1の間です。この値を直接設定すると動きが速すぎるので、ここでは0.1をかけて値を調整し移動させています。
(※下図は、起動時に現れるキーの設定画面)
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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プログラミング入門」に戻る