RAIDER_GameJam/enemies/enemy_weapon_slot.gd
Felix Kaiser 3f62e5e31d blergh
2025-02-17 16:46:19 +01:00

44 lines
1.0 KiB
GDScript

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