Final touches
This commit is contained in:
6
FPS.gd
Normal file
6
FPS.gd
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
extends Label
|
||||||
|
|
||||||
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
|
func _process(delta):
|
||||||
|
var fps = Engine.get_frames_per_second()
|
||||||
|
text = "FPS: %d" % fps
|
||||||
8
Mob.gd
8
Mob.gd
@@ -5,12 +5,12 @@ extends CharacterBody3D
|
|||||||
|
|
||||||
signal squashed
|
signal squashed
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
move_and_slide()
|
move_and_slide()
|
||||||
|
|
||||||
func initialize(start_position, player_position):
|
func initialize(start_position, player_position):
|
||||||
# Look to the player
|
# Look to the player
|
||||||
look_at_from_position(start_position, player_position, Vector3.UP)
|
look_at_horizontal(start_position, player_position)
|
||||||
# But rotate a little bit
|
# But rotate a little bit
|
||||||
rotate_y(randf_range(-PI / 4, PI / 4))
|
rotate_y(randf_range(-PI / 4, PI / 4))
|
||||||
# Set random speed
|
# Set random speed
|
||||||
@@ -21,6 +21,10 @@ func initialize(start_position, player_position):
|
|||||||
|
|
||||||
$AnimationPlayer.speed_scale = random_speed / min_speed
|
$AnimationPlayer.speed_scale = random_speed / min_speed
|
||||||
|
|
||||||
|
func look_at_horizontal(start_position: Vector3, target_position: Vector3):
|
||||||
|
var target_horizontal_position = Vector3(target_position.x, start_position.y, target_position.z)
|
||||||
|
look_at_from_position(start_position, target_horizontal_position, Vector3.UP)
|
||||||
|
|
||||||
func squash():
|
func squash():
|
||||||
squashed.emit()
|
squashed.emit()
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|||||||
12
Player.gd
12
Player.gd
@@ -14,14 +14,10 @@ func _physics_process(delta):
|
|||||||
var direction = Vector3.ZERO
|
var direction = Vector3.ZERO
|
||||||
|
|
||||||
# Check inputs
|
# Check inputs
|
||||||
if Input.is_action_pressed("move_right"):
|
direction.x = Input.get_axis("move_left", "move_right")
|
||||||
direction.x += 1
|
direction.z = Input.get_axis("move_forward", "move_back")
|
||||||
if Input.is_action_pressed("move_left"):
|
|
||||||
direction.x -= 1
|
$Control/Direction.text = "x: %.2f, z: %.2f" % [direction.x, direction.z]
|
||||||
if Input.is_action_pressed("move_back"):
|
|
||||||
direction.z += 1
|
|
||||||
if Input.is_action_pressed("move_forward"):
|
|
||||||
direction.z -= 1
|
|
||||||
|
|
||||||
# If in movement, normalize direction and change looking_at
|
# If in movement, normalize direction and change looking_at
|
||||||
if direction != Vector3.ZERO:
|
if direction != Vector3.ZERO:
|
||||||
|
|||||||
3
main.gd
3
main.gd
@@ -4,6 +4,8 @@ extends Node
|
|||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
$UserInterface/Retry.hide()
|
$UserInterface/Retry.hide()
|
||||||
|
Engine.max_fps = 144
|
||||||
|
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
|
||||||
|
|
||||||
func _on_mob_timer_timeout():
|
func _on_mob_timer_timeout():
|
||||||
var mob = mob_scene.instantiate()
|
var mob = mob_scene.instantiate()
|
||||||
@@ -22,6 +24,7 @@ func _on_mob_timer_timeout():
|
|||||||
func _on_player_hit():
|
func _on_player_hit():
|
||||||
$MobTimer.stop()
|
$MobTimer.stop()
|
||||||
$UserInterface/Retry.show()
|
$UserInterface/Retry.show()
|
||||||
|
Engine.max_fps = 30
|
||||||
|
|
||||||
func _unhandled_input(event):
|
func _unhandled_input(event):
|
||||||
if event.is_action_pressed("ui_accept") and $UserInterface/Retry.visible:
|
if event.is_action_pressed("ui_accept") and $UserInterface/Retry.visible:
|
||||||
|
|||||||
35
main.tscn
35
main.tscn
@@ -1,10 +1,11 @@
|
|||||||
[gd_scene load_steps=12 format=3 uid="uid://6o4jfv4sjc42"]
|
[gd_scene load_steps=13 format=3 uid="uid://6o4jfv4sjc42"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://main.gd" id="1_git68"]
|
[ext_resource type="Script" path="res://main.gd" id="1_git68"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bl4b5g1o8ud5y" path="res://player.tscn" id="1_qvjem"]
|
[ext_resource type="PackedScene" uid="uid://bl4b5g1o8ud5y" path="res://player.tscn" id="1_qvjem"]
|
||||||
[ext_resource type="PackedScene" uid="uid://h2hapmuai55b" path="res://mob.tscn" id="2_oiwul"]
|
[ext_resource type="PackedScene" uid="uid://h2hapmuai55b" path="res://mob.tscn" id="2_oiwul"]
|
||||||
[ext_resource type="FontFile" uid="uid://d1r2cqlplg2wb" path="res://fonts/Montserrat-Medium.ttf" id="4_o3155"]
|
[ext_resource type="FontFile" uid="uid://d1r2cqlplg2wb" path="res://fonts/Montserrat-Medium.ttf" id="4_o3155"]
|
||||||
[ext_resource type="Script" path="res://ScoreLabel.gd" id="5_y0lvi"]
|
[ext_resource type="Script" path="res://ScoreLabel.gd" id="5_y0lvi"]
|
||||||
|
[ext_resource type="Script" path="res://FPS.gd" id="6_jdbnj"]
|
||||||
|
|
||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_jiv4h"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_jiv4h"]
|
||||||
size = Vector3(60, 2, 60)
|
size = Vector3(60, 2, 60)
|
||||||
@@ -79,7 +80,7 @@ mesh = SubResource("CylinderMesh_1gwnh")
|
|||||||
curve = SubResource("Curve3D_476rq")
|
curve = SubResource("Curve3D_476rq")
|
||||||
|
|
||||||
[node name="SpawnLocation" type="PathFollow3D" parent="SpawnPath"]
|
[node name="SpawnLocation" type="PathFollow3D" parent="SpawnPath"]
|
||||||
transform = Transform3D(0.0074346, 0, -0.999971, 0, 1, 0, 0.999971, 0, 0.0074346, -13.6297, 0, -15.0268)
|
transform = Transform3D(0.00743615, 0, -0.999971, 0, 1, 0, 0.999971, 0, 0.00743615, -13.6297, 0, -15.0268)
|
||||||
|
|
||||||
[node name="MobTimer" type="Timer" parent="."]
|
[node name="MobTimer" type="Timer" parent="."]
|
||||||
wait_time = 0.5
|
wait_time = 0.5
|
||||||
@@ -94,16 +95,6 @@ grow_horizontal = 2
|
|||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
theme = SubResource("Theme_eyu2y")
|
theme = SubResource("Theme_eyu2y")
|
||||||
|
|
||||||
[node name="ScoreLabel" type="Label" parent="UserInterface"]
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 38.0
|
|
||||||
offset_top = 29.0
|
|
||||||
offset_right = 99.0
|
|
||||||
offset_bottom = 52.0
|
|
||||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
|
||||||
text = "Score: 0"
|
|
||||||
script = ExtResource("5_y0lvi")
|
|
||||||
|
|
||||||
[node name="Retry" type="ColorRect" parent="UserInterface"]
|
[node name="Retry" type="ColorRect" parent="UserInterface"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@@ -128,5 +119,25 @@ grow_horizontal = 2
|
|||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
text = "Press Enter to retry"
|
text = "Press Enter to retry"
|
||||||
|
|
||||||
|
[node name="ScoreLabel" type="Label" parent="UserInterface"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 38.0
|
||||||
|
offset_top = 29.0
|
||||||
|
offset_right = 99.0
|
||||||
|
offset_bottom = 52.0
|
||||||
|
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||||
|
text = "Score: 0"
|
||||||
|
script = ExtResource("5_y0lvi")
|
||||||
|
|
||||||
|
[node name="FPS" type="Label" parent="UserInterface"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 610.0
|
||||||
|
offset_top = 22.0
|
||||||
|
offset_right = 654.0
|
||||||
|
offset_bottom = 50.0
|
||||||
|
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||||
|
text = "FPS"
|
||||||
|
script = ExtResource("6_jdbnj")
|
||||||
|
|
||||||
[connection signal="hit" from="Player" to="." method="_on_player_hit"]
|
[connection signal="hit" from="Player" to="." method="_on_player_hit"]
|
||||||
[connection signal="timeout" from="MobTimer" to="." method="_on_mob_timer_timeout"]
|
[connection signal="timeout" from="MobTimer" to="." method="_on_mob_timer_timeout"]
|
||||||
|
|||||||
54
mob.tscn
54
mob.tscn
@@ -6,6 +6,33 @@
|
|||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_vwmkp"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_vwmkp"]
|
||||||
size = Vector3(2.5, 1.5, 3.5)
|
size = Vector3(2.5, 1.5, 3.5)
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_g67lg"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Pivot/Character:position")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, 0, 0)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Pivot/Character:rotation")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, 0, 0)]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_ja4nm"]
|
[sub_resource type="Animation" id="Animation_ja4nm"]
|
||||||
resource_name = "float"
|
resource_name = "float"
|
||||||
length = 1.2
|
length = 1.2
|
||||||
@@ -35,33 +62,6 @@ tracks/1/keys = {
|
|||||||
"values": [Vector3(0, 0, 0), Vector3(0.139626, 0, 0), Vector3(-0.15708, 0, 0)]
|
"values": [Vector3(0, 0, 0), Vector3(0.139626, 0, 0), Vector3(-0.15708, 0, 0)]
|
||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_g67lg"]
|
|
||||||
length = 0.001
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath("Pivot/Character:position")
|
|
||||||
tracks/0/interp = 1
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0, 0, 0)]
|
|
||||||
}
|
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/imported = false
|
|
||||||
tracks/1/enabled = true
|
|
||||||
tracks/1/path = NodePath("Pivot/Character:rotation")
|
|
||||||
tracks/1/interp = 1
|
|
||||||
tracks/1/loop_wrap = true
|
|
||||||
tracks/1/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0, 0, 0)]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_x0i7m"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_x0i7m"]
|
||||||
_data = {
|
_data = {
|
||||||
"RESET": SubResource("Animation_g67lg"),
|
"RESET": SubResource("Animation_g67lg"),
|
||||||
|
|||||||
71
player.tscn
71
player.tscn
@@ -7,9 +7,36 @@
|
|||||||
radius = 1.0
|
radius = 1.0
|
||||||
|
|
||||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_chb66"]
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_chb66"]
|
||||||
height = 0.2
|
height = 0.4
|
||||||
radius = 1.3
|
radius = 1.3
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_g67lg"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Pivot/Character:position")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, 0, 0)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Pivot/Character:rotation")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, 0, 0)]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_ja4nm"]
|
[sub_resource type="Animation" id="Animation_ja4nm"]
|
||||||
resource_name = "float"
|
resource_name = "float"
|
||||||
length = 1.2
|
length = 1.2
|
||||||
@@ -39,33 +66,6 @@ tracks/1/keys = {
|
|||||||
"values": [Vector3(0, 0, 0), Vector3(0.139626, 0, 0), Vector3(-0.15708, 0, 0)]
|
"values": [Vector3(0, 0, 0), Vector3(0.139626, 0, 0), Vector3(-0.15708, 0, 0)]
|
||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_g67lg"]
|
|
||||||
length = 0.001
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath("Pivot/Character:position")
|
|
||||||
tracks/0/interp = 1
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0, 0, 0)]
|
|
||||||
}
|
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/imported = false
|
|
||||||
tracks/1/enabled = true
|
|
||||||
tracks/1/path = NodePath("Pivot/Character:rotation")
|
|
||||||
tracks/1/interp = 1
|
|
||||||
tracks/1/loop_wrap = true
|
|
||||||
tracks/1/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0, 0, 0)]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_x0i7m"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_x0i7m"]
|
||||||
_data = {
|
_data = {
|
||||||
"RESET": SubResource("Animation_g67lg"),
|
"RESET": SubResource("Animation_g67lg"),
|
||||||
@@ -100,4 +100,19 @@ libraries = {
|
|||||||
}
|
}
|
||||||
autoplay = "float"
|
autoplay = "float"
|
||||||
|
|
||||||
|
[node name="Control" type="Control" parent="."]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="Direction" type="Label" parent="Control"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 453.0
|
||||||
|
offset_top = 38.0
|
||||||
|
offset_right = 493.0
|
||||||
|
offset_bottom = 61.0
|
||||||
|
|
||||||
[connection signal="body_entered" from="MobDetector" to="." method="_on_mob_detector_body_entered"]
|
[connection signal="body_entered" from="MobDetector" to="." method="_on_mob_detector_body_entered"]
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ config_version=5
|
|||||||
|
|
||||||
config/name="Godot"
|
config/name="Godot"
|
||||||
config/features=PackedStringArray("4.2", "Forward Plus")
|
config/features=PackedStringArray("4.2", "Forward Plus")
|
||||||
|
run/max_fps=144
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
@@ -90,3 +91,10 @@ jump={
|
|||||||
3d_physics/layer_1="player"
|
3d_physics/layer_1="player"
|
||||||
3d_physics/layer_2="enemies"
|
3d_physics/layer_2="enemies"
|
||||||
3d_physics/layer_3="world"
|
3d_physics/layer_3="world"
|
||||||
|
|
||||||
|
[rendering]
|
||||||
|
|
||||||
|
anti_aliasing/quality/msaa_2d=3
|
||||||
|
anti_aliasing/quality/msaa_3d=3
|
||||||
|
anti_aliasing/quality/screen_space_aa=1
|
||||||
|
anti_aliasing/quality/use_taa=true
|
||||||
|
|||||||
Reference in New Issue
Block a user