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