在空中赛车游戏中车辆如何在弯道漂移?

4
我已经实现了一个相当基础的汽车移动系统:
_velocity.x = Math.cos(angleAsRadians) * _speed;
_velocity.y = Math.sin(angleAsRadians) * _speed;

_position.x += _velocity.x;
_position.y += _velocity.y;

您通过增加/减少速度来移动,并通过增加/减少角度来转向。

我如何添加漂移,使得当我转弯时,我越快,我就越漂移?我无法理解它,也几乎没有其他可搜索的来源。

有什么想法吗?


1
目前您有两个自由度(X,Y),为了正确执行此操作,您还需要汽车的方向(偏航角)。此外,您可能需要前/后重量平衡。 - John Alexiou
2个回答

2
汽车物理学有一些棘手的问题。您需要实现一个基于滑动的物理引擎。 这篇文章很好地解释了这个过程。为了使其正常工作,需要考虑到车轮的旋转以及当轮胎朝向一个方向而地面朝向另一个方向时的力量差异。这会产生两种力,一种垂直于车轮轴线,另一种在与汽车侧向移动的方向上。
当然,这是一项非常繁重的工作,在做任何与游戏相关的事情时,通常的规则是“如果看起来不错,那就是好的”。因此,可以从实际物理学如何完成中获得一些想法,并采取一些适当的解决方案的片段,以创建一个可信的仿真版本。

0
确定一个“漂移系数”,例如距离为速度乘以时间的0.5%。
_position.x += (1+coeff)*_velocity.x; ->  _position.x += (1+0.005)*_velocity.x;
_position.x += (1+coeff)*_velocity.y; ->  _position.y += (1+0.005)*_velocity.y;

所以在这种情况下,它是加性的,并且基于速度。

这个系数也可以根据像赛道半径、任何比赛时间条件(湿滑等)、x和y轴之间的差异以及随机化为正或负而变化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接