我正在创建一个塔防游戏,因为我希望制作很多射弹,我以为我会把它们拼凑起来。然而,我的射弹有用于碰撞探测的身体场和固定装置,当我在射弹上叫free()时,它们的身体仍留在世界上。
所以我试图使用world.destroyBody()来破坏Bodies,但这导致空指针错误,除非我通过标记我的对象like I learned here.在world.step之外明确地做了它但是当我尝试实现<时用于摧毁尸体的那种方法,存在错误,因为被摧毁的身体与射弹被释放时没有匹配。
使用Poolable对象和实体管理内存的最佳方法是什么?
答案 0 :(得分:1)
不是删除主体并重新创建它们,而是可以通过覆盖可压缩对象的重置方法将它们远离屏幕存储。
@Override
public void reset(){
body.setTransform(new Vector2(-50,-50), 0);
body.setLinearVelocity(0, 0);
body.setActive(false);
}