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 onready var muzzle_flash = $MuzzleFlashParticles const ArrowProjectile = preload("res://objects/enemy/roboturret_proj.tscn") const Death = preload("res://objects/enemy/roboturret_die.tscn") func _ready(): timer.start(shoot_time) death_sound = Audio.a_explosion # 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") func spawn_bullet(): muzzle_flash.emitting = true 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) func die(): .die() var death = Death.instance() death.spray_color = Color(0xffbe42ff) death.global_position = global_position get_parent().get_parent().add_child(death) func _on_Timer_timeout(): if !anims.is_playing(): spawn_bullet()