我将如何跟踪赛车游戏中玩家和 AI 的位置?

How would I keep track of the Player and AI's positions for a racing game?

总结:

所以,正如问题所暗示的那样,我正在尝试开发一款赛车游戏。虽然,我需要创建一个系统来跟踪玩家和 AI 所处的位置。位置如第一名、第二名、第三名等。

我试过的:

起初我打算使用 Jimmy Vegas 在他的一个赛车游戏开发教程中制作的系统,但该系统仅适用于两辆汽车和一个封闭的 track/circuit。我的游戏是一款越野赛车游戏,这意味着赛道是开放的,玩家可以在那里开辟自己的捷径,没有墙壁会限制玩家在地图上漫游的能力。这使得 Jimmy Vegas 的系统对我的赛车游戏类型毫无用处。我试图弄乱代码以找到一种仍然可以使用他的系统的方法,但恐怕行不通。任何帮助将不胜感激!

可能的解决方案

我不会为此编写代码,因为它过于特定于实现,但这里有一些清单伪代码。

使用以下方法计算两个玩家之间的相对位置:

  1. 先按圈数比较
  2. 如果相同圈数,按检查点比较。
  3. 如果有相同的检查点,使用距离函数与下一个检查点进行比较。这个函数可能和欧几里德距离一样简单,但我建议您使用任何用于 AI 寻路的函数。

如果你想要所有玩家的绝对位置,做一个数组,然后用圈数排序,然后用检查点打破平局,最后用距离打破平局。

就算是百体竞速运行这个每一帧应该都没有问题。