Quick answer: Unreal Character jumping twice per button press? Two input sources are calling Character->Jump() — usually a legacy InputAction binding plus an EnhancedInput one.

After migrating to EnhancedInput, the legacy InputAction is still bound. Both fire on Space, producing double jumps.

Two Input Stacks

EnhancedInput and legacy InputComponent both forward input. Migrating to EnhancedInput requires removing the legacy bindings or the same key fires both.

Remove Legacy Bindings

In your SetupPlayerInputComponent, delete the BindAction calls for inputs now handled by EnhancedInput. EnhancedInput uses BindAction on UInputAction objects, not the legacy InputComponent.

JumpCurrentCount

For intentional multi-jump, set JumpMaxCount > 1 and tune JumpMaxHoldTime. The component tracks counts properly when you don’t over-call Jump().

Input Action vs Function

Bind an Input Action to a delegate that calls a single function. Avoid duplicating bindings of the same key to different functions that both end up calling Jump.

Verifying

One press = one jump. Setting JumpMaxCount = 2 produces a clean double-jump on a second press.

“Double jumps are double bindings. Migrate fully to one input stack.”

After migrating to EnhancedInput, search for BindAction in your codebase — surviving legacy calls are how double-fires creep back in.