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 # adjust to difficulty shoot_time /= Game.enemy_speed_factor arrow_speed *= Game.enemy_speed_factor func _physics_process(delta): if raycast.is_colliding(): if raycast.get_collider().is_in_group("player_hitbox"): 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_hitbox" 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()