java - 如何正确处理box2d形状?

标签 java libgdx box2d jbox2d

我开始使用 Libgdx 中的 Box2d 创建我的世界,并且必须为不同的游戏对象创建形状。我读过的教程说我应该在使用完形状后处理它们。

所以,我开始保留这样的引用资料:

private CircleShape circle;
private PolygonShape ground;
private PolygonShape wall;
private PolygonShape box;

//...

//(getters)

像这样处理我的对象:

@Override
public void dispose()
{
    circle.dispose();
    ground.dispose();
    wall.dispose();
    box.dispose();
    world.dispose();
}

我决定将其更改为扩展列表,但问题出在我的代码中的其他地方,我在单击时添加主体,因此我需要允许从外部类访问某些形状。我可以创建额外的形状并允许访问我的列表,但我不喜欢创建一个巨大的一次性元素列表的想法。

解决方案是创建一个具有内部形状列表的 ShapeManager 对象。我可以处理这个对象,它会包装形状构造函数,让我返回一个已经存在的形状(如果它符合需要)。

但是,这个解决方案似乎太重了。为什么 Box2d(或 LibGDX)制作需要处理的形状对象? LibGDX 中是否已经包含了我所描述的类?有更好的解决方案吗?

最佳答案

定义好 body 后即可处置。

关于java - 如何正确处理box2d形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39186339/

相关文章:

java - 让子弹穿过屏幕的两侧

java - 使用 comparable 来比较不同的变量

java - 为什么 Scala 通常是为每个 Scala 项目安装,而不是在系统范围内安装?

java - java for循环中递增int变量

java - LibGDX 飞翔的小鸟克隆,Scene2d actor(按钮)

string - 从字符串中提取 X 和 Y 坐标

ios - b2Body 移动时更新 CC Sprite 位置?

java - 如何从 SMT-Lib 标准在 Java 中运行 Z3?

java - 如何在鼠标右键单击时禁用 JSlider 的位置更改

ios - Cocos2d + Box2d - 如何调试/显示 body ?