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);
        }
    }
}

 

 

これで一通りのゲームパッドのボタンの入力値を取得できるね。

 

 

【参考】

 

 

 

 

 

 

 

 

お名前


削除キー(必須)

コメント(必須)


サイト内検索

twiter

CONTENTS

 

 

 

くるくるサンプルコード

 

 

 

【↓広告↓】