domingo, 14 de diciembre de 2025

GDScript instanciando por entrar en una area3d , con retraso de 6 segundos;

 extends Area3D


# Carga la escena de la bola para poder instanciarla.

var bola_proyectada_scene = preload("res://EL DEL CUADRO QUE GRITA/character_body_3d_enemigo_cubo7-12-25.tscn")


# 0: Esperando colisión inicial

# 1: Colisión detectada, contando tiempo

# 2: Instanciación completada

var estado_instanciacion: int = 0


# Contador de tiempo, para acumular los segundos.

var tiempo_acumulado: float = 0.0


# Constante que define el retardo deseado: ¡AHORA 6 SEGUNDOS!

const TIEMPO_ESPERA: float = 6.0



# Esta función se llama automáticamente cuando otro Area3D entra en este Area3D.

# (Debes haber conectado la señal 'area_entered').

func _on_area_entered(area: Area3D) -> void:

# 1. Comprobar que el retardo no se haya iniciado ya.

if estado_instanciacion == 0:

print("Área tocada. Iniciando cuenta atrás de ", TIEMPO_ESPERA, " segundos para instanciar bola...")

estado_instanciacion = 1 # Cambiamos el estado para empezar a contar.

# 2. OPCIONAL: Comprobar si el Area que ha entrado es un área específica.

# if area.name != "Area_del_jugador":

# return



# Esta función se llama en cada frame del juego.

func _process(delta: float) -> void:

# Comprobar si estamos en el estado de conteo (1).

if estado_instanciacion == 1:

# Acumular el tiempo transcurrido desde el último frame.

tiempo_acumulado += delta

# Comprobar si se ha alcanzado el tiempo de espera (6.0 segundos).

if tiempo_acumulado >= TIEMPO_ESPERA:

# ¡Tiempo cumplido! Instanciar y cambiar el estado.

instanciar_bola()

estado_instanciacion = 2 # Marcamos como completado.

# Detenemos el _process, ya que la tarea ha terminado.

set_process(false)



func instanciar_bola() -> void:

print("¡6 segundos cumplidos! Instanciando bola proyectada.")

# Instancia la escena pre-cargada.

var nueva_bola = bola_proyectada_scene.instantiate()

# Asigna la posición de la nueva instancia a la del nodo actual.

nueva_bola.global_position = self.global_position


# Añade la instancia como hijo del nodo padre.

get_parent().add_child(nueva_bola)

# --- FIN DEL SCRIPT ---

No hay comentarios:

Publicar un comentario