| name | backshuffle |
| description | Shuffles backward in a low defensive stance while facing forward, via a translating sequence that moves root backward. Use when a command mentions backshuffle, defensive backpedal shuffle, slide back on defense, or shuffle backward staying square. |
| category | locomotion |
| disable-model-invocation | true |
| subskills | ["walk","bend-knees","balance-and-posture"] |
backshuffle
A low defensive shuffle retreating straight back, staying square to the front. Translate root while OMITTING faceDeg so the heading holds.
Composes: walk + 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. Make z more negative; do NOT set faceDeg.
- Stay low (
Spine+X~14, knees 45, root.y-0.2) with small backward slides.
durationMs ~2000.
Example
- "backshuffle" ->
{"durationMs":2000,"say":"Backshuffle, eyes up.","sequence":{"loop":false,"frames":[{"t":0,"pose":{"Spine":[14,0,0],"LeftUpLeg":[35,0,0],"LeftLeg":[45,0,0],"RightUpLeg":[35,0,0],"RightLeg":[45,0,0]},"root":{"z":-0.6,"y":-0.2}},{"t":0.5,"pose":{"Spine":[14,0,0]},"root":{"z":-1.2,"y":-0.2}},{"t":1,"pose":{"LeftUpLeg":[0,0,180],"LeftLeg":[0,0,0],"RightUpLeg":[0,0,180],"RightLeg":[0,0,0],"Spine":[0,0,0]},"root":{"z":-1.8,"y":0}}]}}
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.