2012-10-10 23 views
1

我正在嘗試在iOS遊戲中使用子彈物理。該引擎似乎被正確編譯,演示程序正常工作。btRigidBody對象在低速碰撞時行爲異常

在我的遊戲中,我有玩家的船和一些敵方的船隻。它們被定義爲btRigidBody對象和btCollisionObjects,我使用btSphereShapes進行碰撞。在'快速'速度下,碰撞看起來很明顯地發生 - 事物碰撞並且沒有任何'怪異'。如果速度非常緩慢,並且玩家的船接觸到一個不移動的物體,碰撞就會發生,但隨後玩家的船在接下來的幾幀內以令人難以置信的速度移動,並且與相撞的地方相距很遠 - 完全不成比例它在撞擊前的速度。

移動東西我使用setLinearVelocity()每幀,勾選物理引擎,然後使用getMotionState()更新我有的渲染代碼。

問題的一部分可能是我不太明白如何設置正確的質量或什麼是最好的速度用於任何事情。我主要是將數字粘在裏面,看看會發生什麼。

我是否應該以這種方式使用子彈,並且是否有任何指導方針來決定物體的質量? (我是對的,假設在碰撞中較重的物體會迫使較輕的物體移動更多)

回答

0

我並不是專家,但我不會使用setLinearVelocity。這只是初始狀態,一旦在世界上,如果你想在正確的方向上推動一些東西,給它一個衝動。這就像被一個不可見的物體擊中一樣,因此與其他碰撞完全兼容。每幀設置速度將完全覆蓋物理引擎的計算。

我注意到,當兩個物體重疊時,它們會以相對於它們重疊的力相互排斥。我認爲你的setVelocity方法導致物體重疊,然後物理引擎最終以不希望的方式解決這個問題。

我正在製作一個太空船遊戲,我衝動取消當前的移動方向,並且衝動會將其移動到新的方向,只要該船還沒有以我選擇的最大速度移動。