2017-07-21 109 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()来防止发生碰撞,所以现在我知道我可以更顺利地工作。谢谢一堆。 –