もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
ゲームコントローラーの入力を受けて、キャラクターを動かすようなことをしたい。
前提
- Unity 2021.3.31f1
- Input System 1.7.0
やり方
「Input System」を使う。
手順(準備)
メニュー > [Window] > [Package Manager] を開く。
下記を「Unity Registry」にする。
右上の検索窓に「Input System」と入れる。
検索実行すると、「Input System」のパッケージが出てくるので、 右下の「Download」を押す。その後、「Install」を押す。
※これを書いている時点で、すでにPackageを入れてしまったので写真では「Install」しか出てないが、たしか最初は「Download」が出てて、DLしたら「Install」になって、それを押したらinstall完了、だったはず。もしかしたら「Import」とかも間に挟まるかもだが、そのへんはええようにする。
これでコードを書く準備は完了。
コード書く
こちらのサイトのコードを参考にさせて頂いています。
https://forpro.unity3d.jp/unity_pro_tips/2021/05/20/1957/
using UnityEngine; using UnityEngine.InputSystem; public class Kaiten : MonoBehaviour { public GameObject player; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { // いろいろ書いてる } void OnGUI() { if (Gamepad.current == null) return; // 私のWindows+私のコントローラーでは GUILayout.Label($"leftStick: {Gamepad.current.leftStick.ReadValue()}"); // 左アナログスティック GUILayout.Label($"rightStick: {Gamepad.current.rightStick.ReadValue()}"); // 右アナログスティック GUILayout.Label($"buttonNorth: {Gamepad.current.buttonNorth.isPressed}"); // Y(□)ボタン GUILayout.Label($"buttonSouth: {Gamepad.current.buttonSouth.isPressed}"); // A(〇)ボタン GUILayout.Label($"buttonEast: {Gamepad.current.buttonEast.isPressed}"); // B(×)ボタン GUILayout.Label($"buttonWest: {Gamepad.current.buttonWest.isPressed}"); // X(△)ボタン GUILayout.Label($"leftShoulder: {Gamepad.current.leftShoulder.ReadValue()}"); // Lボタン GUILayout.Label($"leftTrigger: {Gamepad.current.leftTrigger.ReadValue()}"); // ZLボタン GUILayout.Label($"rightShoulder: {Gamepad.current.rightShoulder.ReadValue()}"); // Rボタン GUILayout.Label($"rightTrigger: {Gamepad.current.rightTrigger.ReadValue()}"); // ZRボタン } }
こんな感じで見える。
※OnGUI()
を今回初めて知った
ここには書いてないが、wasPressedThisFrame
を使うと、「そのフレームでそのキーが押されたかどうか」を判定できる。(押したときに一回だけ、そこを通ってくれる。)
if (Gamepad.current.buttonEast.wasPressedThisFrame) { // 真上に、相手の質量の1000倍の力を加える rb.AddForce(Vector3.up * rb.mass * jumpAmount, ForceMode.Impulse); }
参考
Unityの新入力システム・Input Systemを使おう
https://forpro.unity3d.jp/unity_pro_tips/2021/05/20/1957/
公式 Input System
https://docs.unity3d.com/Packages/com.unity.inputsystem@1.7/manual/index.html