キーボードとマウスで動くところまでは作れた。でも、いざパッドを挿しても、キャラはピクリとも動きません。PCゲームでも、パッド対応は公開時のレビューで真っ先に指摘される項目で、Steamでの配信を考えるなら実質必須です。
とはいえ、ゼロから作り直す必要はありません。Enhanced Input で組んであれば、 既存の仕組みにパッドのキーを足すだけ で大半は動きます。この記事では、パッド固有の3つの論点、スティックのドリフト・操作デバイスの判別・UIをパッドで操作する、を、キーボード専用のミニゲームをパッド両対応にしながら解説します。
この記事でわかること
- 既存のInput Actionに パッドのキーを足すだけ の基本
- スティックが勝手に歩く ドリフトをDead Zoneで直す
- トリガー の扱い(Axis扱いのボタン)
- 今の操作デバイスを 判別 してボタン表示を切り替える
- メニューを開いたら パッドにフォーカスを渡す
- 実践: キーボード専用ミニゲームをパッド両対応にする
パッドのキーを足すだけ
Enhanced Inputで作ってあれば、パッド対応の第一歩はとても簡単です。 同じInput Actionに、パッドのキーを割り当てるだけ です。

たとえば「移動(Move)」の Input Mapping Context(IMC) に、これまでのWASDキーに加えて、 ゲームパッドの左スティック(Gamepad Left Thumbstick) を割り当てます。すると、キーボードでもパッドでも同じ IA_Move が発火し、ゲーム側のロジックは1つのままで両対応になります。
これがEnhanced Inputの強みです。行動(Input Action)と、それを起こすキー(IMC)を分けてあるので、 入力デバイスが増えても、キーを足すだけ で済みます。ジャンプやアクションも、同じ要領でパッドのボタン(Gamepad Face Button など)を足していきます。
スティックのドリフトをDead Zoneで直す
パッド対応で最初にぶつかるのが、 スティックのドリフト です。手を離しているのに、キャラがじりじりと勝手に歩き続ける。これは、スティックが完全な中央に戻りきらず、わずかな傾きを入力として送り続けるために起きます。

直し方は、Move用のInput Actionに Dead Zone(デッドゾーン)モディファイア を追加することです。
- Lower Threshold(下側のしきい値) を
0.2程度に設定する - すると、スティックの傾きが0.2未満の入力は すべて0として扱われ 、切り捨てられます
- 手を離したときの微小なドリフトは0.2を超えないので、キャラはきちんと止まります
デッドゾーンは、Input Action全体に付けることも、IMCのゲームパッド割り当て側に付けることもできます。 IMCのパッド割り当て側に付けると「これはパッド用の設定だ」と意図が明確 になり、キーボード入力に影響しません。スティックのモディファイアには、他にも入力の向きを整える Swizzle Input Axis Values(軸の入れ替え)や Negate(反転)がありますが、まず入れるべきはDead Zoneです。
トリガーの扱い
パッドの トリガー(L2 / R2、Gamepad Trigger) は、押し込み具合が0.0〜1.0で取れる、 Axis扱いのボタン です。ただのオン・オフではなく、どれだけ深く踏んだかが分かります。
- オン・オフとして使う: レースの「ちょっとだけアクセル」を無視して、しきい値(例:0.5)を超えたらボタンが押されたとみなす
- アナログとして使う: 踏み込み量をそのまま、アクセルの強さや弓の引き絞りに使う

Enhanced Inputなら、トリガーもただのキー割り当てとして IA_Fire などに足せます。アナログ量が欲しいときは、Input ActionのValue Typeを Axis1D(float) にして、踏み込み量(0.0〜1.0)を受け取ります。
今のデバイスを判別する
「Eで調べる」という表示を、パッドを持っているときは「Xで調べる」に変えたい。そのためには、 今プレイヤーがキーボードとパッドのどちらで操作しているか を知る必要があります。

ここは正直にお伝えします。 Enhanced Input単体には、直近の操作デバイスを知る綺麗な標準ノードがありません 。素朴には「最後に発火した入力がキーボード由来かパッド由来か」を自分で記録する手もありますが、抜けが多く安定しません。
確実なのは、 Common UI プラグインが提供する Common Input Subsystem です。
- Get Current Input Type: 今の操作が Mouse & Keyboard / Gamepad / Touch のどれかを返す
- On Input Method Changed: 操作デバイスが切り替わった瞬間に通知してくれる
この通知を受けて、ボタン表示のTexture(「E」の画像と「X」の画像)を差し替えれば、パッドを握った瞬間に表示が切り替わります。デバイス判別とボタン表示をしっかり作るなら、Common UIの導入が正攻法です(Common UIについては後述)。
UIにフォーカスを渡す
パッド対応でもう1つ忘れがちなのが、 メニューをパッドで操作できるようにする ことです。マウスならボタンを直接クリックできますが、パッドには「今どのボタンを選んでいるか(フォーカス)」の概念が要ります。

