バーチャル3Dクリエイター神部まゆみです(*^_^*)
この記事はUnityでゲームパッドの設定をしたメモです。
↓JU TPS3っていうアセットを使ってやるけど、Starter Assetsとかでも設定は多分あんまり変わらないかな?他のアセットでも参考になるかもしれません。
使ったコントローラーはロジクールの↓ですが、まぁ大抵のコントローラーは設定次第でUnityで動かせるとは思う。
動作確認した最新のバージョンはUnity6000.0.32です。
やりたいこと:USBのゲームコントローラーで動かせるようにする
↓ちょっと試しにTPSゲームっぽいのを作ろうと思って会話システムとか作ってみたけど、やはりTPSゲームはコントローラーじゃないとやりにくいですね。
キーボード派の人もいるようだけど、私はコントローラー派なので(^_^;)
動かすならXInputのコントローラーが良いらしい
ChatGPTに聞いたらそうらしいです。DirectInputは古いヤツらしいが…。



✅ 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ってやつを押した。



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



プロジェクト設定でキー配置を設定できる
Input System Packageでキー配置とか変えられます。
編集⇒プロジェクト設定で開ける。



割り当てられていないアクションにボタンを割り当てていく
XInputなのでGamepadのボタンに割り当てていく感じです。
+ボタンを押してAdd Binding、ボタンやスティックを割り当てていく。「Gamepad」にチェックを入れるのも忘れずに。
しかし古いDirectInputのやつだとGamepadに割り当ててもダメみたい。
Rewiredとかいうアセット使えば勝手に設定してくれるっぽい
ChatGPTがおススメしてきたけど、このアセットはsteamみたいに色々なコントローラーのデータを収集して設定してるのかな?なんか勝手に設定してくれるっぽいです。
でも個人製作のゲームならXInputにだけ対応してれば良いんじゃないかな?(^_^;)
まぁキーボードでもできるし。
デバッグでコントローラーが認識されてるか見れる
↓ウィンドウ ⇒ 分析 ⇒ Input Debugger でコントローラーのデバッグができます。



こんな感じでボタンを押すと反応するので、認識されてるかテストできます。
設定中に注意したほうがいいことメモ
ChatGPTに聞きながら設定したため間違ってる可能性もあるので注意。
反映までちょっと時間がかかった
これ設定次第なのかもしれないけど、設定を変更してから読み込みが入らないと反映されなかった。
しばらく待って↓みたいな読み込み画面が出ると反映されてた。



特定のキーで認識しない場合は、typeをボタンではなくvalueにしてみる
L2ボタンでエイム、R2ボタンで発砲に設定してあるんだけど、R2ボタンは認識してるけど発砲できなかった。
試しにWestボタンに割り当ててみたら普通に発砲できた。
どうもボタンだと0か1かで認識、Valueだと0.1~1で認識って感じっぽいので、押しが弱いとボタンだと認識しなかったみたい。



R2ボタン(Right Trigger)は デジタル(ボタン)ではなく、アナログ(軸)として扱われる ため、次の問題が発生することがあります。
✅ ① 「Button」タイプで扱えているか?
.inputactions の Fire の設定を開く
Action Type を「Button」ではなく「Value」に変更して試す
「Button」だと 1.0f にならないと認識されない可能性がある
「Value」にすれば 0.0 ~ 1.0 の間で取得できる
↓Valueに変えたらR2でも正常に動かせた。



Valueでも問題ない?
基本的には問題ないっぽい。



✅ 結論:「Value」のままでOK?
💡 「R2/L2などアナログトリガー用なら、ValueのままでOK」
🔧 ただし、しきい値を適切に設定すること!(例:0.1f 以上で発砲)もし、「ボタンのように押した瞬間に確実に反応させたい」なら、
WasPressedThisFrame() を使うか、「Button」に戻して Interactions でしきい値を調整するのもアリです。
ボタンが被ってると競合して不具合が出る可能性があるっぽい?
ボタンが被っていると競合して不具合が出る可能性があるっぽい。



Input SystemをBoth(両方)にしていると競合することがあるっぽい?
入力システムがBothだと競合することがあるっぽいです。



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



しかしここを「入力システムパッケージ(新)」にしたら↓以前実装した会話システムが使えなくなったので、キー入力で動作させてるコードは書き換える必要がありそう。
今後は新しい入力システムに移行していくっぽいけど、今のところは古い入力システムも使えるようなので、とりあえずはBOTHでもいいと思う。
今のところそれで不具合が起きたことはないし。
これでまぁ動くようになった
精密射撃中の銃がおかしいのは、銃の位置設定が適当だからですwちゃんと設定すればいける。
あとは話すとかをアクションボタンに割り当てたりだけど、そこは機能として作っていくしかないかな。
Starter Assetsでも同じようにコントローラーで動かせた
ここはアセットに依存する部分ではないから当たり前だけど、Starter Assetsでも同じように設定して動かせました。



こんな感じで動かせます。ゲームによって変わるから攻撃とかはないが…。
おわりに
案外簡単に設定できて良かった。
これで作りこんでいくとゲームっぽくなりそうですね。
もう少しいじってみます(*^_^*)