AIalgorithm避免射击游戏中的子弹

我正在XNA的射击游戏中工作,这将是我在学校的最后一个项目。 我正在考虑利用人工智能代理的极小极小algorithm来制定战术。 不过,我意识到这样一个游戏中最重要的问题是避免子弹(由玩家发射)。 一个AI代理人制作战术,但是在避免子弹方面没有好处,在我猜的射击游戏中是没用的。

所以,我需要你的帮助什么algorithm来利用。 这不会像游戏般的子弹风暴,但速度很快(感谢XNA)。 我已经阅读过关于使用威胁地图和寻路algorithm的知识,但是却无法弄清楚在这样一个游戏中哪一个是理想的。 我的意思是说,对于一个快节奏的游戏来说,它需要足够简单,但是它也应该能够帮助AI代理人智能地行动。

你可以保持简单。 创建一个视锥体(比视锥体小)来计算玩家的目标区域。 如果敌人在这个平截头体内,他们应该掩饰(一段时间,而不是永远)。 然后确保你的AI总是试图展开。

如果他们总是试图使用一些策略,那么你应该能够find你想要他们的位置,并为他们创造一个path。 所以他们总是试图按照他们的path到那个地步。 如果你使用平截头体来告诉他们掩盖,那么它可能看起来有效。 他们沿着小路稍微移动一下,然后看到他们,他们马上掩护起来。

它应该足够聪明,看起来引人注目,但足够倾倒给玩家足够的时间来拍摄他们。 另外,如果他们在不注视的时候popup来,这意味着它会驱使玩家环顾四周,这会增加快节奏射手的眩晕感。

我认为,主要的问题是跟踪最有效的掩护,让他们跑到目标位置。

我不认为自从你要求避开子弹(而不是一般的回避行为),你就没有答案。

有很多简单的方法来处理,每个都适合不同的场景。

1-从所有子弹射向它们各自的程序,并且以相对于它们的速度PLUS(或TIMES)的射线量值(距离)跟踪“响应时间”因子的倒数。 如果光线击中敌人,你会让他们失控。 (中速弹头)

2-当玩家射击时,从武器中追踪射线(如果有扩散,则为三角形/锥形)。 如果有敌人,就把他搬走。 (高速弹)

3-如果子弹真的很慢,你可以简单地把每一个敌人都圈回来,并确定它们将来的位置,并且加上当前敌方的速度向量环路,考虑一个合理的响应时间和阈值,如果你的位置是相似的,那么不要把敌人移到那里,或者把敌人移到那里。 (低速弹)

PS:我假设你正在使用物理引擎(box2d等)的第一和第二项。

如果子弹没有“速度”,但是只是光线追踪(即时击中任何东西),那么除了使用玩家所面对的方向来以某种方式确定这个方向之外别无他法(参见OriginalDaemon的答案)。

如果你希望你的AI可以避开子弹,你应该使用Steering Behaviors和速度波动的组合。 它不会是完美的,所以maybet它将是正确的工具。