godot-shooter / commit
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 )