Я работаю над 2D-игрой в XNA, основанной на флокировании.Я реализовал технику флокирования Крейга Рейнольда, и теперь я хочу динамически назначить лидера в группу, чтобы направить его к цели.
Для этого я хочу найти игрового агента, у которого нет другогоагенты перед ним и делают его лидером, но я не уверен в математике для этого.
В настоящее время у меня есть:
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 - это значения в радианах, которые у меня естьиграл, чтобы попытаться получить правильный эффект, но это в основном приводит к тому, что все агенты назначаются лидерами.
Может ли кто-нибудь указать мне правильное направление, чтобы определить, находится ли объект в «конусе» зрения другогообъект