persist until trail gone

This commit is contained in:
Robin Hübner 2017-08-12 19:45:11 +02:00
parent 0c586d9b41
commit 938bf344b2
1 changed files with 30 additions and 3 deletions

View File

@ -3,6 +3,9 @@ extends KinematicBody2D
const km = preload("Kinematic.gd")
var MissileImpact = load("res://MissileImpact.tscn")
onready var sprite = get_node("Sprite")
onready var ps = get_node("Particles2D")
var missile_max_speed = 384 # pixels per second
var missile_arrive_radius = 64
var missile_arrive_speed = 1
@ -14,6 +17,15 @@ var steering
var s_seek
var s_arrive
# is dead?
var is_dead = false
# time to die
var death_time = 1
# current timer
var death_timer = 0
func _ready():
set_fixed_process(true)
@ -27,6 +39,9 @@ func _ready():
s_seek.set_target(player)
s_arrive.set_target(player)
# base death timer on lifetime
death_time = ps.get_lifetime()
func on_impact(e, is_bullet):
# create bullet impact
@ -44,13 +59,25 @@ func on_impact(e, is_bullet):
new_mi.set_global_rot(get_global_rot())
new_mi.rotate(deg2rad(180))
# new_bi.rotate(deg2rad(180))
# damage and free
e.do_damage(missile_dmg)
queue_free()
# hide missile, keep particles until dedness
queue_death()
func queue_death():
sprite.hide()
ps.set_emitting(false)
is_dead = true
func _fixed_process(delta):
if is_dead:
death_timer += delta
if death_timer >= death_time:
queue_free()
return
s_seek.get_steering(steering)
s_arrive.get_steering(steering)
cur_kinematic.update(steering, delta)