UE5 Enhanced Input で入力設定とキー割り当てを実装する方法

UE5 Enhanced Input の基本と実装方法

UE5 Enhanced Input システムの概要
🎮
高度な入力制御

複雑な入力パターンや条件付き入力を柔軟に設定可能

🔧
アセットベースの設定

入力アクションとマッピングをアセットとして管理

🔄
ランタイムでの動的変更

ゲーム中に入力設定を柔軟に切り替え可能

 

UE5 Enhanced Input システムの概要と特徴

UE5のEnhanced Inputシステムは、従来の入力システムを大幅に改善し、より柔軟で強力な入力制御を可能にします。このシステムの主な特徴は以下の通りです:

  1. アセットベースの設定

    • Input Action:個々の入力アクションを定義
    • Input Mapping Context:入力アクションとキーのマッピングを管理

  2. 高度な入力処理

    • トリガー:押す、長押し、ダブルタップなど複雑な入力条件を設定可能
    • モディファイア:入力値の変換や調整が可能

  3. ランタイムでの動的変更

    • ゲーム中に入力設定を切り替えることが可能

  4. デバイス非依存

    • 様々な入力デバイスに対して統一的なアクションを定義可能

 

Enhanced Inputシステムを使用するには、プロジェクト設定でEnhanced Inputプラグインを有効にし、デフォルトの入力クラスを変更する必要があります。

 

Enhanced Inputの詳細な設定方法や使用例についてはこちらの公式ドキュメントを参照してください。

 

UE5 で入力アクションとマッピングコンテキストを作成する手順

Enhanced Inputシステムを使用するための基本的な手順は以下の通りです:

  1. Input Actionの作成

    • コンテンツブラウザで右クリック → 入力 → 入力アクション
    • 名前を付け(例:IA_Jump)、ダブルクリックで編集
    • Triggersセクションで入力条件を設定(例:Pressed、Released)

  2. Input Mapping Contextの作成

    • コンテンツブラウザで右クリック → 入力 → 入力マッピングコンテキスト
    • 名前を付け(例:IMC_Default)、ダブルクリックで編集
    • Mappingsセクションで入力アクションとキーを関連付け

  3. Input Mapping Contextの適用

    • ブループリントまたはC++で、EnhancedInputComponentを使用してマッピングコンテキストを適用

void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)

{
Super::SetupPlayerInputComponent(PlayerInputComponent)

 

if (UEnhancedInputComponent* EnhancedInputComponent = CastChecked<UEnhancedInputComponent>(PlayerInputComponent))
{
EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Started, this, &AMyCharacter::Jump)
}

 

if (APlayerController* PlayerController = Cast {
if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController->GetLocalPlayer()))
{
Subsystem->AddMappingContext(DefaultMappingContext, 0)
}
}
}



Enhanced Inputの実装手順の詳細と具体的な使用例についてはこちらの記事が参考になります。

 

UE5 Enhanced Input でキー割り当てを変更する方法

Enhanced Inputシステムでは、キー割り当ての変更が非常に柔軟に行えます。以下に主な方法を示します:

  1. エディタでの静的な変更

    • Input Mapping Contextアセットを開き、Mappingsセクションで直接キーを変更

  2. ランタイムでの動的な変更

    • C++またはブループリントで、新しいInput Mapping Contextを作成または既存のものを変更
    • UEnhancedInputLocalPlayerSubsystemを使用して、新しいマッピングコンテキストを適用

void AMyPlayerController::ChangeKeyBinding()

{
if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(GetLocalPlayer()))
{
// 既存のマッピングコンテキストを削除
Subsystem->RemoveMappingContext(OldMappingContext)

 

// 新しいマッピングコンテキストを追加
Subsystem->AddMappingContext(NewMappingContext, 0)
}
}

  1. プレイヤー設定の保存と読み込み

    • カスタムのセーブゲームクラスを作成し、プレイヤーのキー設定を保存
    • ゲーム起動時にセーブデータを読み込み、動的にマッピングコンテキストを生成

 

キー割り当ての変更方法の詳細と具体的な実装例についてはこちらの記事が参考になります。

 

