Box2d - 加速和限制车轮的速度

时间:2013-03-27 18:37:09

标签: java android box2d

我正在制作安卓游戏,使用box2d进行物理,我有车辆,车轮使用WheelJoints连接到车身。现在我正在寻找一种加速这些车辆的正确方法,并将速度限制在一定值,目前我正是这样做的:

public void accelerate(int direction)
{
    if (Math.abs(wheel1.getAngularVelocity()) < maxSpeed)
    {
        wheel1.applyAngularImpulse(accelerateRatio * direction);
        wheel1.applyAngularImpulse(accelerateRatio * direction);
    }
}

其中:

  • wheel1 wheel2 是我的车身。
  • int direction是我们想要加速的方向(1右,-1左)
  • accelerateRatio - 加速度的比例,例如10。
  • maxSpeed - 车辆的最大速度,如12等。

我不认为它是一个完美的解决方案,特别是因为它有令人讨厌的错误,而我们说加速正确,而不是加速左,车辆必须首先减速,因为检查最大速度。

2 个答案:

答案 0 :(得分:1)

如果有办法检查车轮正在转动的当前方向,那么只有在你试图加速时才应检查它是否达到最大速度。如你所说,现在你检查最高速度,如果你正在加速和减速。

答案 1 :(得分:0)

您可以根据当前速度和所需速度调整accelerateRatio

accelerateRatio = k * (float) Math.abs((
                getDesiredAngularVelocity() - wheel.getAngularVelocity());

如果所需的速度沿着相反的方向,你可以获得更大的减速度,它可以帮助你更快地停止。