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); } } }
これで一通りのゲームパッドのボタンの入力値を取得できるね。


【参考】
お名前