41 lines
1.1 KiB
GDScript
41 lines
1.1 KiB
GDScript
extends "res://objects/enemy/enemy.gd"
|
|
|
|
#Exports
|
|
export var shoot_time = 1.0
|
|
export var arrow_speed = 80.0
|
|
#Onready
|
|
onready var timer = $Timer
|
|
onready var anims = $AnimationPlayer
|
|
onready var shootpos = $ShootPos
|
|
onready var raycast = $RayCast2D
|
|
const ArrowProjectile = preload("res://objects/enemy/roboturret_proj.tscn")
|
|
|
|
func _ready():
|
|
death_sound = Audio.a_die_robot
|
|
|
|
func _physics_process(delta):
|
|
if raycast.is_colliding():
|
|
if sign(shootpos.position.x) == -1:
|
|
anims.play("turn right")
|
|
else:
|
|
anims.play("turn left")
|
|
#Do not charge up offscreen
|
|
if Game.get_sector(position) != Game.current_sector: timer.start()
|
|
|
|
func spawn_bullet():
|
|
var arrow = ArrowProjectile.instance()
|
|
arrow.global_position = global_position + (shootpos.position * scale)
|
|
arrow.direction = sign(shootpos.position.x) * scale.x
|
|
arrow.target_group = "player"
|
|
arrow.speed = arrow_speed
|
|
Game.get_map().add_child(arrow)
|
|
timer.start(shoot_time)
|
|
|
|
func die():
|
|
.die()
|
|
Game.instance_node(load("res://objects/enemy/roboturret_die.tscn"), position.x, position.y, get_parent())
|
|
|
|
func _on_Timer_timeout():
|
|
if !anims.is_playing(): spawn_bullet()
|
|
|
|
|