【发布时间】:2010-11-09 11:21:13
【问题描述】:
我正在 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 是一个弧度值,我使用它来尝试获得正确的效果,但这主要导致所有代理都被分配为领导者。
谁能指出我正确的方向来检测一个实体是否在另一个实体的“锥形”视图中?
【问题讨论】:
-
angleDifference >= 0 始终为真,因为 angleDifference 是 Abs 函数的结果。
标签: c# xna artificial-intelligence artificial-life boids