【问题标题】:Box2d - accelerating and limiting the speed of the wheelBox2d - 加速和限制车轮的速度
【发布时间】:2013-03-27 18:37:08
【问题描述】:

我正在制作 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 等

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

【问题讨论】:

    标签: java android box2d


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多