Talos docs

animator

Since 0.6Changed in 0.7
Plain text

Use it in a scene entity's components list as { "type": "animator", … }. The contract writes the fields flat and refuses unknown keys.

Fields

FieldTypeRequiredDefaultAllowed valuesDescription
assetstringyes
statesAnimState[]yes
initialstringyes
parametersAnimParam[]no
eventsAnimEvent[]no
ikAnimIk[]no
pelvisAnimPelvisno
lookAtAnimLookAtno
retargetAnimRetargetno
layersAnimLayer[]noExtra playback layers over the animator's state machine, applied in order after it and before IK and look-at: an upper-body action over a locomotion blend, an additive lean. Names unique (animator-layer-invalid). See AnimLayer.
rootMotionFromstringnoTake root motion (rootMotion and rootYaw states) from this joint instead of the rig's root: a canonical name (Hips, resolved through retarget.map) or one of the rig's own. For clips whose travel lives in the hips while the root bone stays at rest, such as a third-party mannequin pack retargeted onto the canonical rig. That joint's ground travel (and heading, with rootYaw) is moved out of the pose and onto the character, so the body stays over its capsule; its height stays in the pose. Base layer only. Absent, the root is used and nothing changes. A name the rig does not have is reported once at load (animator-root-motion-joint-missing) and the root is used.
feetstring[]noThe rig's feet, by joint name: the joints that plant on the ground, for the playtester's foot-slide check (GET /feel's feet). Absent, the engine picks the leaf joints nearest the ground contact in the bind pose. Two to four distinct, non-empty names (animator-feet-invalid); a name the rig does not have is reported on GET /feel.

Rules that can refuse it

Example

From the contract's tested fixture fixtures/contract/full20/scene.json#worker.

{
  "type": "animator",
  "asset": "worker",
  "initial": "idle",
  "states": [
    {
      "name": "idle",
      "clip": "Idle",
      "loop": true,
      "transitions": [
        {
          "to": "walk",
          "on": "moving",
          "blend": 0.2
        }
      ]
    },
    {
      "name": "walk",
      "clip": "Walk",
      "loop": true,
      "transitions": [
        {
          "to": "idle",
          "on": "idle",
          "blend": 0.2
        },
        {
          "to": "run",
          "on": "sprint",
          "blend": 0.15
        }
      ]
    },
    {
      "name": "run",
      "clip": "Run",
      "loop": true,
      "transitions": [
        {
          "to": "walk",
          "on": "moving",
          "blend": 0.25
        }
      ]
    }
  ]
}