2025-09-16 11:41:34 +02:00
|
|
|
extends Node2D
|
|
|
|
|
|
|
|
|
|
var parent : Node2D
|
|
|
|
|
@export var center = Vector2.ZERO
|
|
|
|
|
var angle = 0
|
2025-10-14 14:43:38 +02:00
|
|
|
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)
|
2025-09-16 11:41:34 +02:00
|
|
|
|
|
|
|
|
func _ready() -> void:
|
|
|
|
|
parent = get_parent()
|
2025-09-17 12:53:16 +02:00
|
|
|
align()
|
2025-09-16 11:41:34 +02:00
|
|
|
|
2025-09-23 12:36:15 +02:00
|
|
|
func _process(_delta: float) -> void:
|
2025-09-17 12:53:16 +02:00
|
|
|
align()
|
|
|
|
|
|
|
|
|
|
func align():
|
2025-09-16 11:41:34 +02:00
|
|
|
angle = -(parent.position - center).angle_to(Vector2.UP)
|
|
|
|
|
parent.rotation = angle;
|
2025-09-16 14:59:40 +02:00
|
|
|
|
|
|
|
|
func global_from_local (_velocity: Vector2) -> Vector2:
|
|
|
|
|
return _velocity.rotated(angle)
|
|
|
|
|
|
|
|
|
|
func local_from_global (_velocity: Vector2) -> Vector2:
|
|
|
|
|
return _velocity.rotated(-angle)
|