Oleadas de enemigos
Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 44 de 50.
Desafío
IntermedioAhora los enemigos aparecen en oleadas, y las oleadas son datos. Conserva todo lo de las lecciones anteriores. La arena ya no tiene enemigos propios: los prefabs Grunt y Dasher llevan tus scripts, hay cuatro puntos de aparición en las esquinas y el objeto Spawner del centro tiene el script WaveSpawner.
- En
WaveSet.cs, añade una claseWavecon[System.Serializable], que tengapublic Enemy enemy(el prefab),public int countypublic float spacing.WaveSetes un ScriptableObject con[CreateAssetMenu], unapublic List<Wave> wavesy unpublic float restBetweenWaves. El recursoArenade la escena contiene tres oleadas (3 grunts separados por 0.5 s, 2 dashers separados por 1 s, 5 grunts separados por 0.4 s) y un descanso de 2 segundos. Enemyobtienepublic static event Action<Enemy> Died, que se invoca con el enemigo justo antes de destruirlo.WaveSpawnertienewaveSetyspawnPointsasignados desde el Inspector, ypublic int Wave { get; private set; }, el número de la oleada en curso. DesdeStart, una corrutina ejecuta las oleadas del recurso en orden. Para cada una: suma 1 aWavey lo registra, comoWave 1; genera los enemigos de la oleada, segúncount, separados porspacingsegundos, con el enemigoi(desde 0) enspawnPoints[i % spawnPoints.Length]; espera hasta que no quede ningún enemigo con vida; después descansarestBetweenWavessegundos. Después de la última oleada, el conjunto vuelve a empezar desde la primera, yWavesigue contando: 4, 5 y así sucesivamente.- Lleva la cuenta de los enemigos con vida usando el evento
Died: suscríbete enOnEnabley cancela la suscripción enOnDisable. El spawner solo lee el recurso: en el Editor, si modificas un recurso mientras el juego está en ejecución, el cambio permanece en el recurso después de Play.
Pulsa Play y sobrevive a unas cuantas oleadas; después, pulsa Check.
Pruébalo tú mismo
using UnityEngine;
public class WaveSpawner : MonoBehaviour
{
// En una lección posterior se completará esto: enviará las oleadas a la arena.
}
Todas las lecciones de Arquitectura de juegos en Unity
1Componentes, no jerarquías
Componentes pequeñosUn script base para enemigosComponentes abstractosComponentes que trabajan juntosRepaso: torreta modular4Datos serializados
Clases serializablesListas en el InspectorEnumeraciones en el InspectorRepaso: tabla de botín7Máquinas de estados
Estados como clasesUna máquina de estadosTransicionesCerebros de enemigosRepaso: estados de puertas10Proyecto: Superviviente de la arena
El héroeTipos de enemigos2Interfaces en Unity
IDamageableInterfaces y TryGetComponentGetComponentsRepaso: tecla de interacción5ScriptableObjects
Recursos de datosEstadísticas de armasConfiguración compartidaOleadas como datosRepaso: base de datos de objetos