UE5.6, PaperZD turn-based JRPG. How to control Flipbook displacement and performance timing for character skill animations?

My character’s ultimate ability consists of a sequence: wind-up → take flight → fly behind the enemy for a backstab → return to original standing position. All animation frames are contained within a single Flipbook. How do I control the position for each segment, including how to determine the relative positions between the character and the enemy?

If you’re using PaperZd’s anim sequences, you could just stick notifies in the anim, and have the notifies call events on your character, and have character set its own loc as needed. Just be sure to save start loc when you begin the ultimate ability so char can return at the end.

Building on the notify idea, I’d drive the ultimate as a small state machine in the character Blueprint instead of baking the movement into the flipbook:

  1. Before starting, store StartLocation = Get Actor Location and the target Enemy reference. Disable input and set Movement Mode to Flying (or turn off gravity) for the duration.
  2. Split the flipbook into PaperZD animation sequences or notify markers: WindUp, TakeFlight, Strike, Return. In each, add an Anim Notify that calls a custom event, such as OnUltimateFlightStart.
  3. For the fly-behind step, compute the destination from the enemy: Dest = EnemyLocation + (EnemyForwardVector * -BehindDistance), with BehindDistance around 80 to 120 units. For a side-scroller, use the sign of (PlayerX - EnemyX) so you land on the far side, and keep Y fixed.
  4. Move there with Move Component To (target = capsule or root, Ease Out/In, duration matching the TakeFlight length) rather than Set Actor Location every frame. Its Completed pin can trigger the Strike animation.
  5. After the strike, call Move Component To back to StartLocation, then restore Movement Mode to Walking and input.
  6. Flip the sprite with Set Relative Scale 3D X = -1 (or the flipbook’s flip option) if you end up on the other side so it still faces the enemy.

That way positions are computed relative to the enemy each time, and the animation timing is only used to sync events.