extends MeshInstance2D
@export_group("Control de Rotación")
@export var velocidad_rotacion: float = 1.5 ## Velocidad de giro (en radianes por segundo).
@export var rotar_continuamente: bool = true ## Si está activo, gira sin parar.
@export_group("Temporizador de Giro (Opcional)")
@export var usar_tiempo_limite: bool = false ## Activa para que deje de girar tras X segundos.
@export var tiempo_duracion_giro: float = 5.0 ## Tiempo en segundos antes de detener el giro.
@export_group("Auto-Borrado / Desaparición")
@export var auto_borrar: bool = false ## Si se activa, el nodo se eliminará solo.
@export var tiempo_para_borrar: float = 8.0 ## Tiempo en segundos desde el inicio hasta borrarse.
@export var desvanecer_al_borrar: bool = true ## Si es true, se desvanece suavemente al final.
@export var tiempo_desvanecimiento: float = 1.5 ## Duración en segundos del desvanecimiento suave.
var _tiempo_transcurrido_giro: float = 0.0
var _tiempo_transcurrido_total: float = 0.0
var _esta_girando: bool = true
var _iniciando_desvanecimiento: bool = false
func _ready() -> void:
_esta_girando = true
_tiempo_transcurrido_giro = 0.0
_tiempo_transcurrido_total = 0.0
func _process(delta: float) -> void:
_tiempo_transcurrido_total += delta
# Lógica del temporizador de giro
if usar_tiempo_limite and _esta_girando:
_tiempo_transcurrido_giro += delta
if _tiempo_transcurrido_giro >= tiempo_duracion_giro:
_esta_girando = false
# Lógica de rotación
if rotar_continuamente and _esta_girando:
rotation += velocidad_rotacion * delta
# Lógica de auto-borrado
if auto_borrar:
# Si la opción de desvanecer está activa, iniciamos el fade out un poco antes de borrar
if desvanecer_al_borrar and not _iniciando_desvanecimiento:
if _tiempo_transcurrido_total >= (tiempo_para_borrar - tiempo_desvanecimiento):
_iniciando_desvanecimiento = true
_desvanecer_y_borrar()
elif not desvanecer_al_borrar and _tiempo_transcurrido_total >= tiempo_para_borrar:
queue_free()
func _desvanecer_y_borrar() -> void:
var tween = create_tween()
# Crea una transición suave en la opacidad (modulate.a) hasta llegar a 0 (transparente)
tween.tween_property(self, "modulate:a", 0.0, tiempo_desvanecimiento)
# Cuando termina la animación suave, borra el nodo de la escena de forma segura
tween.tween_callback(queue_free)
-------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
Explicacion: se le pone textura del titulo y o titulo del juego al MeshInstance2D, y el gds se encarga de girarlo el tiempo que quieras, borrarlo cuando tu quieras y que se desvanezca lentamente cuanto tu quieras asta borrarse....todo esto desde el inspector de Godot 4.7 .