Unityでゲームパッドの設定をしたメモ。動かない場合の対処法やInput Debuggerなど

unity コントローラー設定 入力システム 3Dゲームの作り方
※記事内に広告が含まれています。

バーチャル3Dクリエイター神部まゆみです(*^_^*)

この記事はUnityでゲームパッドの設定をしたメモです。

↓JU TPS3っていうアセットを使ってやるけど、Starter Assetsとかでも設定は多分あんまり変わらないかな?他のアセットでも参考になるかもしれません。

使ったコントローラーはロジクールの↓ですが、まぁ大抵のコントローラーは設定次第でUnityで動かせるとは思う。

動作確認した最新のバージョンはUnity6000.0.32です。

●PRスペース●

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

やりたいこと:USBのゲームコントローラーで動かせるようにする

↓ちょっと試しにTPSゲームっぽいのを作ろうと思って会話システムとか作ってみたけど、やはりTPSゲームはコントローラーじゃないとやりにくいですね。

キーボード派の人もいるようだけど、私はコントローラー派なので(^_^;)

動かすならXInputのコントローラーが良いらしい

ChatGPTに聞いたらそうらしいです。DirectInputは古いヤツらしいが…。

unity コントローラー設定 入力システム

✅ DirectInputとXInputの違い

  • XInput: Xboxコントローラー専用、自動認識で設定不要、ほとんどの新しいPCゲームに対応。
  • DirectInput: 古いゲームや一部の特殊なコントローラーに対応、手動設定が必要なことが多い。

🔍 まとめ

XInputは、特にPC向けのゲームで最も普及しており、SteamやWindowsで非常に便利
ユーザーの大半がXInput対応のコントローラー(Xbox系)を使用している
XInput対応にしておけば、ユーザーがプレイしやすく、互換性の問題を減らせる

もし配布時に多くのユーザーに対応したいなら、XInput対応の設定が一番確実で、労力が少ない選択肢です!

私は古いコントローラーを使っているので挙動がおかしかったΣ(゚Д゚)

私はコンバーターを使ってPS2のコントローラーをUSBコントローラーとして使っているのだけど、これだとDirectInputとかいうやつでダメっぽい。

↓ちなみにこれです。普通にsteamゲームするには問題ない。

PS2 to PS3/PCコントローラーアダプター -amazon

Steamゲームはこれで問題なくできるのだけど、Unityで設定する場合はこのGamepadではボタン割り当てできなくてダメっぽい。

Steamは色々なユーザーの情報を集めてるから勝手に最適化してくれてるのかな?Steam入力を有効にするとどんなコントローラーでも良い感じに動くのだけど。

ロジクールのコントローラー買ったら普通に動いた

ロジクールのF310という2500円くらいの安いやつを買ってみたら普通に動きました(^_^;)

Logicool G ゲームパッド コントローラー F310r PC ゲーム 有線 usb FF14 Windows 版 国内正規品 【 ファイナルファンタジーXIV 推奨周辺機器 】

しかししゃがむとか細かい動作はまだ割り当てられてないですね。Bボタン(PSでいう〇ボタン)に前転が割り当てられてるけど。

これ実は二台目で、一台目は断線で使えなくなり耐久性の高いPS2コントローラーに変えたという経緯がある。

まぁ安くて3年保証あるからそれを考えると安すぎるくらいかな?

Input設定をいじればいいっぽい

これはJU TPS3に限らないっぽいですね。Starter Assetsとかでも同じだと思う。

JU TPS3だと↓Assign as the Project-wide Input Actionsってやつを押した。

jutps3 入力システム ゲームパッド コントローラー

その後↓Edit in Project Settings Windowsを押せばOK。これも確かStarter Assetsに同じような設定ファイルがあったかな。

jutps3 入力システム ゲームパッド コントローラー

プロジェクト設定でキー配置を設定できる

Input System Packageでキー配置とか変えられます。

編集⇒プロジェクト設定で開ける。

jutps3 入力システム ゲームパッド コントローラー

割り当てられていないアクションにボタンを割り当てていく

XInputなのでGamepadのボタンに割り当てていく感じです。

+ボタンを押してAdd Binding、ボタンやスティックを割り当てていく。「Gamepad」にチェックを入れるのも忘れずに。

