Unity Input クラスの技術資料

UnityのInputクラスは、ユーザーからの入力を取得し処理するためのクラスです。このクラスを使用することで、キーボード、マウス、ゲームパッド、タッチデバイスなど、さまざまなデバイスからの入力を受け取ることができます。この資料では、Inputクラスの主な機能や使用例について紹介します。

Input クラスの主な機能

1. キーボード入力の取得

UnityのInputクラスを使用して、キーボードからの入力を検出できます。たとえば、特定のキーが押されたか、離されたかを検出することができます。

使用する主なメソッド

Input.GetKey(KeyCode key)
指定したキーが押されているかを確認します。

if (Input.GetKey(KeyCode.Space))
{
    Debug.Log("スペースキーが押されています");
}

Input.GetKeyDown(KeyCode key)
指定したキーが押された瞬間を検知します。

if (Input.GetKeyDown(KeyCode.W))
{
    Debug.Log("Wキーが押されました");
}

Input.GetKeyUp(KeyCode key)

指定したキーが離された瞬間を検知します。

if (Input.GetKeyUp(KeyCode.Escape))
{
    Debug.Log("エスケープキーが離されました");
}

2. マウス入力の取得

マウスのボタンの状態やマウスカーソルの位置を取得することができます。

使用する主なメソッドとプロパティ

Input.GetMouseButton(int button)
指定されたマウスボタンが押されているかを確認します。

if (Input.GetMouseButton(0)) // 左クリック
{
    Debug.Log("左クリックが押されています");
}

Input.GetMouseButtonDown(int button)
指定されたマウスボタンが押された瞬間を検知します。

if (Input.GetMouseButtonDown(1)) // 右クリック
{
    Debug.Log("右クリックが押されました");
}

Input.GetMouseButtonUp(int button)
指定されたマウスボタンが離された瞬間を検知します。

if (Input.GetMouseButtonUp(2)) // 中クリック
{
    Debug.Log("中クリックが離されました");
}

Input.mousePosition
マウスカーソルの現在のスクリーン座標を取得します。

Vector3 mousePos = Input.mousePosition;
Debug.Log("マウスの位置: " + mousePos);

3. ゲームパッドやジョイスティック入力の取得

ゲームパッドやジョイスティックを使用した入力を検出することができます。

使用する主なメソッド

Input.GetAxis(string axisName)
指定した軸の入力を取得します。たとえば、"Horizontal" で左右、"Vertical" で上下の入力を取得します。

float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");

Input.GetButton(string buttonName)
ゲームパッドのボタンが押されているかを検出します。buttonNameはInput Managerで定義されています。

if (Input.GetButton("Jump"))
{
    Debug.Log("ジャンプボタンが押されています");
}

Input.GetButtonDown(string buttonName)
ゲームパッドのボタンが押された瞬間を検出します。

if (Input.GetButtonDown("Fire1"))
{
    Debug.Log("攻撃ボタンが押されました");
}

4. タッチ入力の取得

モバイルデバイスやタブレットでのタッチ操作を検出することができます。

使用する主なメソッドとプロパティ

Input.touchCount
現在画面に触れている指の数を取得します。

if (Input.touchCount > 0)
{
    Debug.Log("タッチ数: " + Input.touchCount);
}

Input.GetTouch(int index)
指定されたタッチ入力を取得します。タッチにはTouch型が含まれ、その中に位置や状態が格納されています。

if (Input.touchCount > 0)
{
    Touch touch = Input.GetTouch(0);
    Debug.Log("タッチ位置: " + touch.position);
}

5. 加速度センサー・ジャイロスコープの使用

モバイルデバイスのセンサーを使用して、デバイスの動きや回転を検出します。

使用する主なプロパティ

Input.acceleration
デバイスの加速度センサーからの値を取得します。モバイルデバイスの傾きや動きを検出するのに使用されます。

Vector3 acceleration = Input.acceleration;
Debug.Log("デバイスの加速度: " + acceleration);

Input.gyro
モバイルデバイスのジャイロスコープのデータを取得します。回転の情報を取得するためには、Input.gyro.enabled = true;で有効化が必要です。

Input.gyro.enabled = true;
Debug.Log("ジャイロの角速度: " + Input.gyro.rotationRate);

6. その他の便利なメソッド

Input.ResetInputAxes()
すべての軸の入力状態をリセットします。ゲームのリセットなどに便利です。

Input.ResetInputAxes();

Input.GetJoystickNames()
接続されているジョイスティック(ゲームパッド)の名前を取得します。

string[] joystickNames = Input.GetJoystickNames();
foreach (string joystick in joystickNames)
{
    Debug.Log("接続されているジョイスティック: " + joystick);
}

7. IMEの制御

Input.imeCompositionMode
IME(Input Method Editor)を制御するために使用され、オン・オフを切り替えることができます。

Input.imeCompositionMode = IMECompositionMode.On;

Input.imeCompositionString
IMEの入力中の文字列を取得します。

Debug.Log("IMEの入力中の文字列: " + Input.imeCompositionString);

8. Inputクラスのその他のプロパティ

Input.anyKey
どれかのキーやマウスボタンが押されているかを確認します。

if (Input.anyKey)
{
    Debug.Log("何かが押されています");
}

Input.anyKeyDown
どれかのキーやマウスボタンが押された瞬間を検知します。

if (Input.anyKeyDown)
{
    Debug.Log("キーやボタンが押されました");
}

まとめ

UnityのInputクラスは、キーボード、マウス、ゲームパッド、タッチデバイスなど、幅広い入力デバイスからの情報を簡単に取得できる強力なツールです。この資料では、主なプロパティやメソッドについて紹介しましたが、これらを活用して、ユーザーインターフェイスやゲームの操作などを効率的に実装できるでしょう。

Unity

Posted by hidepon