1

我正在创建一个自上而下的 2D 游戏,我正在使用Box2D来模拟物理,我的问题是:

如何让玩家保持与我的飞船的相对速度,并且仍然能够在飞船也在移动的情况下围绕我的玩家移动?

我在下面放了一个插图。
插图

到目前为止我已经尝试过:

将玩家身体的线速度设置为与船相同,这使得玩家几乎附着在船上,而我无法移动玩家,因为我在每次更新滴答后设置线速度。

尝试接头似乎不是我想要的,我可能错了,我已经尝试了 WeldJoint 和 FrictionJoint,当我进入船时添加它们。,但是,使用焊接接头,我无法移动玩家,因为我被焊接到了船上。

预先感谢您的帮助!

4

1 回答 1

0

仅当您的播放器控制器未按下时,“将播放器身体的线速度设置为与船相同”怎么样?

如果您将scene2d用于您的 UI,则这些Actors具有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*);
       }
}
于 2017-10-22T07:07:54.077 回答