Hi everyone, I’m building a Locomotion state machine in UE5.6 using the Game Animation Sample animation pack with a Lyra-style AnimBP architecture (BPA_BaseAnim logic layer + implementation layer).
Current Setup:
State machine: Idle → Run_Start → Run_Loop ↔ Pivot → Run_Loop. Pivot is a sub-state machine with PivotA ↔ PivotB ping-pong (to work around UE not supporting self-transitions).
Angle calculation: Thread-safe function uses GetLastInputVector + FindLookAtRotation + NormalizedDeltaRotator to compute “Input Direction Angle” (relative to character facing, -180 to 180).
Pivot entry condition: │Input Direction Angle│ >= 60 Pivot exit condition: AnimNotifyState (Lyra approach - transition only allowed when animation reaches the exit window) + HasAcceleration PivotA→PivotB condition: Direction reversal detection (current angle × entry snapshot angle < 0) OrientRotationToMovement enabled, Rotation Rate Yaw = 540
The Problem:
Pivot triggers correctly in normal gameplay, but occasionally fails when rapidly switching directions in quick succession — the character just rotates within the Loop state instead of playing the Pivot animation.
Questions:
- How do you trigger Pivot in your projects? Angle-based or dot product?
- Has anyone encountered similar missed triggers? How did you fix it?
- Is there a built-in solution in Lyra / Game Animation Sample?
- Has anyone tried Input Direction Delta (rate of change of input direction)? How does it perform?
Thanks in advance!