我正在创建一个基于HTML5的自上而下的赛车游戏,为了使赛车驶入赛道,我研究了使用两种可能的解决方案(在一定程度上已经尽力了):
我让这两种工具都可以单独工作,因为我可以使物体沿路径移动,但是我遇到的绊脚石是每辆车在赛道的两侧都有自己的起始位置(因此,并非总是从起始位置路径中的同一点)。在第一个弯道之后,赛车还需要进行单个锉削。
另一个因素是超车。当两个对象相交时,我设法使用了Javascript进行计算,但是需要使后面的对象有效地“绕开”前面的对象,然后返回到赛车线上。
这里有很多工作要做,但想知道是否有人有一些巧妙的想法可以完成上述工作?
您的帮助将不胜感激!
谢谢
最佳答案
通常,寻路是无状态的。选择哪个起点都没有关系。如果使用的算法不能以通用点作为起始值,则实际上无法达到目的。我没有参与您提到的那些 Activity ,他们可能会支持。
如果仅在轨道上构建一条可能的路径,则每辆车都会跟随。为了使汽车能够在单独的轨道中开始行驶,您只需将其位置偏移标量(例如其汽车编号)即可。也就是说,相对于路线从路径偏移位置(模拟轨迹更改)。
要让他们都选择相同的音轨,就像让一个点告诉“现在转到相同的音轨”一样简单,它将每个人的标量设置为1。
对于超车,通常使用Pythagorean theorem计算两辆汽车之间的线性距离,当汽车A接近汽车B时,汽车A的偏移标量设置为汽车B的偏移+ 1,这将使其选择外部轨道。当然,这种过渡将被内插/外推以提供平稳的体验。然后,当它过去时,再次重置为1。