2011-12-09 75 views
2

我想問下面的問題。移動平臺對象 - 使用box2D的Android遊戲

我有2D側滾動android遊戲正在開發中,使用和引擎。

而引擎使用BOX2D物理引擎。

在我的遊戲中,我有一個名爲「移動平臺」的對象,它是一個簡單的平臺,它沿着右/左方向移動,並根據當前的X座標不斷改變其移動方向。它工作正常,我用移動它:

body.setLinearVelocity(-1 * 5, b.getLinearVelocity().y); 

現在我的問題是:明明玩家可以嘗試跳這個移動平臺上一起移動,但不幸的是玩家會掉下來,如果他不會嘗試與這個平臺一起移動。

我試圖讓它像大多數平臺遊戲一樣工作,所以如果玩家在平臺上,玩家正在與平臺一起移動(所以你不必被迫繼續留在這個平臺上以避免掉下來)

到目前爲止,我已經嘗試過或一直在思考:

  • 接觸監聽器檢查,如果球員的身體接觸平臺的身體,如果是採用當前平臺的線速度,玩家
  • 增加摩擦力的平臺

到目前爲止沒有成功,我會感激一些想法/提示 - 謝謝。

+0

你可以舉一個遊戲的例子,它使用你想做的事情嗎? – Jong

+0

感謝您的回答,例如,看看在mario遊戲的谷歌上發現的這個圖片(忽略那些紅色的箭頭,它在google上的屏幕)http://2.bp.blogspot.com/_Y634Kn9fsds/TCiXBAIvlxI/AAAAAAAAABA/- Fum-bwdFhQ/s1600/mario1.jpg 正如你所看到的,馬里奧目前停留在我稱之爲移動平臺的物體上,因爲它在左/右方向移動。我也一樣,但是當玩家留在我的平臺上時,他必須繼續前進,否則他會掉下來。 – Matim

+0

我以爲你的問題是別的,但我認爲我的答案現在可以解決你的問題。 – Jong

回答

2

如果平臺的摩擦係數是1,那麼玩家就不能有相對速度。所以設置1f作爲移動平臺FixtureDef的摩擦力場。

如果這不起作用,請確保您在創建球員夾具def時沒有通過0作爲密度,因爲運動摩擦計算公式如下:friction=(friction coefficient)*(normal force)然後是一個沒有質量的物體(密度= 0),大多數的情況下(你的是「最」),將有沒有摩擦。

+0

感謝您的回答,我確實像您說的那樣,在創建fixture_def時在平臺的摩擦中設置1f,並且我的球員的fixture def爲 PhysicsFactory.createFixtureDef(0,0,0f); 所以它就像你說的,不幸的是它不工作。 – Matim

+0

我把玩家的摩擦力設置爲0.01f,平臺的摩擦力真的很大(50000),實際上它起作用,玩家一直跟着平臺一起移動,但是他不能移動(使用控制器),當然他可以跳躍並移動空氣,但它仍然是錯誤的。我會試圖找到如何動態改變人體摩擦的方法,因爲如果我將球員的摩擦力改回0,而球員可能想要與控制器一起移動,那將是完美的。 – Matim

+0

如果你設置了很小的摩擦力,它應該足以讓玩家留在平臺上,但還不足以抵消你在玩家移動時施加的力量 – Jong