Box2d/Libgdx 与身体合并 objects
Box2d/Libgdx Pooling objects with bodies
我正在制作一款塔防游戏,因为我预计会制作很多射弹,所以我想将它们集中在一起。但是,我的射弹有 Body 个场和用于碰撞检测的固定装置,当我在射弹上调用 free() 时,它们的身体仍然留在世界中。
所以我尝试使用 world.destroyBody() 来销毁身体,但这会导致空指针错误,除非我通过标记我的 objects [= 在 world.step 之外明确地这样做12=] 但是当我尝试实施 that 方法来销毁尸体时,出现了错误,因为被销毁的 body 与弹丸被释放的时间不匹配.
使用 Poolable objects 和 Bodies 管理内存的最佳方法是什么?
您可以通过重写可合并对象的重置方法,将它们存储在远离屏幕的地方,而不是删除主体并重新创建它们。
@Override
public void reset(){
body.setTransform(new Vector2(-50,-50), 0);
body.setLinearVelocity(0, 0);
body.setActive(false);
}
我正在制作一款塔防游戏,因为我预计会制作很多射弹,所以我想将它们集中在一起。但是,我的射弹有 Body 个场和用于碰撞检测的固定装置,当我在射弹上调用 free() 时,它们的身体仍然留在世界中。
所以我尝试使用 world.destroyBody() 来销毁身体,但这会导致空指针错误,除非我通过标记我的 objects [= 在 world.step 之外明确地这样做12=] 但是当我尝试实施 that 方法来销毁尸体时,出现了错误,因为被销毁的 body 与弹丸被释放的时间不匹配.
使用 Poolable objects 和 Bodies 管理内存的最佳方法是什么?
您可以通过重写可合并对象的重置方法,将它们存储在远离屏幕的地方,而不是删除主体并重新创建它们。
@Override
public void reset(){
body.setTransform(new Vector2(-50,-50), 0);
body.setLinearVelocity(0, 0);
body.setActive(false);
}