Initial files
This commit is contained in:
47
scripts/missile.gd
Normal file
47
scripts/missile.gd
Normal file
@@ -0,0 +1,47 @@
|
||||
extends KinematicBody2D
|
||||
|
||||
export var speed_mult = 100
|
||||
var speed = Vector2(0,-1)
|
||||
var origin
|
||||
var exploded = false
|
||||
|
||||
func init(_origin):
|
||||
randomize()
|
||||
origin = _origin
|
||||
speed = speed * speed_mult
|
||||
|
||||
func _ready():
|
||||
#OS.set_time_scale(0.21)
|
||||
get_node("Audio").play("missile_launch")
|
||||
set_process(true)
|
||||
get_node("CollisionArea").connect("area_enter", self, "_on_collision")
|
||||
randomize()
|
||||
|
||||
func _process(delta):
|
||||
move_forward(delta)
|
||||
if origin: check_bounds()
|
||||
if exploded and not get_node("Audio").is_voice_active(2): queue_free()
|
||||
|
||||
func move_forward(delta):
|
||||
move(speed.rotated(get_rot())*delta)
|
||||
|
||||
func _on_collision(other):
|
||||
if other.get_owner().has_method("on_rocket_hit"):
|
||||
other.get_owner().on_rocket_hit()
|
||||
var explosion_audio = "explosion_%s" % ceil(rand_range(1, 5))
|
||||
print("Playing %s" % explosion_audio)
|
||||
get_node("Audio").play(explosion_audio, 2)
|
||||
print("target destroyed")
|
||||
hide()
|
||||
get_node("CollisionArea").queue_free()
|
||||
exploded = true
|
||||
|
||||
func check_bounds():
|
||||
var origin_pos = origin.get_global_pos()
|
||||
var max_dist = origin_pos.distance_to(Vector2(0,0))
|
||||
var current_dist = get_global_pos().distance_to(origin_pos)
|
||||
if current_dist > max_dist:
|
||||
print("Missile out of bounds")
|
||||
queue_free()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user