mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2026-01-04 15:00:09 +01:00
This is a 3D version of Dodge the Creeps, originally made by GDQuest and updated to 4.0 by myself. Some changes are included for more polish: - Invisible walls were added so that you can't exit the playable area anymore. - Pillars have a different color to be more visible. - Physical keys are now used, so that you can use WASD movement on any keyboard layout. - The right mouse button can now be used to jump. - Visual settings were tweaked to match other 3D demos. - Project icon was upscaled to 128×128 using Waifu2x, so that it looks better on hiDPI displays. - `.blend` files were resaved with compression enabled. Co-authored-by: Nathan Lovato <nathan@gdquest.com>
186 lines
6.5 KiB
Plaintext
186 lines
6.5 KiB
Plaintext
[gd_scene load_steps=15 format=3 uid="uid://2y3ar4s86yra"]
|
|
|
|
[ext_resource type="Script" path="res://Main.gd" id="1"]
|
|
[ext_resource type="PackedScene" uid="uid://dp478jyugrn7o" path="res://Player.tscn" id="2"]
|
|
[ext_resource type="PackedScene" uid="uid://ha0ar5s2c3m4" path="res://Mob.tscn" id="3"]
|
|
[ext_resource type="Theme" uid="uid://cqquurjk1i7yw" path="res://ui_theme.tres" id="4_gnyca"]
|
|
[ext_resource type="Script" path="res://ScoreLabel.gd" id="6"]
|
|
|
|
[sub_resource type="BoxShape3D" id="1"]
|
|
size = Vector3(60, 2, 60)
|
|
|
|
[sub_resource type="BoxMesh" id="2"]
|
|
size = Vector3(60, 2, 60)
|
|
|
|
[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_i5n5q"]
|
|
|
|
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_m3njk"]
|
|
sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
|
|
ground_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
|
|
|
|
[sub_resource type="Sky" id="Sky_yutuu"]
|
|
sky_material = SubResource("ProceduralSkyMaterial_m3njk")
|
|
|
|
[sub_resource type="Environment" id="Environment_0tcge"]
|
|
background_mode = 2
|
|
sky = SubResource("Sky_yutuu")
|
|
tonemap_mode = 2
|
|
|
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cr5ed"]
|
|
albedo_color = Color(0.635294, 0.211765, 0.0235294, 1)
|
|
|
|
[sub_resource type="CylinderMesh" id="3"]
|
|
material = SubResource("StandardMaterial3D_cr5ed")
|
|
radial_segments = 24
|
|
rings = 1
|
|
|
|
[sub_resource type="Curve3D" id="5"]
|
|
_data = {
|
|
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 14, 0, -15, 0, 0, 0, 0, 0, 0, -13, 0, -15, 0, 0, 0, 0, 0, 0, -13, 0, 16, 0, 0, 0, 0, 0, 0, 14, 0, 16, 0, 0, 0, 0, 0, 0, 14, 0, -15),
|
|
"tilts": PackedFloat32Array(0, 0, 0, 0, 0)
|
|
}
|
|
point_count = 5
|
|
|
|
[node name="Main" type="Node"]
|
|
script = ExtResource("1")
|
|
mob_scene = ExtResource("3")
|
|
|
|
[node name="Ground" type="StaticBody3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
|
|
collision_layer = 4
|
|
collision_mask = 0
|
|
|
|
[node name="CollisionShape" type="CollisionShape3D" parent="Ground"]
|
|
shape = SubResource("1")
|
|
|
|
[node name="MeshInstance" type="MeshInstance3D" parent="Ground"]
|
|
mesh = SubResource("2")
|
|
|
|
[node name="Walls" type="StaticBody3D" parent="."]
|
|
editor_description = "These invisible walls are used to prevent the player from escaping the playable area.
|
|
|
|
These walls use WorldBoundaryShape3D collision shapes, which are infinitely large planes
|
|
(even though they look finite in the editor)."
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5)
|
|
collision_layer = 4
|
|
collision_mask = 0
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Walls"]
|
|
transform = Transform3D(1, 0, 0, 0, 1.31134e-07, 1, 0, -1, 1.31134e-07, 0, 10, 11)
|
|
shape = SubResource("WorldBoundaryShape3D_i5n5q")
|
|
|
|
[node name="CollisionShape3D2" type="CollisionShape3D" parent="Walls"]
|
|
transform = Transform3D(-4.37114e-08, 1, -1.31134e-07, 0, 1.31134e-07, 1, 1, 4.37114e-08, -5.73206e-15, -13, 10, -4.76837e-07)
|
|
shape = SubResource("WorldBoundaryShape3D_i5n5q")
|
|
|
|
[node name="CollisionShape3D3" type="CollisionShape3D" parent="Walls"]
|
|
transform = Transform3D(4.37114e-08, -1, 2.18557e-07, 3.82137e-15, -2.18557e-07, -1, 1, 4.37114e-08, -5.73206e-15, 14, 10, -4.76837e-07)
|
|
shape = SubResource("WorldBoundaryShape3D_i5n5q")
|
|
|
|
[node name="CollisionShape3D4" type="CollisionShape3D" parent="Walls"]
|
|
transform = Transform3D(1, 5.96046e-08, -1.42109e-14, 3.82137e-15, -2.18557e-07, -1, -5.96046e-08, 1, -2.18557e-07, 9.53674e-07, 10, -20)
|
|
shape = SubResource("WorldBoundaryShape3D_i5n5q")
|
|
|
|
[node name="DirectionalLight" type="DirectionalLight3D" parent="."]
|
|
transform = Transform3D(0.5, -0.777049, 0.382355, 0, 0.441506, 0.897258, -0.866025, -0.448629, 0.220753, 0, 12.5592, 14.7757)
|
|
shadow_enabled = true
|
|
shadow_bias = 0.04
|
|
shadow_blur = 1.5
|
|
directional_shadow_mode = 0
|
|
directional_shadow_fade_start = 1.0
|
|
directional_shadow_max_distance = 40.0
|
|
|
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
|
environment = SubResource("Environment_0tcge")
|
|
|
|
[node name="Player" parent="." instance=ExtResource("2")]
|
|
|
|
[node name="CameraPivot" type="Marker3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0.183514, 0, 0)
|
|
|
|
[node name="Camera" type="Camera3D" parent="CameraPivot"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, -2.98023e-08, 0, 2.98023e-08, 1, 0, 9.53674e-07, 19)
|
|
projection = 1
|
|
fov = 48.6
|
|
size = 24.0
|
|
far = 40.0
|
|
|
|
[node name="Cylinders" type="Node3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 0)
|
|
|
|
[node name="MeshInstance" type="MeshInstance3D" parent="Cylinders"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 1, -15)
|
|
mesh = SubResource("3")
|
|
|
|
[node name="MeshInstance3" type="MeshInstance3D" parent="Cylinders"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21, 1, -15)
|
|
mesh = SubResource("3")
|
|
|
|
[node name="MeshInstance2" type="MeshInstance3D" parent="Cylinders"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21, 1, 16)
|
|
mesh = SubResource("3")
|
|
|
|
[node name="MeshInstance4" type="MeshInstance3D" parent="Cylinders"]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 1, 16)
|
|
mesh = SubResource("3")
|
|
|
|
[node name="SpawnPath" type="Path3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
|
curve = SubResource("5")
|
|
|
|
[node name="SpawnLocation" type="PathFollow3D" parent="SpawnPath"]
|
|
transform = Transform3D(-4.37113e-08, 0, -0.999999, 0, 1, 0, 0.999999, 0, -4.37113e-08, 14, 0, -15)
|
|
rotation_mode = 1
|
|
cubic_interp = false
|
|
loop = false
|
|
|
|
[node name="MobTimer" type="Timer" parent="."]
|
|
wait_time = 0.5
|
|
autostart = true
|
|
|
|
[node name="UserInterface" type="Control" parent="."]
|
|
layout_mode = 3
|
|
anchors_preset = 15
|
|
anchor_right = 1.0
|
|
anchor_bottom = 1.0
|
|
grow_horizontal = 2
|
|
grow_vertical = 2
|
|
theme = ExtResource("4_gnyca")
|
|
|
|
[node name="ScoreLabel" type="Label" parent="UserInterface"]
|
|
layout_mode = 0
|
|
offset_left = 16.0
|
|
offset_top = 16.0
|
|
offset_right = 77.0
|
|
offset_bottom = 42.0
|
|
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
|
theme_override_font_sizes/font_size = 32
|
|
text = "Score: 0"
|
|
script = ExtResource("6")
|
|
|
|
[node name="Retry" type="ColorRect" parent="UserInterface"]
|
|
visible = false
|
|
layout_mode = 0
|
|
anchor_right = 1.0
|
|
anchor_bottom = 1.0
|
|
color = Color(0, 0, 0, 0.447059)
|
|
|
|
[node name="Label" type="Label" parent="UserInterface/Retry"]
|
|
layout_mode = 1
|
|
anchors_preset = 8
|
|
anchor_left = 0.5
|
|
anchor_top = 0.5
|
|
anchor_right = 0.5
|
|
anchor_bottom = 0.5
|
|
offset_left = -75.0
|
|
offset_top = -13.0
|
|
offset_right = 75.0
|
|
offset_bottom = 13.0
|
|
grow_horizontal = 2
|
|
grow_vertical = 2
|
|
theme_override_font_sizes/font_size = 32
|
|
text = "Press Space or Enter to retry"
|
|
|
|
[connection signal="hit" from="Player" to="." method="_on_player_hit"]
|
|
[connection signal="timeout" from="MobTimer" to="." method="_on_mob_timer_timeout"]
|