2017-10-21 79 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