Comprendre les comportements de direction rechercher

Les comportements de direction visent à aider les personnages autonomes à se déplacer de manière réaliste, en utilisant des forces simples combinées pour produire une navigation improvisée et réaliste aux alentours de l'environnement des personnages. Dans ce tutoriel, je couvrirai la théorie de base derrière le chercher comportement de pilotage, ainsi que sa mise en œuvre.

Les idées derrière ces comportements ont été proposées par Craig W. Reynolds; ils ne reposent pas sur des stratégies complexes impliquant la planification de trajectoire ou des calculs globaux, mais utilisent plutôt des informations locales, telles que les forces des voisins. Cela les rend simples à comprendre et à mettre en œuvre, tout en permettant de produire des schémas de mouvement très complexes..

Remarque: Bien que ce tutoriel ait été écrit avec AS3 et Flash, vous devriez pouvoir utiliser les mêmes techniques et concepts dans presque tous les environnements de développement de jeux. Vous devez avoir une compréhension de base des vecteurs mathématiques.


Position, vitesse et mouvement

La mise en œuvre de toutes les forces impliquées dans les comportements de direction peut être réalisée à l'aide de vecteurs mathématiques. Étant donné que ces forces vont influencer la vitesse et la position du personnage, il est également judicieux d'utiliser des vecteurs pour les représenter..

Même si un vecteur a un direction, il sera ignoré lorsqu'il est lié à la position (supposons que le vecteur de position pointe vers la position actuelle du personnage).

La figure ci-dessus représente un personnage positionné à (x, y) avec une vitesse (un B). Le mouvement est calculé en utilisant l'intégration d'Euler:

position = position + vitesse

La direction du vecteur de vitesse déterminera l’orientation du personnage tandis que sa longueur (ou son amplitude) déterminera le déplacement de chaque image. Plus la longueur est grande, plus le personnage se déplace rapidement. Le vecteur de vitesse peut être tronqué pour s’assurer qu’il ne sera pas supérieur à une certaine valeur, généralement la vitesse maximale. Ci-dessous un test montrant cette approche.


Déplacez la souris pour déplacer la cible.

Le carré rouge se déplace vers une cible (le curseur de la souris). Ce schéma de mouvement illustre la chercher comportement sans pour autant les forces de direction appliquées jusqu'à présent. La ligne verte représente le vecteur de vitesse, calculé comme suit:

vélocité = normaliser (cible - position) * max_velocity

Il est important de noter que sans la force de direction, le personnage décrit des itinéraires rectilignes et qu'il change instantanément de direction lorsque la cible se déplace, effectuant ainsi une transition abrupte entre l'itinéraire actuel et le nouveau..


Calcul des forces

Si seulement la force de vitesse était impliquée, le personnage suivrait une ligne droite définie par la direction de ce vecteur. Une des idées des comportements de direction est d’influencer le mouvement du personnage en ajoutant des forces (appelées forces de direction). En fonction de ces forces, le personnage se déplacera dans une direction ou une autre.

Pour le comportement de recherche, l'ajout de forces de direction au personnage à chaque image lui permet d'ajuster sa vitesse en douceur, en évitant les changements de route soudains. Si la cible se déplace, le personnage progressivement changer son vecteur de vitesse, en essayant d'atteindre la cible à son nouvel emplacement.

Le comportement de recherche implique deux forces: vitesse désirée et pilotage:

le vitesse désirée est une force qui guide le personnage vers sa cible en utilisant le chemin le plus court possible (ligne droite entre eux - auparavant, c'était la seule force agissant sur le personnage). le pilotage la force est le résultat de la vitesse désirée soustraite par la vitesse actuelle et pousse également le personnage vers la cible. 

Ces forces sont calculées comme suit:

désiré_vitesse = normaliser (cible - position) * max_velocity pilotage = désir_vitesse - vélocité

Ajout de forces

Une fois que la force de direction a été calculée, elle doit être ajoutée au personnage (elle sera ajoutée à la force de vélocité). L’ajout de la force de direction à la vitesse de chaque image obligera le personnage à abandonner en douceur son ancien chemin rectiligne et à se diriger vers la cible, décrivant une chercher chemin (courbe orange dans la figure ci-dessous):

L'ajout de ces forces et le calcul de la vitesse / position finale sont les suivants:

direction = troncature (direction, force max.) direction = direction / vitesse de la masse = troncature (vitesse + direction, vitesse maximale) position = position + vitesse

La force de direction est tronquée afin de ne pas dépasser le nombre de forces autorisées que le personnage peut gérer. La force de direction est également divisée par la masse du caractère, ce qui produit différentes vitesses de déplacement pour différents personnages pondérés. Ci-dessous, un test montrant le comportement de recherche avec toutes les forces appliquées:


Déplacez la souris pour déplacer la cible.

Chaque fois que la cible se déplace, chaque personnage vitesse désirée le vecteur change en conséquence. le rapidité Cependant, il faut un certain temps pour que le vecteur change et recommence à pointer vers la cible. Le résultat est une transition de mouvement en douceur.


Conclusion

Les comportements de direction sont parfaits pour créer des modèles de mouvement réalistes. L'idée principale est d'utiliser des informations locales pour calculer et appliquer des forces afin de créer les comportements. Même si le calcul est simple à mettre en œuvre, il est toujours capable de produire des résultats très complexes.

Ce tutoriel décrit les bases du comportement de la direction et explique le comportement de recherche. Au cours des prochains articles, nous en apprendrons davantage sur les comportements. Découvrez le prochain post: Flee and Arrival.