Inputクラスについて
Inputクラス
UnityのInputクラスにはキー入力やボタン入力を検知するメソッドが複数用意されています。
主要なところでは以下のものがあります。
・Input.GetKey(キーボードからの入力)
・Input.GetButton(インプットマネジャーで管理された入力)
・Input.GetAxis(方向キーの入力)
・Input.GetMouseButton(マウスボタンの入力)
Input.GetKey
GetKey系のメソッドは引数の渡し方が2種類あります。
■ひとつは列挙型を引数にとるケースです。
GetKey()の中にキーに対応するKeyCodeを指定します。
戻り値がbool型であるため、一般的にはif文と組み合わせて使用します。
if (Input.GetKey(KeyCode.Space)){ Debug.Log("Spaceキーを押した"); }
■もうひとつはstring型の文字列を引数にとります。
GetKey()の中にキーの名前を直接記述します。戻り値は同じくbool型です。
if (Input.GetKey("Space")){ Debug.Log("Spaceキーを押した"); }
上記の2つのメソッドは、どちらもキーの押しっぱなしに対応しています。
キーが押されている間は常にtrueが返り続けます。
■キーが離された瞬間を検知したい場合は、Input.GetKeyUp()を使用します。
if (Input.GetKeyUp("Space")){ Debug.Log("Spaceキーを離した"); }
こちらも押しっぱなしには対応していません。
Input.GetButton
■GetButton系のメソッドは、引数がstring型のみとなっています。
if (Input.GetButton("Jump")){ Debug.Log("Jumpに対応するキーを押した"); }
Jumpに対応したキーを押すことで処理が実行されます。
この、キーと引数の文字列の紐づけはInputManagerで行われており、これは変更することも可能です。
UnityのEdit > Project Settings > Input を選択すると、インスペクターにInputManagerが開きます。
上の方にあるJumpの中のNameのプロパティに”Jump”とあります。 また、Positive Buttonのプロパティに”space”とあります。 これにより”Jump”という文字列と”space”キーの紐づけがされていると確認できます。
他のInputクラスのメソッド同様、 Input.GetButtonDown()で押した瞬間に、 Input.GetButtonUp()で離した瞬間に処理が実行されます。
Input.GetAxisRaw
■Input.GetAxis系のメソッドも引数にはstring型の文字列をとります。
GetKey系やGetButton系との違いは、戻り値がfloat型であることです。
移動速度などの変数と掛け合わせて使用する場合が多いです。
Input.GetAxisRaw()は、入力された軸に補正をかけず、-1か0か1でをfloat型で返します。
Input.GetAxis()は、入力された軸に補正をかけて、-1から1の範囲をfloat型で返します。
float h = Input.GetAxisRaw("Horizontal"); Debug.Log(h); float v = Input.GetAxis("Vertical"); Debug.Log(v);
Input.GetMouseButton
■Input.GetMouseButton系のメソッドはマウスボタンの入力を受け取ります。
引数は0で左クリック、1で右クリック、0で中クリックを判定します。
戻り値はbool型です。
if (Input.GetMouseButton(0)) { Debug.Log("左クリック"); } if (Input.GetMouseButton(1)) { Debug.Log("右クリック"); } if (Input.GetMouseButton(2)) { Debug.Log("中クリック"); }
他のInputクラスのメソッド同様、
Input.GetMouseButtonDown()で押した瞬間に、
Input.GetMouseButtonUp()で離した瞬間に処理が実行されます。
参考URL
https://tech.pjin.jp/blog/2015/09/30/unityのキー入力まとめ-~inputクラス~/