2017-07-21 106 views
1

我正在創建一個塔防遊戲,並且由於我期望製作大量投射物,因此我認爲我可以合併它們。但是,我的投射物具有用於碰撞檢測的身體區域和固定裝置,並且當我在射彈上自由()時,他們的身體仍然留在世界中。Box2d/Libgdx將物體與物體合併

所以我試圖用world.destroyBody()來銷燬屍體,但是這是導致空指針錯誤,除非我明確地做到了world.step外,舉報我的對象like I learned here.但後來,當我試圖實現方法爲了摧毀屍體,出現了錯誤,因爲被摧毀的屍體與被釋放的屍體不相配。

什麼是最好的方式去管理與Poolable對象和身體的記憶?

回答

1

而不是刪除身體並重新創建它們,您可以通過覆蓋可重置對象的重置方法將它們遠離屏幕存儲。

@Override 
public void reset(){ 
    body.setTransform(new Vector2(-50,-50), 0); 
    body.setLinearVelocity(0, 0); 
    body.setActive(false); 
} 
+0

謝謝,我認爲這將工作!我也不知道你可以通過使用body.setActive()來防止發生碰撞,所以現在我知道我可以更順利地工作。謝謝一堆。 –