Body step 2.3: view rides the body, mantling and climbing work
- view follows the body (deadzone, smoothed, hard 8 cm limit); no drift over six held poses; hanging keeps the view on the character's head - hold-back measured at the hips, capped leg push while held, stiffer balance - sticky legs tuck with free-space check (fixes the mantle shove loop) - strength asymmetric by direction; structural guide strength push-only - limb/torso friction set before AddChild (Box3D reads it only at creation) - new phases: pose hold, hang, human-motion mantle, hand-over-hand wall climb Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6006c5de98
commit
b5f598aae9
6 files changed
+327
-79
No files matched your search
@@ -131,3 +131,27 @@ RagdollSpike passed all of it, because its input was IDEAL: smooth poses every 1
|
||||
|
||||
New spike phases: hold a crouch (eyes 1.0 m) and a deep crouch (0.7 m) without drift (< 5 cm) or spin (< 5°),
|
||||
eye on camera (< 5 cm). 29 phases total, all on real input.
|
||||
|
||||
## Step 2.3 — view alignment, mantling, climbing (2026-10-02)
|
||||
|
||||
Owner, after 2.2:
|
||||
- "my head leaving the character's head … losing the alignment when climbing" (screenshots: the camera behind and
|
||||
below the character's own head while on the monkey bars).
|
||||
- Mantling: "legs trying to get off the ground and instantly come back".
|
||||
- Climbing near impossible.
|
||||
- Grabbing world objects and ducking now worked.
|
||||
|
||||
| Change | Why |
|
||||
|---|---|
|
||||
| **The view rides the body.** Deadzone 6 cm (2 cm climbing), smoothed follow τ 0.12 s (0.03 s climbing), and a hard limit `MaxViewLead` 8 cm. Standing, height belongs to the ground follow; airborne or climbing, the follow is 3D. The blocked eye→camera sweep stays | 2.2's "never follow while standing" fixed the drift loop by letting the view leave the body. The drift actually needed a body that can match its pose; with crouch error ~5 mm, a follow with a deadzone doesn't drift (new phase: six held poses, 0.000 m drift, eye within 9 mm) |
|
||||
| **Hold-back measured at the HIPS**, plus capped leg push (`BlockedPush` 150 N) while held, and balance 800 N·m | Measured at the head it was fooled: the body tipped over the knee-high box, so the head wasn't behind the camera. Full leg force bulldozed the body over the box or steep slope |
|
||||
| **Sticky legs tuck.** It tucks while the hands brace and lift (or hold static), and untucks only after 0.3 s unneeded AND a free-space check | The flip-flop re-enabled the collider inside the ledge face every few ticks, shoving the body off: the reported loop |
|
||||
| **Strength by direction (Nimso "asymmetric")**: shoulder raise 35 N·m vs pull-down 100 N·m; elbow extension 45 vs flexion 70; caps chosen per tick from the commanded direction. Structural hand-guide strength is PUSH-only (bone in compression) | Pull-ups and climbing are muscle work. 12 kg at arm's length sags 49 cm (close: 1.4 cm). Pull-up: two hands 0.74 m, one hand 0.16 m. Mantle: two ✓, one ✗. Wall climb hand over hand: 0.98 m |
|
||||
| **Limb friction 0.25 / torso 0.3, set BEFORE AddChild** | Box3D wrapper quirk: friction is read only when shapes are created. A later `PhysicsMaterialOverride` silently does nothing, so 2.1's torso friction never applied. Hands brushing a wall were pinned by friction and their own arm's pressure |
|
||||
| New phases: held poses without drift, hanging keeps the view on the body, the human-motion mantle (crouch, hands on the edge, stand and press), hand-over-hand wall climb. The pull-up grabs when the hands actually reach the bar | Tests now act like a person, on 90 Hz input with jitter |
|
||||
|
||||
Rules added:
|
||||
- The view must stay on the body; prevent drift by making the body able to match its pose, not by detaching the view.
|
||||
- Measure "blocked" where the body is blocked.
|
||||
- Hysteresis plus a free-space check before re-enabling any collider.
|
||||
- In the Box3D wrapper, physics materials must be set before AddChild.
|
||||
Reference in new issue
Block a user