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

  • Propósito: Inimigos padrão com movimento e ataque básicos. ➔ Geralmente seguem o jogador ou um padrão predefinido.


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

  • 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

  • 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

  • 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 e tileset: Chaves para o tilemap e tileset a serem usados, permitindo layouts diferentes.

    • enemies: Lista dos tipos de inimigos que aparecerão nesta onda. ➔ A GameScene 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() (ou updateEnemyBossMovement() para chefes) é chamado a cada frame para atualizar o estado e comportamento dos inimigos no grupo.


Interação com o Jogador

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

  • Propósito: Utilizado pelos inimigos para gerenciar sua saúde:

    • Receber dano

    • Serem destruídos quando a saúde chegar a zero

Atualizado