まくろぐ

Unityスクリプト: キー入力を取得する (UnityEngine.GetKey)

更新:
作成:

キーが押されているか調べる (GetKey)

UnityEngine.GetKey() 関数を使用すると、指定したキーが現在押されているかどうかを調べることができます。 次の例では、Update メソッド内で上カーソルキーと下カーソルキーが押されているかどうかを調べ、入力状態によって Cube オブジェクトを上下に動かしています。

using UnityEngine;

public class Sample : MonoBehaviour {
    private GameObject _cube;
    private void Start() {
        _cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
    }

    private void Update() {
        float amount = 0;
        if (Input.GetKey(KeyCode.UpArrow)) {
            amount = 3;
        } else if (Input.GetKey(KeyCode.DownArrow)) {
            amount = -3;
        }
        _cube.transform.Translate(0, amount * Time.deltaTime, 0);
    }
}

継続的にオブジェクトの位置を動かす場合、上記のように移動量に Time.deltaTime をかけることで、1 秒あたりの移動量を示すことができます。

単発のキー入力 (GetKeyDown/ GetKeyUp)

UnityEngine.GetKey() 関数の代わりに、GetKeyDown()GetKeyUp() 関数を使うと、指定したキーが押された瞬間、あるいは離された瞬間を調べることができます。

using UnityEngine;

public class Sample : MonoBehaviour {
    private GameObject _cube;
    private void Start() {
        _cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
    }

    private void Update() {
        float amount = 0;
        if (Input.GetKeyDown(KeyCode.UpArrow)) {
            amount = 1;
        } else if (Input.GetKeyDown(KeyCode.DownArrow)) {
            amount = -1;
        }
        _cube.transform.Translate(0, amount, 0);
    }
}

単発のキー入力の場合は、移動量に Time.deltaTime をかけて調整する必要はないことに注意してください。

関連記事

まくろぐ
サイトマップまくへのメッセージ