box2d , libgdx - 玩家 Body 拥有宇宙飞船的相对速度但仍然能够四处移动

box2d , libgdx - Player Body have relative velocity of spaceship but still be able to move around

我正在创建一个 Top-down 2D 游戏,我正在使用 Box2D 来模拟物理,我的问题是这个:

如何让玩家保持与我的宇宙飞船的相对速度,并且仍然能够在飞船移动的同时围绕我的玩家移动?

我在下面放了一张图。
illustration

到目前为止我尝试过的:

将玩家的线速度设置为与船相同body,这使得玩家非常依附于船,而我无法移动玩家,因为我设置了线性每次更新滴答后的速度。

尝试接头似乎不是我要找的,我可能是错的,我试过在进入船时添加它们的焊接接头和摩擦接头。 , 但是,有了焊接接头,我无法移动播放器,因为我被焊接到船上了。

提前感谢您的帮助!

仅当您的播放器控制器未按下时,"Setting the linear velocity of player body to be the same as the ship" 会怎么样。

如果您使用 scene2d for your UI, these Actors have isTouched method. Or if you just use buttons, you can create 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*);
       }
}