如何妥善处理box2d形状?

时间:2016-08-27 22:25:43

标签: 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中了?有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以在定义身体后进行处理。