首页 文章

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

提问于
浏览
0

我正在制作安卓游戏,使用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等

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

2 回答

  • 1

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

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

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

  • 0

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

相关问题