Unity解説 Input System
Gamepadのボタンの入力値の取得
今回は、Input SystemでのGamepadの使用方法について説明します。
また、今回の操作には、UnityにInput Systemの導入が必要ですので、あらかじめの導入をお願いします。
【関連ページ】
まずは、Xboxコントローラーでいいうと「Y」、PlayStation コントローラーでいうと「△」 。。。
このようなゲームパッドの上側にあるボタンを押したら、コンソールメッセージを表示するようにしてみます。
下のスクリプトを空のオブジェクトにアタッチして、ゲームを実行してみましょう。
【GamepadInput005.cs】
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class GamepadInput005 : MonoBehaviour
{
void Update()
{
//一番最後に取得したゲームパッド情報を変数へ
var gamepad = Gamepad.current;
//ゲームパッド情報を取得できなければ関数を終了
if (gamepad == null)
return; //ゲームパッドが未接続
//ゲームパッドのアクションボタンのうち、上にあるボタンの入力値を取得
var buttonNorthValue = gamepad.buttonNorth.ReadValue();
if(buttonNorthValue > 0)
{
Debug.Log("入力値は" + buttonNorthValue);
}
}
}
【実行結果】
【参考】
Updateメソッド内にあるから、ボタンを押している間は連続してメッセージが出力されているね。

はい✨それでは次は、他のアクションボタンの入力値もコンソール出力できるようにしてみます。
【GamepadInput008.cs】
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class GamepadInput008 : MonoBehaviour
{
void Update()
{
//一番最後に取得したゲームパッド情報を変数へ
var gamepad = Gamepad.current;
//ゲームパッド情報を取得できなければ関数を終了
if (gamepad == null)
return; //ゲームパッドが未接続
//ゲームパッドのアクションボタンのうち、上にあるボタンの入力値を取得
var buttonNorthValue = gamepad.buttonNorth.ReadValue();
if(buttonNorthValue > 0)
{
Debug.Log("buttonNorthの入力値は" + buttonNorthValue);
}
//ゲームパッドのアクションボタンのうち、下にあるボタンの入力値を取得
var buttonSouthValue = gamepad.buttonSouth.ReadValue();
if(buttonSouthValue > 0)
{
Debug.Log("buttonSouthValueの入力値は" + buttonSouthValue);
}
//ゲームパッドのアクションボタンのうち、左にあるボタンの入力値を取得
var buttonWestValue = gamepad.buttonWest.ReadValue();
if(buttonWestValue > 0)
{
Debug.Log("buttonWestValueの入力値は" + buttonWestValue);
}
//ゲームパッドのアクションボタンのうち、右にあるボタンの入力値を取得
var buttonEastValue = gamepad.buttonEast.ReadValue();
if(buttonEastValue > 0)
{
Debug.Log("buttonEastの入力値は" + buttonEastValue);
}
}
他のボタンの入力値も取得したいね。
それでは4つのアクションボタン以外の入力値も取得するコードを見てみましょう。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class GamepadInput011 : MonoBehaviour
{
void Update()
{
//一番最後に取得したゲームパッド情報を変数へ
var gamepad = Gamepad.current;
//ゲームパッド情報を取得できなければ関数を終了
if (gamepad == null)
return; //ゲームパッドが未接続
//ゲームパッドの「L1」ボタンの入力値を取得
var leftShoulderValue = gamepad.leftShoulder.ReadValue();
if(leftShoulderValue > 0)
{
Debug.Log("leftShoulderの入力値は" + leftShoulderValue);
}
//ゲームパッドの「R1」ボタンの入力値を取得
var rightShoulderValue = gamepad.rightShoulder.ReadValue();
if(rightShoulderValue > 0)
{
Debug.Log("rightShoulderの入力値は" + rightShoulderValue);
}
//ゲームパッドの「L2」ボタンの入力値を取得
var leftTriggerValue = gamepad.leftTrigger.ReadValue();
if(leftTriggerValue > 0)
{
Debug.Log("leftTriggerValueの入力値は" + leftTriggerValue);
}
//ゲームパッドの「R2」ボタンの入力値を取得
var rightTriggerValue = gamepad.rightTrigger.ReadValue();
if(rightTriggerValue > 0)
{
Debug.Log("rightTriggerの入力値は" + rightTriggerValue);
}
//ゲームパッドの「start」ボタンの入力値を取得
var startButtonValue = gamepad.startButton.ReadValue();
if(startButtonValue > 0)
{
Debug.Log("startButtonの入力値は" + startButtonValue);
}
//ゲームパッドの「select」ボタンの入力値を取得
var selectButtonValue = gamepad.selectButton.ReadValue();
if(selectButtonValue > 0)
{
Debug.Log("selectButtonの入力値は" + selectButtonValue);
}
//ゲームパッドの「左スティックを下に押した時」の入力値を取得
var leftStickButtonValue = gamepad.leftStickButton.ReadValue();
if(leftStickButtonValue > 0)
{
Debug.Log("leftStickButtonの入力値は" + leftStickButtonValue);
}
//ゲームパッドの「右スティックを下に押した時」の入力値を取得
var rightStickButtonValue = gamepad.rightStickButton.ReadValue();
if(rightStickButtonValue > 0)
{
Debug.Log("rightStickButtonの入力値は" + rightStickButtonValue);
}
}
}
これで一通りのゲームパッドのボタンの入力値を取得できるね。

【参考】
お名前


