| name | stagger |
| description | Staggers forward unsteadily with a sequence that translates the body while the torso lurches side to side and the heading wobbles. Use when a command mentions stagger, stumble, lurch, wobble, totter, sway drunkenly, or walk drunk/dizzy. |
| category | locomotion |
| disable-model-invocation | true |
| subskills | ["walk","move-torso","balance-and-posture"] |
stagger
An off-balance, lurching advance. Because the wobble must be animated, this uses a sequence that translates root forward while leaning the torso and wobbling the heading — with manual alternating steps (the procedural gait only runs during moveTo).
How
- Use a
sequence (NOT moveTo) so you can lean and wobble. Each frame: advance root.z forward (compute from state.position+state.faceDeg; here at origin facing +Z so z grows), nudge root.faceDeg a few degrees each way, and lean the torso on Z. Alternate the stepping leg (UpLeg:[40,0,0],Leg:[50,0,0]) and reset the other to rest.
durationMs ~3000–3600, loop:false (it arrives).
Example
- "stagger forward" (at x:0,z:0,faceDeg:0) ->
{"durationMs":3200,"say":"Whoa... *hic*","sequence":{"loop":false,"frames":[{"t":0,"pose":{"Spine":[0,0,18],"Chest":[0,0,12],"LeftUpLeg":[40,0,0],"LeftLeg":[50,0,0],"RightUpLeg":[0,0,180],"RightLeg":[0,0,0]},"root":{"z":0.6,"faceDeg":-12}},{"t":0.5,"pose":{"Spine":[0,0,-18],"Chest":[0,0,-12],"RightUpLeg":[40,0,0],"RightLeg":[50,0,0],"LeftUpLeg":[0,0,180],"LeftLeg":[0,0,0]},"root":{"z":1.4,"faceDeg":14}},{"t":1,"pose":{"Spine":[0,0,6],"Chest":[0,0,4],"LeftUpLeg":[0,0,180],"LeftLeg":[0,0,0],"RightUpLeg":[0,0,180],"RightLeg":[0,0,0]},"root":{"z":2.2,"faceDeg":-4}}]}}