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()は、入力された軸に補正をかけず、-101でを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クラス~/