Unity解説 Inputクラス
キーボードやゲームパッドなどの入力値の取得
今回はUnityのInputクラスについて説明します。
キーボードやゲームパッドの入力値を取得するやつだね。
はい✨
Inputクラスは入力を扱うUnityで最初から用意されているクラスで、様々な入力形態に対応したメソッドがあります。
まず、簡単な例として、下のスクリプトはキーボードのAを押したときに、「Aが押されました。」とコンソールに出力するものとなります。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class InputClass001 : MonoBehaviour { void Update() { if (Input.GetKeyDown(KeyCode.A)) { Debug.Log("Aが押されました。"); } } }
空のオブジェクトにアタッチして、ゲームを実行してみましょう。
キーボードのAを押すと、コンソールにちゃんと出力されているね。
Inputクラスのキーボード入力には、キーが「押された時」、「押されている状態の時」、「離された時」を判定するメソッドが用意されています。
それぞれを見てみましょう。下のコードを空のオブジェクトにアタッチして、ゲームを実行し、キーを押してみます。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class InputClass005 : MonoBehaviour { void Update() { //キーが押された時 if (Input.GetKeyDown(KeyCode.A)) { Debug.Log("Aが押されました。"); } //キーが押されている状態の時 if (Input.GetKey(KeyCode.A)) { Debug.Log("Aが押されています。"); } //キーが離された時 if (Input.GetKeyUp(KeyCode.A)) { Debug.Log("Aが離されました。"); } } }
ちゃんと判定できているね。えらいえらい💨
using System.Collections; using System.Collections.Generic; using UnityEngine; public class InputClass010 : MonoBehaviour { void Update() { //Aが押された時 if (Input.GetKeyDown(KeyCode.A)) { Debug.Log("Aが押されました。"); } //スペースが押された時 if (Input.GetKeyDown(KeyCode.Space)) { Debug.Log("スペースが押されました。"); } //バックスペースが押された時 if (Input.GetKeyDown(KeyCode.Backspace)) { Debug.Log("バックスペースが押されました。"); } //エンターが押された時 if (Input.GetKeyDown(KeyCode.Return)) { Debug.Log("エンターが押されました。"); } //上矢印が押された時 if (Input.GetKeyDown(KeyCode.UpArrow)) { Debug.Log("上矢印が押されました。"); } //下矢印が押された時 if (Input.GetKeyDown(KeyCode.DownArrow)) { Debug.Log("下矢印が押されました。"); } //左矢印が押された時 if (Input.GetKeyDown(KeyCode.LeftArrow)) { Debug.Log("左矢印が押されました。"); } //右矢印が押された時 if (Input.GetKeyDown(KeyCode.RightArrow)) { Debug.Log("右矢印が押されました。"); } //下矢印が押された時 if (Input.GetKeyDown(KeyCode.DownArrow)) { Debug.Log("下矢印が押されました。"); } //右Shiftが押された時 if (Input.GetKeyDown(KeyCode.RightShift)) { Debug.Log("右Shiftが押されました。"); } //左Shiftが押された時 if (Input.GetKeyDown(KeyCode.LeftShift)) { Debug.Log("左Shiftが押されました。"); } //右Altが押された時 if (Input.GetKeyDown(KeyCode.RightAlt)) { Debug.Log("右Altが押されました。"); } //左Altが押された時 if (Input.GetKeyDown(KeyCode.LeftAlt)) { Debug.Log("左Altが押されました。"); } //右Ctrlが押された時 if (Input.GetKeyDown(KeyCode.RightControl)) { Debug.Log("右Ctrlが押されました。"); } //左Ctrlが押された時 if (Input.GetKeyDown(KeyCode.LeftControl)) { Debug.Log("左Ctrlが押されました。"); } //F1が押された時 if (Input.GetKeyDown(KeyCode.F1)) { Debug.Log("F1が押されました。"); } } }
これでも全部ではありません。他のキーも知りたいときは以下のページを参照してみたください。
【参考】
Enterは「KeyCode.Enter」じゃなくて「KeyCode.Return」なんだね。
ええ、キーによっては独特なものとなっているものもあるので注意が必要ですね。
それでは、キーボード以外のデバイスからの入力についても試してみましょう。
下のようなコードになります。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class InputClass015 : MonoBehaviour { void Update() { //JoystickButton0が押された時 if (Input.GetKeyDown(KeyCode.JoystickButton0)) { Debug.Log("JoystickButton0が押されました。"); } //JoystickButton1が押された時 if (Input.GetKeyDown(KeyCode.JoystickButton1)) { Debug.Log("JoystickButton1が押されました。"); } //JoystickButton2が押された時 if (Input.GetKeyDown(KeyCode.JoystickButton2)) { Debug.Log("JoystickButton2が押されました。"); } //Mouse0が押された時 if (Input.GetKeyDown(KeyCode.Mouse0)) { Debug.Log("Mouse0が押されました。"); } //Mouse1が押された時 if (Input.GetKeyDown(KeyCode.Mouse1)) { Debug.Log("Mouse1が押されました。"); } //Mouse2が押された時 if (Input.GetKeyDown(KeyCode.Mouse2)) { Debug.Log("Mouse2が押されました。"); } } }
すぐには、とても覚えられないねー。
とりあえずは、こういうものがある程度に考えておいて、必要になったときに見返さばよいかと。
お名前