キーボードからの入力
InputクラスのGetKey or GetKeyDown or GetKeyUpにより入力の有無をbool型で受け取ることができるのでこれを利用します。
この3種類の関数の違いは以下の通りです。
GetKey | 入力している間trueを返す |
GetKeyDown | 入力した瞬間にtrueを返す |
GetKeyUp | 離した瞬間にtrueを返す |
どのボタンを入力したか判断するためにはこれらの関数の引数で指定するのですが、
- KeyCode(enum型)による指定
- 文字列による指定
の2種類の方法があります。
KeyCodeからの指定
大まかなキーボードとKeyCodeの対応について表にまとめました。詳しくはUnity公式ドキュメント「KeyCode」に書かれています。
KeyCode | 対応するキーボード |
---|---|
アルファベットの大文字 | 対応するアルファベット |
Alpha N | Nに対応する数字 例)Alpha0なら数字の0に対応 |
実際にプログラムに組み込んだ例はこちらです。
using UnityEngine; public class InputKeyTest1 : MonoBehaviour { void Update() { if (Input.GetKeyDown(KeyCode.A)) { Debug.Log("Aを押した"); } if (Input.GetKey(KeyCode.Alpha2)) { Debug.Log("2が押され続けている"); } if (Input.GetKeyUp(KeyCode.RightShift)) { Debug.Log("right shiftから離した"); } } }
実行するとこのようになります。
文字列による指定
大まかなキーボードと文字列の対応について表にまとめました。公式ドキュメントは見つかりませんでしたがUnity公式フォーラムに詳しく書かれていました。
KeyCode | 対応するキーボード |
---|---|
アルファベットの小文字 | 対応するアルファベット |
n(n=0~9) | nに対応する数字 |
先ほどKeyCodeで記述したプログラムを文字列で記述すると次のようになります。
using UnityEngine; public class InputKeyTest2 : MonoBehaviour { void Update() { if (Input.GetKeyDown("a")) { Debug.Log("Aを押した"); } if (Input.GetKey("2")) { Debug.Log("2が押され続けている"); } if (Input.GetKeyUp("right shift")) { Debug.Log("right shiftから離した"); } } }
マウスからの入力
InputクラスのGetButton or GetButtonDown or GetButtonUpにより入力の有無をbool型で受け取ることができるのでこれを利用します。
この3種類の関数の違いは以下の通りであり、キーボードの場合と同じです。
GetButton | 入力している間trueを返す |
GetButtonDown | 入力した瞬間にtrueを返す |
GetButtonUp | 離した瞬間にtrueを返す |
また、これらの関数には引数として数字0~2を設定することができます。引数による違いは表のとおりです(参考:Unity公式ドキュメント「Input.GetMouseButtonDown」)。
引数の値 | 対応するコマンド |
---|---|
0 | 左クリック スマホでのタッチにも対応 |
1 | 右クリック |
2 | ホイールクリック |
プログラム例
それぞれ
- 左クリックしている間
- 右クリックした瞬間
- ホイールクリックから離した瞬間に動作します。
using UnityEngine; public class InputMouseTest : MonoBehaviour { void Update() { if (Input.GetMouseButton(0)) { Debug.Log("左クリック"); } if (Input.GetMouseButtonDown(1)) { Debug.Log("右クリック"); } if (Input.GetMouseButtonUp(2)) { Debug.Log("ホイールクリック"); } } }