Box2d / Libgdx用对象池对象

时间:2017-07-21 02:52:56

标签: java libgdx box2d

我正在创建一个塔防游戏,因为我希望制作很多射弹,我以为我会把它们拼凑起来。然而,我的射弹有用于碰撞探测的身体场和固定装置,当我在射弹上叫free()时,它们的身体仍留在世界上。

所以我试图使用world.destroyBody()来破坏Bodies,但这导致空指针错误,除非我通过标记我的对象like I learned here.在world.step之外明确地做了它但是当我尝试实现<时用于摧毁尸体的那种方法,存在错误,因为被摧毁的身体与射弹被释放时没有匹配。

使用Poolable对象和实体管理内存的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

不是删除主体并重新创建它们,而是可以通过覆盖可压缩对象的重置方法将它们远离屏幕存储。

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