我在C#做了一个小游戏,想稍微修改AI角色的移动。
现在,他们被编程为只跟随玩家控制(这是AI角色跟随你的那些游戏之一,并且他们不断增加,你必须避免它们才能生存)。但我想做的是时不时,让最接近的AI字符快速跳转* 更靠近玩家(我)。
*当我说跳跃时,我不是字面意思。我的意思是,我希望AI char能够将其速度提高到大约20到40个像素(使它看起来更接近玩家,或者向玩家跑得更快)。
我该怎么做?
我已经考虑过实现一个计时器,并且在Update方法中获得最接近玩家的AI并提高其速度,但我也认为必须有比使用计时器更好的方法。
答案 0 :(得分:1)
你需要使用一个计时器和一个事件处理程序,虽然一个非常有趣的方法是每次计时器触发时随机设置间隔。除非你跟踪每个AI对玩家的持续距离,否则每次事件发生时都需要计算这个距离。幸运的是,一些简单的距离公式计算非常快。你甚至不需要取平方根(这是一个性能杀手),因为你只需要看看谁是最接近的。在确定最接近的一个之后,只需将它们的速度增加一点。也许保持一个指向last_updated角色的全局指针,这样每次更新玩家的速度时 - 你都会将之前更新的玩家的速度恢复正常。
假设你的代码是面向对象的,我发现最好跟踪每个玩家的位置和速度 - 然后简单地对它们调用一个更新方法,根据它们的速度移动它们的位置。这会使这个问题变得微不足道,因为在确定最接近的玩家之后,你需要做的就是略微增加他们的速度;)
随机设置计时器的间隔也会阻止您获得许多实际上无法执行任何操作的计时器事件。这样,每次计时器触发时,您都将对游戏进行更改。这应该让你对使用计时器感到紧张。