卡丁车赛车攻击AI

我正在开发一个卡丁车赛车游戏。 在比赛中,球员们互相争斗。

有几种方法我试图把AI加到敌人和玩家身上。

  1. 当用户点击攻击function时,会在某个区域投射光线投射; 如果发现敌人,那么用户就会得到武器并发生自动攻击。

后来我从这个代码开始,有两个原因,第一个很脏,第二个只能计算有限的距离(不适用于长距离的导弹武器)。 一个新的方法需要实施。

  1. 经过思考和研究,我尝试了Physics.Overlap; 这确实解决了我的短程武器的优化问题,但仍然存在长距离问题。

  2. 更多的思考我想出了其他的方式来实施远程攻击,即通过产生一个稍微在玩家后面的对撞机,它将前进到一定的距离,如果敌人被发现将通知玩家和武器会产生和攻击。

尽管第三种方法看起来不错,但当游戏进行得如火如荼时,问题就出现了,因为对手有时不会抓住其他玩家,或者因为碰到其他玩家而导致速度太慢,并且看上去有问题。

所以我想知道: 考虑到这是一款卡丁车赛车游戏,还有没有其他方法可以实施远程攻击呢?

任何帮助将不胜感激

正如在上面的评论中所讨论的,你可能会过度devise这个。 如果你有12个可能成为攻击目标的角色,那么遍历所有12个角色并检查距离(或者如果你想节省额外的费用并避免平方根的话,平方距离应该是很小的)。 在典型的情况下,你会花更多的时间等待从内存中获取角色的位置vector,而不是进行这个检查。

只要确保你有一个预先填充的赛车手列表,而不是每次都调用一个慢的Find()types的例程。 这些方法search场景中的每个对象,并获得更多的内容。 无论如何,你可能需要这样一个列表来跟踪排名,所以这不应该增加额外的开销。

你的其他检查,如确定赛车手是否处于可以射门的方向,以及是否有任何阻挡障碍的方法,然后只能在最大射程内进行。