Je travaille sur un jeu 2D en XNA basé sur le flocage. J'ai mis en œuvre la technique de flocage de Craig Reynold et maintenant je veux assigner dynamiquement un chef au groupe pour le guider vers une cible.Champ de vision XNA en 2D
Pour ce faire, je veux trouver un agent de jeu qui n'a pas d'autres agents en face de lui et en faire le chef de file, mais je ne suis pas sûr des mathématiques pour cela.
Actuellement, j'ai:
Vector2 separation = agentContext.Entity.Position - otherAgent.Entity.Position;
float angleToAgent = (float) Math.Atan2(separation.Y, separation.X);
float angleDifference = Math.Abs(agentContext.Entity.Rotation - angleToAgent);
bool isVisible = angleDifference >= 0 && angleDifference <= agentContext.ViewAngle;
agentContext.ViewAngle est une valeur radians que j'ai joué avec pour essayer d'obtenir l'effet escompté, mais ce principalement des résultats dans tous les agents étant assignés en tant que leaders.
Quelqu'un peut-il me diriger dans la bonne direction pour détecter si une entité est dans un "cône" de vue d'une autre entité?
angleDifference> = 0 est toujours vrai, car angleDifference est le résultat d'une fonction Abs. – Empyrean