2012-03-01 68 views
5

好吧,所以这个问题一直困扰着我最长的时间。任何人都可以向我展示或指出一个算法,可以像GTA2那样控制汽车吗?经过3天的研究,我可以想出所有这些算法,用于使用车轮上的枢轴和接头以及单独的车轮等。这是实现像GTA2一样简单汽车运动的唯一方法吗?GTA2像汽车物理,但极其简化

我想能够在没有车轮的矩形上使用算法,但仍然能够使车辆漂移。那可能吗?顺便说一下,我正在为2D游戏设计Box2D。

我知道这是更适合gamedev,但由于某种原因,我不能发布问题。

+0

这真的很广泛......确定它是可能的,你有什么问题? – iforce2d 2012-03-02 12:31:17

+0

我想我遇到的问题是在Java中实现一个简单的算法,在每帧上调用这个算法来制作像GTA2这样的游戏驱动器。 – 2012-03-03 01:19:13

+2

好,所以你遇到问题的部分是...整个事情:)我希望你需要一些特定的行为,例如我认为取消汽车的横向速度将是一个典型的要求。我想知道你是否看过这个:http://www.iforce2d.net/b2dtut/top-down-car第一部分介绍一些典型的自顶向下的汽车物理应用到单个物体的东西。后来它使用四个这样的车身作为车轮,但如果你愿意的话,你可以把单体当成一辆车。 – iforce2d 2012-03-03 11:10:05

回答

7

一个简单的答案,可以变成一个相当大的东西,所以我会尝试通过呈现不同点,以不断增加的复杂顺序来解释。我将假设物理学的基本知识。

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

  2. 假设您有最初面向前方的车轮,并且当您按下转弯键时,它们会逐渐转向尽可能最大。这基本上意味着将半径从无穷大减小到最小可能半径(可以轻松计算出车轮角度与半径之间的关系)。如果您有模拟量控制器,那么半径应该由模拟量输入的连续值来控制。

  3. 让力量进入!当你开车时,你只会因向心加速而转弯。这种向心加速度是由实际上车辆与道路摩擦的力引起的。您可以考虑摩擦常数和车辆质量常数而不存在重大问题,则您可以在汽车速度和临界半径之间建立一个相关关系(给定速度的最小半径)。向心加速度是a = v^2/r =摩擦/质量,因此临界半径r = v^2 *质量/摩擦力。你可以认为无论你转多少车辆都会漂移,并且最多可以描述这条曲线。这应该给你一个很好的模拟,但仍然不是“失控”的感觉。为此请参阅下一点! circular motion

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

  5. 为了看到旋转,你将不得不考虑在每个车轮上施加的力(这是事实,不同的车轮是在不同的力量下,使汽车旋转),并考虑一些更高级的物理学因为哪些轮子是驱动轮并且还考虑动摩擦不是恒定的。不过,我相信这超出了你的范围。

  6. 另外,你可以做一些GTA2似乎做的事情。一旦你知道你要漂移或漂移太多(你在这里设定一个门槛),只需编程让车辆失去控制和旋转。

希望这可以帮助,如果你有任何具体的疑问,只是问。