しかし古いDirectInputのやつだとGamepadに割り当ててもダメみたい。

Rewiredとかいうアセット使えば勝手に設定してくれるっぽい

ChatGPTがおススメしてきたけど、このアセットはsteamみたいに色々なコントローラーのデータを収集して設定してるのかな?なんか勝手に設定してくれるっぽいです。

Rewired -Unity Assets Store

でも個人製作のゲームならXInputにだけ対応してれば良いんじゃないかな?(^_^;)

まぁキーボードでもできるし。

デバッグでコントローラーが認識されてるか見れる

↓ウィンドウ ⇒ 分析 ⇒ Input Debugger でコントローラーのデバッグができます。

unity コントローラー設定 入力システム

こんな感じでボタンを押すと反応するので、認識されてるかテストできます。

設定中に注意したほうがいいことメモ

ChatGPTに聞きながら設定したため間違ってる可能性もあるので注意。

反映までちょっと時間がかかった

これ設定次第なのかもしれないけど、設定を変更してから読み込みが入らないと反映されなかった。

しばらく待って↓みたいな読み込み画面が出ると反映されてた。

unity コントローラー設定 入力システム

特定のキーで認識しない場合は、typeをボタンではなくvalueにしてみる

L2ボタンでエイム、R2ボタンで発砲に設定してあるんだけど、R2ボタンは認識してるけど発砲できなかった。

試しにWestボタンに割り当ててみたら普通に発砲できた。

どうもボタンだと0か1かで認識、Valueだと0.1~1で認識って感じっぽいので、押しが弱いとボタンだと認識しなかったみたい。

unity コントローラー設定 入力システム

R2ボタン(Right Trigger)は デジタル(ボタン)ではなく、アナログ(軸)として扱われる ため、次の問題が発生することがあります。

✅ ① 「Button」タイプで扱えているか?
.inputactions の Fire の設定を開く
Action Type を「Button」ではなく「Value」に変更して試す
「Button」だと 1.0f にならないと認識されない可能性がある
「Value」にすれば 0.0 ~ 1.0 の間で取得できる

↓Valueに変えたらR2でも正常に動かせた。

unity コントローラー設定 入力システム

Valueでも問題ない?

基本的には問題ないっぽい。

unity コントローラー設定 入力システム

✅ 結論:「Value」のままでOK?
💡 「R2/L2などアナログトリガー用なら、ValueのままでOK」
🔧 ただし、しきい値を適切に設定すること!(例:0.1f 以上で発砲)

もし、「ボタンのように押した瞬間に確実に反応させたい」なら、
WasPressedThisFrame() を使うか、「Button」に戻して Interactions でしきい値を調整するのもアリです。

ボタンが被ってると競合して不具合が出る可能性があるっぽい?

ボタンが被っていると競合して不具合が出る可能性があるっぽい。

unity コントローラー設定 入力システム

Input SystemをBoth(両方)にしていると競合することがあるっぽい?

入力システムがBothだと競合することがあるっぽいです。

unity コントローラー設定 入力システム

↓プロジェクト設定 ⇒ プレイヤー ⇒ アクティブな入力処理 のところね。

unity コントローラー設定 入力システム

しかしここを「入力システムパッケージ(新)」にしたら↓以前実装した会話システムが使えなくなったので、キー入力で動作させてるコードは書き換える必要がありそう。

今後は新しい入力システムに移行していくっぽいけど、今のところは古い入力システムも使えるようなので、とりあえずはBOTHでもいいと思う。

今のところそれで不具合が起きたことはないし。

これでまぁ動くようになった

精密射撃中の銃がおかしいのは、銃の位置設定が適当だからですwちゃんと設定すればいける。

あとは話すとかをアクションボタンに割り当てたりだけど、そこは機能として作っていくしかないかな。

Starter Assetsでも同じようにコントローラーで動かせた

ここはアセットに依存する部分ではないから当たり前だけど、Starter Assetsでも同じように設定して動かせました。

unity コントローラー設定 入力システム

こんな感じで動かせます。ゲームによって変わるから攻撃とかはないが…。

おわりに

案外簡単に設定できて良かった。

これで作りこんでいくとゲームっぽくなりそうですね。

もう少しいじってみます(*^_^*)

タイトルとURLをコピーしました