Compare commits
2 commits
dc649047bc
...
b9281930bd
Author | SHA1 | Date | |
---|---|---|---|
Daniel Siepmann | b9281930bd | ||
Daniel Siepmann | b433db6095 |
34
first_2d_game/HUD.gd
Normal file
34
first_2d_game/HUD.gd
Normal file
|
@ -0,0 +1,34 @@
|
|||
extends CanvasLayer
|
||||
|
||||
|
||||
# Notifies `Main` node that the button has been pressed
|
||||
signal start_game
|
||||
|
||||
|
||||
func show_message(text):
|
||||
$Message.text = text
|
||||
$Message.show()
|
||||
$MessageTimer.start()
|
||||
|
||||
|
||||
func show_game_over():
|
||||
show_message('Game Over')
|
||||
await $MessageTimer.timeout
|
||||
|
||||
$Message.text = 'Dodge the Creeps!'
|
||||
$Message.show()
|
||||
await get_tree().create_timer(1.0).timeout
|
||||
$StartButton.show()
|
||||
|
||||
|
||||
func update_score(score):
|
||||
$ScoreLabel.text = str(score)
|
||||
|
||||
|
||||
func _on_start_button_pressed():
|
||||
$StartButton.hide()
|
||||
start_game.emit()
|
||||
|
||||
|
||||
func _on_message_timer_timeout():
|
||||
$Message.hide()
|
63
first_2d_game/HUD.tscn
Normal file
63
first_2d_game/HUD.tscn
Normal file
|
@ -0,0 +1,63 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://caxwerqlguyo7"]
|
||||
|
||||
[ext_resource type="Script" path="res://HUD.gd" id="1_cp6uc"]
|
||||
[ext_resource type="FontFile" uid="uid://dgjjxafsbuvej" path="res://fonts/Xolonium-Regular.ttf" id="1_pbe0f"]
|
||||
|
||||
[node name="HUD" type="CanvasLayer"]
|
||||
script = ExtResource("1_cp6uc")
|
||||
|
||||
[node name="ScoreLabel" type="Label" parent="."]
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -22.5
|
||||
offset_right = 22.5
|
||||
offset_bottom = 78.0
|
||||
grow_horizontal = 2
|
||||
theme_override_fonts/font = ExtResource("1_pbe0f")
|
||||
theme_override_font_sizes/font_size = 64
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Message" type="Label" parent="."]
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -240.0
|
||||
offset_top = -79.5
|
||||
offset_right = 240.0
|
||||
offset_bottom = 79.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_fonts/font = ExtResource("1_pbe0f")
|
||||
theme_override_font_sizes/font_size = 64
|
||||
text = "Dodge the Creeps!"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 2
|
||||
|
||||
[node name="StartButton" type="Button" parent="."]
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -100.0
|
||||
offset_top = -140.0
|
||||
offset_right = 100.0
|
||||
offset_bottom = -40.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
theme_override_fonts/font = ExtResource("1_pbe0f")
|
||||
theme_override_font_sizes/font_size = 64
|
||||
text = "Start"
|
||||
|
||||
[node name="MessageTimer" type="Timer" parent="."]
|
||||
wait_time = 2.0
|
||||
one_shot = true
|
||||
|
||||
[connection signal="pressed" from="StartButton" to="." method="_on_start_button_pressed"]
|
||||
[connection signal="timeout" from="MessageTimer" to="." method="_on_message_timer_timeout"]
|
|
@ -11,11 +11,6 @@ func _ready():
|
|||
pass
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
pass
|
||||
|
||||
|
||||
func _on_mob_timer_timeout():
|
||||
var mob = mob_scene.instantiate()
|
||||
var mob_spawn_location = $MobPath/MobSpawnLocation
|
||||
|
@ -36,6 +31,7 @@ func _on_mob_timer_timeout():
|
|||
|
||||
func _on_score_timer_timeout():
|
||||
score += 1
|
||||
$HUD.update_score(score)
|
||||
|
||||
|
||||
func _on_start_timer_timeout():
|
||||
|
@ -46,9 +42,13 @@ func _on_start_timer_timeout():
|
|||
func game_over():
|
||||
$ScoreTimer.stop()
|
||||
$MobTimer.stop()
|
||||
$HUD.show_game_over()
|
||||
|
||||
|
||||
func new_game():
|
||||
score = 0
|
||||
$Player.start($StartPosition.position)
|
||||
$StartTimer.start()
|
||||
$HUD.update_score(score)
|
||||
$HUD.show_message('Get Ready')
|
||||
get_tree().call_group('mobs', 'queue_free')
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://dmuja863phygg"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://dmuja863phygg"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://ckfhsdod4ghug" path="res://Player.tscn" id="1_4p8ah"]
|
||||
[ext_resource type="Script" path="res://Main.gd" id="1_ftc8b"]
|
||||
[ext_resource type="PackedScene" uid="uid://df0p8vv7unjvu" path="res://Mob.tscn" id="2_sjjbm"]
|
||||
[ext_resource type="PackedScene" uid="uid://caxwerqlguyo7" path="res://HUD.tscn" id="4_5inpl"]
|
||||
|
||||
[sub_resource type="Curve2D" id="Curve2D_7kfby"]
|
||||
_data = {
|
||||
|
@ -33,7 +34,10 @@ curve = SubResource("Curve2D_7kfby")
|
|||
|
||||
[node name="MobSpawnLocation" type="PathFollow2D" parent="MobPath"]
|
||||
|
||||
[node name="HUD" parent="." instance=ExtResource("4_5inpl")]
|
||||
|
||||
[connection signal="hit" from="Player" to="." method="game_over"]
|
||||
[connection signal="timeout" from="MobTimer" to="." method="_on_mob_timer_timeout"]
|
||||
[connection signal="timeout" from="ScoreTimer" to="." method="_on_score_timer_timeout"]
|
||||
[connection signal="timeout" from="StartTimer" to="." method="_on_start_timer_timeout"]
|
||||
[connection signal="start_game" from="HUD" to="." method="new_game"]
|
||||
|
|
|
@ -7,10 +7,5 @@ func _ready():
|
|||
$AnimatedSprite2D.play(mob_types[randi() % mob_types.size()])
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
pass
|
||||
|
||||
|
||||
func _on_visible_on_screen_notifier_2d_screen_exited():
|
||||
queue_free()
|
||||
|
|
|
@ -48,7 +48,7 @@ animations = [{
|
|||
radius = 36.0
|
||||
height = 96.0
|
||||
|
||||
[node name="Mob" type="RigidBody2D"]
|
||||
[node name="Mob" type="RigidBody2D" groups=["mobs"]]
|
||||
collision_mask = 0
|
||||
gravity_scale = 0.0
|
||||
script = ExtResource("1_ruw5w")
|
||||
|
|
|
@ -46,7 +46,7 @@ func _process(delta):
|
|||
$AnimatedSprite2D.flip_v = velocity.y > 0
|
||||
|
||||
|
||||
func _on_body_entered(body):
|
||||
func _on_body_entered(_body):
|
||||
hide()
|
||||
hit.emit()
|
||||
$CollisionShape2D.set_deferred('disabled', true)
|
||||
|
|
|
@ -11,6 +11,7 @@ config_version=5
|
|||
[application]
|
||||
|
||||
config/name="First 2d Game"
|
||||
run/main_scene="res://Main.tscn"
|
||||
config/features=PackedStringArray("4.2", "GL Compatibility")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
|
|
Loading…
Reference in a new issue