33 lines
612 B
GDScript
33 lines
612 B
GDScript
class_name EnemyController
|
|
extends Node
|
|
|
|
|
|
signal accelerate(direction: Vector2, delta: float)
|
|
|
|
|
|
const FREE_FLIGHT_DIST = 50
|
|
|
|
|
|
@export var ship: AbstractEnemyShip
|
|
|
|
|
|
var target_position : Vector2
|
|
var direction : Vector2
|
|
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
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()
|