- 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>
340 lines
12 KiB
Text
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")
|