Java Box2d/Libgdx使用实体池对象
我正在制作一个塔防游戏,因为我希望制作很多射弹,所以我想我会把它们放在一起。但是,我的射弹有用于碰撞检测的身体场和固定装置,当我对射弹调用free()时,它们的身体仍保留在世界中 因此,我尝试使用world.destroyBody()销毁实体,但这会导致空指针错误,除非我在世界之外显式地这样做。通过标记对象,然后当我尝试实现销毁实体的方法时,有一些错误是因为被摧毁的尸体与释放弹丸的时间不匹配Java Box2d/Libgdx使用实体池对象,java,libgdx,box2d,Java,Libgdx,Box2d,我正在制作一个塔防游戏,因为我希望制作很多射弹,所以我想我会把它们放在一起。但是,我的射弹有用于碰撞检测的身体场和固定装置,当我对射弹调用free()时,它们的身体仍保留在世界中 因此,我尝试使用world.destroyBody()销毁实体,但这会导致空指针错误,除非我在世界之外显式地这样做。通过标记对象,然后当我尝试实现销毁实体的方法时,有一些错误是因为被摧毁的尸体与释放弹丸的时间不匹配 使用可池对象和实体管理内存的最佳方法是什么?不必删除实体并重新创建它们,只需覆盖可池对象的重置方法,将它
使用可池对象和实体管理内存的最佳方法是什么?不必删除实体并重新创建它们,只需覆盖可池对象的重置方法,将它们存储在远离屏幕的地方即可
@Override
public void reset(){
body.setTransform(new Vector2(-50,-50), 0);
body.setLinearVelocity(0, 0);
body.setActive(false);
}
谢谢你,我想那会有用的!我还不知道使用body.setActive()可以防止物体碰撞,所以现在我知道我可以让很多其他事情更顺利地进行。非常感谢。