Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

unreal-enhanced-input — Claude Code skill: what it does & install

Configures Unreal Engine 5 Enhanced Input assets, C++ bindings, and triggers. Useful when wiring movement, look, and jump controls or fixing input loss on clients.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill unreal-enhanced-input -a claude-code
Open on GitHub

What unreal-enhanced-input does

The skill targets Unreal Engine 5.8, where the legacy axis system is deprecated. It guides the creation of IA_ and IMC_ assets, helps select correct value types like Axis2D, and configures modifiers such as Negate and Swizzle Input Axis Values for standard WASD movement. Keep in mind that UE 5.8 deprecates the Combo trigger, so building input sequences on it will cause rework later.

For C++ development, the workflow verifies that "EnhancedInput" is listed in PublicDependencyModuleNames inside *.Build.cs. It then binds handlers to UEnhancedInputComponent using ETriggerEvent and registers mapping contexts via UEnhancedInputLocalPlayerSubsystem. When multiplayer clients lose controls after spawning, move AddMappingContext calls into PawnClientRestart() because BeginPlay can fire before controller possession completes.

What it helps with

  • map WASD keys to an Axis2D vector using Negate and Swizzle modifiers
  • bind character movement and actions to UEnhancedInputComponent in C++
  • register input mapping contexts using UEnhancedInputLocalPlayerSubsystem
  • fix client input loss after respawn in multiplayer games

Example prompts for the agent

  • Bind move and look actions to EnhancedInputComponent in my Character class
  • Set up an IMC_Default asset with modifiers for WASD movement
  • Fix input dropping after respawn on multiplayer clients

How to install unreal-enhanced-input

1Skills CLI (Vercel)

npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill unreal-enhanced-input -a claude-code

2Manually: put the files in place

~/.claude/skills/unreal-enhanced-input/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/unreal-enhanced-input/

From the same set40

The whole set →
game-feel gamedev-skills Teaches the agent to add feedback to game actions: camera shake, hit-stop, eased tweens, squash and stretch, knockback. For mechanics that work but feel weightless. Claude Code CX Codex Cursor +1 9,400installs game-ui-ux gamedev-skills Engine-neutral game UI architecture skill for responsive layouts, screen stacks, gamepad focus, and event-driven HUD updates. Claude Code CX Codex Cursor +1 9,200installs level-design gamedev-skills Plans playable game levels from blockout through playtesting, covering routes, pacing, gates and encounters. Use it when working on whiteboxes, critical paths or room flow. Claude Code CX Codex Cursor +1 7,500installs camera-systems gamedev-skills Engine-neutral patterns for 2D and 3D game cameras: smooth follow, deadzones, look-ahead, bounds clamping, and third-person collision. Claude Code CX Codex Cursor +1 7,100installs audio-design gamedev-skills A skill that treats game audio as a mixer graph: buses, gain in decibels, sidechain ducking, adaptive music and beat-synced events. Samples use Godot 4.7, Unity gets notes. Claude Code CX Codex Cursor +1 7,100installs performance-optimization gamedev-skills A skill that turns “the game runs slow” into a measured bottleneck and a specific fix: profile first, then pool objects, batch draw calls, cut allocations. Claude Code CX Codex Cursor +1 7,100installs game-ai gamedev-skills Designs NPC decision-making, behavior trees, steering forces, and A* pathfinding. Useful when building game enemy logic across engines. Claude Code CX Codex Cursor +1 7,100installs input-systems gamedev-skills Engine-neutral input system: map keys to named actions, rebinding with conflict detection, keyboard, gamepad and touch support, analog deadzones, input buffering and coyote time. Claude Code CX Codex Cursor +1 6,800installs

Similar

