0

私は物理学にbox2dを使用してAndroidゲームを作成しています.WheelJointsを使用して車輪が本体に取り付けられた車両があります。現在、これらの車両を加速し、速度を特定の値に制限する適切な方法を探しています。現在、次の方法で実行しています。

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

どこ:

  • wheel1wheel2は私のホイール ボディです。
  • int 方向は、加速したい方向です (右に 1、左に -1)。
  • 加速比率 - 加速の比率、例えば 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 に答える