群れに基づく XNA の 2D ゲームに取り組んでいます。私は Craig Reynold のフロック技術を実装しました。そして今、グループにリーダーを動的に割り当てて、ターゲットに向かって誘導したいと考えています。
これを行うには、前に他のエージェントがいないゲーム エージェントを見つけてリーダーにしたいのですが、そのための計算がわかりません。
現在私は持っています:
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 は、適切な効果を得るために試したラジアン値ですが、ほとんどの場合、すべてのエージェントがリーダーとして割り当てられます。
エンティティが別のエンティティの「円錐」ビュー内にあるかどうかを検出するために、誰かが私を正しい方向に向けることができますか?