2014-05-21 26 views
1

我使用Box2D來模擬在行星上行走的人。我計算了一個自定義引力朝向地球的中心,除了一個小故障外,它正常工作:我用作人物物理模型的盒子當前正在圍繞地球移動。我希望它永遠是正確的方式。你如何建議我這樣做?保持對象在地球表面的正確方式

我曾經想過,當人的腳接觸地面時,要考慮重力矢量並計算切向矢量,但我不太確定如何去做。如果這是最好的方式,你能解釋一下如何實現這個目標嗎?沒有更簡單的方法嗎?

回答

1

有一個更簡單的方法。

我假設通過「正確的方式」,你的意思是腳應該始終指向星球。

執行以下操作:

  • 將額外的圓形體,在相同的位置,你的星球(基本上是小圓圈是「內部」你的星球)。這個身體既不應該與你的星球也不與你的玩家發生碰撞。
  • 通過旋轉關節將這個身體連接到你的星球,使它保持固定在相同的位置,但可能會旋轉。
  • 通過棱鏡連接將玩家連接到該機構,根據玩家相對於行星的起始位置設置座標軸(例如,如果玩家在行星頂部開始,將座標軸設置爲(0,1))。

如果你這樣做,棱鏡聯合應該照顧你的球員旋轉你想要的方式。

如果您希望設置的角度手動我認爲,你可以通過使用atan2這樣計算角度:

Math.atan2(planetPos.y - playerPos.y,planetPos.x - playerPos。 X);

這將計算角度雖然。您必須將其轉換爲弧度才能在Box2D中使用它。

+0

謝謝。這似乎是一個合理的解決方案,雖然我還沒有嘗試過。我現在選擇了更多的三角函數解決方案,因爲當我們有多個「行星」靠近時,似乎會更好。 – Elektito

相關問題