如何从上到下移动坦克?

时间:2014-08-03 19:01:49

标签: box2d

我正在尝试使用坦克(也可能是汽车)在自上而下的视图中构建一个box2d游戏。 可以使用dpad左/右旋转水箱:

direction = inputSource.getDirection();
if (direction != 0) {
    body.applyAngularImpulse(direction * 0.5f, true);
    if (body.getAngularVelocity() > 1f) body.setAngularVelocity(1f);
    else if (body.getAngularVelocity() < -1f) body.setAngularVelocity(-1f);
}
else body.setAngularVelocity(0f);

可以使用dpad加速水箱并使用dpad减速来减速。 油箱应始终以实际速度沿其前进方向(角度)移动 更换角度后,水箱必须立即改变运动方向。

这就是自上而下透视中box2d的问题,因为线速度并不关心身体的角度。

我该如何解决这个问题?

我已经尝试在角度改变后计算和设置新的速度。 这有效,但我有一些奇怪的效果(我猜是由于插值)

解决问题的最先进方法是什么?

1 个答案:

答案 0 :(得分:0)

你需要获得当前的速度大小。然后在体角方向上创建方向向量。将方向向量乘以先前的速度幅度,你就得到了新的速度。

你提到插值。您可以使对象具有角度和targetAngle并在每个帧之间进行插值,这将使运动平滑。 Libgdx Box2D smooth angular rotation

这并非真正使用物理引擎,它会覆盖它以获得您想要的行为。

如果您确实想使用物理引擎完成所有操作,那么您必须使用扭矩按您想要的方向旋转。使用线性拖动每帧减慢身体的速度,并沿身体角度方向加速。