extends Node2D @export var center = Vector2.ZERO var angle = 0 # Quick access to relative cardinal directions var up : Vector2 : get(): return global_from_local(Vector2.UP) var down : Vector2 : get(): return global_from_local(Vector2.DOWN) var right : Vector2 : get(): return global_from_local(Vector2.RIGHT) var left : Vector2 : get(): return global_from_local(Vector2.LEFT) func _enter_grid() -> void: align() func _process(_delta: float) -> void: align() # Aligns the parent to the center func align(): angle = -(get_parent().position - center).angle_to(Vector2.UP) get_parent().rotation = angle; # Converts directions in local coordinates into global coordinates func global_from_local (_velocity: Vector2) -> Vector2: return _velocity.rotated(angle) # Converts directions in global coordinates into local coordinates func local_from_global (_velocity: Vector2) -> Vector2: return _velocity.rotated(-angle)