Ondas de Inimigos
Parte da seção Arquitetura de jogos no Unity do Journey de Unity da Coddy. Lição 44 de 50.
Desafio
MédioAgora, os inimigos surgem em ondas, e as ondas são dados. Mantenha tudo das lições anteriores. A arena não tem mais inimigos próprios: os prefabs Grunt e Dasher contêm seus scripts, há quatro pontos de surgimento nos cantos, e o objeto Spawner no meio tem o script WaveSpawner.
- Em
WaveSet.cs, adicione uma classeWavecom[System.Serializable], compublic Enemy enemy(o prefab),public int countepublic float spacing.WaveSeté um ScriptableObject com[CreateAssetMenu], umapublic List<Wave> wavese umpublic float restBetweenWaves. O assetArenada cena contém três ondas (3 grunts com 0.5 s de intervalo, 2 dashers com 1 s de intervalo, 5 grunts com 0.4 s de intervalo) e um descanso de 2 segundos. Enemyrecebepublic static event Action<Enemy> Died, acionado com o inimigo logo antes de ele ser destruído.WaveSpawnertemwaveSetespawnPointsdefinidos no Inspector, epublic int Wave { get; private set; }, o número da onda em andamento. A partir deStart, uma coroutine executa as ondas do asset em ordem. Para cada uma: some 1 aWavee registre-o, comoWave 1; gere os inimigos da onda, conformecount, com intervalos despacingsegundos, com o inimigoi(a partir de 0) emspawnPoints[i % spawnPoints.Length]; espere até não haver mais nenhum inimigo vivo; depois, descanse porrestBetweenWavessegundos. Depois da última onda, o conjunto recomeça pela primeira, eWavecontinua contando: 4, 5 e assim por diante.- Conte os inimigos vivos usando o evento
Died: inscreva-se emOnEnablee cancele a inscrição emOnDisable. O spawner apenas lê o asset: no Editor, uma alteração feita em um asset enquanto o jogo está em execução permanece no asset depois de Play.
Pressione Play e sobreviva a algumas ondas; em seguida, clique em Check.
Experimente você mesmo
using UnityEngine;
public class WaveSpawner : MonoBehaviour
{
// Uma aula posterior completa esta parte: envia as ondas para a arena.
}
Todas as lições de Arquitetura de jogos no Unity
1Componentes, não hierarquias
Componentes pequenosUm script-base para inimigosComponentes abstratosComponentes trabalhando juntosRevisão: Torre modular4Dados Serializados
Classes SerializáveisListas no InspectorEnums no InspectorRevisão: Tabela de Loot7Máquinas de Estados
Estados como ClassesUma Máquina de EstadosTransiçõesInteligências dos InimigosRevisão: Estados da Porta10Projeto: Sobrevivente da Arena
O HeróiTipos de Inimigos5ScriptableObjects
Assets de dadosAtributos das armasConfigurações compartilhadasOndas como dadosRevisão: banco de dados de itens