Gerenciamento de Inimigos
Sistema de gerenciamento de inimigos baseado em ondas, onde diferentes tipos de inimigos são introduzidos e controlados.
Tipos de Inimigos
O projeto define as seguintes categorias de inimigos, cada uma implementada em sua própria classe de grupo, localizada em src/objects/enemies
:
BasicEnemyGroup.ts
BasicEnemyGroup.ts
Propósito: Inimigos padrão com movimento e ataque básicos. ➔ Geralmente seguem o jogador ou um padrão predefinido.
DashEnemyGroup.ts
DashEnemyGroup.ts
Propósito: Inimigos que realizam ataques de dash (investidas rápidas) em direção ao jogador. ➔ Exigem reflexos rápidos para serem evitados.
TankEnemyGroup.ts
TankEnemyGroup.ts
Propósito: Inimigos com maior resistência (saúde) e, possivelmente, ataques mais lentos, porém impactantes. ➔ Atuam como “tanques” na linha de frente.
RangedEnemyGroup.ts
RangedEnemyGroup.ts
Propósito: Inimigos que atacam à distância, disparando projéteis em direção ao jogador. ➔ Requerem que o jogador se mova e desvie dos ataques.
BossEnemy.ts
BossEnemy.ts
Propósito: Inimigos chefes que aparecem em momentos específicos do jogo (geralmente no final de um ato ou série de ondas). ➔ Possuem padrões de ataque complexos, maior saúde e habilidades únicas. ➔ Sua presença ativa uma barra de saúde dedicada (
BossHealthBar
) na UI.
Configuração de Ondas
As ondas de inimigos são configuradas em arquivos no diretório src/config/waves
.
wavesContainer.ts
Propósito: Define a estrutura de dados para cada onda, especificando:
duration
: Duração da onda em segundos.music
: Chave do áudio da música de fundo.background
: Chave da imagem de fundo.tilemapKey
etileset
: Chaves para o tilemap e tileset a serem usados, permitindo layouts diferentes.enemies
: Lista dos tipos de inimigos que aparecerão nesta onda. ➔ AGameScene
utiliza essa lista para instanciar os grupos de inimigos apropriados.
WaveManager.ts
Propósito: Fornece métodos para acessar os dados de configuração das ondas, permitindo que a
GameScene
carregue dinamicamente as características de cada onda.
Spawning e Comportamento
Na GameScene.ts
, os grupos de inimigos são instanciados com base na configuração da onda atual. Cada grupo de inimigos é responsável por:
Spawning
Gerenciar a criação e posicionamento dos inimigos na cena.
Utiliza object pooling para reutilizar instâncias e otimizar desempenho.
Movimentação
Implementar a lógica de movimento individual de cada inimigo:
Seguir o jogador
Patrulhar áreas
Executar padrões de ataque específicos
Ataque
Controlar os ataques dos inimigos:
Contato direto
Disparo de projéteis
Ativação de habilidades especiais
Atualização
O método
updateEnemyMovement()
(ouupdateEnemyBossMovement()
para chefes) é chamado a cada frame para atualizar o estado e comportamento dos inimigos no grupo.
Interação com o Jogador
Collider.ts
Collider.ts
Propósito: Sistema de colisão responsável por detectar:
Quando um inimigo colide com o jogador ou seus projéteis
Aplicar o dano apropriado
HealthComponent.ts
HealthComponent.ts
Propósito: Utilizado pelos inimigos para gerenciar sua saúde:
Receber dano
Serem destruídos quando a saúde chegar a zero
Atualizado