Cibler un véhicule avec une vitesse constante connue est simple et la collision est garantie (voir Prédire la position de l'ennemi pour qu'un objet mène sa cible , Trouver le point de rencontre de 2 objets en 2D, connaître la vitesse et la pente (constantes) ). Une IA imprécise peut être modélisée en ajoutant un petit facteur d'erreur.
Mais comment viser un véhicule dont les mouvements sont plus complexes? Peut-être que cela élude l'IA ou un autre objet de jeu.
J'ai réfléchi à la façon dont je le ferais moi-même dans un FPS (dans lequel les balles ont une vitesse finie) et je pense qu'il pourrait y avoir au moins quelques modes de ciblage basés sur le mouvement de la cible dans la seconde précédente:
- S'il est proche de la cible linéaire (accélération maximale dans une certaine plage) avec le modèle linéaire
- Si c'est très irrégulier (peut-être que la taille de la zone de délimitation des positions récentes pourrait être utilisée?), Viser une moyenne
Pour l'instant, je peux supposer un espace 2D, l'IA est stationnaire et le projectile n'est pas guidé et se déplace linéairement.
Réponses:
Pensées aléatoires (pas de code) ...
Dans la vraie vie, on cible un véhicule avec un mouvement complexe en essayant de comprendre ce qu'est ce mouvement afin de l'anticiper. Si vous écrivez du code pour l'IA pour cibler l'IA, vous devez créer une IA de ciblage dérivée de l'IA cible. Par exemple, si votre cible se met à l'abri si elle est proche, l'IA ciblée devrait être en mesure d'anticiper ce mouvement.
D'un autre côté, si vous essayez de cibler les humains avec l'IA, cela va être beaucoup plus difficile. Le ciblage aléatoire peut fonctionner, mais peut sembler "aléatoire", ce qui peut ou non être un problème pour votre jeu.
Pour trouver une solution, une chose que vous pouvez faire est de séparer mentalement le problème en différents éléments pour essayer de tirer quelque chose ...
Capacité de suivi
Afin de toucher une cible avec un appareil visé qui peut se déplacer, il faut être capable de suivre et de déplacer l'appareil pour suivre la cible. Le viseur observe la cible se déplacer et déplace son objectif pour le suivre. Si un tracker a une quantité limitée de mouvement, sa capacité de suivi sera entravée et il peut avoir du mal à suivre certaines choses. mais si le tracker dispose d'une grande liberté de suivi, il peut potentiellement suivre de nombreuses choses. Pensez à la différence entre une tourelle de char et vous pointant quelque chose avec votre doigt.
Vitesse de suivi
Un autre facteur est la vitesse à laquelle le tracker peut suivre. S'il est très lent (pensez à une "tourelle de char"), il ne peut pas suivre une cible qui se déplace rapidement. Au lieu de cela, il doit compter sur l'anticipation du chemin de la cible. D'un autre côté, un tracker à vitesse "rapide" peut rapidement se déplacer vers le nouvel emplacement d'une cible.
Suivi du temps de réaction
Un troisième facteur de suivi est le temps de réaction du suivi. Autrement dit, lorsque la cible change de direction, à quelle vitesse le tracker peut-il réagir? Le tracker ultime est un tracker avec une vitesse de suivi rapide et un temps de réaction instantané - il peut suivre tout changement.
Reconnaissance de cible
Dans quelle mesure le cibleur peut-il reconnaître une cible? Si l'on suit une cible dans un environnement complexe, il peut y avoir des moments où le cibleur ne reconnaît pas ou "perd" la cible. Plus vite le cibleur peut reconnaître une cible, mieux il fera. Moins il est susceptible de perdre un objectif, mieux ce sera.
Temps de réaction de tir
Le fait que la cible apparaisse dans le réticule pendant un bref instant ne signifie pas qu'un tir se produira. Le tracker peut-il réagir assez rapidement pour appuyer sur la gâchette? Les trackers vraiment mauvais avec un temps de réaction vraiment mauvais ne toucheront rien. De très bons trackers avec un très bon temps de réaction toucheront n'importe quoi, car ils n'ont besoin que du moindre peu de temps sur la cible.
Anticiper le mouvement
L'anticipation du mouvement est un autre facteur. C'est la différence entre simplement essayer de suivre où se trouve la cible maintenant, et de suivre où vous pensez que la cible sera. Si un pisteur peut anticiper, il peut mieux suivre la cible et avoir plus de chances d'avoir la cible dans le réticule, et ainsi améliorer sa capacité à tirer en fonction de son temps de réaction. Les trackers d'anticipation zéro déplaceraient automatiquement l'objectif vers la cible, quelles que soient les actions de la cible. Le pire des cas est un tracker dont la vitesse est lente, sans anticipation pour essayer de suivre une simple cible en mouvement. Imaginez une cible qui avance à gauche puis à droite toutes les quelques secondes. Un tracker lent ne ferait que faire rebondir la cible d'avant en arrière, jamais assez vite pour atteindre la cible.
Modélisation du mouvement cible
Comme mentionné ci-dessus, le tracker peut anticiper la cible en modélisant son mouvement, ce qui n'est pas nécessairement si difficile à faire. Si un véhicule roule à une certaine vitesse, il y a un nombre fini de places que le véhicule peut se trouver dans la seconde suivante, et elles sont disposées essentiellement comme un triangle devant leur mouvement. Plus ils vont vite, plus le triangle est serré. Plus vite ils peuvent tourner, plus ils sont larges. Un véhicule très rapide qui peut à peine tourner (comme une fusée) a un très petit chemin de potentiel étroit. Un lent qui peut très bien tourner a un chemin potentiel beaucoup plus large. C'est comme ces caméras de recul sur certaines voitures qui superposent des lignes vous montrant où votre voiture ira si vous continuez à conduire comme elle est maintenant, plus où vous pourriez potentiellement aller si vous deviez tourner le volant davantage.
Donc, avec cela à l'esprit, vous devez placer votre boîte "espace cible potentiel" dans cet espace de chemin potentiel. Si vous savez que votre cible a tendance à virer d'un côté à l'autre, votre zone cible doit être suffisamment large pour englober tous les mouvements possibles. Si votre cible est assez linéaire dans son mouvement, vous pouvez rendre votre zone cible beaucoup plus petite et centrée sur l'emplacement prévu du mouvement. Je pense que ce type de réflexion vous aidera à trouver une solution unique au suivi qui ne différencie pas vraiment l'anticipation linéaire et non linéaire. Le suivi linéaire est simplement de l'anticipation avec un niveau de confiance plus élevé (boîte de ciblage plus petite), tandis que le suivi aléatoire est un suivi de confiance de bas niveau (boîte de suivi plus grande).
Bien sûr, cela devient difficile si la cible est immobile, car elle a le potentiel de se déplacer dans n'importe quelle direction. Mais bien sûr, s'il reste encore trop longtemps, c'est une cible facile même pour le tracker le plus lent.
Psychologie cible
Réfléchissez à ce que vous feriez si vous aviez subitement des coups de feu atterrissant sur votre gauche. Souhaitez-vous leur courir dessus? NON! Vous courriez vers la droite. Ou peut-être que vous courriez à couvert. Mais alors peut-être que le cibleur tire spécifiquement sur l'emplacement de la couverture, alors vous ne courrez pas pour lui.
Capacité d'apprendre
Votre cibleur peut potentiellement tirer des leçons de l'expérience. Supposons au début qu'ils n'aient aucune idée du mouvement potentiel du véhicule. Ils ne savent pas à quelle vitesse il peut aller ni à quelle vitesse il peut tourner. L'observer en action leur apprendra ce que c'est. Ce qui signifie que la première fois qu'ils essaient d'en suivre un, ils peuvent ne pas réussir très bien. Mais ils apprennent le comportement du mouvement et réussissent mieux lors des essais ultérieurs.
Lectures complémentaires
Un peu de recherche sur Google après avoir écrit cela a conduit à ce manuel pour le tir au fusil ...
http://www.globalsecurity.org/military/library/policy/army/fm/3-22-9/c07.htm
Peut-être y a-t-il des idées sur la façon dont une personne réelle pourrait / devrait / pourrait viser et suivre.
la source