Skip to main content
Character Animation System (CAS) is built on Unity’s Playables API and organises all animation work into three cooperating components managed by a single central MonoBehaviour. Understanding how these pieces fit together lets you quickly locate the right component when you need to change a behaviour, add a new modifier, or debug a blending issue.

The Three Core Systems

CAS delegates every animation concern to a dedicated component. Each component has a single, well-defined responsibility:

Layered Blending

Combines the main Animator Controller output with Overlay Poses using per-bone curve weights. Controls how much of a weapon overlay appears on the arms, spine, head, and lower body.

Procedural Animation

Runs a stack of modular Animation Modifiers that alter bone transforms after blending. Used for foot IK, weapon sway, recoil, hand placement, and similar runtime effects.

Property Bindings

Connects public fields, properties, and methods from gameplay components to animation parameters in the editor — without requiring hand-written binding code.

Character Animation Component

The Character Animation Component is the orchestrator. It owns references to both the Layered Blending component and the Procedural Animation component, drives their update loop, manages Animation Slots, and handles pose blending when you switch between Character Animation Settings profiles. You interact with CAS almost entirely through CharacterAnimationComponent — calling PlayAnimation, StopAnimation, and UpdateAnimationSettings on it. The underlying components receive their instructions from there.

Playables API Foundation

All custom animation logic in CAS is built on top of the Unity Playables API. This means the playable graph CAS creates can coexist with other Playables-based packages, such as Animation Rigging, without conflict. CAS does not access the Animator component directly; it reads the current character pose from the Animator’s output node in the graph.
Because CAS is Playables-based, you can extend the graph with custom playable nodes or integrate third-party packages that also use the Playables API.

Base Pose vs Overlay Pose

Two pose concepts are central to how Layered Blending works: Base Pose is the standing idle animation for your character. CAS subtracts this pose from the Animator output and re-adds it to the Overlay as a dynamic additive contribution. This subtraction step is what allows the upper body to smoothly adopt a weapon pose while the lower body continues running from the Animator Controller. Overlay Pose is the weapon, item, or action pose you want to apply at runtime. A static animation clip is sufficient for simple cases — for example, a character holding a rifle. When you need states, transitions, or blend trees in your overlay (for example, to blend between a sword idle and a sword draw), assign an Overlay Animator Controller instead. The Overlay Animator fulfils the same role as the Overlay Pose but adds the full power of Unity’s Animator state machine.

Accessing the Overlay Animator from Code

Use LayeredBlendingComponent.OverlayAnimator to read or write parameters on the active Overlay Animator Controller:
Use this pattern whenever you need to trigger transitions or update blend tree values inside an Overlay Animator Controller at runtime.

Overlay Animation Slot

An Overlay Animation Slot is a named point in the playable graph where you can play animations directly from code. Slots are configured on the Animation Asset and played through the Character Animation Component. Three slots are available by default: Default Overlay, Overlay, and Full Body — each applying at a different stage of the graph.

Animator Output

The Animator Output is the pose produced by your character’s main Animator Controller. CAS reads this pose but never writes to the Animator itself. Because CAS operates entirely within the playable graph, adding CAS to a character does not interfere with the Animator’s own state machine, parameters, or transitions.

Procedural Animation in the Graph

After Layered Blending has produced a combined pose, Procedural Animation modifiers run in sequence to alter individual bone transforms. Each modifier is a ScriptableObject stored in a Procedural Animation Settings asset. The order of modifiers in that asset determines the order they are applied to the pose. For the full modifier reference, see Procedural Animation and the Animation Modifiers section.