Body step 2.1: climbing, mantling, crawling, legs, playground, 144 Hz

- Step rule + lower-body collider: no walking onto tables, steps <= 0.35 m
- Structural hand strength: two-hand mantle/pull-up works, one hand can't
- Arms aim from the physical shoulder horizontally, keep True Body pose vertically
- Crawl pose, crawl carry, 35 deg slope limit, ground feed-forward ignores
  play-space corrections (fixes a runaway feedback loop)
- Grab static world (climbing), procedural visual legs
- Playground sandbox; menu strength slider, spectator (old drag) and turn toggles
- Physics 144 Hz with interpolation; legacy chase-body spikes pin 90 Hz
- RagdollSpike: 27 phases incl. mantle, pull-up, crawl, ledge drop, ramps

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
FoxyzandClaude Opus 5.5 committed 2026-10-02 07:56:08 +03:00
1 parent d83273dd2f
commit 2aff2b61da
26 files changed
+1243 -70

No files matched your search

+11 -4
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=20 format=3]
[gd_scene load_steps=21 format=3]
[ext_resource type="Script" path="res://scripts/Main.cs" id="1_main"]
[ext_resource type="PackedScene" path="res://scenes/teleport_marker.tscn" id="2_marker"]
@@ -10,6 +10,7 @@
[ext_resource type="Script" path="res://scripts/Calibration.cs" id="12_calibration"]
[ext_resource type="Script" path="res://scripts/TrueBody.cs" id="13_truebody"]
[ext_resource type="Script" path="res://scripts/PlayerRig.cs" id="14_playerrig"]
[ext_resource type="Script" path="res://scripts/Playground.cs" id="15_playground"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_sky"]
sky_horizon_color = Color(0.66, 0.72, 0.81, 1)
@@ -27,10 +28,10 @@ albedo_color = Color(0.35, 0.35, 0.38, 1)
[sub_resource type="PlaneMesh" id="PlaneMesh_floor"]
material = SubResource("Material_floor")
size = Vector2(10, 10)
size = Vector2(40, 40)
[sub_resource type="BoxShape3D" id="BoxShape_floor"]
size = Vector3(10, 0.1, 10)
size = Vector3(40, 0.1, 40)
[sub_resource type="SphereMesh" id="SphereMesh_hand"]
radius = 0.04
@@ -55,7 +56,7 @@ directional_shadow_max_distance = 10.0
shadow_bias = 0.04
shadow_normal_bias = 0.5
[node name="Floor" type="StaticBody3D" parent="."]
[node name="Floor" type="StaticBody3D" parent="." groups=["no_grab"]]
collision_mask = 29
[node name="FloorShape" type="CollisionShape3D" parent="Floor"]
@@ -66,6 +67,7 @@ shape = SubResource("BoxShape_floor")
mesh = SubResource("PlaneMesh_floor")
[node name="XROrigin3D" type="XROrigin3D" parent="."]
physics_interpolation_mode = 2
[node name="XRCamera3D" type="XRCamera3D" parent="XROrigin3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7, 0)
@@ -106,6 +108,9 @@ script = ExtResource("3_locomotion")
[node name="AnchorMoveMode" type="Node" parent="."]
script = ExtResource("5_anchormove")
[node name="Playground" type="Node3D" parent="."]
script = ExtResource("15_playground")
[node name="PropShop" type="Node3D" parent="."]
script = ExtResource("6_propshop")
@@ -116,9 +121,11 @@ script = ExtResource("7_propgrabber")
script = ExtResource("12_calibration")
[node name="TrueBody" type="Node3D" parent="."]
physics_interpolation_mode = 2
script = ExtResource("13_truebody")
[node name="PlayerRig" type="Node" parent="."]
physics_interpolation_mode = 2
script = ExtResource("14_playerrig")
[node name="FadeLayer" type="CanvasLayer" parent="."]