好的,所以这个问题一直困扰着我。任何人都可以告诉我或指向一个可以像GTA2那样控制汽车的算法吗?经过3天的研究,我可以想出所有这些算法,用于在车轮上使用枢轴和关节以及分离车轮等。这是实现像GTA2那样的简单汽车运动的唯一途径吗?
我希望能够在没有轮子的矩形上使用该算法,但仍能够让汽车漂移。那可能吗?顺便说一句,我是2D游戏的Box2D。
我知道这更适合gamedev,但出于某些原因我不能发帖。
答案 0 :(得分:8)
一个简单的答案,可以变成一个非常大的东西,所以我会尝试通过以越来越复杂的顺序呈现不同的点来解释。我将学习物理学的基本知识。
假设一个固定的转弯半径(如果你使用的是键盘,那就太糟糕了,如果你有一个模拟控制器就很烦人)。没有什么比尝试不同的位置来找出半径感觉良好的了。
假设您的车轮最初朝向前方,当您按下转向键时,它们会逐渐转向最大可能。这基本上意味着将半径从无穷大减小到可能的最小半径(您可以轻松地计算出车轮角度与半径之间的关系)。如果您有模拟控制器,那么半径应该由模拟输入的连续值控制。
让力量进入!当你上车时,你只能通过向心加速转弯。向心加速度是由力实际上是汽车与道路的摩擦力引起的。你可以认为摩擦力是恒定的,而且你的车辆的质量是恒定的,没有重大问题,那么你就可以看到汽车的速度和临界半径之间的关系(给定速度你可以转动的最小半径)。向心加速度是a = v ^ 2 / r =摩擦力/质量因此临界半径r = v ^ 2 *质量/摩擦力。你可以认为无论你转得多少,车辆都会漂移,并且最多可以描述这条曲线。这应该给你一个很好的模拟,但仍然不是“失去控制”的感觉。为此,请看下一点! circular motion
理论与前面的理论基本相同,但主要的是现实中的摩擦力不是恒定的。实际上,静摩擦力总是高于动摩擦力。在实践中,您应该具有静摩擦力和(较小的)动摩擦力。你根据静摩擦计算r,当你的速度太大而不能达到r时(这就是你漂移的时候)你开始用动摩擦计算新的r。这会给你失控的感觉,但车辆仍然不会旋转。 Friction
为了看到旋转,你必须考虑在每个车轮上施加的力(事实上不同的车轮处于使车辆旋转的不同力的作用下)并且考虑一些更先进的物理学哪个车轮是驱动轮,并且还认为动摩擦不是恒定的。但是我认为这超出了你的范围。
或者你可以做一些GTA2似乎做的事情。一旦你知道你将漂移或漂移太多(你在这里设置一个阈值),只需通过编程方式让车辆失去控制和旋转。
希望这有帮助,如果您有任何具体的疑问,请问。
答案 1 :(得分:1)
我发现http://www.banditracer.eu/carexample/演示了使用Box2D显示汽车运动的简单示例。 http://www.banditracer.eu/有一个开源游戏,你可以观察它是否有你想要的漂移运动。您可以查看代码,看看他们如何处理漂移运动,并为您的项目做同样的事情。