3

我正在创建一个基于 HTML5 的自上而下的赛车游戏,为了让赛车在赛道上行驶,我研究了两种潜在的解决方案(我已经在一定程度上进行了研究):

  1. 论文 JS
  2. 路径动画师

我已经让这两个单独工作,因为我可以让物体在路径上移动,但我遇到的绊脚石是每辆车在赛道的两侧都有自己的起始位置(所以不会总是从路径中的同一点)。在第一个弯道之后,汽车还需要单列行驶。

另一个因素是超车。我已经设法使用一些 Javascript 来计算两个对象何时相交,但需要使后面的对象有效地“绕过”前面的对象,然后回到赛车线上。

这里有很多工作要做,但想知道是否有人有一些巧妙的想法来完成上述任何工作?

您的帮助将不胜感激!!

谢谢

4

2 回答 2

0

您需要一个清晰的坐标系以避免混淆。
在这种情况下,您应该将“x”作为从起点到当前位置基点的距离。和 y 偏移,局部垂直于曲线,在汽车和曲线之间。

这样,很多事情变得更容易看到/做。
如果 y = 0,你知道汽车在中心曲线上。
要知道您是否可以超车,您必须对 (overTaker.y +- overtaker.width/2, overTaken.y +- overTaken.width/2, roadWidth) 进行一些数学运算。
事实上,使用这个坐标系的常规 BBox 测试应该足以测试碰撞。

于 2014-08-08T09:02:18.057 回答
0

通常寻路工​​作是无状态的;选择哪个起点并不重要。如果所使用的算法,不能以一个通用的点作为起始值,实际上就达不到目的了。我不参与你提到的那些,他们可能会支持它。

如果你只在赛道上构建一条可能的路径,那么每辆车都会跟随。为了能够让汽车从不同的轨道开始,您只需将它们的位置偏移一个标量,例如它们的车号。也就是说,相对于路线偏移路径的位置(模拟轨迹变化)。

然后让他们都选择相同的轨道,就像让一个点告诉“现在转到相同的轨道”一样简单,这会将每个人的标量设置为 1。

对于超车,您通常会使用勾股定理计算两辆汽车之间的线性距离,当汽车 A 接近汽车 B 时,汽车 A 的偏移量设置为汽车 B 的偏移量 + 1,这将使它选择外部轨道。这种过渡当然会被内插/外推以提供流畅的体验。然后当它过去时,再次重置为1。

于 2014-08-05T06:57:12.967 回答