extends Area3D
# 1. Al usar @export, la escena aparecerá en el Inspector a la derecha.
# Podrás arrastrar el archivo .tscn que quieras meter desde tu Sistema de Archivos.
@export var escena_a_instanciar: PackedScene
# 2. Variable para recordar el elemento que hemos creado y poder borrarlo luego
var elemento_actual: Node = null
# SEÑAL 1: Al entrar en el área, fabricamos el elemento
func _on_area_entered(area: Area3D) -> void:
# Comprobamos si has arrastrado alguna escena en el Inspector
if escena_a_instanciar == null:
print("⚠️ ¡Aviso! No has arrastrado ninguna escena en el Inspector de este Area3D")
return
# ¡Instanciamos el elemento en la memoria!
elemento_actual = escena_a_instanciar.instantiate()
# Lo añadimos al mapa
get_parent().add_child(elemento_actual)
# Lo colocamos en la posición exacta de este Area3D
if elemento_actual is Node3D:
elemento_actual.global_position = self.global_position
# SEÑAL 2: Al salir del área, lo borramos de golpe
func _on_area_exited(area: Area3D) -> void:
# Si el elemento existe en el juego, le metemos el tijeretazo
if is_instance_valid(elemento_actual):
elemento_actual.queue_free() # Lo elimina por completo de la pantalla y la memoria
elemento_actual = null # Vaciamos la variable para el siguiente toque
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
Explicacion. : Este GDScript sirve para que un Area3d con su colisionador, al toparse con otro Area3d y otro colisionador instancie un elemento en escena en este caso un baston, al retirarse desaparece el baston.....lo bueno de este GDscript esque puedes arrastrar al inpector el elemento que quieras se instancie....una tscn una escena.....@export var escena_a_instanciar: PackedScene
