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

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

作成:2014-09-06 10:41
更新:2014-09-06 10:41

■GetAxisによる移動

GetKeyによる移動は簡単に使えて便利ですが、しかし万能ではありません。例えば、パソコンにジョイスティックを接続して操作したい、なんて場合には使えませんね。

それにUnityではゲームの操作に使うキーの設定をカスタマイズできるようになっていますが、GetKeyで直接Keyを指定して操作するようにしていると、こうしたゲームのカスタマイズ機能は使えないことになります。

実は、ゲーム操作のカスタマイズを使ってゲームのキャラクタを動かすには、GetKeyではなく、別のメソッドを利用する必要があるのです。それが「GetAxis」です。これは、以下のように利用します。
float 変数 = Input.GetAxis( 取り出す値の名前 );
GetAxisは、Unityのゲームに入力されるさまざまな入力情報をまとめて、必要な種類の値を返すようにしてくれるメソッドです。例えば、キャラクタを上下左右に動かしたければ、「水平方向への移動、垂直方向への移動」といった情報をGetAxisで取り出します。これは引数に以下のような名前を指定してやります。

"Horizontal"――水平方向の移動量を示します。
"Vertical"――垂直方向の移動量を示します。

これらの値は、-1〜1の実数(float値)になります。正の値なら上や右へ、負の値なら下や左への移動と判断すればいいでしょう。

では、実際の利用例を下にあげておきましょう(例によってUpdateのみ掲載します)。GetAxis("Horizontal")GetAxis("Vertical")を使って上下左右の移動量を取り出し、これをVector3の値に加算してtransform.positionに設定しています。これでキーやジョイスティックなどによる入力でゲームオブジェクトを動かせるようになります。

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

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

●プログラム・リスト●

    void Update () {
        this.transform.Rotate(1, 1, 1);
        float x = Input.GetAxis("Horizontal");
        float y = Input.GetAxis("Vertical");
        Vector3 v = this.transform.position;
        v.x += x * 0.05;
        v.z+= y * 0.05; 
        this.transform.position = v;
    }
※関連コンテンツ

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