extends Node3D class_name EnemyWeaponSlot @export var lead_speed := 10 @export var weapon : Weapon @onready var audio_stream_player_3d: AudioStreamPlayer3D = $AudioStreamPlayer3D var target : Node3D var can_shoot := true func _ready() -> void: if weapon.shooting_sound: audio_stream_player_3d.stream = weapon.shooting_sound func _physics_process(delta: float) -> void: if is_instance_valid(target) && target: var dist = (target.global_position - global_position).length() var time_to_target = dist/lead_speed var lead = (target.velocity*time_to_target) look_at(target.global_position+Vector3(0,.5,0) + lead) shoot() else: rotation = Vector3.ZERO func shoot(): if can_shoot: get_tree().create_timer(weapon.cooldown).timeout.connect(reload) audio_stream_player_3d.play() can_shoot = false var new_projectile = weapon.projectile_scene.instantiate() new_projectile.global_transform = global_transform get_tree().root.add_child(new_projectile) func reload(): can_shoot = true func set_target(value: Node3D): target = value