不时(快速移动)
本文关键字:移动 不时 | 更新日期: 2023-09-27 18:19:47
我用C#做了一个小游戏,想稍微修改一下AI角色的移动。
现在,它们被编程为只遵循玩家的控制(这是一款AI角色跟随你的游戏,它们不断繁殖,你必须避开它们才能生存)。但我想做的是不时,让最接近的AI角色快速向玩家(我)靠近。
*当我说跳跃时,我并不是字面意思。我的意思是,我希望AI字符的速度只增加大约20-40个像素(使其看起来跳得更靠近玩家,或者跑得更快)。
我该怎么做?
我曾想过实现一个计时器,并在更新方法中使AI最接近玩家并提高其速度,但我也认为必须有一个比使用计时器更好的方法。
您需要使用计时器和事件处理程序,不过一个非常有趣的方法是在每次计时器启动时随机设置间隔。除非你连续跟踪每个AI到玩家的距离,否则每次事件启动时你都需要计算这个距离。幸运的是,一些简单的距离公式计算非常快。你甚至不需要取平方根(这是一个性能杀手),因为你只需要看看谁最接近。在确定最接近的一个之后,只需稍微提高它们的速度。也许可以保留一个全局指针指向last_updated角色,这样每次更新玩家的速度时,你都会将之前更新的玩家的速度恢复正常。
假设你的代码是面向对象的,我发现最好跟踪每个玩家的位置和速度,然后简单地对他们调用一个更新方法,根据他们的速度移动他们的位置。这将使这个问题变得微不足道,因为在确定最接近的玩家后,你只需要稍微提高他们的速度;)
随机设置计时器的间隔也会防止你得到很多实际上不会起任何作用的计时器事件。这样,每次计时器启动时,你都会对游戏进行更改。这应该能解决你对使用计时器的紧张情绪。