2017-10-21 80 views
1

我创建一个自上而下的2D游戏和我使用Box2D的模拟物理,我的问题是这样的:Box2D的,libgdx - 球员身体有飞船的相对速度,但仍然能够走动

我该如何让玩家与我的太空船保持相对的速度,并且仍然能够在玩家移动的同时在玩家身边移动?

我已经在下面插图。
illustration

我迄今为止尝试:

设置玩家身上的线速度是一样的船,这使得相当多附在船舶的球员,没有我能够移动玩家,因为我在每次更新打勾后设置线速度。

尝试关节似乎并不是我正在寻找的东西,我可能是错的,我尝试了WeldJoint和FrictionJoint在我进入这艘船时添加它们。但是,由于焊接在船上,所以我无法移动球员。

非常感谢您的帮助!

回答

0

只有当您的播放器控制器没有按下时,“设置播放器机身的线速度与船只相同”如何?

如果使用scene2d你的UI,这些ActorsisTouched方法。或者,如果你只是使用的按钮,你可以创建boolean场和集,真正如果你的任何控制按钮的感动和如果不是。

因此,您的播放器控制器方法可能如下所示。

void playerController() { 
    if (!playerControllerBottonTouched) { // or actor.isTouched() 
     playerBody.setLinearVelocity(shipBody.getLinearVelocity().x, 
            shipBody.getLinearVelocity().y); 
    } else { 
      playerBody.applyLinearImpulse(*impulse that you want*); 
     } 
} 
+0

是的,那实际上工作得很好,谢谢! – Michael