Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Box2d/Libgdx使用实体池对象_Java_Libgdx_Box2d - Fatal编程技术网

Java Box2d/Libgdx使用实体池对象

Java Box2d/Libgdx使用实体池对象,java,libgdx,box2d,Java,Libgdx,Box2d,我正在制作一个塔防游戏,因为我希望制作很多射弹,所以我想我会把它们放在一起。但是,我的射弹有用于碰撞检测的身体场和固定装置,当我对射弹调用free()时,它们的身体仍保留在世界中 因此,我尝试使用world.destroyBody()销毁实体,但这会导致空指针错误,除非我在世界之外显式地这样做。通过标记对象,然后当我尝试实现销毁实体的方法时,有一些错误是因为被摧毁的尸体与释放弹丸的时间不匹配 使用可池对象和实体管理内存的最佳方法是什么?不必删除实体并重新创建它们,只需覆盖可池对象的重置方法,将它

我正在制作一个塔防游戏,因为我希望制作很多射弹,所以我想我会把它们放在一起。但是,我的射弹有用于碰撞检测的身体场和固定装置,当我对射弹调用free()时,它们的身体仍保留在世界中

因此,我尝试使用world.destroyBody()销毁实体,但这会导致空指针错误,除非我在世界之外显式地这样做。通过标记对象,然后当我尝试实现销毁实体的方法时,有一些错误是因为被摧毁的尸体与释放弹丸的时间不匹配


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

不必删除实体并重新创建它们,只需覆盖可池对象的重置方法,将它们存储在远离屏幕的地方即可

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

谢谢你,我想那会有用的!我还不知道使用body.setActive()可以防止物体碰撞,所以现在我知道我可以让很多其他事情更顺利地进行。非常感谢。