【问题标题】:GTA2 like Car Physics, but extremely simplifiedGTA2 类似汽车物理,但极其简化
【发布时间】:2012-03-01 22:42:06
【问题描述】:

好的,这个问题困扰我的时间最长。谁能告诉我或指出一个可以控制像 GTA2 这样的汽车的算法?经过 3 天的研究,我所能想到的就是所有这些算法,用于在轮子上使用枢轴和关节以及单独的轮子等。只有这样才能实现像 GTA2 那样简单的汽车运动吗?

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

我知道这更适合游戏开发,但由于某种原因我无法发布问题。

【问题讨论】:

  • 这真的很宽泛...确定有可能,您在哪个部分有问题?
  • 我想我遇到的问题是在 Java 中实现一个简单的算法,该算法在每一帧都被调用,以使汽车像 GTA2 一样成为游戏。
  • 好吧,所以你遇到问题的部分是......整个事情:)我希望你需要一些特定的行为,例如我认为取消汽车的横向速度会是一个典型的要求。我想知道你是否看过这个:iforce2d.net/b2dtut/top-down-car 第一部分着眼于一些典型的自上而下的汽车物理材料应用于一个单一的身体。后来它使用其中四个车身作为轮子,但如果您愿意,您可以将单个车身视为汽车。
  • 哦!我之前看过那个链接,但我认为他是在用 4 个轮子对现实世界的汽车物理建模,我认为这对于这个简单的游戏来说太过分了。没看到有使用单体的部分!!!谢谢你!您能否将其作为答案,以便我可以标记检查以供其他人参考?
  • 等等,我刚刚注意到单体是轮胎。你是说我可以用它来代替我的情况吗?

标签: java android box2d physics andengine


【解决方案1】:

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

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

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

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

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

  5. 为了看到旋转,您必须考虑施加在每个车轮上的力(事实上不同的车轮受到不同的力使汽车旋转)并考虑一些更高级的物理哪些车轮是驱动轮,并且还考虑动摩擦不是常数。不过我认为这超出了您的范围。

  6. 您也可以做一些 GTA2 似乎可以做的事情。当您知道自己将要漂移或漂移太多(您在此处设置阈值)时,只需以编程方式使车辆失去控制并旋转。

希望这会有所帮助,如果您有任何具体疑问,请尽管提问。

【讨论】:

    【解决方案2】:

    我发现http://www.banditracer.eu/carexample/ 展示了一个使用 Box2D 显示汽车运动的简单示例。 http://www.banditracer.eu/ 有一个开源游戏,您可以观察它是否有您正在寻找的漂移运动。您可以查看代码并了解他们如何处理漂移运动并为您的项目做同样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 2012-10-12
      • 2016-11-24
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多