パープルハット

※当サイトではGoogleアドセンス広告を利用しています

Unity キーボードやマウスからの入力





キーボードからの入力

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("ホイールクリック");
        }
    }
}