How to use Root Motion animations properly with player movable character

Hi. I have an animation pack that came with a bunch of animations with rootmotion. I am wondering how I am expected to use some of these for my characters when the animation causes my mesh to move away from the actual location of my character. I tried turning off root motion for some of the animations which prevents the animation from moving forward, but then I still have the issue of the animation moving vertically.

Is there a way I can lock the animation to 0,0,0 within the sequence?

Is there another way to make my character’s camera, collision collision move with the animation?

Hi!

If you simply want to lock the mesh in place, you can enable the Force Root Lock option inside the animation sequence

If you want to make your character move with the animation, you need to enable the Enable Root Motion option inside the animation sequence.

I tried those. Neither of those options work.

This is with Root Motion Enabled:

And this is with ‘Force Root Lock‘ on. Notice I cant jump on top of the wall despite the animation going higher than the wall. That is because the actuall collision capsule isn’t moving with the animation, nor is the camera moving with it.

  1. By default Root Motion is only accepted by Animation Montages.
    (You can change it in the class defaults of your Animation Blueprint, it’s called “Root Motion Mode”)
  2. For true root lock you need to disable “Enable Root Motion” but enable “Force Root Lock” inside the Animation Sequence.

Note that this will only work, if the animations you bought actually animate on the root bone and not some other bone which is not the topmost bone in the hierarchy.

I have toyed with that option as well. While it’s a step in the right direction it still doesn’t alter the actual location of the character. Is there a similar option in a character/actor blueprint. I dont see anything in the movement component.

This is on the AnimBP:

Can you verify that your jump animation animates on the root bone?
If you would have root lock enabled, it should avoid any root bone movement…

How do I verify that?

Here I just selected the root bone in the skeleton tree of the animation sequence. Does this verify that?

I just noticed the root bone appears to stay 0 Z during the animation. Is this my problem? The pelvis bone moves with the mesh like I expect but the root stays on the ground. Is there a way I can alter this?

it seems that you can add a animation post process ( a control rig) to constraint the pelvis bone to root bone , so the pelvis bone stay in the same as root bone position

Yooo, did u find a fix? I’ve just ran into this issue with a leaping attack, where the root motion doesnt really work for verticality. When its on, the animation plays, translates on X and Y fine, but not for Z axis. When root motion is off, it plays the whole thing with verticality but then snaps back to the original casting location.

Update on my previous comment — the root bone having no Z translation is exactly the problem. You need to fix this before bringing it into UE.

In Blender(or your preferred 3D software), select the root bone and bake the vertical movement from the hips/pelvis down to it. The Z translation needs to live on the root bone, not on a child bone — UE’s root motion system only reads from the root.

Once the root bone has the Z keyframes, re-export and enable root motion in UE. After that, you also need to switch the CharacterMovementComponent to Flying mode before playing the montage, then restore Walking when it ends. In Walking mode, floor detection keeps the capsule snapped to the ground and overrides Z root motion — Flying mode disables that so the capsule fully follows the animation’s vertical translation.

Example: SetMovementMode(Flying) → Play Montage → [on montage end] → SetMovementMode(Walking)

Hope this helps.