box2d,libgdx - 玩家身体具有太空飞船的相对速度,但仍能够四处移动

时间:2017-10-21 21:41:54

标签: java libgdx 2d box2d topdown

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

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

我在下面举了一个插图 illustration

到目前为止我尝试过:

将玩家身体的线速度设置为与船舶相同,这使得玩家非常依赖于船只,而我无法移动玩家,因为我在每次更新时都设置了线速度。

尝试关节似乎不是我想要的,我可能是错的,我已经尝试过WeldJoint和FrictionJoint在我进入船时添加它们。然而,对于焊接接头,由于我焊接到船上,我无法移动播放器。

提前感谢您的帮助!

1 个答案:

答案 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*);
       }
}