模拟2d赛车经理游戏中的赛车



我正在制作2d赛车经理游戏。我在模拟赛车上遇到了一个问题。我用一条赛车线创建了一条赛道,所有的车都将沿着这条线行驶。对于大的弯道,汽车行驶看起来很平稳,但是对于小的弯道,行驶就不自然了,行驶太快了。当汽车进入弯道时,我该如何控制车速?谢谢你

编辑:我忽略了我的游戏中的物理,没有滑动或漂移

对于赛道上的每一个点,都有一个绝对的最大速度;超速会导致汽车滑动或翻滚。这个最大速度是由很多因素决定的——赛道上那个点的半径,赛车的抓地力(轮胎有多好,赛车从扰流板和赛道表面得到的下压力有多大),赛车的质量,赛车的质心在哪里。如果你想要非常真实的物理,那就会非常复杂;但是你得到了"足够好"。结果用一个非常简单的代码。

一旦你确定了绝对最大值。赛道上每一点的速度(每种车型);你需要"向后涂抹"。考虑到这辆车的刹车有多好。为了理解我的意思,假设你有一个长而直的轨道,然后是一个非常紧的(90度)右转弯;哪里的车有"无限"max。在直道上的速度和50公里/小时的最大值。转弯时最慢的速度。为了确保汽车能及时减速,你可以在转弯前1米以55公里/小时的速度行驶,在转弯前2米以60公里/小时的速度行驶,等等。这将得到类似于practical_max_speed = min(absolute_max_speed, max_speed_to_slow_down_in_time);的内容。

请注意,您实际上不需要确定实际最大值。赛道上每一点的速度。选择一些点(例如每米轨道)并在它们之间进行插值就足够了(例如,如果一辆车在之前的"50公里/小时"之间行驶了40%;点与未来"80公里/小时"你可以说这辆车是最大的。速度是"0.4 * 50 +(1 - 0.4)* 80 = 68公里/h"。

当然,所有这些都可以在比赛开始前预先确定(对于每条赛道,每种类型的赛车)(你可以作弊并分配& max)。速度/s"如果你所有的车都是一样的,在不同的点用手。

问题是有时赛车会偏离比赛线(例如,超车,因为机械故障,因为他们正在进站,因为赛道上有危险,因为他们刚刚离开发车区,等等)。为此,您可以动态地生成一条新路径,并进行所需的所有计算以确定实际最大值。沿着新的道路加速前进。或者(如果你不太关心完美的物理效果,只想要一款有趣的游戏),你可以通过预先定义的替代路径来作弊(例如,可能有3个特定的弯道,汽车可以超车),或者通过假设实际的最大值来作弊。速度是"在比赛线上的实际最高速度-距离比赛线上的距离",或者更欺骗(假设汽车在比赛线上,而不是在比赛线上)。

最新更新