Hey there, we are using Mover for character movement and want to make a seamless transition from a Sequencer cutscene to gameplay.
We use root-motion animations in Sequencer to move a character during a cinematic. Sequencer has full ownership of the character while the cinematic is playing; we do not need Mover to simulate or control the character during that time.
When the sequence finishes, we want Mover to synchronise to the character’s final transform and continue normal gameplay movement from exactly that position and orientation.
We tried using a custom movement mode that copies the Sequencer-driven transform into Mover, but this does not produce a reliable handoff.
We have also tried enabling `UMoverComponent::bAcceptExternalMovement`, setting the Transform track’s When Finished behavior to `Keep State`, and setting Swap Root Bone to Actor on the skeletal animation section.
I’m not a Sequencer expert, so I’m trying to understand how these systems are intended to work together. What is the recommended workflow for creating this kind of seamless transition between Sequencer and Mover?
Is there a supported API or pattern for committing the character’s current actor/UpdatedComponent transform into Mover’s authoritative state when the sequence finishes, and are there specific Sequencer settings required for that handoff?
Honestly, sequencer and root motion with a transition back to gameplay at the end has always been an issue. With Mover, it’s actually worse. But we recognized this, and in 5.8 we introduced a better tool for handling all of this called Anim Mixer. It’s a plugin that adds new support, makes root motion in Sequencer more first-class, and includes other features to craft sequences. This should generally allow you to better control your actors’ root motion coming out of Sequencer.
There are some caveats:
In 5.8, when you possess a player who is using mover, no matter what, you will always be corrected back to where you were when you started the sequence. Some work has just been submitted in main for mover to make this better. I’m conferring with the dev to make sure it’s just that one CL or if there are more to send over to you. EDIT: This is addressed in the follow up post.
Entrance from gameplay currently doesn’t have a hook outside of the instance overrides. So if you want an NPC to blend nicely into a cinematic, this is still a bit harder than we want. We’re working on elements in Anim Mixer for the future to make this easier.
So I got some additional suggestions from the devs, and there are a few things you can do on the Mover side as well.
Make sure the “accept external movement” option on MoverComponent is enabled.
On client, prevent reconciliation / rollbacks from happening. This would be an option plumbed in UMoverNetworkPredictionLiaisonComponent::ShouldReconcile.
Put the character in a custom movement mode that only overrides the SimulationTick function and does nothing but grab the world location/rotation from the actor’s root component and sticks it into the output sync state (part of FMoverDefaultSyncState). This is what The Witcher demo’s “external” movement mode did.
On top of that, if you grab this changelist, you’ll have some additional tools with Mover and any external movement.