moving-platform ยท diff
git:20260912.d014c2d to git:20260913.624182f
16 added, 23 removed. Audit A to A.
---
name: moving-platform
- description: >
- Riders inherit platform velocity. Use when a character slides off a
- lift, or when a jump from a mover ignores its speed. Stacks on
- platform-jump and locomotion.
+ description: Use when riders must stay stable on moving geometry, preserve or discard platform-relative velocity on departure, or handle lifts and crush contacts deterministically.
---
# Moving platform
- Ask the column.
-
- | Column | Rider keeps |
- |---|---|
- | stick-carry | full platform delta while grounded |
- | loose-carry | partial; player can walk off |
- | one-shot-lift | elevator, no walk |
- | crush-safe | publish crush or no-crush |
-
- ## Clock
+ Choose the carry/transfer policy:
- Move platforms on the logic tick before riders sample ground.
- A jump from a mover adds the platform velocity to v0 unless the column is one-shot-lift.
- Coyote still counts if the platform slides out from under the feet.
+ | Column | Grounded carry | Departure transfer |
+ |---|---|---|
+ | stick-carry | full platform pose delta | published world/relative velocity rule |
+ | loose-carry | partial authored carry | published transfer factor |
+ | one-shot-lift | constrained rider policy | authored exit rule |
+ | crush-safe | any carry policy | explicit stop/yield/damage response |
- ## Iron rules
+ ## Reference frames and order
- - Do not parent the mesh only. Carry is velocity, not a visual attach that desyncs collision.
- - Crush: either a published kill volume or the platform yields. Silent squash is a bug.
- - Camera-anti-clip treats the mover as moving geometry.
- - Enemies on movers use nav-mesh that updates or a leash on the platform id.
+ 1. Sample platform previous/current logical transforms and derive platform point velocity/delta for the rider contact point.
+ 2. Grounded rider movement is solved in a declared platform-relative or world-space convention exactly once. Do not both carry by transform delta and add the same platform velocity again.
+ 3. On jump/detach, convert the rider's relative motion to world motion using the published transfer policy. Whether platform velocity is inherited fully, partially or not at all is data, not a universal exception for one lift type.
+ 4. `jump-leniency` owns coyote after support is lost. `platform-jump` owns jump arc. `locomotion` owns rider movement integration.
+ 5. Moving collision geometry, navigation/leashes and `camera-anti-clip` must observe a compatible platform pose for the same logical frame.
+ 6. Crush behavior is explicit: stop/yield, authored damage/kill with telegraph, or another declared response. Silent interpenetration is invalid.
## Accept
- Stand still on a lift and you arrive. Jump with the lift and you keep the extra speed. A closing door either kills with a tell or stops on the body.
+ Stand, walk, jump and re-land on platforms moving horizontally, vertically and with the supported rotation policy. Reverse update iteration and vary render rate; grounded relative offset and departure velocity remain consistent. Test support loss near coyote boundaries and a closing/crush case without double-applying platform velocity.