GTA2喜欢Car Physics,但非常简化

Fre*_*cer 5 java android physics box2d andengine

好的,所以这个问题一直困扰着我最长的时间.任何人都可以告诉我或指向一个可以像GTA2那样控制汽车的算法吗?经过3天的研究,我可以想出所有这些算法,用于在车轮上使用枢轴和关节以及分离车轮等.这是实现像GTA2那样的简单汽车运动的唯一途径吗?

我希望能够在没有轮子的矩形上使用该算法,但仍然可以使汽车漂移.那可能吗?顺便说一句,我是2D游戏的Box2D.

我知道这更适合gamedev,但由于某些原因我无法发布问题.

Phy*_*dit 8

一个简单的答案,可以变成一个非常大的东西,所以我会尝试通过提高复杂程度的不同点来解释.我将学习物理学的基本知识.

  1. 假设一个固定的转弯半径(如果你使用的是键盘,那就太糟糕了,如果你有一个模拟控制器就很烦人).没有什么比尝试不同的位置来找出半径感觉好的了.

  2. 假设您的车轮最初朝向前方,当您按下转向键时,它们会逐渐转向最大可能.这基本上意味着将半径从无穷大减小到可能的最小半径(您可以很容易地计算出车轮角度与半径之间的关系).如果您有模拟控制器,则半径应由模拟输入的连续值控制.

  3. 让部队进入!当你上车时,你只能通过向心加速转弯.向心加速度是由力实际上是汽车与道路的摩擦力引起的.你可以认为摩擦力是恒定的,而且你的车辆质量是恒定的,没有重大问题,那么你就可以看到汽车的速度和临界半径之间的关系(给定速度可以转动的最小半径).向心加速度是a = v ^ 2/r =摩擦力/质量因此临界半径r = v ^ 2*质量/摩擦力.你可以认为无论你转得多少,车辆都会漂移,并且最多可以描述这条曲线.这应该给你一个很好的模拟,但仍然不是"失去控制"的感觉.为此,请看下一点!圆周运动

  4. 该理论与之前的理论完全相同,但主要的是现实中的摩擦力不是恒定的.实际上,静摩擦力总是高于动摩擦力.在实践中,您应该具有静摩擦力和(较小的)动摩擦力.你根据静摩擦计算r,当你的速度太大而不能达到r时(这就是你漂移的时候)你开始用动摩擦计算新的r.这会给你失控的感觉,但车辆仍然不会旋转.摩擦

  5. 为了看到旋转,你必须考虑每个车轮上施加的力(这是不同的车轮在不同的力量下使汽车旋转的事实)并考虑一些更先进的物理,例如哪些车轮是驱动车轮也认为动摩擦不是常数.但是我相信这超出了你的范围.

  6. 或者你可以做一些GTA2似乎做的事情.一旦你知道你将漂移或漂移太多(你在这里设置一个阈值),只需以编程方式让车辆失去控制和旋转.

希望这有帮助,如果您有任何具体的疑问,请问.