Files
godot-demo-projects/3d/squash_the_creeps/Main.tscn
Hugo Locurcio 71d29dcf3b Add Squash the Creeps (3D) demo
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>
2023-03-13 23:50:10 +01:00

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"]