

You enable Root Motion on your Animator. You expect smooth, realistic movement driven by animations. Instead, your character slides across the ground, snaps forward, or even teleports unexpectedly.
This issue is commonly called the “Unity root motion bug.” In reality, root motion problems usually come from mismatched animation settings, Rigidbody conflicts, or incorrect script movement.
This guide explains why characters slide or teleport with root motion and how to fix it properly.
Root motion means the movement is driven by animation data instead of code. The animation itself contains position and rotation changes, and Unity applies them to the character.
To enable root motion:
When this is enabled, Unity applies movement from the animation to the GameObject’s transform.
Sliding usually happens when:
If you are using something like:
void Update()
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
And root motion is enabled, you are applying movement twice. This causes sliding or exaggerated motion.
Fix: Remove manual movement if you want full root motion control.
Teleporting usually happens when:
Select your animation clip and inspect:
If “Bake Into Pose” is incorrectly enabled or disabled, the character may snap to unexpected positions.
Try toggling Bake Into Pose for XZ and test again.
If your character has a Rigidbody and root motion is enabled, physics can fight animation movement.
This often results in jittering or teleporting.
If using Rigidbody, apply root motion in OnAnimatorMove():
void OnAnimatorMove()
{
Rigidbody rb = GetComponent<Rigidbody>();
rb.MovePosition(rb.position + animator.deltaPosition);
}
This ensures physics stays in control while still respecting animation movement.
Teleport-like movement often happens during transitions between animations.
Check:
If one animation has strong root motion and the next has none, the character may snap.
If you are using NavMeshAgent and root motion together, movement conflicts are common.
By default, NavMeshAgent controls position, while root motion also tries to move the character.
Fix approach:
Example:
agent.updatePosition = false; agent.updateRotation = false;
Then manually sync agent position with root motion.
If the Avatar is not configured correctly (especially with humanoid rigs), root motion can behave unpredictably.
Check:
If the animation’s root bone is not positioned properly in the modeling software, root motion may contain unintended offsets.
This is common with third-party assets.
Fix: Adjust root bone in the 3D modeling tool or re-export the animation.
Root motion works best for:
It is less ideal for:
If your character is sliding or teleporting, check:
In most cases, no. Root motion is working exactly as designed. Problems happen when animation-driven movement and code-driven movement fight each other.
Understanding who controls position—animation, physics, or navigation—is the key to solving root motion issues.
Character sliding or teleporting with root motion is usually caused by configuration conflicts, not a broken engine feature.
Choose one movement authority:
Do not mix them without carefully syncing them.
Once configured correctly, root motion produces smooth, natural movement without sliding or snapping.