Box2D(Java)中的一系列实体

时间:2015-05-25 20:25:09

标签: java box2d

我对Box2D很陌生,根本没有什么编程经验,所以请耐心等待。目前我正在开发一个小突围游戏。这就像一个非常简单的版本:http://i.computer-bild.de/imgs/4/9/8/6/7/5/1/Google-Breakout-745x419-9c0b3d2ebbdeae82.jpg

这是我大学的一项练习。在这一点上,我已经创建了球拍,球和墙壁。现在我想创建砖块。我的问题是,我不确定如何组织它们。我想在建筑中用2块花车制作一个类,用于实际位置。然后我想创建砖类的数组。

此时我的代码如下所示:

private Body brickBody;
private PolygonShape brickShape;
private BodyDef brickBodyDef;
private Fixture brickFixture;
Physik phy;


public CleverBrick(float a, float b, final Physik p) {


    brickBodyDef = new BodyDef();
    brickBodyDef.type = BodyType.StaticBody;
    brickBodyDef.position.set(new Vector2(a,b));
    phy =p;

    brickBody = Physik.getWorld().createBody(brickBodyDef);

    brickShape = new PolygonShape();
    brickShape.setAsBox(30,5);


    Fixture brickFixture = brickBody.createFixture(brickShape, 0.0f);
    brickFixture.setUserData("The brick");

}


public void destroyBrick() {
    brickBody.destroyFixture(brickFixture);
}


public Body getBrickbody() {
    return brickBody;
}


public void setBrickbody(Body brickbody) {
    this.brickBody = brickbody;
}
public PolygonShape getBrickShape() {
    return brickShape;
}
public void setBrickShape(PolygonShape brickShape) {
    this.brickShape = brickShape;
}


public BodyDef getBrickBodyDef() {
    return brickBodyDef;
}


public void setBrickBodyDef(BodyDef brickBodyDef) {
    this.brickBodyDef = brickBodyDef;
}


public Fixture getBrickFixture() {
    return brickFixture;
}


public void setBrickFixture(Fixture brickFixture) {
    this.brickFixture = brickFixture;
}

}

我尝试在主类中用这些行创建数组:

    for (int i =0; i<9; i++) {
        bricks[i] = new CleverBrick(100,100, this);
    } 

后来我想从xml文件中导入不同的砖块结构,这只是一个测试用例。

我总是在行处获得NullPointerException: brickBody = Physik.getWorld()。createBody(brickBodyDef); 而且我不知道为什么。我认为问题在于从

获取世界

我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

几个问题:

  • 什么是Physik.java类?
  • 为什么你使用花车进行砖块位置?这些看起来不像我的浮点数,这里的int感觉很自然
  • 关于NPE的
  • - @Atuos是对的 - 看看什么是null。这里似乎Physik或getWorld()都是空值。你不应该写

    physik.getWorld.createBody()
    

无论哪种方式 - 如果您可以通过明确说明您要问的内容并提供更多源代码来修改您的问题会很好 - 整个班级CleverBrickPhysik