# Script para el Area3D PROYECTIL EN SÍ MISMO (el propio proyectil)
extends Area3D
var score = 0 # No usado directamente para la destrucción, pero se mantiene si lo necesitas para otras lógicas.
var speed = 15 # Velocidad en el eje Z (adelante)
var speed2 = 1 # Velocidad en el eje Y (hacia arriba, si lo deseas)
var tiempo_transcurrido = 0.0 # Controla el tiempo de vida del proyectil
var vida_util_segundos = 6.0 # El proyectil se destruirá después de 6 segundos
func _ready() -> void:
# Conectamos la señal 'body_entered'.
# Se activará cuando este Area3D colisione con cualquier PhysicsBody3D (ej. una pared, el suelo, un enemigo).
connect("body_entered", Callable(self, "_on_body_entered"))
print("Proyectil listo: se moverá, se destruirá por tiempo y al chocar.")
func _process(delta: float) -> void:
# Mover el proyectil
# Vector3(X, Y, Z) - ajusta el orden según la orientación de tu proyectil en 3D
# Aquí, el movimiento es ligeramente hacia arriba (Y) y principalmente hacia adelante (Z)
var movimiento = Vector3(0, speed2 * delta, speed * delta)
translate(movimiento) # Mueve el nodo en su espacio local
# Controlar el tiempo de vida del proyectil
tiempo_transcurrido += delta
if tiempo_transcurrido >= vida_util_segundos:
print("Proyectil ha alcanzado su tiempo de vida. Destruyendo...")
queue_free() # Elimina el proyectil si ha superado su tiempo de vida
func _on_body_entered(body: Node3D):
# Esta función se ejecuta cuando el proyectil colisiona con un PhysicsBody3D.
#print(f"¡Proyectil colisionó con: {body.name}! Destruyendo...")
queue_free() # Elimina el proyectil al impactar con un cuerpo
No hay comentarios:
Publicar un comentario