-1

我用 C# 做了一个小游戏,想稍微修改一下 AI 角色的动作。

现在,它们被编程为只跟随玩家控制(这是其中人工智能角色跟随你的游戏之一,它们不断繁殖,你必须避开它们才能生存)。但我想做的是时不时地,让最近的AI角色快速跳*靠近玩家(我)。

*当我说跳跃时,我的意思不是字面意思。我的意思是,我希望 AI char 仅将其速度提高约 20 - 40 像素(使其看起来更接近玩家,或者跑向玩家更快)。

我怎样才能做到这一点?

我已经考虑过实现一个计时器,并在 Update 方法中获得最接近玩家的 AI 并提高其速度,但我也认为必须有比使用计时器更好的方法。

4

1 回答 1

1

您将需要使用计时器和事件处理程序,尽管这样做的一种非常有趣的方法是在每次计时器触发时随机设置间隔。除非您持续跟踪每个 AI 到玩家的距离,否则您需要在每次事件触发时计算此距离。幸运的是,一些简单的距离公式计算很快。你甚至不需要取平方根(这是一个性能杀手),因为你只需要看看谁最接近。在确定最接近的那个之后,稍微提高它们的速度。也许保留一个指向 last_updated 角色的全局指针,以便每次更新玩家的速度时 - 您都会将先前更新的玩家的速度恢复为正常。

假设你的代码是面向对象的,我发现最好同时跟踪每个玩家的位置和速度——然后简单地调用他们的更新方法,根据他们的速度移动他们的位置。这将使这个问题变得微不足道,因为在确定最近的玩家之后,您需要做的就是稍微提高他们的速度;)

随机设置定时器的时间间隔也会防止你得到很多实际上不会做任何事情的定时器事件。这样,每次计时器触发时,您都会对游戏进行更改。这应该可以解决您对使用计时器的紧张情绪。

于 2013-06-24T20:16:59.910 回答