Estou desenvolvendo um jogo 2D para Android e estou criando um algoritmo de mira para projéteis de IA atingirem inimigos seguindo um caminho ou movendo-se livremente. No momento, apenas calcula onde o alvo estará depois de uma distância e dispara um projétil para encontrá-lo a essa distância. Claro que isso significa variar a velocidade do projétil para atingir a meta.
Alguém tem alguma dica para um algoritmo de ish simples (ideal-ish) para calcular quando o projétil precisa disparar e para onde precisa apontar se ele puder viajar apenas a uma velocidade constante? Digamos que o projétil atinja o dobro da velocidade do alvo?
A única maneira que consigo pensar envolve pesquisar e parece bastante grande.
Respostas:
Em um jogo de defesa que fiz, usei uma equação quadrática para prever a interseção e, assim, apontar o ponto. O seguinte trecho de código de mira assume que o inimigo está viajando a uma velocidade e direção constantes. Também pressupõe que o projétil viajará a uma velocidade constante conhecida (pode ser qualquer velocidade, mas deve ser conhecida pelo algoritmo).
Como também determina o tempo do impacto, simplesmente esperei até o tempo passado para chamar os gráficos de impacto na posição do alvo naquele momento ... não há necessidade de detecção de colisão para determinar os acertos.
fonte
a
é 0? Isso produzirá uma divisão por exceção zero, mas o que isso significa em termos da variável t? deveria ser considerado 'um número muito grande' ou qual seria o melhor caso?A IA, a localização do alvo durante o tempo em que o projétil é disparado, e a eventual localização do alvo no ponto da morte formam um triângulo. Aqui está o que você já deve saber:
Você tem três partes do triângulo, um caso SSA, então resolva-o assim
O ângulo A deve permitir determinar o ângulo em que o projétil deve ser lançado.
fonte