0

我正在制作 android 游戏,使用 box2d 进行物理,我有车辆,轮子使用 WheelJoints 连接到主体车身。现在我正在寻找一种适当的方法来加速这些车辆,并将它们的速度限制在某个值,目前我正在这样做:

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

在哪里:

  • wheel1wheel2是我的轮体。
  • int direction 是我们想要加速的方向(1 右,-1 左)
  • AccelerateRatio - 加速度的比率,例如 10。
  • maxSpeed - 车辆的最大速度,例如 12 等。

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

4

2 回答 2

1

如果有办法检查车轮旋转的当前方向,那么只有在尝试加速时才应该检查它是否是最大速度。正如您所说,现在您在加速和减速时检查最大速度。

于 2013-03-27T18:40:50.660 回答
0

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

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

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

于 2013-03-27T19:14:06.993 回答