Syncing Animations
Behavior Designer includes Animator tasks, but movement animation is usually
more maintainable when the character or locomotion controller translates motion
state into Animator parameters.
Recommended ownership
Let the behavior tree decide what the agent should do: seek, patrol, attack,
or idle. Let the movement and character systems decide how that motion is
animated. For a NavMeshAgent, the controller can derive speed and direction
from velocity and feed those values to an Animator blend tree.
This separation keeps animation transitions out of the AI graph, works with
root motion when the locomotion system supports it, and prevents Animator
Controller changes from forcing equivalent behavior-tree changes.
When to use Animator tasks
Animator tasks remain useful for discrete, behavior-owned signals such as a
one-shot interaction trigger, an emote, or a state that has no locomotion
controller integration. Keep these operations next to the action that owns the
signal and reset parameters deliberately when interruption is possible.
Verify interruption
Run the agent through its movement and fallback branches. Speed and direction
parameters should follow actual motion, including when a
conditional abort interrupts the current task. If an
animation remains active after interruption, move cleanup into the task’s
OnEnd method or into the locomotion controller’s state transition.
The Opsive Character Controllers integration
uses this separation: the behavior tree drives AI intent while the character
controller owns movement and animation.