我正在制作安卓游戏,使用box2d进行物理,我有车辆,车轮使用WheelJoints连接到车身。现在我正在寻找一种加速这些车辆的正确方法,并将速度限制在一定值,目前我正是这样做的:
public void accelerate(int direction)
{
if (Math.abs(wheel1.getAngularVelocity()) < maxSpeed)
{
wheel1.applyAngularImpulse(accelerateRatio * direction);
wheel1.applyAngularImpulse(accelerateRatio * direction);
}
}
其中:
我不认为它是一个完美的解决方案,特别是因为它有令人讨厌的错误,而我们说加速正确,而不是加速左,车辆必须首先减速,因为检查最大速度。
答案 0 :(得分:1)
如果有办法检查车轮正在转动的当前方向,那么只有在你试图加速时才应检查它是否达到最大速度。如你所说,现在你检查最高速度,如果你正在加速和减速。
答案 1 :(得分:0)
您可以根据当前速度和所需速度调整accelerateRatio
。
accelerateRatio = k * (float) Math.abs((
getDesiredAngularVelocity() - wheel.getAngularVelocity());
如果所需的速度沿着相反的方向,你可以获得更大的减速度,它可以帮助你更快地停止。