我正在尝试使用坦克(也可能是汽车)在自上而下的视图中构建一个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的问题,因为线速度并不关心身体的角度。
我该如何解决这个问题?
我已经尝试在角度改变后计算和设置新的速度。 这有效,但我有一些奇怪的效果(我猜是由于插值)
解决问题的最先进方法是什么?
答案 0 :(得分:0)
你需要获得当前的速度大小。然后在体角方向上创建方向向量。将方向向量乘以先前的速度幅度,你就得到了新的速度。
你提到插值。您可以使对象具有角度和targetAngle并在每个帧之间进行插值,这将使运动平滑。 Libgdx Box2D smooth angular rotation
这并非真正使用物理引擎,它会覆盖它以获得您想要的行为。
如果您确实想使用物理引擎完成所有操作,那么您必须使用扭矩按您想要的方向旋转。使用线性拖动每帧减慢身体的速度,并沿身体角度方向加速。