fix(vagrant): substrate leg.scl cycle restored; feet inherit_scale=false

User feedback after iteration-4: legs SHOULD cycle through +1/0/-1
(substrate-style — leg renders forward, under body, then behind body).
But feet must NOT Y-flip when leg.scl_y goes negative, and must NOT
collapse when leg.scl_y=0. They should follow leg-end position only.

Three changes:
1. walk_fwd_lower keyframes restored to substrate-style (leg.scl_y
   sign-flip on both halves: leg_l +1↔-1, leg_r -1↔+1). foot.pos
   animations REMOVED — cascade through leg.world.scl now correctly
   moves foot to leg-end position automatically (foot.local.pos
   stays at rest 25 in y).
2. foot.rest.scl: [1, -1] → [1, 1] (no Y-flip in rest, natural
   sprite orientation). inherit_scale=false → foot.world.scl stays
   at foot.local.scl=[1,1] regardless of leg.scl_y. Foot sprite
   never flips, never collapses.
3. Procedural extended: writes foot.local.rot = -leg.local.rot so
   foot.world.rot = body.world.rot (feet stay body-oriented even
   when legs rotate to walk-direction).

Speed slowed further from 0.5 → 0.4 (user: still too fast at 0.5).
This commit is contained in:
Axel Meyer
2026-05-18 22:31:42 +02:00
parent bf5fe12e4c
commit b66c4ca4dd
4 changed files with 29 additions and 27 deletions

View File

@@ -5,24 +5,19 @@
"loop": true,
"keyframes": [
{ "t": 0.0,
"leg_l": {"scl": [-1, 0]}, "leg_r": {"scl": [ 1, 0]},
"foot_l": {"pos": [0, 0]}, "foot_r": {"pos": [0, 0]}
"leg_l": {"scl": [-1, 0]}, "leg_r": {"scl": [ 1, 0]}
},
{ "t": 0.2,
"leg_l": {"scl": [-1, -1]}, "leg_r": {"scl": [ 1, 0]},
"foot_l": {"pos": [0, 25]}, "foot_r": {"pos": [0, 0]}
"leg_l": {"scl": [-1, -1]}, "leg_r": {"scl": [ 1, 1]}
},
{ "t": 0.4,
"leg_l": {"scl": [-1, 0]}, "leg_r": {"scl": [ 1, 0]},
"foot_l": {"pos": [0, 0]}, "foot_r": {"pos": [0, 0]}
"leg_l": {"scl": [-1, 0]}, "leg_r": {"scl": [ 1, 0]}
},
{ "t": 0.6,
"leg_l": {"scl": [-1, 0]}, "leg_r": {"scl": [ 1, -1]},
"foot_l": {"pos": [0, 0]}, "foot_r": {"pos": [0, 25]}
"leg_l": {"scl": [-1, 1]}, "leg_r": {"scl": [ 1, -1]}
},
{ "t": 0.8,
"leg_l": {"scl": [-1, 0]}, "leg_r": {"scl": [ 1, 0]},
"foot_l": {"pos": [0, 0]}, "foot_r": {"pos": [0, 0]}
"leg_l": {"scl": [-1, 0]}, "leg_r": {"scl": [ 1, 0]}
}
]
}