Quick answer: Godot AnimationTree blend2/blend3 not reacting to changes? Set the blend_position via tree.set(“parameters/path/blend_position”, value); calling on the AnimationNode directly does nothing.

An AnimationTree drives a locomotion blend, but the character stays in idle no matter what is fed to the blend node. The parameter path is wrong.

Write to the Tree, Not the Node

AnimationTree exposes blend parameters as tree parameters keyed by node path. Setting blend_node.blend_position = x on the AnimationNodeBlend2 resource has no effect on the playing instance.

The Right Call

tree.set("parameters/Locomotion/blend_position", speed_normalized)

Find the path in the AnimationTree editor — right-click a node and copy parameter path.

Active vs Not

If the tree is paused or its active flag is false, writes are ignored at play time. Set tree.active = true in _ready().

Verifying

Driving speed from 0 to 1 visibly blends idle → walk → run. Reset speed to 0 and the character returns to idle.

“Blend parameters live on the AnimationTree, not on the resource. Set them via parameters path.”

Cache the parameter path string at _ready — the string lookup happens every set and small things add up in a busy AnimationTree.