タイトル: ブループリントで特定のキーが押された時にイベントを発火させる方法
SEOタイトル: Unreal Engine Blueprint キー入力イベント完全ガイド
| この記事の要点 |
|
Unreal Engine Blueprint でキー入力を受ける
Unreal Engine の Blueprint でキー入力イベントを受ける方法は、大きく分けて以下の 3 つです。
| 方式 | 難易度 | 用途 | UE バージョン |
|---|---|---|---|
| 直接キーイベント (Keyboard Events) | ★ 最も簡単 | プロトタイプ・デバッグ | 全バージョン |
| Input Action (旧 Input System) | ★★ | 本番ゲーム (キー再マッピング前提) | UE 4.x / 5.0 |
| Enhanced Input | ★★★ | 本番ゲーム (近代的) | UE 5.1+ 推奨 |
方法1: 直接キーイベント (最も簡単)
- Character や Actor の Blueprint を開き、Event Graph に移動
- 空きスペースで右クリック
- 検索ボックスに
FやSpace Barなど、キー名を入力 - 「Keyboard Events」カテゴリのノードを選択
- Pressed ピンから処理を繋ぐ
このノードは押された瞬間 (Pressed) と離した瞬間 (Released) で発火します。
[F Key Event]
Pressed ──→ Print String ("F pressed")
Released ──→ Print String ("F released")
Key ← F
注意点
- このノードはキャラクター BP に置いて、Auto Possess Player を Player 0 にするか、Player Controller BP に置く必要があります
- Pawn 系 BP の場合、Class Defaults で Auto Possess Player = Player 0 を設定
- キーを直接ハードコードするので、ユーザがキー再マッピングできない
方法2: Input Action (旧 Input システム)
キーを抽象化した「アクション名」で扱うため、後からキー変更が容易。UE 4.x / 5.0 の標準。
ステップ 1: Project Settings で Input Action を定義
- Edit → Project Settings → Engine → Input
- 「Action Mappings」の「+」ボタンで追加
- Name に
Jump、Key に Space Bar を割り当て - 同じ名前に複数キーを追加可能 (Space Bar とゲームパッドの A ボタン両方など)
ステップ 2: Blueprint でイベントを受け取る
- Character BP の Event Graph で右クリック
- 「Input Action Jump」で検索
- Pressed / Released ピンに処理を繋ぐ
[InputAction Jump]
Pressed ──→ Jump (Character の組み込みノード)
Released ──→ Stop Jumping
軸入力 (Axis Mapping)
移動やマウスのように連続値が欲しい場合は Axis Mappings:
- MoveForward: W=1.0, S=-1.0
- MoveRight: D=1.0, A=-1.0
- Turn: マウス X 軸 = 1.0
- LookUp: マウス Y 軸 = -1.0
Blueprint では InputAxis MoveForward ノードが毎フレーム呼ばれ、Axis Value (float) を提供します。
方法3: Enhanced Input (UE 5.1+ 推奨)
UE 5.1 以降はEnhanced Input が新しい標準。Input Action と Input Mapping Context を分離する近代的な設計です。
構成要素
| 要素 | 役割 |
|---|---|
| Input Action (IA_*) | 抽象アクション (Jump / Fire / Move)。値の型 (bool/float/Vector2D/Vector3D) を持つ |
| Input Mapping Context (IMC_*) | キー割当ての集合。状況 (歩行中 / 車中 / メニュー中) ごとに切り替え可 |
| Trigger | Pressed / Held / Released / Tap / Hold など |
| Modifier | 値の変換 (デッドゾーン / 軸反転 / 感度) |
セットアップ手順
- Content Browser で右クリック → Input → Input Action を作成 (
IA_Jump)。Value Type を Digital (bool) に - 同様に Input Mapping Context を作成 (
IMC_Default) - IMC_Default を開き、「+」で IA_Jump を追加 → Space Bar を割り当て
- Character BP の
BeginPlayで、PlayerController の Enhanced Input Local Player Subsystem に IMC_Default を追加 - Event Graph で右クリック →
EnhancedInputAction IA_Jumpを配置
[Event BeginPlay]
──→ [Get Player Controller]
──→ [Get Local Player]
──→ [Get Subsystem (EnhancedInputLocalPlayerSubsystem)]
──→ [Add Mapping Context]
Mapping Context = IMC_Default
Priority = 0
[EnhancedInputAction IA_Jump]
Triggered ──→ Jump
Started ──→ (押した瞬間)
Completed ──→ Stop Jumping (離した瞬間)
Action Value (V) → bool
Trigger の種類
| Trigger | 意味 |
|---|---|
| Started | 入力が始まった瞬間 (Pressed) |
| Triggered | 入力が有効な間 (毎フレーム発火) |
| Ongoing | Triggered になっていない継続入力 |
| Completed | 入力が終了した瞬間 (Released) |
| Canceled | 入力が途中でキャンセル |
| Hold | 指定時間長押し |
| Tap | 指定時間以内に押して離した |
| Pulse | 一定間隔で繰り返し発火 |
| Chorded Action | 別アクションが押されている時のみ |
UI / Widget でキー入力を受ける
UMG Widget の場合は通常のキーイベントが届きません。以下のいずれかが必要:
- Widget の Class Defaults で IsFocusable = true
- Construct 時に
Set Input Mode UI Only+Set Keyboard Focus to This Widget - Widget BP の Event Graph で
OnKeyDownをオーバーライド
[Event On Key Down]
Key Event → Get Key → is Equal to Escape ?
──→ Remove from Parent
──→ Handled (return)
キーのデバッグ表示
[F Key Event]
Pressed ──→ Print String
In String = "F pressed!"
Text Color = Red
Duration = 2.0
# またはコンソールで確認
~ (チルダ) でコンソールを開いて:
showdebug input
FAQ
Q: キーを押してもイベントが発火しない
A: ① Auto Possess Player が設定されていない → Pawn BP の Class Defaults で Player 0 に。 ② Player Controller がそのキャラを所有していない。 ③ Enhanced Input なら IMC を Subsystem に Add していない。
Q: Escape キーが反応しない
A: PIE (Play in Editor) では Escape がエディタの停止に使われるため、ゲーム側に届きません。Standalone Game で起動するか、別キーで検証。
Q: 旧 Input Action と Enhanced Input、どちらを使うべき?
A: UE 5.1 以降は Enhanced Input 推奨。コンテキスト切替・トリガ抽象化が強力で、Epic 公式も新規プロジェクトは Enhanced Input を案内しています。