threejs-game-director majidmanzarpour A director skill for Three.js browser games: it runs the work from a playable loop to graphics, UI and browser checks by handing phases to sibling skills. Claude Code CX Codex Cursor +1 3,000installs threejs-audio-generator majidmanzarpour A skill that turns ElevenLabs into game audio for Three.js: effects, loops, music and voice lines, written straight into the project. Claude Code CX Codex Cursor +1 2,900installs sprite-pipeline official OpenAI Creates and normalizes 2D animation strips from an approved frame. Use it when game sprites need consistent scale and alignment before review. CX Codex GP ChatGPT 53installs orbit-card heygen-com Adds a 10-second 1920×1080 HyperFrames motion block where a single feature card orbits a dot sphere using exported Blender camera paths. Claude Code CX Codex Cursor +1 9,800installs sdf earthtojake This skill authors and validates SDFormat files for models and worlds, then helps prepare them for simulator handoff. Claude Code CX Codex Cursor +1 10,500installs urdf earthtojake This skill helps create, validate, and debug URDF robot descriptions. Use it when working with links, joints, geometry, meshes, or inertial data. Claude Code CX Codex Cursor +1 10,400installs hatch-pet official openai Creates and packages animated pets and spritesheets for Codex. Use it to turn a character concept, reference image, or brand cues into a pet. Claude Code CX Codex Cursor +1 3,300installs gcode earthtojake Slices STL, 3MF, and OBJ models into printer-ready G-code through OrcaSlicer. Use it when you need a print file without connecting to the printer. Claude Code CX Codex Cursor +1 9,500installs

Questions about unreal-enhanced-input

How do I install unreal-enhanced-input in Claude Code?

Run npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill unreal-enhanced-input -a claude-code in your terminal.

What does unreal-enhanced-input do?

It provides patterns and guidelines for wiring player input in Unreal Engine 5 using Input Actions, Input Mapping Contexts, and C++ bindings.

What dependency is required to bind Enhanced Input in C++?

Add "EnhancedInput" to PublicDependencyModuleNames in your project's *.Build.cs file.

Source text

SKILL.md · Apache-2.0
---
name: unreal-enhanced-input
description: >
  Set up player input in Unreal Engine 5 with Enhanced Input: Input Actions, Input Mapping
  Contexts, modifiers and triggers, adding the mapping context, and binding actions by
  ETriggerEvent. Use when wiring movement/look/jump input, creating IA_/IMC_ assets, binding
  in C++ or Blueprints, or when the user mentions Enhanced Input, Input Mapping Context,
  Input Action, IA_/IMC_, or ETriggerEvent.
---

# Unreal Enhanced Input

Wire player input the modern UE5 way with the **Enhanced Input** system: data-driven Input
Actions and Mapping Contexts instead of the legacy Project Settings axis/action mappings.
Targets **UE 5.8** (Enhanced Input is the default; legacy input is deprecated).

## When to use

- Use when adding movement/look/jump/fire input, creating Input Action (`IA_`) and Input
  Mapping Context (`IMC_`) assets, applying modifiers/triggers, adding a mapping context to a
  player, or binding actions in C++ or Blueprints.
- Use when the project has `IA_*`/`IMC_*` assets or references `EnhancedInput`.

**When *not* to use:** engine-agnostic input *architecture* (rebinding strategy, buffering,
multi-device design) → `input-systems`. The Pawn/Character C++ those bindings live in →
`unreal-cpp-gameplay`.

## Core workflow

1. **Enable the module/plugin.** Enhanced Input is on by default in UE5; for C++ binding add
   `"EnhancedInput"` to `PublicDependencyModuleNames` in `*.Build.cs`.
2. **Create Input Actions (`IA_`).** Each has a **Value Type**: `Digital (bool)` for buttons,
   `Axis1D (float)` for triggers, `Axis2D (Vector2D)` for movement/look.
3. **Create an Input Mapping Context (`IMC_`)** that maps keys/buttons to those actions. Use
   **Modifiers** to shape raw input (Negate, Swizzle Input Axis Values, Dead Zone) — e.g. WASD
   into one Axis2D needs Negate on A/S and a Swizzle on W/S. Use **Triggers** (Pressed, Hold,
   Tap) to decide *when* an action fires. The **Combo** trigger is deprecated in UE 5.8; don't
   build new input on it.
4. **Add the mapping context to the player** via the `EnhancedInputLocalPlayerSubsystem`
   (`AddMappingContext(IMC, Priority)`), usually in `BeginPlay`/possession.
5. **Bind actions** to handlers by `ETriggerEvent` (`Triggered`, `Started`, `Completed`, …) on
   the `EnhancedInputComponent`, and read the `FInputActionValue` in the handler.
6. **Verify** in PIE; the Enhanced Input debugging console commands
   (`showdebug enhancedinput`) show which actions trigger and their values.

## Patterns

### 1. Add the mapping context (C++ Character)

