fuzzyworld

godot-shooter / commit

Rockets now fade out properly after they explode.

ffa98f7d7057642168d14a31fad4002c10d0a955 · Pavel Safronov · 2023-11-17 14:18:41 -0800 · parents ede9acddd137

Rockets now fade out properly after they explode.
 weapons/Rocket.gd   |  8 ++++---
 weapons/Rocket.tscn | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 64 insertions(+), 4 deletions(-)

diff --git a/weapons/Rocket.gd b/weapons/Rocket.gd
index 21d5639..59aab70 100644
--- a/weapons/Rocket.gd
+++ b/weapons/Rocket.gd
@@ -7,12 +7,14 @@ export var lifetime_seconds = 5
 export var speed = 100
 export var arm_secs = 1
 export var damage_amount = 2
+var is_dead = false
 
 func _ready() -> void:
 	pass
 
 func _physics_process(delta: float) -> void:
-	position += transform.y * speed * delta
+	if !is_dead:
+		position += transform.y * speed * delta
 
 func on_bullet_body_entered(body):
 	var tree = get_tree()
@@ -23,8 +25,8 @@ func on_bullet_body_entered(body):
 		var se = SmallExplosion.instance()
 		get_parent().add_child(se)
 		se.transform = transform
-		queue_free()
-
+		self.is_dead = true
+		$AnimationPlayer.play("fade_out")
 
 func _on_LifeTimer_timeout() -> void:
 	var se = SmallExplosion.instance()
diff --git a/weapons/Rocket.tscn b/weapons/Rocket.tscn
index 8d21147..dc7523c 100644
--- a/weapons/Rocket.tscn
+++ b/weapons/Rocket.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=8 format=2]
+[gd_scene load_steps=9 format=2]
 
 [ext_resource path="res://assets/kenney_simple-space/PNG/Default/meteor_squareSmall.png" type="Texture" id=1]
 [ext_resource path="res://weapons/Rocket.gd" type="Script" id=2]
@@ -30,6 +30,18 @@ tracks/1/keys = {
 "update": 0,
 "values": [ Color( 0, 1, 0.0627451, 1 ) ]
 }
+tracks/2/type = "value"
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Color( 1, 1, 1, 0 ) ]
+}
 
 [sub_resource type="Animation" id=2]
 resource_name = "arming"
@@ -58,6 +70,48 @@ tracks/1/keys = {
 "values": [ Color( 0, 1, 0.0627451, 1 ), Color( 1, 1, 1, 1 ) ]
 }
 
+[sub_resource type="Animation" id=5]
+resource_name = "fade_out"
+length = 3.0
+tracks/0/type = "value"
+tracks/0/path = NodePath("Sprite: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( 0, 1, 0.0627451, 0 ) ]
+}
+tracks/1/type = "value"
+tracks/1/path = NodePath(".:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/keys = {
+"times": PoolRealArray( 0, 3 ),
+"transitions": PoolRealArray( 1, 1 ),
+"update": 0,
+"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
+}
+tracks/2/type = "method"
+tracks/2/path = NodePath(".")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/keys = {
+"times": PoolRealArray( 3 ),
+"transitions": PoolRealArray( 1 ),
+"values": [ {
+"args": [  ],
+"method": "queue_free"
+} ]
+}
+
 [sub_resource type="Curve" id=3]
 _data = [ Vector2( 0, 0.0945946 ), 0.0, 0.0, 0, 0, Vector2( 1, 1 ), 0.0, 0.0, 0, 0 ]
 
@@ -83,6 +137,9 @@ texture = ExtResource( 3 )
 wait_time = 5.0
 one_shot = true
 autostart = true
+__meta__ = {
+"_editor_description_": "this timer starts at creation, and after the lifetime amount it destroys the rocket"
+}
 
 [node name="ArmedTimer" type="Timer" parent="."]
 
@@ -94,6 +151,7 @@ polygon = PoolVector2Array( 0, -30, -16, 16, 0, 32, 16, 16 )
 [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
 anims/RESET = SubResource( 1 )
 anims/arming = SubResource( 2 )
+anims/fade_out = SubResource( 5 )
 
 [node name="Particles2D" type="CPUParticles2D" parent="."]
 position = Vector2( 0, -6 )