我正在创建一个塔防游戏,因为我预计会制作很多射弹,所以我想我会把它们集中起来。但是,我的射弹具有用于碰撞检测的 Body 场和 Fixtures,当我对射弹调用 free() 时,它们的 body 仍保留在世界中。
因此,我尝试使用 world.destroyBody() 销毁 body ,但这会导致空指针错误,除非我通过标记我的对象 like I learned here. 在 world.step 之外显式执行此操作。但是当我尝试实现那个方法来摧毁尸体时,出现了错误,因为被摧毁的尸体与释放射弹的时间不匹配。
使用 Poolable 对象和 Bodies 管理内存的最佳方法是什么?
最佳答案
您可以通过覆盖可池对象的重置方法将它们存储在远离屏幕的地方,而不是删除实体并重新创建它们。
@Override
public void reset(){
body.setTransform(new Vector2(-50,-50), 0);
body.setLinearVelocity(0, 0);
body.setActive(false);
}
关于java - Box2d/Libgdx 使用主体池化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45228219/