extends Area3D
# --- Variables Originales del Disparo ---
var Bullet = preload("res://PROTAGONISTA/area_3d_proyectil_en_si_mismoENEMIGO.tscn")
var timer = Timer.new()
var tiempo_disparo = 0.5 # Tiempo entre disparos en segundos
# --- NUEVA VARIABLE: Escena de la Astilla ---
# ⚠️ CAMBIA ESTA RUTA por la ruta real de tu escena "Astilla.tscn"
const ASTILLA_SCENE_PATH = "res://BARCO ELEMENTOS TEXTURAS/CAÑONES/TIBURON REVENTAO-3-.tscn"
var Astilla = preload(ASTILLA_SCENE_PATH)
func _ready():
# Lógica original del Timer para disparar
add_child(timer)
timer.timeout.connect(_on_timer_timeout)
timer.start(tiempo_disparo)
# ⚠️ MUY IMPORTANTE: Conecta la señal 'area_entered' de este Area3D
# en el editor de Godot a la función '_on_area_entered'.
func _on_timer_timeout():
var bullet = Bullet.instantiate()
add_child(bullet)
# ----------------------------------------------------------------------
## FUNCIÓN DE COLISIÓN (Se ejecuta al tocar)
# ----------------------------------------------------------------------
# Se ejecuta cuando otro Área entra en la nuestra.
func _on_area_entered(area: Area3D):
_destroy_and_instantiate()
# Si quieres que se destruya al tocar un cuerpo físico (como el jugador o un RigidBody3D),
# usa también la señal 'body_entered'.
func _on_body_entered(body: Node3D):
_destroy_and_instantiate()
# ----------------------------------------------------------------------
## LÓGICA DE INSTANCIACIÓN Y DESTRUCCIÓN
# ----------------------------------------------------------------------
func _destroy_and_instantiate():
# 1. Instanciar la Astilla
var astilla = Astilla.instantiate()
# 2. Posicionar la Astilla en la ubicación de este nodo
# Usamos get_parent() para añadir la astilla al mismo nivel que este nodo,
# asegurando que se muestre correctamente en el mundo.
if is_instance_valid(get_parent()):
get_parent().add_child(astilla)
astilla.global_transform = global_transform
print("Colisión detectada. Instanciando Astilla y destruyendo nodo actual.")
# 3. Eliminar este nodo del árbol de la escena
queue_free()