Animation¶
Animators, character IK (foot planting, hand targets, turn in place), bone attachments, IK effectors and sequence players.
animator¶
Skeletal animation for this entity's rigged meshes (and its children's): a state machine controller or one clip. Set parameters and triggers with animator_set or Wander set_param/trigger/play_animation.
| Field | Type | Description | Values |
|---|---|---|---|
library |
string | Animation library (*.anim: skeleton + clips); empty = the one imported with the mesh | |
controller |
string | State machine (*.animctl.json); empty = play clip |
|
clip |
string | Clip to play when there is no controller (empty = the first clip) | |
speed |
number | Playback rate (0 pauses, 2 = double speed) | 0 .. 10 |
loop |
boolean | Loop the clip (without a controller) | |
rootMotion |
boolean | Move the entity with the animation's root (hips) movement instead of in place | |
preview |
string | Editor preview: rest = bind pose, pose = frame at time, play = animate live |
rest pose play |
time |
number | Editor preview time (seconds into the default state / clip) | 0 .. 600 |
lookAt |
object | string | integer | null | Entity the head and spine turn towards (look-at IK); empty = off — entity link: name ("Door"), "#id", {"id": 12} or null; read back as {"id", "name"} (follows renames; entity_refs lists links) | |
lookAtWeight |
number | How strongly the head follows lookAt | 0 .. 1 |
lookAtLimit |
number | Maximum head/spine turn (degrees) | 0 .. 180 |
rootYaw |
boolean | With rootMotion: also turn the entity by the clip's root rotation (turn-in-place and curved-walk clips); the body keeps facing the entity's forward | |
inPlace |
boolean | Play locomotion in place: the root's horizontal motion (and turn, with rootYaw) is removed and the entity does not move (gameplay code moves it) | |
retargetFrom |
string | Clip library (*.anim or a rigged .glb) whose clips play on this character when they are not in its own library, e.g. a shared animation pack for a different rig (retargeted per retarget) |
|
retarget |
string | How clips from another rig map onto this skeleton: auto = pose-space when both rigs are humanoids (different names, rest poses, proportions), else by bone name; pose = always pose-space; name = by bone name | auto pose name |
characterIk¶
Automatic foot planting (stairs, slopes, rocks), pelvis adjustment, feet aligned to the slope and locked while in contact, hand targets (two-handed grips, ledges, rails) and turn in place for a humanoid character. Put it on the entity with the animator; bones come from the skeleton's humanoid map (character_inspect shows it).
| Field | Type | Description | Values |
|---|---|---|---|
feet |
boolean | Plant the feet on the ground under them every tick | |
feetWeight |
number | 0 = animation only .. 1 = fully planted | 0 .. 1 |
stepHeight |
number | Meters a foot may reach up or down to find ground (stairs: 0.3-0.5) | 0.01 .. 2 |
footHeight |
number | Ankle height above the sole in meters; -1 = measured from the rest pose | -1 .. 0.5 |
pelvis |
boolean | Lower the hips so the lower foot reaches its ground (uneven ground, stairs) | |
alignFeet |
boolean | Pitch and roll the feet onto the ground's slope | |
maxSlope |
number | Steeper ground aligns the feet only this far (degrees) | 0 .. 80 |
contact |
string | When a foot is in contact and locks to its spot (no sliding): auto = low and slow, velocity = slow, events = animation events foot_l_down / foot_l_up / foot_r_down / foot_r_up, always, never | auto velocity events always never |
lockSpeed |
number | A foot slower than this (m/s) counts as planted | 0 .. 5 |
lockDistance |
number | A locked foot re-plants with a quick step once the animation pulls it this far (m) | 0.02 .. 2 |
smoothing |
number | How fast the pelvis and feet follow the ground (1/s; higher = snappier) | 0.5 .. 60 |
leftHand |
object | string | integer | null | The left hand reaches this entity: a grip point on a staff held in the right hand, a ledge, a rail — entity link: name ("Door"), "#id", {"id": 12} or null; read back as {"id", "name"} (follows renames; entity_refs lists links) | |
leftHandWeight |
number | Blend of the left-hand target (animate it for grabs) | 0 .. 1 |
rightHand |
object | string | integer | null | The right hand reaches this entity — entity link: name ("Door"), "#id", {"id": 12} or null; read back as {"id", "name"} (follows renames; entity_refs lists links) | |
rightHandWeight |
number | Blend of the right-hand target | 0 .. 1 |
handRotation |
boolean | Also orient the hands like their target entities | |
turnSpeed |
number | Turn-in-place rate in degrees per second (turn_in_place) | 1 .. 2000 |
attach¶
Keeps this entity on a bone of an animated character (weapon in a hand, hat on a head, lantern on a belt).
| Field | Type | Description | Values |
|---|---|---|---|
character |
object | string | integer | null | Entity with the animator; empty = nearest ancestor that has one — entity link: name ("Door"), "#id", {"id": 12} or null; read back as {"id", "name"} (follows renames; entity_refs lists links) | |
bone |
string | Bone name, e.g. RightHand or mixamorig:Head (animation_list shows them) | |
offset |
number[3] | Position offset in the bone's space (meters) | |
rotation |
number[3] | Rotation offset in the bone's space (Euler degrees) | |
followScale |
boolean | Inherit the bone's scale (off keeps this entity's scale) |
ik¶
Two-bone IK effector: the character's hand or foot (and elbow or knee) reaches this entity's position.
| Field | Type | Description | Values |
|---|---|---|---|
character |
object | string | integer | null | Entity with the animator; empty = nearest ancestor that has one — entity link: name ("Door"), "#id", {"id": 12} or null; read back as {"id", "name"} (follows renames; entity_refs lists links) | |
bone |
string | End bone that reaches here: LeftHand, RightFoot... (animation_list lists bones) | |
weight |
number | Blend between the animation (0) and the target (1) | 0 .. 1 |
pole |
number[3] | Bend direction in the character's space (e.g. [0,0,-1] knees forward); [0,0,0] keeps the animated bend | |
matchRotation |
boolean | Also orient the end bone like this entity |
sequencer¶
Plays a cinematic sequence (.sequence.json): camera shots and cuts, keyed properties, events and animations. Build sequences with the sequence_ tools.
| Field | Type | Description | Values |
|---|---|---|---|
sequence |
string | Sequence asset (*.sequence.json) | |
playOnStart |
boolean | Start playing when the simulation starts | |
loop |
boolean | Loop at the end | |
speed |
number | Playback rate | 0 .. 10 |
preview |
boolean | Editor: show the sequence frozen at time in the viewport |
|
time |
number | Editor scrub position (seconds) | 0 .. 3600 |