Skip to content
← Back to Blog 3d-modeling

Root Motion for Game Characters: Blender Setup for Unity, Unreal Engine 5, and Godot 4

By BitSoul3D5 min read212 views

Foot sliding is the fastest way to make a polished game feel cheap. Your character's feet skate across the ground because the capsule moves at one speed while the animation was authored at another. Root motion fixes this at the source: the animation itself drives the character's movement, so feet plant exactly where the animator intended.

Root Motion for Game Characters: Blender Setup for Unity, Unreal Engine 5, and Godot 4

This guide covers the full root motion pipeline — authoring the root bone in Blender, then consuming it correctly in Unity, Unreal Engine 5, and Godot 4.

Root Motion vs. In-Place Animation: When Each Wins

In-place animation keeps the character at the origin while gameplay code moves the capsule. Root motion bakes translation (and optionally rotation) into a dedicated root bone, and the engine extracts that delta every frame to move the character.

Root Motion vs. In-Place Animation: When Each Wins — illustrated

Root motion wins for: attack lunges, dodge rolls, vaults, climbs, hit reactions, and cinematic traversal — anything where exact distance and foot placement matter. The animation is the ground truth, so a 2.3 m lunge always covers 2.3 m.

In-place wins for: core locomotion in networked games (server-authoritative movement hates animation-driven deltas), platformers needing razor-sharp input response, and anywhere you blend many speeds — blending root motion clips at mismatched velocities reintroduces sliding.

Most production characters use both: in-place for the locomotion cycle, root motion for actions. Plan this split before you animate, because converting clips later means re-keying the root bone on every animation.

Setting Up the Root Bone in Blender

Engines extract root motion from one specific bone, so your armature needs a clean root:

  1. Add a root bone at the world origin, on the floor (not at the hips). Name it root — Godot and most Unity rigs expect this literally.
  2. Parent the hips to the root. The root should be the only bone with no parent.
  3. Keyframe horizontal travel on the root, vertical bob and sway on the hips. The root should move smoothly along the ground plane like a puck.
  4. Keep the root's rotation aligned to travel direction. For turn animations, key yaw on the root and counter-animate the hips.

A common mistake is leaving all translation on the hips. Engines that extract from the hips (Unity's generic "Root node" option) will pull in the vertical bob too, making the capsule bounce. Keeping travel on a dedicated floor-level root avoids this entirely.

Export via glTF/GLB or FBX with the armature included. If you source characters from a library, check whether they ship with a proper root bone — the free GLB characters on the BitSoul marketplace include a floor-level root, which saves you the re-rigging pass.

Unity: Apply Root Motion the Right Way

Import the model, set the rig to Humanoid or Generic, and on each action clip enable Root Transform Position (XZ) → Bake Into Pose: OFF so the delta stays live. Then tick Apply Root Motion on the Animator component.

For characters using a CharacterController or Rigidbody, don't let the Animator move the transform directly — intercept the delta in OnAnimatorMove so collision still applies:

[RequireComponent(typeof(Animator), typeof(CharacterController))]
public class RootMotionDriver : MonoBehaviour
{
    Animator _anim;
    CharacterController _cc;

    void Awake()
    {
        _anim = GetComponent<Animator>();
        _cc   = GetComponent<CharacterController>();
    }

    void OnAnimatorMove()
    {
        Vector3 delta = _anim.deltaPosition;
        delta.y += Physics.gravity.y * Time.deltaTime; // keep grounded
        _cc.Move(delta);
        transform.rotation *= _anim.deltaRotation;
    }
}

This pattern gives you animation-accurate distance with full collision response — the lunge stops at the wall instead of clipping through it.

Unity: Apply Root Motion the Right Way — illustrated

Unreal Engine 5: Root Motion from Montages

UE5 is opinionated: root motion is designed to flow through Animation Montages. Open the animation asset and tick EnableRootMotion, then set the Character's Anim Class montage slots accordingly. In the Anim Blueprint, set Root Motion Mode to Root Motion from Montages Only for the standard setup — locomotion stays capsule-driven, while dodges, attacks, and vaults play as montages that drive the capsule.

Key details that bite teams:

Godot 4: RootMotionView and AnimationTree

Godot 4 extracts root motion through the AnimationTree. On import, mark the root bone in the import dock (Root Motion > Bone: root), then point the AnimationTree's root_motion_track at it. Apply the delta in code:

func _physics_process(delta: float) -> void:
    var rm: Vector3 = anim_tree.get_root_motion_position()
    velocity = (transform.basis * rm) / delta
    velocity.y -= gravity * delta
    move_and_slide()

Add a RootMotionView node while authoring to visualize the extracted track as a moving grid — it makes drift and foot sliding obvious before you ever hit play.

Engine Comparison at a Glance

UnityUnreal Engine 5Godot 4
EnableApply Root Motion (Animator)EnableRootMotion (anim asset)root_motion_track (AnimationTree)
Consume in codeOnAnimatorMoveMontage playbackget_root_motion_position()
Expected rootRoot node settingBone index 0Bone named in import dock
Best forActions w/ collisionMontage-driven actionsFully animation-driven
MultiplayerAvoid for locomotionMontages replicateManual sync

Pre-Export Checklist

Root motion is one of those systems where the rig determines everything downstream — a clean root bone makes all three engines cooperate, and a dirty one means fighting extraction settings forever. If you'd rather start from rigs that already follow these conventions, browse the free game-ready characters on the BitSoul marketplace — every animated character ships with a floor-level root bone, GLB and FBX formats, and engine-tested root motion clips.


Build with real assets: grab the 98-model Character Pack on the BitSoul marketplace and drop them straight into your project.

Tags: characters

Skip the modeling — download it instead

A free BitSoul3D account gets you 2 GLB downloads every month for personal use plus 25 one-time AI Engine credits, no card required. PBR-textured GLB downloads with a full 3D preview before you buy, for Unreal, Unity, Godot or Blender — OBJ and 3D-printable STL come with any purchase or paid plan.

Browse 1,051 models — from $4.99 → or start free (2 downloads a month)