Files
ScrapFrontier/game/controllers/enemy_controller.gd
T

36 lines
665 B
GDScript

class_name EnemyController
extends Node
signal accelerate(direction: Vector2, delta: float)
signal shoot()
const FREE_FLIGHT_DIST = 50
@export var ship: AbstractEnemyShip
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()