UE5 Enhanced Input での同時入力の実装テクニック

Enhanced Inputシステムでは、複数のキーを同時に押す「同時入力」の実装が容易になりました。以下に主な実装方法を示します:

  1. Chorded Actionの使用

    • Input Actionのトリガーに「Chorded Action」を追加
    • Chord Actionに同時に押すべき他のInput Actionを指定

  2. Modifiersの活用

    • 「AND」モディファイアを使用して、複数の入力条件を組み合わせる

  3. カスタムトリガーの作成

    • ITriggerInterface を実装したカスタムトリガークラスを作成
    • 複雑な同時入力条件をプログラムで定義

 

同時入力の具体的な実装例:

void UMyEnhancedInputComponent::SetupInputComponent()

{
// 通常のジャンプアクション
BindAction(JumpAction, ETriggerEvent::Started, this, &UMyEnhancedInputComponent::Jump)

 

// Shiftキーを押しながらのジャンプアクション(ダッシュジャンプ)
BindAction(DashJumpAction, ETriggerEvent::Started, this, &UMyEnhancedInputComponent::DashJump)
}

 

同時入力の詳細な実装方法と応用例についてはこちらの記事が参考になります。

 

UE5 Enhanced Input でデッドゾーンを設定しクランプする方法

Enhanced Inputシステムでは、入力値のデッドゾーン設定やクランプが容易に行えます。これは特にアナログスティックなどの入力デバイスで有用です。

  1. デッドゾーンの設定

    • Input ActionまたはInput Mapping Contextのモディファイアセクションに「Dead Zone」を追加
    • Lower ThresholdとUpper Thresholdを設定して、入力値の無視範囲を定義

  2. 入力値のクランプ

    • 「Clamp」モディファイアを使用して、入力値の範囲を制限

  3. カスタムモディファイアの作成

    • IInputModifierInterfaceを実装したカスタムモディファイアクラスを作成
    • より複雑な入力値の調整ロジックを実装

 

デッドゾーンとクランプの設定例:

UInputAction* MoveAction = NewObject<UInputAction>(this)

oveAction->ValueType = EInputActionValueType::Axis2D

 

UInputModifierDeadZone* DeadZone = NewObject<UInputModifierDeadZone>(MoveAction)
DeadZone->LowerThreshold = 0.1f
DeadZone->UpperThreshold = 0.9f
oveAction->Modifiers.Add(DeadZone)

 

UInputModifierClamp* Clamp = NewObject<UInputModifierClamp>(MoveAction)
Clamp->MinValue = FVector(-1.0f, -1.0f, 0.0f)
Clamp->MaxValue = FVector(1.0f, 1.0f, 0.0f)
oveAction->Modifiers.Add(Clamp)

 

デッドゾーンとクランプの詳細な設定方法と応用例についてはこちらの記事が参考になります。

 

Enhanced Inputシステムは、UE5で入力処理を行う上で非常に強力なツールです。本記事で紹介した基本的な実装方法や応用テクニックを活用することで、より柔軟で高度な入力システムを構築することができます。ゲームの要件に応じて適切に設定を行い、プレイヤーにとって快適な操作感を実現しましょう。

 

また、Enhanced Inputシステムは常に進化しており、新しい機能や改善が加えられています。最新の情報や詳細な使用方法については、Unreal Engineの公式ドキュメントや開発者コミュニティを定期的にチェックすることをおすすめします。

 

Unreal Engine公式ドキュメント:Enhanced Input

 

最後に、Enhanced Inputシステムを効果的に活用するためのいくつかのベストプラクティスを紹介します:

  1. 入力アクションの適切な分類と命名
  2. マッピングコンテキストの効率的な管理
  3. モディファイアとトリガーの組み合わせによる複雑な入力パターンの実現
  4. デバイス非依存の入力設計
  5. パフォーマンスを考慮したInput Subsystemの使用

 

これらの点に注意しながら実装を進めることで、より保守性が高く、拡張性のある入力システムを構築することができるでしょう。

UE5のEnhanced Inputシステムを使って、入力設定やキー割り当てを効果的に実装する方法を解説します。従来の方法と比較して、どのような利点があるのでしょうか?