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