やりたいこと
UnityのInputSystemで以下の用に設定したのにゲームパッドからのイベントが来なかった時の対策の覚書です。

原因
ジョイスティック
まず原因を書いてしまうと使用しているコントローラがゲームパッドではありませんでした。
何を言っているかというと使用しているコントローラがUnityによりゲームパッドではなくジョイスティックとして認識されていました。
確認方法
どのgameObjectでもいいので”Player Input”コンポーネントを追加します。
Open Input Debuggerをクリックします。

Deviceの中にある確認したいデバイスをダブルクリックで選択します。
Typeを確認します。以下の場合はGamePadではなくJoystickです。

この場合InputSystemにGamePadではなくJoystickのイベントを登録する必要があります。
それでもこない
私の環境(コントローラ)ではJoystickのイベントを登録してもイベントが来ませんでした。
そもそもUnityのInputSystemにイベントが来ていないようでした。
確認方法
先ほどと同様にInput Debugger上の対象のデバイスを開きます。
下の方にEvents表があるのコントローラを適当に操作してEventが発火されているか確認します。
どうも古いコントローラや安価なコントローラは対応していないものがあるようです。
対策
上記の状態だと試験もできないのでここではXboxのコントローラエミュレータ(x360ce)を使用して試験を行います。
ダウンロード
以下のサイトから好きなバージョンをダウンロードします。(Assetsをクリックしx360ce.zipをクリック)
この記事で使用しているのはX360CE 4.17.15.0です。

インストール
インストールは任意のフォルダに解凍するだけです。
初期設定
アプリを起動してController1を選択し、Enable 1 Mapped Deviceにチェックを入れます。

右側のIssueがハイライトされたらクリックします。
ドライバのインストールを促されることがあります。またインストールをした後にプログラムが応答しなくなることがありますが、再起動すると無事にドライバはインストールされていました。
続いてAddをクリックし、表示されるリストから使用するデバイスを選択します。
続いてAutoクリックすることでいい感じでボタンのマッピングが設定されます。

設定が気に入らなければコントローラの画像上のボタンをクリックし続いて割り当てたいボタンを押すことでマップすることができます。
下のようにInput DebuggerのデバイスにXinputControllerWindowsがリストされれば成功です。
リストされない場合はゲームの起動(再生)終了をしてみてください。

x360ceを終了するとコントローラとして動作しません。使用するには再度x360ceの起動が必要です。


コメント