so I'm starting with Unity , I followed the john lemon tutorial , and I wanted to apply what I learn on a model on my own coming from blender. Everythings works , animation , rotation , but not translation . For some reasons my character doesn't move at all . It might have to do something with root motion since I have apply root motion in grey with written just after "handled by script" . Not sure what to do .. I found something about character in place, I think I'm in this case but I'm not sure how to use it in my script .. https://docs.unity3d.com/Manual/ScriptingRootMotion.html

If you ask I'll give you my project .


ok so I made some advances :

 void OnAnimatorMove()
        m_Rigidbody.MovePosition(m_Rigidbody.position + m_Movement * m_Animator.deltaPosition.magnitude * 10000);
        Debug.Log("m_Animator.deltaPosition.magnitude: " + m_Animator.deltaPosition.magnitude);


m_Animator.deltaPosition.magnitude is actually always equal to 0 , explaining why my charachter doesn't translate but why is it always equal to zero ?


3 Answers 3


I have the same problem, I started solving it by removing the last part:

m_Animator.deltaPosition.magnitude to some other float that i want and called it speed meaning my OnAnimatorMove is looking like this

//move the position

m_Rigidbody.MovePosition(m_Rigidbody.position + m_Movement * 0.05f);

you can either change the last float to a public variable for you'r convenient

Another sulotion that i found relevant to my case that in my animation setting of the walk animation i activated the bake into pos option for the x,z,y transforms once i disabled it that worked just fine with the same code but i neede to add a speed variable and multiply by it because it was too slow


Animator.deltaPosition Gets the avatar delta position for the last evaluated frame.

Animator.applyRootMotion must be enabled for deltaPosition to be calculated.


You have to enable your animator's applyRootMotion. if you don't enable this option or your avatar doesn't have a delta position (not changing position), then Animator.deltaPosition returns 0.

More about applyRootMotion: https://docs.unity3d.com/ScriptReference/Animator-applyRootMotion.html


I think I found a solution.

I ran into the same problem, but I solved it in the following way

  1. animation correction I used my own models and animations, but I wasn't moving them forward despite the walking animation. (It was stamping feet on the spot.) This has been modified to move forward.

  2. select the root node Armature/Hips were assigned to the Inspector/Rig/Root node of the model. Initially I was simply going to Armature, but then I realized that the root of the animation was Hips.

After fixing the above two points, the problem was solved.

I hope this helps those who still refer to this thread.

Sorry for the poor English, thank you.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .