| name | forward-roll |
| description | Performs a tuck-and-roll somersault forward via a sequence that deeply tucks, dips root.y, translates forward, and pops back up to standing. Use when a command mentions forward roll, somersault, tuck and roll, roll forward, tumble, or do a roll across the floor. |
| category | locomotion |
| disable-model-invocation | true |
| subskills | ["move-torso","move-leg","balance-and-posture"] |
forward-roll
Tuck into a ball and somersault forward, ending on the feet. Stylized (the rig has no pitch axis), sold by a deep tuck, a root.y dip, and a forward root.z translation.
How
- Use a
sequence with loop:false (frame root is ABSOLUTE — z grows; compute forward from state.position+state.faceDeg, here origin facing +Z).
- Beats: deep tuck (
UpLeg:[110,0,0],Leg:[110,0,0] both, Spine:[40,0,0],Chest:[25,0,0], root.y:-0.3), through the roll (even deeper bend, root.y:-0.6, z advancing), pop up to stand (legs and torso to rest, root.y:0).
durationMs ~1200–1500.
Example
- "do a forward roll" (at x:0,z:0,faceDeg:0) ->
{"durationMs":1300,"say":"Tuck and roll!","sequence":{"loop":false,"frames":[{"t":0,"pose":{"LeftUpLeg":[110,0,0],"LeftLeg":[110,0,0],"RightUpLeg":[110,0,0],"RightLeg":[110,0,0],"Spine":[40,0,0],"Chest":[25,0,0]},"root":{"y":-0.3,"z":0}},{"t":0.5,"pose":{"Spine":[50,0,0]},"root":{"y":-0.6,"z":0.8}},{"t":1,"pose":{"LeftUpLeg":[0,0,180],"LeftLeg":[0,0,0],"RightUpLeg":[0,0,180],"RightLeg":[0,0,0],"Spine":[0,0,0],"Chest":[0,0,0]},"root":{"y":0,"z":1.5}}]}}