c# - 我将如何跟踪赛车游戏中玩家和 AI 的位置?
问题描述
概括:
所以,正如问题所暗示的那样,我正在尝试开发一款赛车游戏。虽然,我需要创建一个系统来跟踪玩家和 AI 所处的位置。位置如第一名、第二名、第三名等。
我试过的:
起初,我打算使用 Jimmy Vegas 在他的一个教程中制作的系统来开发赛车游戏,但该系统仅适用于两辆汽车和一个封闭的赛道/电路。我的游戏是一款越野赛车游戏,这意味着赛道是开放的,玩家可以在那里建立自己的捷径,并且没有墙壁会限制玩家在地图上漫游的能力。这使得 Jimmy Vegas 的系统对我的赛车游戏类型毫无用处。我试图弄乱代码以找到一种仍然使用他的系统的方法,但我担心它不会起作用。任何帮助将不胜感激!
解决方案
可能的解决方案
我不会为此编写代码,因为它过于特定于实现,但这里有一些清单伪代码。
使用以下公式计算两个玩家之间的相对位置:
- 首先按圈数比较。
- 如果圈数相同,则按检查点进行比较。
- 如果检查点相同,则使用距离函数与下一个检查点进行比较。这个函数可能像欧几里得距离一样简单,但我建议您使用任何用于 AI 寻路的方法。
如果您想要所有玩家的绝对位置,请制作一个数组,并使用圈数对其进行排序,然后通过检查点打破平局,最后根据距离打破平局。
即使是每帧都运行这样的一百个实体比赛也不应该有任何问题。
推荐阅读
- reactjs - 为什么在尝试呈现 jsx 模板时出现“TypeError:无法将类作为函数调用”
- .net - 在 Web API 或数据库中加密密码?
- r - 在 R 中使用 stringdist_join() 进行模糊连接,错误:下标分配中不允许使用 NA
- javascript - 如何将一个css div框直接放在另一个css div框下面
- python - 如何从其他包 __init__.py 文件中导入函数
- robotframework - 从机器人框架中的 For 循环中获取所有值
- javascript - 使用窗口事件侦听器时反应更新警告
- python - QML:为图像设置“源”属性会导致它消失
- android - 如何提交 android 应用程序以供 Facebook 审查?
- sql-server - SQL 中的 CASE WHEN 公式