extends Area3D
# --- AJUSTES DESDE EL INSPECTOR ---
@export_group("Movimiento")
@export var velocidad: float = 15.0
@export var gravedad: float = 9.8 # Fuerza con la que cae al chocar
@export var rebote_fuerza: float = 0.2 # Un pequeño saltito al tocar la pared
@export_group("Tiempos de Vida")
@export var tiempo_vuelo_max: float = 5.0 # Se borra si no toca nada en X segundos
@export var tiempo_en_suelo: float = 3.0 # Cuánto tiempo se queda tirada en el suelo antes de borrarse
# --- VARIABLES INTERNAS ---
var chocado: bool = false
var velocidad_caida: Vector3 = Vector3.ZERO
var tiempo_total: float = 0.0
func _ready() -> void:
if not body_entered.is_connected(_on_body_entered):
body_entered.connect(_on_body_entered)
func _process(delta: float) -> void:
tiempo_total += delta
if not chocado:
# --- ESTADO 1: VOLANDO ---
# Avanza recto hacia adelante
translate(Vector3(0, 0, velocidad * delta))
# Autodestrucción por seguridad (si se pierde en el infinito)
if tiempo_total >= tiempo_vuelo_max:
queue_free()
else:
# --- ESTADO 2: CAYENDO (FÍSICA SIMULADA) ---
# Aplicamos gravedad a la velocidad de caída
velocidad_caida.y -= gravedad * delta
position += velocidad_caida * delta
# Si lleva mucho tiempo en el suelo, la borramos para ahorrar memoria
if tiempo_total >= tiempo_en_suelo:
queue_free()
func _on_body_entered(body: Node) -> void:
if chocado: return # Si ya chocó, no procesamos más choques
print("¡Impacto con: ", body.name, "! Cayendo al suelo...")
chocado = true
tiempo_total = 0.0 # Reiniciamos el cronómetro para el tiempo en el suelo
# Calculamos un pequeño rebote aleatorio para que no caiga como un palo
velocidad_caida = Vector3(
randf_range(-1, 1),
rebote_fuerza,
randf_range(-1, 1)
)
# Opcional: Podrías desactivar el sonido o la luz de la bala aquí
---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------
Explicacion: este GDScript regula desde el inspector, velocidad de los proyectiles, tiempo de vida en pantalla de ellos, gravedad ,revote.....virgerias vamos todo gracias a la IA de mi navegador de internet.