- 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>
136 lines
4.8 KiB
Plaintext
136 lines
4.8 KiB
Plaintext
[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"]
|
|
[ext_resource type="Script" path="res://scripts/Locomotion.cs" id="3_locomotion"]
|
|
[ext_resource type="Script" path="res://scripts/WorldPanel.cs" id="4_worldpanel"]
|
|
[ext_resource type="Script" path="res://scripts/AnchorMoveMode.cs" id="5_anchormove"]
|
|
[ext_resource type="Script" path="res://scripts/PropShop.cs" id="6_propshop"]
|
|
[ext_resource type="Script" path="res://scripts/PropGrabber.cs" id="7_propgrabber"]
|
|
[ext_resource type="Script" path="res://scripts/PhysicsHands.cs" id="8_physicshands"]
|
|
[ext_resource type="Script" path="res://scripts/BodyRig.cs" id="9_bodyrig"]
|
|
[ext_resource type="Script" path="res://scripts/PhysicsTorso.cs" id="10_physicsTorso"]
|
|
[ext_resource type="Script" path="res://scripts/PhysicsArms.cs" id="11_physicsArms"]
|
|
|
|
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_sky"]
|
|
sky_horizon_color = Color(0.66, 0.72, 0.81, 1)
|
|
ground_horizon_color = Color(0.66, 0.72, 0.81, 1)
|
|
|
|
[sub_resource type="Sky" id="Sky_main"]
|
|
sky_material = SubResource("ProceduralSkyMaterial_sky")
|
|
|
|
[sub_resource type="Environment" id="Environment_main"]
|
|
background_mode = 2
|
|
sky = SubResource("Sky_main")
|
|
|
|
[sub_resource type="StandardMaterial3D" id="Material_floor"]
|
|
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)
|
|
|
|
[sub_resource type="BoxShape3D" id="BoxShape_floor"]
|
|
size = Vector3(10, 0.1, 10)
|
|
|
|
[sub_resource type="SphereMesh" id="SphereMesh_hand"]
|
|
radius = 0.04
|
|
height = 0.08
|
|
|
|
[sub_resource type="StandardMaterial3D" id="Material_hand_left"]
|
|
albedo_color = Color(0.9, 0.3, 0.35, 1)
|
|
|
|
[sub_resource type="StandardMaterial3D" id="Material_hand_right"]
|
|
albedo_color = Color(0.3, 0.5, 0.9, 1)
|
|
|
|
[node name="Main" type="Node3D"]
|
|
script = ExtResource("1_main")
|
|
|
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
|
environment = SubResource("Environment_main")
|
|
|
|
[node name="Sun" type="DirectionalLight3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 8, 0)
|
|
shadow_enabled = true
|
|
directional_shadow_max_distance = 10.0
|
|
shadow_bias = 0.04
|
|
shadow_normal_bias = 0.5
|
|
|
|
[node name="Floor" type="StaticBody3D" parent="."]
|
|
collision_mask = 29
|
|
|
|
[node name="FloorShape" type="CollisionShape3D" parent="Floor"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.05, 0)
|
|
shape = SubResource("BoxShape_floor")
|
|
|
|
[node name="FloorMesh" type="MeshInstance3D" parent="Floor"]
|
|
mesh = SubResource("PlaneMesh_floor")
|
|
|
|
[node name="XROrigin3D" type="XROrigin3D" parent="."]
|
|
|
|
[node name="XRCamera3D" type="XRCamera3D" parent="XROrigin3D"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7, 0)
|
|
|
|
[node name="LeftHand" type="XRController3D" parent="XROrigin3D"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 1, -0.5)
|
|
tracker = &"left_hand"
|
|
pose = &"default"
|
|
|
|
[node name="RightHand" type="XRController3D" parent="XROrigin3D"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 1, -0.5)
|
|
tracker = &"right_hand"
|
|
pose = &"default"
|
|
|
|
[node name="WorldPanel" type="Node3D" parent="XROrigin3D"]
|
|
script = ExtResource("4_worldpanel")
|
|
|
|
[node name="SpawnPoint" type="Marker3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2.5)
|
|
|
|
[node name="TeleportMarkers" type="Node3D" parent="."]
|
|
|
|
[node name="Marker1" parent="TeleportMarkers" instance=ExtResource("2_marker")]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -3)
|
|
MarkerLabel = "1"
|
|
|
|
[node name="Marker2" parent="TeleportMarkers" instance=ExtResource("2_marker")]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, -3)
|
|
MarkerLabel = "2"
|
|
|
|
[node name="Marker3" parent="TeleportMarkers" instance=ExtResource("2_marker")]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -4)
|
|
MarkerLabel = "3"
|
|
|
|
[node name="Locomotion" type="Node" parent="."]
|
|
script = ExtResource("3_locomotion")
|
|
|
|
[node name="AnchorMoveMode" type="Node" parent="."]
|
|
script = ExtResource("5_anchormove")
|
|
|
|
[node name="PropShop" type="Node3D" parent="."]
|
|
script = ExtResource("6_propshop")
|
|
|
|
[node name="PropGrabber" type="Node" parent="."]
|
|
script = ExtResource("7_propgrabber")
|
|
|
|
[node name="PhysicsHands" type="Node" parent="."]
|
|
script = ExtResource("8_physicshands")
|
|
|
|
[node name="PhysicsTorso" type="Node" parent="."]
|
|
script = ExtResource("10_physicsTorso")
|
|
|
|
[node name="PhysicsArms" type="Node" parent="."]
|
|
script = ExtResource("11_physicsArms")
|
|
|
|
[node name="BodyRig" type="Node3D" parent="."]
|
|
script = ExtResource("9_bodyrig")
|
|
|
|
[node name="FadeLayer" type="CanvasLayer" parent="."]
|
|
|
|
[node name="Fade" type="ColorRect" parent="FadeLayer"]
|
|
anchors_preset = 15
|
|
anchor_right = 1.0
|
|
anchor_bottom = 1.0
|
|
color = Color(0, 0, 0, 0)
|
|
mouse_filter = 2
|