revo-jailbreak/objects/enemy/roboturret.gd
2023-10-24 20:10:25 -04:00

49 lines
1.3 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
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().add_child(death)
func _on_Timer_timeout():
if !anims.is_playing(): spawn_bullet()