ポイントは、 メニューを開いた瞬間に、最初のボタンへフォーカスを与える ことです。これを忘れると、メニューは開くのに、十字キーを押しても何も選べない「カーソル迷子」の状態になります。
- メニューを表示したイベントの中で、最初のボタン(例:「再開」)に対して
Set Keyboard Focusを呼ぶ - これで、そのボタンが選択された状態でメニューが開き、十字キーで項目を移動できるようになります
ここで大事なのは、 この記事は「最初のフォーカスを与える」までに留める ことです。フォーカスがボタン間をどう移動するか(Navigation設定)、迷子になったときの対策といった詳細は、UIのフォーカス管理がまるごと扱っています。まずは「開いたら最初の1つにフォーカスを渡す」だけ押さえてください。
実践:ミニゲームをパッド両対応にする
Third Person系のアクション、見下ろしシューター、パズルのメニュー操作。 「キーボード専用だったゲームを、挿すだけで パッドでも遊べるようにする」 はどんなゲームでも通る道です。ここではその一周を、既存のIMCへの追加とDead Zone、そしてメニューのフォーカスで組みます。
作るのは、 パッドを挿してスティックで歩き、手を離せば(ドリフトがあっても)止まり、Startでメニューを開いて十字キーで選びAで決定できる ミニゲームです。
動かすとこうなります。パッドを挿してスティックを倒すと、キャラが歩き出す。スティックから手を離すと、多少のドリフトがあってもピタッと止まる。Startボタンを押すとポーズメニューが開き、 開いた瞬間に「再開」ボタンが選択されていて 、十字キーで「設定」「終了」へ移動でき、Aボタンで決定できます。

再現条件
| 項目 | 設定 |
|---|---|
IMC_Default(Input Mapping Context) | IA_Move にキーボードのWASDに加えて Gamepad Left Thumbstick を割り当て |
IA_Move のモディファイア | Dead Zone(Lower Threshold = 0.2 )を追加 |
ポーズメニュー WBP_PauseMenu | ポーズメニュー の資産を流用。「再開」ボタンを最初のフォーカス先に |
| メニューを開くキー | IA_Pause に Gamepad Special Right(Start) を割り当て |
ステップ1:IMCにパッドを足してDead Zoneを付ける
IMC_Default を開き、IA_Move の割り当てにGamepad Left Thumbstickを追加します。そのパッド割り当てのModifiersに Dead Zone を足し、Lower Thresholdを0.2にします。
IMC_Default
IA_Move
├ W / A / S / D(キーボード)
└ Gamepad Left Thumbstick(パッド)
Modifiers: Dead Zone (Lower Threshold = 0.2)
ステップ2:メニューを開いたらフォーカスを渡す
IA_Pause が発火したら、ポーズメニューを表示し、その直後に「再開」ボタンへ Set Keyboard Focus を呼びます。
IA_Pause(Started)
→ Create Widget(WBP_PauseMenu)→ Add to Viewport
→ Set Game Paused(true)
→ Get「再開」ボタン → Set Keyboard Focus // ここが要点
確かめる
パッドを挿してPlayしてください。うまくいけば、スティックで歩き、 手を離すとドリフトがあっても止まります 。Startを押すとメニューが開き、 十字キーで「再開/設定/終了」を移動でき、Aで決定 できます。
うまくいかないときの切り分けです。
- 手を離しても歩き続ける →
IA_Moveに Dead Zoneが付いていません 。またはLower Thresholdが小さすぎます(0.2前後に) - メニューは開くが十字キーで選べない →
Set Keyboard Focusを呼ん でいません。最初のボタンへフォーカスを渡す(前節) - スティックが逆や横向きに動く → 軸の向きが合っていません。
Swizzle Input Axis ValuesやNegateで軸を整える
ポイントは2つです。
- 既存の資産にパッドを足す: 行動(IA)はそのまま、IMCにパッドのキーを足すだけ。Enhanced Inputで組んであれば、両対応は「作り直し」ではなく「追加」です
- パッド固有の罠はDead Zoneとフォーカス: 歩き続けるならDead Zone、メニューが選べないならフォーカス。この2つが、キーボードには無いパッド対応の勘所です
おまけ:先に知っておくと良いこと
Common UIという選択肢。 ボタン表示の自動切り替え、複数デバイスの統一的な扱い、コンソール向けの堅牢なUIを本格的に作るなら、Epic製の Common UI プラグインが正攻法です。デバイス判別(Common Input Subsystem)だけでなく、ボタンアイコンの差し替えやフォーカスの扱いも整った仕組みで提供されます。小規模なうちは素朴な作りで十分ですが、「パッド・マウス・コンソールをきちんと両立させたい」と感じたら導入を検討してください。
パッド2台でのローカル協力プレイ。 パッドが2つあれば、画面分割のローカルマルチプレイで、1台のPCで2人プレイができます。プレイヤーごとにパッドを割り当てる仕組みは、そちらで扱っています。
キーコンフィグと組み合わせる。 パッドのボタン割り当ても、プレイヤーが変更できるようにしたいなら、キーバインドの変更の仕組みがそのまま使えます。パッド対応とキーコンフィグは、どちらもEnhanced Inputの上に乗る相性の良い機能です。
まとめ
キーボードのゲームをパッド対応にするのは、次の流れで進みます。
| 論点 | やること | 道具 |
|---|---|---|
| 動かす | 既存IAにパッドのキーを足す | IMCにGamepadキーを追加 |
| 止める | ドリフトを切り捨てる | Dead Zoneモディファイア(0.2) |
| 判別する | 今のデバイスを知る | Common Input Subsystem(Common UI) |
| 選ぶ | メニューにフォーカスを渡す | Set Keyboard Focus(詳細はui記事へ) |
そして貫く原則が、 Enhanced Inputなら「作り直し」でなく「追加」 ということです。行動とキーを分けてあるから、デバイスが増えても足すだけで済みます。
これで、あなたのゲームはパッドでも遊べるようになりました。手元のパッドを挿して、まずはスティックで一歩、歩かせてみてください。
さらに学ぶために
- Enhanced Inputシステム完全ガイド — IA/IMCの基礎
- キーバインドの変更(リバインド) — 割り当て変更の仕組み
- UIのフォーカス管理 — パッドでのフォーカス移動・Navigation
- 画面分割のローカルマルチプレイ — パッド2台での2人プレイ