我正在创建一个自上而下的2D游戏,我正在使用Box2D来模拟物理,我的问题是这样的:
如何让玩家保持与我的飞船的相对速度,并且仍然能够在飞船也在移动的情况下在玩家周围移动?
我在下面放了一个插图。
插图
到目前为止我尝试过:
将玩家身体的线速度设置为与飞船相同,这使得玩家几乎依附在飞船上,而我无法移动玩家,因为我在每次更新刻度后都会设置线速度。
尝试接头似乎不是我想要的,我可能是错的,我已经尝试了焊接接头和摩擦接头在我进入船时添加它们。 但是,使用焊接接头,由于我被焊接到船上,因此无法移动玩家。
提前感谢您的帮助!
只有在未按下玩家控制器时才将玩家身体的线性速度设置为与飞船相同"呢?
如果将 scene2d 用于 UI,则这些 Actor 具有 isTouched 方法。或者,如果您只使用按钮,则可以创建布尔字段并设置,如果触摸任何控制按钮,则为 true,如果没有,则为 false。
因此,您的播放器控制器方法可能如下所示。
void playerController() {
if (!playerControllerBottonTouched) { // or actor.isTouched()
playerBody.setLinearVelocity(shipBody.getLinearVelocity().x,
shipBody.getLinearVelocity().y);
} else {
playerBody.applyLinearImpulse(*impulse that you want*);
}
}