我正在创建一个自上而下的2D游戏,并且使用Box2D来模拟物理,我的问题是:
如何使玩家保持与飞船相对的速度,并且在飞船也移动的情况下仍然能够在玩家周围移动?
我在下面放了一个插图。
illustration
到目前为止我尝试过的是:
将播放器主体的线速度设置为与飞船相同,这使播放器几乎固定在飞船上,而我无法移动播放器,因为我在每次更新刻度后都设置了线速度。
尝试关节似乎不是我想要的,我可能错了,当我进入飞船时,我尝试了WeldJoint和FrictionJoint来添加它们。但是,通过焊接接头,由于我被焊接到船上,所以无法移动播放器。
预先感谢您的帮助!
最佳答案
仅在不按下播放器控制器的情况下,“将播放器主体的线速度设置为与飞船相同”怎么办?
如果将scene2d用于UI,则这些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*);
}
}