Skip to content

MotionJumpComponent

MotionJumpComponent manages jump intent, multi-jump, coyote time, jump buffering, landing feedback, and server-authoritative validation.

Requirements

  • Character with standard UCharacterMovementComponent
  • A resolvable UAbilitySystemComponent, commonly exposed by a PlayerState that implements IAbilitySystemInterface
  • Gameplay Ability System initialized
  • Enhanced Input configured
  • Wants-to-jump and jumping GameplayEffects
  • GameplayTags for jump intent, active jumping, and jump availability

For setup and input binding steps, see How to add Motion to a character.

Behavior

The component stores jump input, checks whether a jump can execute, applies direct jump velocity, manages coyote time and input buffering, resets jump count on landing, and broadcasts camera, sound, and Blueprint feedback.

Coyote time allows a jump shortly after leaving the ground. Jump buffering stores input shortly before landing and executes it when the character becomes valid for jumping.

API

Jump state

  • SetWantsToJump(bool bWantsToJump) -> void: sets jump intent.
  • GetWantsToJump() -> bool: returns jump intent.
  • IsCurrentlyJumping() -> bool: returns air/jump state.
  • CanJump() -> bool: checks whether another jump can execute.
  • TriggerJump(bool bIsAdditionalJump) -> bool: manually triggers a jump.
  • CanPerformJump() -> bool: validates all jump conditions.
  • PerformJump(bool bIsAdditionalJump) -> bool: executes the jump.
  • GetRemainingJumps() -> int32: returns available additional jumps.
  • HandleLanding() -> void: handles landing reset and feedback.

Timers and state management

  • UpdateCoyoteTime(float DeltaTime) -> void: updates coyote time.
  • UpdateJumpBuffer(float DeltaTime) -> void: updates buffered input.
  • IsInCoyoteTime() -> bool: checks whether coyote time is active.
  • IsJumpBuffered() -> bool: checks whether input is buffered.
  • UpdateJumpingState(float DeltaTime) -> void: updates jump state.
  • InitializeJumpComponent() -> void: initializes cached references.
  • OnAbilitySystemComponentReady() -> void: performs GAS setup.
  • GrantJumpAbilityTag() -> void: grants the jump ability tag.

Velocity, camera, and input

  • ApplyDirectJumpVelocity(bool bIsAdditionalJump) -> void: applies direct jump velocity.
  • StartJumpCameraEffects() -> void: starts jump camera feedback.
  • StopJumpCameraEffects() -> void: stops jump camera feedback.
  • StartLandingCameraEffects() -> void: starts landing camera feedback.
  • StopLandingCameraEffects() -> void: stops landing camera feedback.
  • StartCameraShake(const FMotionCurve&, int32&) -> void: starts a reusable camera effect.
  • StopCameraShake(const FMotionCurve&, int32&) -> void: stops a reusable camera effect.
  • OnInputStarted(FInputActionValue&) -> void: handles jump input press.
  • OnInputCompleted(FInputActionValue&) -> void: handles jump input release.
  • HandleJumpInputStateChange(bool bPressed) -> void: processes jump input state.
  • BindJumpInput(UInputAction*) -> bool: binds jump input through auto-discovery.
  • BindJumpInputWithComponent(UInputAction*, UEnhancedInputComponent*) -> bool: binds jump input through an explicit input component.

Networking

  • ServerRequestJump(bool bWantsToJump) -> void: server RPC for jump validation.
  • MulticastJumpFeedback(bool bJumped, int32 JumpNumber) -> void: multicasts jump feedback.
  • MulticastLandingFeedback() -> void: multicasts landing feedback.

Configuration

Configuration lives on the assigned MotionJumpProfile. The current Motion default is /MotionCore/Motion/Profiles/v2_0_0/DA_MotionJumpProfile_Default_v2_0_0.

Jump settings

  • JumpVelocityMultiplier: jump velocity multiplier. Default: 1.0.
  • JumpVelocityModifier: absolute jump velocity added. Default: 0.0.
  • bEnableMultiJump: whether multi-jump is enabled. Default: false.
  • MaxAdditionalJumps: number of additional airborne jumps. Default: 1.
  • AdditionalJumpVelocityMultiplier: velocity multiplier for additional jumps. Default: 0.8.

Responsiveness settings

  • CoyoteTime: grace period after leaving ground. Default: 0.15.
  • JumpBufferTime: time to keep jump input buffered. Default: 0.2.

Effects and feedback

  • JumpCameraShake: camera curve during jump.
  • LandingCameraShake: camera curve when landing.
  • bApplyCameraShake: whether camera shake is applied.
  • bAutoTriggerLandingSound: whether landing sounds are triggered automatically.
  • WantsToJumpTagEffect: grants wants-to-jump tag.
  • JumpingTagEffect: grants jumping state tag.

The component's editable setup surface is the Profile reference. Input buffers, coyote timers, jump counts, camera curve playback identifiers, and replicated state remain component-owned.

Read-Only State

  • JumpCameraShakeIdentifier: identifier for jump camera shake.
  • LandingCameraShakeIdentifier: identifier for landing camera shake.
  • CachedMovementSoundComponent: cached sound component reference.
  • MotionJumpCount: replicated jump counter.
  • LastGroundedTime: time the character last left ground.
  • LastJumpInputTime: time jump input was last pressed.
  • OriginalJumpZVelocity: jump Z velocity cached at BeginPlay.
  • bWasGroundedLastFrame: previous grounded state.
  • bWasJumpingLastFrame: previous jumping state.
  • bActuallyJumped: tracks whether the component performed a jump.
  • bUsedCoyoteJump: tracks whether coyote jump was used.
  • bJumpButtonReleasedSinceLastAirJump: prevents held-button multi-jump.
  • bJumpInputTriggeredThisFrame: frame-level input flag.
  • LastJumpRPCTime: server-side RPC rate limit timestamp.
  • bCoyoteExpiredLastFrame: coyote expiration event guard.
  • bBufferExpiredLastFrame: buffer expiration event guard.

Blueprint Events

  • OnJumpStateChanged(bool bIsJumping): fires when jump state changes.
  • OnJumpPerformed(bool bIsAdditionalJump, int32 JumpNumber): fires when a jump executes.
  • OnLanded(): fires when the character lands.
  • OnCoyoteTimeExpired(): fires when coyote time expires.
  • OnJumpBufferExpired(): fires when buffered input expires.

Networking

Jumping uses server RPC validation, multicast feedback, local prediction, and authority-based reconciliation.

Motion - Advanced First Person Character Controller