2024-02-13 00:22:27 +01:00

25 lines
602 B
GDScript

class_name RotationComponent
extends Node
@export var root: Node3D
@export var rotation_speed: float = 20.0
var direction: Vector3
var angle: float
func _ready():
assert(root, "Rotation root needs to be set")
if owner.has_signal("direction_changed"):
owner.direction_changed.connect(on_direction_changed)
update_configuration_warnings()
func _process(delta):
if direction != Vector3.ZERO:
angle = atan2(direction.x, direction.z)
root.rotation.y = lerp_angle(root.rotation.y, angle, rotation_speed * delta)
func on_direction_changed(new_direction: Vector3):
direction = new_direction