fuzzyworld

godot-shooter / commit

Added speed powerups, which can actually make the game more difficult, because with a faster speed, the turns become much wider. Might need to change the turn rate to account for this.

d8d02b36e93e93e068b495c61fd53c268b1d4f59 · Pavel Safronov · 2023-11-06 12:28:17 -0800 · parents 1b4613d1f0c8

Added speed powerups, which can actually make the game more difficult, because with a faster speed, the turns become much wider. Might need to change the turn rate to account for this.
 Player.gd         |  5 ++++
 SpeedPowerUp.gd   |  8 ++++++
 SpeedPowerUp.tscn | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 World.tscn        | 12 ++++++++-
 4 files changed, 104 insertions(+), 1 deletion(-)

diff --git a/Player.gd b/Player.gd
index af9d598..9d3c7ed 100644
--- a/Player.gd
+++ b/Player.gd
@@ -48,6 +48,11 @@ func heal(amount: int = 1):
 	if health > max_health:
 		health = max_health
 
+func speed_up(delta: int = 10):
+	if dead:
+		return
+	move_speed += delta
+
 func hurt(damage_amount: int = 1):
 	if dead or is_invincible:
 		return
diff --git a/SpeedPowerUp.gd b/SpeedPowerUp.gd
new file mode 100644
index 0000000..863780e
--- /dev/null
+++ b/SpeedPowerUp.gd
@@ -0,0 +1,8 @@
+extends Node2D
+
+export var speed_amount = 10
+
+func _on_Area2D_body_entered(body: Node) -> void:
+	if body.has_method("speed_up"):
+		body.speed_up()
+		$AnimationPlayer.play("fade_out")
diff --git a/SpeedPowerUp.tscn b/SpeedPowerUp.tscn
new file mode 100644
index 0000000..a489fb2
--- /dev/null
+++ b/SpeedPowerUp.tscn
@@ -0,0 +1,80 @@
+[gd_scene load_steps=5 format=2]
+
+[ext_resource path="res://SpeedPowerUp.gd" type="Script" id=1]
+[ext_resource path="res://assets/kenney_simple-space/PNG/Retina/star_tiny.png" type="Texture" id=2]
+
+[sub_resource type="Animation" id=1]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/path = NodePath(".:modulate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Color( 1, 1, 1, 1 ) ]
+}
+
+[sub_resource type="Animation" id=2]
+resource_name = "fade_out"
+tracks/0/type = "value"
+tracks/0/path = NodePath(".:modulate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 0, 1 ),
+"transitions": PoolRealArray( 1, 1 ),
+"update": 0,
+"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
+}
+tracks/1/type = "method"
+tracks/1/path = NodePath(".")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/keys = {
+"times": PoolRealArray( 1.3 ),
+"transitions": PoolRealArray( 1 ),
+"values": [ {
+"args": [  ],
+"method": "queue_free"
+} ]
+}
+tracks/2/type = "value"
+tracks/2/path = NodePath("Area2D/CollisionPolygon2D:disabled")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/keys = {
+"times": PoolRealArray( 0.1 ),
+"transitions": PoolRealArray( 1 ),
+"update": 1,
+"values": [ true ]
+}
+
+[node name="SpeedPowerUp" type="Node2D"]
+script = ExtResource( 1 )
+speed_amount = 20
+
+[node name="Area2D" type="Area2D" parent="."]
+
+[node name="Sprite" type="Sprite" parent="Area2D"]
+modulate = Color( 0, 0.462745, 1, 1 )
+texture = ExtResource( 2 )
+
+[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Area2D"]
+visible = false
+polygon = PoolVector2Array( 0, -15, -16, 0, 0, 16, 16, 0 )
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+anims/RESET = SubResource( 1 )
+anims/fade_out = SubResource( 2 )
+
+[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"]
diff --git a/World.tscn b/World.tscn
index d7fb400..2836a51 100644
--- a/World.tscn
+++ b/World.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=9 format=2]
+[gd_scene load_steps=10 format=2]
 
 [ext_resource path="res://assets/kenney_simple-space/PNG/Default/icon_crossLarge.png" type="Texture" id=1]
 [ext_resource path="res://Player.tscn" type="PackedScene" id=2]
@@ -7,6 +7,7 @@
 [ext_resource path="res://StarField.tscn" type="PackedScene" id=5]
 [ext_resource path="res://CharacterTheme.tres" type="Theme" id=6]
 [ext_resource path="res://HealPowerUp.tscn" type="PackedScene" id=7]
+[ext_resource path="res://SpeedPowerUp.tscn" type="PackedScene" id=8]
 
 [sub_resource type="CircleShape2D" id=1]
 radius = 29.0172
@@ -61,6 +62,15 @@ position = Vector2( 199, 534 )
 [node name="HealPowerUp3" parent="Environment" instance=ExtResource( 7 )]
 position = Vector2( 837, 158 )
 
+[node name="SpeedPowerUp" parent="Environment" instance=ExtResource( 8 )]
+position = Vector2( 747, 342 )
+
+[node name="SpeedPowerUp2" parent="Environment" instance=ExtResource( 8 )]
+position = Vector2( 123, 307 )
+
+[node name="SpeedPowerUp3" parent="Environment" instance=ExtResource( 8 )]
+position = Vector2( 450, 505 )
+
 [node name="CanvasLayer" type="CanvasLayer" parent="."]
 
 [node name="HUD" parent="CanvasLayer" instance=ExtResource( 3 )]