Je développe un jeu Android 2D et je fais un algorithme de visée pour que les projectiles AI frappent les ennemis en suivant un chemin ou en se déplaçant librement. Pour le moment, il calcule simplement où la cible sera après une distance et tire un projectile pour la rencontrer à cette distance. Bien sûr, cela signifie faire varier la vitesse du projectile pour atteindre la cible.
Quelqu'un a-t-il des astuces pour un algorithme simple-ish (optimal-ish) pour calculer quand le projectile doit tirer et où il doit viser s'il ne peut se déplacer qu'à une vitesse constante? Disons que le projectile va deux fois plus vite que la cible?
La seule façon dont je peux penser implique la recherche et semble assez grande.
Réponses:
Dans un jeu de tower defense que j'ai fait, j'ai utilisé une équation quadratique pour prédire l'intersection et donc viser le point. L'extrait de code de visée suivant suppose que l'ennemi se déplace à une vitesse et dans une direction constantes. Cela suppose également que le projectile se déplacera à une vitesse constante connue (pourrait être n'importe quelle vitesse mais doit être connue de l'algorithme).
Puisqu'il détermine également le moment de l'impact, j'ai simplement attendu le temps écoulé pour appeler les graphiques d'impact à la position de la cible à ce moment-là ... pas besoin de détection de collision pour déterminer les coups.
la source
a
0? Cela produira une division par exception zéro, mais qu'est-ce que cela signifie en termes de variable t? Doit-il être considéré comme «un très grand nombre» ou quel serait le meilleur cas?L'IA, l'emplacement de la cible au moment du tir du projectile et l'emplacement éventuel de la cible au moment de la mort forment un triangle. Voici ce que vous devez déjà savoir:
Vous avez trois parties du triangle, un cas SSA, alors résolvez-le comme ceci
L'angle A doit vous permettre de déterminer l'angle auquel le projectile doit être lancé.
la source