2011-09-25 62 views
2

我所擁有的是一個可以翻轉其他物體並「拾取」它們的圓。我當前的設置使用WeldJoint加入並將拾取的對象放置在圓的邊緣。然後,我編輯這些物體的固定裝置,以成爲避免碰撞響應的傳感器。這個圓圈使用applyForceToCenter()和輕微的衝動來推動它。這一切都有效。忽略box2d中焊接接頭的質量

問題是來自新身體的積聚質量限制了主圓的運動。我的遊戲太逼真了。身體不停地拉扯着周圍的圈子。我想將任何影響圓的物理屬性歸零。

我試着用resetMassData(),MassData.mass = 0,setAwake(假),SETACTIVE(假)...

任何幫助表示讚賞,感謝各種方法。

編輯:我想過使用數學函數在物體的圓周上旋轉,例如, Make a sprite go in a circle。我不太確定這是否與box2d一致。

回答

2

當您使用焊接接頭時,當您將它們連接到您的圓形時,並未刪除任何物體(具有其自身的質量)。既然你滿足於簡單地假設一旦有東西被卡住到不再需要與任何東西碰撞的圓圈中,一個好的解決方案就是將它們作爲傳感器添加到你的圈子主體中。這將要求您刪除正文並將燈具添加到您的圈子中。

我認爲讓更多的物體爲你的圈子帶來更大的質量會很酷。爲什麼不制定一個例程來確定當前粘在球上的總附加質量,並相應地調整球的推力?你最終會得到相同的加速度,但是你會得到一個真實的增加免費產生的碰撞力。不僅如此,焊接後的傳感器還可以有效地改變慣性,因此您的球的重心現在將反映出球上的東西是如何粘在上面的!這是免費的現實主義,所以我會盡量利用它。此外,它會比編寫代碼來正確移動燈具更容易。

此外,您還可以通過某種因素降低新「卡住」物體的密度,以根據需要降低效果。

+0

我解決了我的「質量太多」的直接問題。問題是這些物體相對於圓圈具有非常高的密度!我也喜歡這種從羣衆中自由加速的想法。謝謝。 – IvanArellano

+1

@IvanArellano我剛纔更新了我的答案。我的意思是說,你可以通過按比例增加的力量來解釋質量的增加。這將有助於保持可控性和加速度不變。當你堅持更多的事情時,一種非常自然的「升級」機制。 –