ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
この記事の要点
- 旧 Input Mappings(Action Mappings / Axis Mappings)は非推奨扱いです。新規開発は Enhanced Input へ移行するのが前提になります。
- Action Mapping は Digital の Input Action へ、Axis Mapping は Axis1D または Axis2D の Input Action へ移すのが基本方針です。
- Axis Mapping の Scale による符号指定は Negate モディファイアに、前後左右の2軸は Axis2D 1つへの統合に置き換わります。
- Pressed / Released の2つのイベントは、Pressed / Released トリガー、または Started / Completed ピンで表現します。
- 一度に全部を書き換えず、機能単位で置き換えて動作確認する進め方が安全です。旧ノードの消し忘れによる二重発火に注意。
途中まで作ったプロジェクトや、古い解説を見ながら組んだ入力処理を Unreal Engine 5 (UE5) の Enhanced Input へ移す作業には、機械的に置き換えられる部分と、考え方から見直す必要がある部分が混在しています。この記事では、旧 Input Mappings が Enhanced Input のどこに対応するのかを整理したうえで、実際の手順と起きやすいトラブルの原因を扱います。
1なぜ移行するのか
旧来の入力システムは、Project Settings の Input カテゴリにある Action Mappings と Axis Mappings で設定するものでした。UE5 では Enhanced Input が標準となり、旧 Bindings のセクションには非推奨である旨の表示が出ます。当面は動作しますが、公式ドキュメントもテンプレートも新しい情報はすべて Enhanced Input 前提で書かれるため、旧方式のままでは参照できる資料が急速に減っていきます。
機能面の差も小さくありません。旧方式では自作コードが必要だった「長押し判定」「入力体系の切り替え」「入力値の加工」が、設定だけで実現できます。移行の手間はかかりますが、その後の追加実装は明確に軽くなります。
2対応関係を先に押さえる
移行作業のほとんどは、旧設定の各項目をどこに書き換えるかという単純作業です。まず対応表を頭に入れておくと迷わず進められます。
| 旧 Input Mappings | Enhanced Input での書き換え先 |
|---|---|
| Action Mapping | Value Type が Digital (bool) の Input Action |
| Axis Mapping(1軸のみ) | Value Type が Axis1D (float) の Input Action |
| Axis Mapping 2本(前後+左右) | Value Type が Axis2D (Vector2D) の Input Action 1つに統合 |
| Scale に -1.0 を指定 | そのキーに Negate モディファイアを追加 |
| Scale に 0.5 などの倍率を指定 | そのキーに Scalar モディファイアを追加 |
| 1つの Action への複数キー割り当て | 同じ Input Action に複数行のキーを追加(考え方は同じ) |
| InputAction イベントの Pressed 実行ピン | Pressed トリガー、または Started 実行ピン |
| InputAction イベントの Released 実行ピン | Released トリガー、または Completed 実行ピン |
| InputAxis イベントの Axis Value ピン | Input Action イベントの値の出力ピン |
| 設定は Project Settings に1セットだけ | Input Mapping Context を必要な数だけ作り、実行時に着脱 |
3移行の手順
いきなり全部を書き換えるのではなく、機能のまとまりごとに置き換えて都度動作確認するのが結果的に早道です。
- 現状の棚卸しをします。Project Settings の Input を開き、Action Mappings と Axis Mappings の一覧を書き出します。名前・キー・Scale をメモしておけば、そのまま移行後のチェックリストになります。
- Enhanced Input が使える状態か確認します。プラグインが有効か、既定クラス(Player Input Class / Input Component Class)が Enhanced Input 用かを確認します。古いプロジェクトでは旧クラスのままのことがあります。
- Input Action を作ります。棚卸しした一覧をもとに、対応表に従って Value Type を決めます。前後と左右の Axis Mapping は、この段階で1つの Axis2D にまとめる判断をします。
- Input Mapping Context を作ります。まずは
IMC_Defaultのような1つのコンテキストに、旧設定と同じキー割り当てをすべて入れます。分割は後からでもできます。 - Modifier と Trigger を設定します。Scale の負値を Negate に、倍率を Scalar に置き換えます。Axis2D にまとめたキーには Swizzle Input Axis Values を追加します。
- Mapping Context を適用する処理を追加します。ブループリント (Blueprint) なら BeginPlay で Enhanced Input Local Player Subsystem を取得し、Add Mapping Context を呼びます。旧方式にはなかった工程で、忘れると全部が無反応になります。
- イベントノードを1つずつ差し替えます。旧
InputAction/InputAxisノードから伸びている処理を、新しいイベントノードにつなぎ替えます。1機能ずつ動作確認し、済んだら旧ノードを削除します。 - 旧設定を削除します。すべての差し替えが終わったら、Project Settings の Action Mappings / Axis Mappings を空にします。
4Axis Mapping の統合が最大の作り替えポイント
単純な置き換えでは済まないのがここです。旧方式では MoveForward と MoveRight という2つの Axis Mapping を作り、それぞれ独立した float として受け取っていました。そのまま Axis1D の Input Action を2つ作っても動きますが、Enhanced Input の利点をほとんど捨てることになります。
Axis2D 1つに統合すると、キーボードとゲームパッドのスティックを同じ Input Action に同居させられます。スティックは元から2軸の値を出すため、Modifier なしで割り当てるだけです。受け取り側は Vector2D を1回受け取るだけになり、2つに分かれていた処理を1か所にまとめられます。
統合時のキーごとの Modifier は次のとおりです。キーが生む値は既定で X 成分に入るため、前後方向は Swizzle Input Axis Values で Y 成分へ移す必要があります。
| キー | 旧 Axis Mapping | 新しい Modifier(上から順に) |
|---|---|---|
| W | MoveForward / Scale 1.0 | Swizzle Input Axis Values |
| S | MoveForward / Scale -1.0 | Negate → Swizzle Input Axis Values |
| D | MoveRight / Scale 1.0 | なし |
| A | MoveRight / Scale -1.0 | Negate |
Modifier は並べた順に上から適用されます。S のように2つ付ける場合は、順序が違うと結果が変わります。「効いているはずなのに方向がおかしい」ときは、まず並び順を疑ってください。
5Pressed / Released の置き換え
旧 InputAction イベントノードには Pressed と Released の2つの実行ピンがありました。Enhanced Input のイベントノードにはこの名前のピンはなく、代わりに Started / Ongoing / Triggered / Completed / Canceled が並びます。対応のさせ方は2通りあり、どちらでも動きます。
キー行に Pressed トリガーを追加すると、押した瞬間に1回だけ Triggered が発火します。Released トリガーなら離した瞬間に発火します。受け取り側のグラフが単純になります。
トリガーを付けず、Started ピンを押した瞬間の処理に、Completed ピンを離したときの処理に使います。1つのノードで押下と解放の両方を扱えます。
どちらでもかまいませんが、プロジェクト内で方針を統一しておくと後から読みやすくなります。複数人で作業する場合、同じ意味の実装が2種類混在すると混乱のもとです。
6つまずきやすい点
| 症状 | ありがちな原因 | 対処 |
|---|---|---|
| 移行後まったく入力が効かない | Add Mapping Context を呼んでいない | 旧方式には存在しなかった工程。Subsystem 経由での適用処理を追加する |
| 1回のキー押下で処理が2回走る | 旧イベントノードが残っていて二重にバインドされている | 差し替え済みの旧ノードを確実に削除し、Project Settings の旧マッピングも消す |
| ジャンプが連射される | Trigger 未指定のまま Triggered ピンにつないでいる | Pressed トリガーを追加するか、Started ピンに変更する |
| 移動方向が前後左右で入れ替わる | Swizzle Input Axis Values の付け忘れ | 前後に使うキーへ Swizzle を追加する |
| 後退や左移動が反対を向く | Negate と Swizzle の順序が逆 | Negate を先、Swizzle を後にする |
| 値が常にゼロで届く | Input Action の Value Type と受け取り方が不一致 | Axis2D なら Vector2D として受け取るなど、型をそろえる |
| ノードは置けるのに一度も呼ばれない | Input Component Class が旧クラスのまま | Project Settings の既定クラスを Enhanced Input 用に変更する |
| UI を出した後だけ効かない | 入力モードが UI 側に切り替わっている | 入力モードの設定を見直す。Enhanced Input とは別レイヤーの問題 |
最後の項目は移行作業と無関係に見えて、実際には移行のタイミングで表面化することがあります。ウィジェット (Widget) の表示前後で挙動が変わるなら、「Set Input Mode」の種類と使い方 と SetInputMode_UIOnlyを取り消す方法 を確認してください。メニューを閉じるキーが効かない場合は Blueprintで「Esc」キーを使ってイベントを発生させる方法 も参考になります。
7移行を機に設計を見直す
せっかく手を入れるので、旧設定をそのまま写すだけで終わらせず、Enhanced Input ならではの構成に整えておくと後が楽です。とくに効果が大きいのが Input Mapping Context の分割です。
「常時有効な基本操作」と「その場面だけの操作」でコンテキストを分けます。乗り物、会話、ポーズメニューなど、状態ごとにコンテキストを用意して着脱すれば、処理側の分岐がほとんど不要になります。
コンテキストを分けたのに削除処理を書き忘れると、前の状態の入力が効き続けます。追加する処理を書いたら、その場で対になる削除処理も書いてしまうのが安全です。
Input Action の命名も見直しどきです。旧方式では MoveForward のようにキーの向きに近い名前を付けがちでしたが、IA_Move のようにゲーム内の意味で名付けたほうが、キー割り当てを変えたときのずれが起きません。あわせて Input フォルダにアセットをまとめるなど、置き場所のルールも決めておくとよいでしょう。
移行そのものは地味ですが、一度終えれば以後の入力まわりの追加実装は明らかに短く済みます。アニメーション関連の新しい仕組みを試すときにも足回りが整っている必要があるので、Motion Matchingの導入と必要なプラグイン のような機能に進む前に片付けておくことをおすすめします。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
コメントを削除してもよろしいでしょうか?