ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
この記事の要点
- Enhanced Input は Unreal Engine 5 の標準的な入力システムで、キーと処理を直接つながずアセットを介して仲介する仕組みです。
- 中心となるのは「Input Action(何が起きたか)」と「Input Mapping Context(どのキーで起こすか)」の2つのアセットです。
- Input Mapping Context は実行中に追加・削除でき、優先度を持たせて重ね掛けできます。状態ごとの入力切り替えが簡単になります。
- Modifier(入力値の加工)と Trigger(発火条件)を組み合わせることで、長押し・タップ・反転・デッドゾーンなどをコードを書かずに設定できます。
- 旧来の Action Mappings / Axis Mappings と比べ、値の型が明示され、押しっぱなし判定や軸の合成が仕組みとして用意されています。
Unreal Engine 5 (UE5) でキャラクターを動かそうとして、「解説どおりに Project Settings の Axis Mappings を設定したのに、テンプレートでは別の仕組みが使われていて話がかみ合わない」と戸惑った経験はないでしょうか。その正体が Enhanced Input です。この記事では、Enhanced Input が何を解決する仕組みなのか、中核となる Input Action と Input Mapping Context がそれぞれ何を担当しているのかを整理します。
1Enhanced Input とは何か
Enhanced Input は、Unreal Engine 5 で標準的に使われる入力システムです。プラグインとして同梱されており、UE5 のテンプレートから作成したプロジェクトでは最初から有効になっています。旧来の入力システム(Project Settings 内の Action Mappings / Axis Mappings)も残されていますが公式には非推奨で、新規プロジェクトは Enhanced Input が前提です。
従来の入力設定の困りごとは、「キーと処理が一対一で固く結びついてしまう」ことでした。「Fキーでドアを開ける」と設定した後で、乗り物に乗っている間だけ F の意味を変えたい、UI を開いている間は無効にしたい、といった要求が出ると、処理側に分岐を書き足すことになります。Enhanced Input はここにアセットによる仲介層を挟み、キーと処理を疎結合にします。
もうひとつの利点が、入力値の加工を設定側で完結できることです。「スティックの中央付近は無視したい」「符号を反転したい」といった調整を Modifier として宣言的に指定できるため、ブループリント (Blueprint) 側のグラフがすっきりします。
2登場人物は3つだけ
押さえるべき登場人物は次の3つです。この関係さえ頭に入れば、後の設定項目はすべて「どこに属する話か」で整理できます。
| 要素 | 正体 | 担当する役割 |
|---|---|---|
| Input Action(IA) | アセット | 「ジャンプ」「移動」といった入力の意味そのもの。値の型(真偽値か軸か)を定義する。処理側はこれだけを見る |
| Input Mapping Context(IMC) | アセット | どの物理キーをどの Input Action に割り当てるかの一覧表。キーごとに加工と発火条件も設定できる |
| Enhanced Input Local Player Subsystem | 実行時のオブジェクト | Input Mapping Context をローカルプレイヤーへ追加・削除する窓口。優先度もここで指定する |
3Input Action は「意味」と「値の型」を決める
Input Action はコンテンツブラウザに作るアセットで、中身はシンプルです。もっとも重要な設定が Value Type、この入力がどんな型の値を運ぶかという指定です。ここを間違えると、受け取り側で値が常にゼロになったり、期待した軸に値が入ってこなかったりします。
| Value Type | 運ばれる値 | 向いている用途 |
|---|---|---|
| Digital (bool) | 真偽値 | ジャンプ、決定、しゃがみなど、押されたかどうかだけが問題になる入力 |
| Axis1D (float) | 単精度の数値 | トリガーの踏み込み量、ズーム、前後だけの移動といった1軸の入力 |
| Axis2D (Vector2D) | 2成分のベクトル | スティックによる移動、マウスによる視点操作。WASD の4キーもここに合成できる |
| Axis3D (Vector) | 3成分のベクトル | 3軸を同時に扱う特殊な入力デバイスなど |
命名は IA_Jump IA_Move のように接頭辞をそろえるのが一般的です。Input Action 自体にも Modifier と Trigger を持たせられ、その場合は「割り当てられた全キーに共通して効く設定」になります。特定のキーだけに効かせたい設定は Input Mapping Context 側に書きます。
4Input Mapping Context は「割り当て表」
Input Mapping Context も同じくアセットで、こちらは Input Action と物理キーの対応表です。1つの Input Action に複数のキーを割り当てられますし、同じキーを別々のコンテキストで別の Action に割り当てることもできます。
設計上いちばん効いてくるのが、この Mapping Context を実行中に着脱できる点です。徒歩用・車両用・メニュー用のコンテキストを作っておき、状況に応じて追加・削除するだけで入力体系ごと切り替えられます。
追加時には優先度(Priority)を数値で指定します。複数のコンテキストが同じキーを取り合った場合、優先度の高いコンテキストの割り当てが勝ちます。たとえば通常操作を優先度0で常時適用しておき、乗り物に乗ったときだけ優先度1のコンテキストを重ねる、といった運用ができます。
5Modifier:入力値を届く前に加工する
Modifier は、キーが生み出した生の値を Input Action に届ける前に変換する部品です。Input Mapping Context の各キー行、または Input Action 本体に、上から順に並べて適用します。並び順が結果を変える点は覚えておいてください。順序を入れ替えると符号や軸の割り当てが変わり、意図しない挙動になります。
| 代表的な Modifier | やること | 典型的な使いどころ |
|---|---|---|
| Negate | 値の符号を反転する | Sキーを後退にする、マウスのY軸を反転する |
| Swizzle Input Axis Values | X・Y・Z の成分を入れ替える | キーの値は既定でX成分に入るため、前後移動をY成分へ移すときに使う |
| Dead Zone | 中央付近の微小な値を切り捨てる | アナログスティックの遊びによる勝手な移動を止める |
| Scalar | 値に係数を掛ける | 感度調整、軸ごとの倍率調整 |
| Smooth | 値の変化をならす | 入力のがたつきを抑えたいとき |
もっとも混乱しやすいのが Swizzle Input Axis Values です。キーが生む値は既定で X 成分に入るため、W と S をそのまま Axis2D の Input Action に割り当てても、前後ではなく左右の成分として届いてしまいます。前後方向のキーには Swizzle を、逆向きのキーには Negate を、と組み合わせるのが定石です。
6Trigger:いつ発火させるかを決める
Trigger は「加工後の値がどうなったらアクションを発火させるか」を決める部品です。Modifier と同じく Input Mapping Context のキー行、または Input Action 本体に設定します。何も設定しない場合は、入力が有効な値を持っている間ずっと発火し続ける挙動になります。つまりキーを押しっぱなしにすると毎フレーム発火するということです。
| 代表的な Trigger | 発火の条件 |
|---|---|
| Down | 入力が有効な値を持っている間、継続して発火する |
| Pressed | 押された瞬間の1回だけ発火する |
| Released | 離された瞬間に発火する |
| Hold | 指定した時間押し続けたときに発火する |
| Tap | 短く押して離したときに発火する |
| Pulse | 押している間、一定間隔で繰り返し発火する |
| Chorded Action | 別の Input Action が有効な間だけ発火する(同時押しの表現) |
ここが旧来の入力設定との大きな違いです。「長押しで拾う」といった仕様を、以前はタイマーやカウンタを自作して実現していましたが、Enhanced Input では Trigger を選ぶだけで済みます。
7受け取り側に届く5つのイベント
ブループリントで Input Action のイベントノードを置くと、実行ピンが複数並びます。これが Trigger の状態遷移に対応した通知です。単純なキーなら Triggered だけで足りますが、Hold のような時間のかかる Trigger では他のピンが意味を持ちます。
| イベント | 意味 |
|---|---|
| Started | Trigger の評価が始まった。Hold なら押し始めた瞬間 |
| Ongoing | 評価は続いているが、まだ条件を満たしていない。Hold なら押し続けている最中 |
| Triggered | 条件が成立して発火した。実際の処理を書く場所 |
| Completed | Trigger の評価が終了した |
| Canceled | 条件を満たさないまま中断された。Hold の途中で離した場合など |
イベントノードには実行ピンのほかに、値の出力ピンもあります。Value Type が Digital なら真偽値、Axis2D なら Vector2D として取り出せます。Value Type と受け取り方が食い違うと値が常にゼロに見えるので注意してください。
8旧 Input Mappings との違いを整理する
| 観点 | 旧 Input Mappings | Enhanced Input |
|---|---|---|
| 設定の置き場所 | Project Settings 内の一覧(プロジェクト全体で1つ) | コンテンツブラウザのアセット(いくつでも作れる) |
| 入力の種類 | Action(押下)と Axis(軸)が別建て | Input Action に統合し、Value Type で区別する |
| 実行中の切り替え | 実質できない。処理側で分岐する | Mapping Context の追加・削除で丸ごと切り替え |
| 値の加工 | Scale の指定程度。あとは受け取り側で自作 | Modifier を積み重ねて宣言的に指定 |
| 長押し・タップ | 自前でタイマー処理を書く | Trigger を選ぶだけ |
| 優先度の概念 | なし | Mapping Context ごとに優先度を持つ |
9最初につまずきやすいところ
Input Action は「移動」「攻撃」のようにゲーム内の意味で名前を付けます。キー名を含めた
IA_KeyF のような命名は、後でキー割り当てを変えたときに名前だけ取り残されて混乱のもとになります。アセットを作っただけでは何も起きません。Input Mapping Context を Subsystem 経由でプレイヤーに追加する処理を書き忘れると、イベントノードは一切呼ばれず「作ったのに反応しない」状態になります。
状態ごとにコンテキストを分けます。「常時有効な基本操作」を優先度の低いコンテキストに、「その場面だけの操作」を高い優先度のコンテキストに置くと、着脱だけで入力体系が切り替わります。
Trigger を指定しないと押しっぱなしで毎フレーム発火します。1回だけ実行したい処理を Triggered ピンにつなぐと連射されるため、Pressed トリガーを使うか Started ピンを使ってください。
10UI と入力の関係にも注意する
Enhanced Input を正しく設定しても、ウィジェット (Widget) を画面に出した後だけ入力が効かなくなる、というトラブルはよく起こります。これは Enhanced Input の問題ではなく、プレイヤーの入力モードがどこに向いているかという別レイヤーの話です。入力モードの扱いについては 「Set Input Mode」の種類と使い方 と SetInputMode_UIOnlyを取り消す方法 が参考になります。ポーズメニューを閉じるキーで悩んだ場合は Blueprintで「Esc」キーを使ってイベントを発生させる方法 も併せて確認してください。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- ブループリントで途中から親クラスを指定する方法
- C++で編集となっているコンポーネントをブループリントで編集する方法
- Boolean変数の初期値を変更する方法
- ブループリントで特定のキーが押された時にイベントを発火させる方法
- ブループリントで配列からインデックスを指定して取得する方法
- Blueprintで「Esc」キーを使ってイベントを発生させる方法
- Blueprintで「Cast To」を使い、複数のクラスに対応する方法
- Blueprintで指定した確率で処理を分岐させる方法
- FrameGrabberをBlueprintで使用する方法
- ブループリントで現在日時を取得する方法
- Enhanced Input とは?Input Action と Input Mapping Context の基本
- Enhanced Input でキー入力を受け取る手順
- 旧 Input Mappings から Enhanced Input へ移行する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- UE5 の Lumen とは|リアルタイムGIの仕組みと有効化手順 NEW 2026-08-03 07:45:20
- UE5 の Lumen が暗い・反射しない|原因と確認ポイント NEW 2026-08-03 07:45:20
- UE5 のライトの種類と使い分け|Directional/Point/Spot/Rect NEW 2026-08-03 07:45:20
- UE5 の Nanite とは|有効化手順と対応条件を解説 NEW 2026-08-03 07:45:20
- UE5 の Nanite が効かない|原因と対処の切り分け NEW 2026-08-03 07:45:20
- UE5 の Nanite と LOD の違い|使い分けの指針 NEW 2026-08-03 07:45:20
- UE5 のマテリアルとマテリアルインスタンス|違いと使い分け NEW 2026-08-03 07:45:20
- UE5 のマテリアルノード|Lerp・Fresnel・Panner NEW 2026-08-03 07:45:20
- UE5 のマテリアルブレンドモード|Two Sided と選び方 NEW 2026-08-03 07:45:20
- UE5 の Enhanced Input 入門|IAとIMCの基本 NEW 2026-08-03 07:45:20
- UE5 の Enhanced Input 実装手順|BPでキー入力 NEW 2026-08-03 07:45:20
- UE5 の旧入力から Enhanced Input へ移行する手順 NEW 2026-08-03 07:45:20
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 2026-06-22 12:19:10
コメントを削除してもよろしいでしょうか?