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

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

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

■GetKeyDown/GetKeyUpの利用

Input.GeyKeyは、キーの状態をチェックするのに便利なメソッドです。が、これはキーを押したままだと、常にtrueと判断されます。「押している間、ずっと〇〇する」みたいな処理にはいいのですが、「〇〇を押したら××する」というような処理をしたいときは困ります。押している間、ずっと処理を実行し続けてしまいますから。

「キーを押したとき、離したとき」に一度だけ処理を実行させる、というような場合に用いられるのが、Inputの「GetKeyDown」「GetKeyUp」といったメソッドです。

・押した時だけtrueを返す
Input.GetKeyDown( キーの指定 )

・離したときだけtrueを返す
Input.GetKeyUp( キーの指定 )

使い方はGetKeyとほぼ同じです。引数にチェックしたいキーのKeyCodeを指定して呼び出します。これらのメソッドは、キーを押したり離した時に一度だけtrueを返し、以後はそのままキーを押したまま、離したままであってもfalseしか返しません。

では、これらを利用した例を下にあげておきましょう。Updateメソッドを書き換えて動かしてください。今回は、キーを押したときだけ移動し、押しっぱなしにしても動きません。キーを押すと、1回1回、ちょこっと動きます。先ほどのサンプルと動作の違いを確かめてみましょう。

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

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

●プログラム・リスト●

    void Update () {
        if (Input.GetKeyDown(KeyCode.RightArrow)){
            this.transform.Rotate(new Vector3(0, 0, -10f));
        }
        if (Input.GetKeyDown(KeyCode.LeftArrow)){
            this.transform.Rotate(new Vector3(0, 0, 10f));
        }
        if (Input.GetKeyDown(KeyCode.UpArrow)){
            this.transform.Translate(this.transform.up * 0.1f);
        }
        if (Input.GetKeyDown(KeyCode.DownArrow)){
            this.transform.Translate(this.transform.up * -0.1f);
        }
    }
※関連コンテンツ

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