extends Node3D
@export_category("Rotación Aleatoria")
# ¿Quieres que rote en estos ejes? Actívalo o desactívalo en el Inspector
@export var rotar_en_x: bool = true
@export var rotar_en_y: bool = true
@export var rotar_en_z: bool = true
# Rango de grados máximos que puede girar (ej. entre -45 y 45 grados)
@export var angulo_maximo_grados: float = 45.0
# Cuánto tarda en completarse cada giro aleatorio (en segundos)
@export var tiempo_giro: float = 2.0
func _ready() -> void:
$AnimationPlayer.play("LENGUA")
# Iniciamos el bucle de rotación aleatoria
iniciar_rotacion_aleatoria()
func iniciar_rotacion_aleatoria() -> void:
# Creamos el Tween que controlará la animación fluida
var tween = create_tween()
# Lo configuramos en paralelo para que anime los tres ejes a la vez si es necesario
tween.set_parallel(true)
# Usamos una transición suave para que no dé tirones al cambiar de dirección
tween.set_trans(Tween.TRANS_SINE)
tween.set_ease(Tween.EASE_IN_OUT)
# --- EJE X ---
if rotar_en_x:
var angulo_x = deg_to_rad(randf_range(-angulo_maximo_grados, angulo_maximo_grados))
tween.tween_property(self, "rotation:x", angulo_x, tiempo_giro)
# --- EJE Y ---
if rotar_en_y:
var angulo_y = deg_to_rad(randf_range(-angulo_maximo_grados, angulo_maximo_grados))
tween.tween_property(self, "rotation:y", angulo_y, tiempo_giro)
# --- EJE Z ---
if rotar_en_z:
var angulo_z = deg_to_rad(randf_range(-angulo_maximo_grados, angulo_maximo_grados))
tween.tween_property(self, "rotation:z", angulo_z, tiempo_giro)
# Cuando este grupo de giros termine, volvemos a llamar a la función para generar nuevos ángulos
tween.chain().tween_callback(iniciar_rotacion_aleatoria)
---------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------
Explicacion: GDScript para Godot 4.7, produce una animacion y un movimiento de ladeo que se puede manipular desde el inspector;
No hay comentarios:
Publicar un comentario