| name | hop-down-stairs |
| description | Bounds down the stairs in two-footed hops, via a sequence with repeated small root.y drops and forward root.z. Use when a command mentions hop down the stairs, bound down the steps, jump down the stairs, or two-foot down the staircase. |
| category | locomotion |
| disable-model-invocation | true |
| subskills | ["move-leg","bend-knees","balance-and-posture"] |
hop-down-stairs
Descend by hopping off both feet down each step: small repeated root.y drops carrying forward.
Composes: move-leg + bend-knees + balance-and-posture
How
- Use a
sequence with loop:false. Frame root is ABSOLUTE; compute the travel axis from state.position+state.faceDeg (0=+Z, 90=+X). The example assumes origin facing +Z.
- Alternate a small hop (
root.y up a touch) and a landing lower (root.y steps down) while z advances; absorb with bent knees.
durationMs ~2200.
Example
- "hop down the stairs" ->
{"durationMs":2200,"say":"Hopping down!","sequence":{"loop":false,"frames":[{"t":0,"pose":{"LeftUpLeg":[40,0,0],"LeftLeg":[60,0,0],"RightUpLeg":[40,0,0],"RightLeg":[60,0,0]},"root":{"y":0,"z":0}},{"t":0.3,"pose":{"LeftUpLeg":[20,0,0],"RightUpLeg":[20,0,0]},"root":{"y":0.15,"z":0.3}},{"t":0.5,"pose":{"LeftUpLeg":[50,0,0],"LeftLeg":[80,0,0],"RightUpLeg":[50,0,0],"RightLeg":[80,0,0]},"root":{"y":-0.2,"z":0.5}},{"t":0.75,"pose":{"LeftUpLeg":[20,0,0],"RightUpLeg":[20,0,0]},"root":{"y":-0.1,"z":0.8}},{"t":1,"pose":{"LeftUpLeg":[0,0,180],"LeftLeg":[0,0,0],"RightUpLeg":[0,0,180],"RightLeg":[0,0,0]},"root":{"y":-0.45,"z":1.1}}]}}
Limits & posture
Keep ≥1 foot grounded except at a jump's airborne apex; stay inside human joint ranges and keep weight over the support — see balance-and-posture.