12using System.Collections;
24 [Header(
"Spiral Burst Settings")]
25 [Tooltip(
"Prefab del proyectil (con Rigidbody2D + DamageOnTrigger)")]
31 [Tooltip(
"Punto de salida; se rotará para generar el efecto espiral")]
37 [Tooltip(
"Número total de proyectiles en la ráfaga")]
43 [Tooltip(
"Duración total de la ráfaga (segundos)")]
49 [Tooltip(
"Velocidad de cada proyectil")]
58 if (
firePoint ==
null && transform.parent !=
null)
60 firePoint = transform.parent.Find(
"FirePointCenter");
62 Debug.LogError(
"SpiralShot: no encontró 'FirePointCenter' en Player.");
83 Debug.LogWarning(
"SpiralShot: configura bulletPrefab, firePoint, bulletCount ≥1 y burstDuration >0.");
89 Quaternion originalRot =
firePoint.rotation;
94 firePoint.rotation = originalRot * Quaternion.Euler(0f, 0f, i * angleStep);
98 if (b.TryGetComponent<Rigidbody2D>(out var rb))
102 yield
return new WaitForSeconds(interval);
106 firePoint.rotation = originalRot;
Clase base abstracta que define la interfaz de comportamiento para proyectiles. Cada clase hija debe ...
Dispara una ráfaga de proyectiles en forma de espiral. Cada disparo se realiza con una rotación incre...
GameObject bulletPrefab
Prefab del proyectil a instanciar. Debe contener Rigidbody2D y sistema de daño.
void Awake()
Si no se asignó manualmente el firePoint, se intenta encontrar uno bajo el objeto padre llamado "Fire...
IEnumerator SpawnSpiralBurst()
Corrutina que instancia los proyectiles de forma secuencial mientras incrementa la rotación del fireP...
float bulletSpeed
Velocidad a la que se desplazan los proyectiles.
override void Shoot()
Método principal que se llama para iniciar el disparo. Lanza la corrutina que gestiona la ráfaga espi...
int bulletCount
Cantidad total de proyectiles que se dispararán en la ráfaga.
float burstDuration
Duración total de la ráfaga (en segundos).
Transform firePoint
Punto desde el que se lanzan los disparos. Su rotación se modifica durante la ráfaga.