class_name EnemyController extends Node signal accelerate(direction: Vector2, delta: float) signal shoot() @export var ship: AbstractEnemyShip const FREE_FLIGHT_DIST = 50 var target_position : Vector2 var direction : Vector2 func _physics_process(delta: float) -> void: if ship.is_on_screen: shoot.emit() accelerate.emit(direction, delta) func _on_direction_timer_timeout() -> void: direction = get_acceleration_direction() func get_acceleration_direction() -> Vector2: var distance := ship.position.distance_to(target_position) if distance < FREE_FLIGHT_DIST: return Vector2.ZERO return (target_position - ship.position).normalized()