有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Box2d加速和限制车轮速度

我正在制作安卓游戏,使用box2d作为物理工具,我有车辆,车轮通过车轮接头连接到主车身。现在,我正在寻找一种适当的方法来加速这些车辆,并将其速度限制在某个值,目前我正在采用这种方法:

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

其中:

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

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


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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

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

    这样,如果所需的速度沿相反的方向,你会得到更大的减速度,这有助于你更快地停车