DungeonCrawler/world.tscn
Andre 12b70c7498 Overworld, Dungeon-System, Goblin-Modell, NavMesh-Pathfinding, Kamera-Kollision
- Overworld: Gras-Terrain mit Noise-Shader, Berg, Dungeon-Tor, Felsen, Bäume
- Dungeon: Prozedurale Generierung (Grid, Räume, L-Gänge), Multi-Ebenen mit Persistenz
- Portal-System: Blau (zurück/raus), Rot (tiefer), Auswahl-UI ab Ebene 2+
- Gegner: Goblin-Modell + Animationen statt Warrior, Capsule angepasst
- NavMesh: Manuell gebautes NavigationMesh im Dungeon mit Wand-Margin und shared Vertices
- Pathfinding: Gegner nutzen NavigationAgent3D, laufen um Wände herum
- Leash-System: Gegner verlieren Aggro ab 30 Einheiten vom Spawn
- Kamera-Kollision: Raycast verhindert Durchsehen durch Wände, ignoriert Gegner
- Respawn-Timer auf 60s, Death-Timer auf 10s erhöht
- Dokumentation aktualisiert (Dungeon, NavMesh, Goblin, Kamera)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 01:51:07 +01:00

340 lines
12 KiB
Text

[gd_scene format=3 uid="uid://bp0g1glxo816h"]
[ext_resource type="PackedScene" uid="uid://dniyuebl8yhtv" path="res://player.tscn" id="1_f3sb7"]
[ext_resource type="Script" uid="uid://cx56h588mfsk0" path="res://world.gd" id="1_tlwt5"]
[ext_resource type="PackedScene" uid="uid://cvojaeanxugfj" path="res://enemy.tscn" id="3_enemy"]
[sub_resource type="BoxShape3D" id="BoxShape3D_floor"]
size = Vector3(200, 0.5, 200)
[sub_resource type="BoxMesh" id="BoxMesh_floor"]
size = Vector3(200, 0.5, 200)
[sub_resource type="NavigationMesh" id="NavigationMesh_fj7yv"]
[sub_resource type="StandardMaterial3D" id="mat_rock"]
albedo_color = Color(0.4, 0.38, 0.35, 1)
roughness = 0.95
[sub_resource type="StandardMaterial3D" id="mat_stone"]
albedo_color = Color(0.3, 0.28, 0.25, 1)
roughness = 0.9
[sub_resource type="StandardMaterial3D" id="mat_entrance"]
albedo_color = Color(0.02, 0.02, 0.02, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_gate"]
size = Vector3(5, 4, 4)
[sub_resource type="StandardMaterial3D" id="mat_rock_small"]
albedo_color = Color(0.45, 0.42, 0.38, 1)
roughness = 0.95
[sub_resource type="StandardMaterial3D" id="mat_trunk"]
albedo_color = Color(0.35, 0.22, 0.1, 1)
roughness = 0.9
[sub_resource type="StandardMaterial3D" id="mat_leaf"]
albedo_color = Color(0.15, 0.45, 0.12, 1)
roughness = 0.85
[node name="World" type="Node3D" unique_id=1518976304]
script = ExtResource("1_tlwt5")
[node name="Boden" type="StaticBody3D" parent="." unique_id=1937472568]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Boden" unique_id=1499976920]
shape = SubResource("BoxShape3D_floor")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Boden" unique_id=1316024844]
mesh = SubResource("BoxMesh_floor")
[node name="Player" parent="." unique_id=841198255 instance=ExtResource("1_f3sb7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.435, 0)
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1642167272]
transform = Transform3D(-45, 0, 0, 0, -45, 0, 0, 0, -45, 0, 0, 0)
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="." unique_id=1093030835]
navigation_mesh = SubResource("NavigationMesh_fj7yv")
[node name="enemy" parent="." unique_id=1435537835 instance=ExtResource("3_enemy")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.388, -36)
[node name="Mountain" type="CSGCombiner3D" parent="." unique_id=677409308]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -80)
use_collision = true
[node name="MainBody" type="CSGSphere3D" parent="Mountain" unique_id=578990011]
transform = Transform3D(1.5, 0, 0, 0, 0.6, 0, 0, 0, 1, 0, -5, 0)
radius = 30.0
radial_segments = 24
rings = 16
material = SubResource("mat_rock")
[node name="Peak" type="CSGSphere3D" parent="Mountain" unique_id=1930092098]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0)
radius = 15.0
radial_segments = 16
rings = 12
material = SubResource("mat_rock")
[node name="LeftHill" type="CSGSphere3D" parent="Mountain" unique_id=1517453171]
transform = Transform3D(1.2, 0, 0, 0, 0.5, 0, 0, 0, 0.8, -25, -8, 5)
radius = 20.0
radial_segments = 16
rings = 12
material = SubResource("mat_rock")
[node name="RightHill" type="CSGSphere3D" parent="Mountain" unique_id=334184404]
transform = Transform3D(1, 0, 0, 0, 0.45, 0, 0, 0, 0.9, 22, -8, 8)
radius = 18.0
radial_segments = 16
rings = 12
material = SubResource("mat_rock")
[node name="DungeonGate" type="Node3D" parent="." unique_id=1787139888]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -45)
[node name="LeftPillar" type="CSGBox3D" parent="DungeonGate" unique_id=975630240]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 3, 0)
use_collision = true
size = Vector3(1.5, 6, 1.5)
material = SubResource("mat_stone")
[node name="RightPillar" type="CSGBox3D" parent="DungeonGate" unique_id=682177996]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 3, 0)
use_collision = true
size = Vector3(1.5, 6, 1.5)
material = SubResource("mat_stone")
[node name="TopBar" type="CSGBox3D" parent="DungeonGate" unique_id=1917431148]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6.6, 0)
use_collision = true
size = Vector3(6.5, 1.2, 1.5)
material = SubResource("mat_stone")
[node name="Entrance" type="CSGBox3D" parent="DungeonGate" unique_id=782262731]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.75, -0.5)
size = Vector3(3.5, 5.5, 2)
material = SubResource("mat_entrance")
[node name="GateArea" type="Area3D" parent="DungeonGate" unique_id=1947692918]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 2)
[node name="CollisionShape3D" type="CollisionShape3D" parent="DungeonGate/GateArea" unique_id=1018035780]
shape = SubResource("BoxShape3D_gate")
[node name="GateLabel" type="Label3D" parent="DungeonGate" unique_id=1720057230]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.5, 1)
visible = false
billboard = 1
modulate = Color(1, 0.85, 0.3, 1)
text = "Dungeon betreten [E]"
font_size = 48
[node name="Rock1" type="CSGSphere3D" parent="." unique_id=427636709]
transform = Transform3D(1.1, 0, 0, 0, 0.5, 0, 0, 0, 0.9, 15, 0.5, -20)
radius = 1.8
radial_segments = 8
material = SubResource("mat_rock_small")
[node name="Rock2" type="CSGSphere3D" parent="." unique_id=176525307]
transform = Transform3D(0.9, 0, 0, 0, 0.6, 0, 0, 0, 1.1, -18, 0.4, -15)
radius = 1.4
radial_segments = 8
material = SubResource("mat_rock_small")
[node name="Rock3" type="CSGSphere3D" parent="." unique_id=1182279621]
transform = Transform3D(1.2, 0, 0, 0, 0.45, 0, 0, 0, 0.8, 25, 0.7, 10)
radius = 2.2
radial_segments = 8
material = SubResource("mat_rock_small")
[node name="Rock4" type="CSGSphere3D" parent="." unique_id=1966368230]
transform = Transform3D(0.8, 0, 0, 0, 0.55, 0, 0, 0, 1, -22, 0.3, 25)
radius = 1.0
radial_segments = 8
material = SubResource("mat_rock_small")
[node name="Rock5" type="CSGSphere3D" parent="." unique_id=48323199]
transform = Transform3D(1.3, 0, 0, 0, 0.5, 0, 0, 0, 0.9, 30, 0.6, -40)
radius = 2.0
radial_segments = 8
material = SubResource("mat_rock_small")
[node name="Rock6" type="CSGSphere3D" parent="." unique_id=604365640]
transform = Transform3D(1, 0, 0, 0, 0.7, 0, 0, 0, 1.2, -28, 0.5, -45)
radius = 1.6
radial_segments = 8
material = SubResource("mat_rock_small")
[node name="Rock7" type="CSGSphere3D" parent="." unique_id=1821485412]
transform = Transform3D(0.9, 0, 0, 0, 0.4, 0, 0, 0, 1, 12, 0.3, 30)
radius = 1.2
radial_segments = 8
material = SubResource("mat_rock_small")
[node name="Rock8" type="CSGSphere3D" parent="." unique_id=1387702407]
transform = Transform3D(1.1, 0, 0, 0, 0.6, 0, 0, 0, 0.85, -10, 0.6, -50)
radius = 2.4
radial_segments = 8
material = SubResource("mat_rock_small")
[node name="Rock9" type="CSGSphere3D" parent="." unique_id=1450102956]
transform = Transform3D(1, 0, 0, 0, 0.5, 0, 0, 0, 1.1, 35, 0.4, -25)
radius = 1.5
radial_segments = 8
material = SubResource("mat_rock_small")
[node name="Tree1" type="Node3D" parent="." unique_id=618772270]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, -10)
[node name="Trunk" type="CSGCylinder3D" parent="Tree1" unique_id=1186519127]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.75, 0)
radius = 0.3
height = 5.5
material = SubResource("mat_trunk")
[node name="Crown1" type="CSGSphere3D" parent="Tree1" unique_id=2089075716]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 4.2, -0.2)
radius = 2.2
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Crown2" type="CSGSphere3D" parent="Tree1" unique_id=2070989054]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.4, 5.4, 0.3)
radius = 2.0
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Tree2" type="Node3D" parent="." unique_id=1889546293]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, -30)
[node name="Trunk" type="CSGCylinder3D" parent="Tree2" unique_id=997380154]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.25, 0)
radius = 0.3
height = 6.5
material = SubResource("mat_trunk")
[node name="Crown1" type="CSGSphere3D" parent="Tree2" unique_id=809808235]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 5, 0.2)
radius = 2.5
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Crown2" type="CSGSphere3D" parent="Tree2" unique_id=481648384]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 6.2, -0.4)
radius = 2.2
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Crown3" type="CSGSphere3D" parent="Tree2" unique_id=184574046]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1, 7.4, 0.1)
radius = 1.8
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Tree3" type="Node3D" parent="." unique_id=1385340799]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 20)
[node name="Trunk" type="CSGCylinder3D" parent="Tree3" unique_id=387398909]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.25, 0)
radius = 0.3
height = 4.5
material = SubResource("mat_trunk")
[node name="Crown1" type="CSGSphere3D" parent="Tree3" unique_id=1139907459]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.2, 3.5, 0.5)
radius = 2.0
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Crown2" type="CSGSphere3D" parent="Tree3" unique_id=391069386]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.4, 4.7, -0.3)
radius = 2.3
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Tree4" type="Node3D" parent="." unique_id=613675839]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25, 0, 15)
[node name="Trunk" type="CSGCylinder3D" parent="Tree4" unique_id=220117087]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0)
radius = 0.3
height = 6.0
material = SubResource("mat_trunk")
[node name="Crown1" type="CSGSphere3D" parent="Tree4" unique_id=129254377]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 4.5, -0.1)
radius = 2.4
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Crown2" type="CSGSphere3D" parent="Tree4" unique_id=929192645]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 5.7, 0.4)
radius = 2.1
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Tree5" type="Node3D" parent="." unique_id=94347379]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 35)
[node name="Trunk" type="CSGCylinder3D" parent="Tree5" unique_id=199856993]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.5, 0)
radius = 0.3
height = 7.0
material = SubResource("mat_trunk")
[node name="Crown1" type="CSGSphere3D" parent="Tree5" unique_id=1965121271]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 5.3, 0.6)
radius = 2.6
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Crown2" type="CSGSphere3D" parent="Tree5" unique_id=1961694117]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 6.5, -0.2)
radius = 2.3
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Crown3" type="CSGSphere3D" parent="Tree5" unique_id=1346853660]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.7, 0.3)
radius = 1.9
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Tree6" type="Node3D" parent="." unique_id=1309473387]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, -10)
[node name="Trunk" type="CSGCylinder3D" parent="Tree6" unique_id=1889196546]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0)
radius = 0.3
height = 5.0
material = SubResource("mat_trunk")
[node name="Crown1" type="CSGSphere3D" parent="Tree6" unique_id=1159575861]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, 3.8, -0.4)
radius = 2.1
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")
[node name="Crown2" type="CSGSphere3D" parent="Tree6" unique_id=2073540260]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.6, 5, 0.2)
radius = 2.4
radial_segments = 10
rings = 8
material = SubResource("mat_leaf")