キーが押されているか調べる (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
をかけて調整する必要はないことに注意してください。