A * pathfinding para obstáculos dinâmicos e o jogador fez bloqueios?

11

Olá, estou criando um TD no Unity 5 e preciso de ajuda com o meu Pathfinding.

Vou usar o caminho Arons A * para minha IA, o que me permite usar objetos dinâmicos e atualizar o caminho durante o tempo de execução. No entanto, no meu jogo, quero que o jogador seja capaz de bloquear os lacaios com torres especiais, o que forçará os lacaios a atacar a "torre de blocos" em vez de passar para o seu destino.

Como eu pude realizar algo assim?

Imagem para maior clareza: insira a descrição da imagem aqui

Grimbox
fonte

Respostas:

22

Não analisei a implementação específica do A * por Aaron, mas com um A * normal, você pode incluir a 'torre de blocos' como terreno aceitável, mas atualizar a heurística para que o 'custo' seja muito maior do que um bloco normal (para que A AI avaliará se é mais fácil destruir o bloco e continuar ou simplesmente percorrer o caminho que não está bloqueado).

Então você precisaria atualizar sua IA para que, quando um inimigo tentar passar de um bloco normal para um 'bloco de torre', ele ataca automaticamente até ser destruído.

JackFrost
fonte
8
+1 Eu acrescentaria que você pode querer calcular o custo da torre de bloqueio, dependendo de quanto tempo levaria o número X e o tipo de lacaios para destruí-la, se houver alguma diferença. Um custo predefinido para a torre pode ser impreciso se os minions de nível mais baixo levarem 5 segundos para destruí-la, mas um superminion pode fazê-lo em 1 segundo.
Fuzzy Logic
0

Se o que você está procurando é uma espécie de torre de provocação, você pode adicionar um colisor como definido no gatilho e quando os lacaios entram no gatilho, eles são apenas scripts para atacar a torre.

Se você quiser que os lacaios atacem as torres apenas quando não houver caminhos alternativos, quando o caminho estiver bloqueado e o A * for chamado para calcular outro caminho se retornar nulo, você poderá fazer o script dos inimigos para encontrar todas as torres de provocação e alveje-os.

Leggy7
fonte