```cpp
void AMyCharacter::BeginPlay()
{
    Super::BeginPlay();
    if (APlayerController* PC = Cast<APlayerController>(GetController()))
        if (ULocalPlayer* LP = PC->GetLocalPlayer())
            if (auto* Subsystem = LP->GetSubsystem<UEnhancedInputLocalPlayerSubsystem>())
                Subsystem->AddMappingContext(DefaultMappingContext, /*Priority*/ 0);
}
// DefaultMappingContext is a UPROPERTY(EditAnywhere) TObjectPtr<UInputMappingContext>.
```

### 2. Bind actions and read values

```cpp
void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    // The component is an Enhanced Input component when the plugin is active.
    // (Don't name the parameter InputComponent: that shadows AActor::InputComponent.)
    if (UEnhancedInputComponent* EIC = Cast<UEnhancedInputComponent>(PlayerInputComponent))
    {
        EIC->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AMyCharacter::Move);
        EIC->BindAction(LookAction, ETriggerEvent::Triggered, this, &AMyCharacter::Look);
        EIC->BindAction(JumpAction, ETriggerEvent::Started,   this, &ACharacter::Jump);
        EIC->BindAction(JumpAction, ETriggerEvent::Completed, this, &ACharacter::StopJumping);
    }
}

void AMyCharacter::Move(const FInputActionValue& Value)
{
    const FVector2D Axis = Value.Get<FVector2D>();          // Axis2D action
    AddMovementInput(GetActorForwardVector(), Axis.Y);
    AddMovementInput(GetActorRightVector(),   Axis.X);
}
```

### 3. Blueprint equivalent (node flow)

```text
Event BeginPlay
  -> Get Controller -> Cast To PlayerController -> Get Local Player
  -> Get EnhancedInputLocalPlayerSubsystem -> Add Mapping Context (IMC_Default, Priority 0)

// IA_Move is exposed as its own event node in the Character's Event Graph:
EnhancedInputAction IA_Move (Triggered)
  -> Action Value (Vector2D) -> Add Movement Input (Forward * Y, Right * X)
```

## Pitfalls

- **No input at all** — the mapping context was never added (`AddMappingContext`), or the
  player has no Local Player yet. Add it after possession/`BeginPlay`.
- **Input works in single player but not on a client, or stops after respawn** — `BeginPlay`
  ran before the controller possessed the pawn, so `GetController()` was null. Add the context
  in an override of `PawnClientRestart()`, which runs on the owning client after possession
  (Epic's Input Overview does this), or in the PlayerController.
- **Link/compile error binding in C++** — `"EnhancedInput"` isn't in `Build.cs`
  `PublicDependencyModuleNames`.
- **WASD only moves on two keys / wrong axis** — Axis2D needs **Modifiers**: Negate on the
  negative keys (A, S) and a Swizzle Input Axis Values on the vertical (W/S) so both axes map
  correctly. Raw bindings without modifiers misbehave.
- **`Get<FVector2D>()` returns zero** — value-type mismatch: the Input Action is Digital/Axis1D,
  not Axis2D. Match the `Get<T>()` to the action's Value Type.
- **Action fires every frame unexpectedly** — `Triggered` repeats while held for a Down trigger;
  use `Started`/`Completed` for one-shots (jump press/release), or a Pressed/Tap trigger.
- **Two contexts fight** — multiple mapping contexts stack by Priority; a higher-priority
  context can consume a key. Manage with priorities and `RemoveMappingContext`.

## References

- For a complete first-/third-person C++ Character with Enhanced Input (header + source,
  including look/jump and a control-rebind note), read `references/cpp-setup.md`.
- Primary docs: "Enhanced Input in Unreal Engine"
  (`https://dev.epicgames.com/documentation/en-us/unreal-engine/enhanced-input-in-unreal-engine`)
  and "Input Overview"
  (`https://dev.epicgames.com/documentation/en-us/unreal-engine/input-overview-in-unreal-engine`).

## Related skills

- `input-systems` — engine-agnostic input architecture and rebinding strategy.
- `unreal-cpp-gameplay` — the Character/Pawn class and module setup.
- `fps-shooter` — composes input with a 3D controller and shooting.

© gamedev-skills · Apache-2.0 · gamedev-skills/awesome-gamedev-agent-skills

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor