Body physics Stage 2: physical arm segments (chase-driven upper arm + forearm, hierarchical budgets, layer 5)
- PhysicsArms: per side 2.0 kg upper arm + 1.2 kg forearm RigidBody3D PD-chasing their analytic 2-bone IK pose, solved per physics tick from the physical chest shoulders to the physical hands; no joints (Box3D has no usable shoulder/wrist joint; AGENTS forbids joints between tracked bodies). Budgets from a 60 kg mass stat: hand 90 < forearm 180 < upper arm 360 < chest 2400 N. Owns calibration + reach budget (moved from BodyRig); 1 m snap, non-finite reset, BodyMath.RotationError servo. - Layer 5 = player arms (mask 1); props/table/floor masks include it; no self-collision. - BodyRig: visuals only, arms drawn shoulder -> physical elbow -> wrist. - ArmSpike: track gap 0, swing lag <= 6 cm, arm pushes prop with hand clear, forearm blocked by bar without tunneling and quiet when pinned, teleport snap, NaN reset — PASS x3. - CollapseSpike now runs the full body (49/49 x3); all six spikes PASS x3. - HANDOFF/AGENTS: Stage 2 entry (item 10), layers, tuning table, Stage 2b next steps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cb518999e5
commit
7589b13aba
11 files changed
+708
-174
No files matched your search
+2
-2
@@ -45,7 +45,7 @@ public partial class PropShop : Node3D
|
||||
{
|
||||
Color wood = new(0.45f, 0.3f, 0.18f);
|
||||
StaticBody3D table = new();
|
||||
table.CollisionMask = 0b1101; // world + player body + hands
|
||||
table.CollisionMask = 0b11101; // world + player body + hands + arms
|
||||
table.AddChild(new CollisionShape3D
|
||||
{
|
||||
Position = new Vector3(0, 0.725f, -0.6f),
|
||||
@@ -96,7 +96,7 @@ public partial class PropShop : Node3D
|
||||
ContinuousCd = spec.Mass < 0.1f,
|
||||
ContactMonitor = true,
|
||||
MaxContactsReported = 4,
|
||||
CollisionMask = 0b1101, // world + player body + hands
|
||||
CollisionMask = 0b11101, // world + player body + hands + arms
|
||||
};
|
||||
body.AddToGroup("prop");
|
||||
|
||||
|
||||
Reference in new issue
Block a user