如何在运行时编辑主体上的Fixture Def属性?

时间:2015-01-16 04:40:36

标签: java libgdx box2d

我一直在研究这个问题,我没有找到任何合理的解决方案来解决这个问题。我一直试图做的是编辑box2D主体上的碰撞过滤属性。我知道我必须销毁夹具然后创建一个新夹具,但是当我在程序抛出空指针时创建一个新的夹具时。

private FixtureDef fdef;
public void updateContactSensor(short mask)
{
    fdef = new FixtureDef();
    fdef.filter.categoryBits=Constants.PLAYER_CAT;
    fdef.filter.maskBits=mask;
    PolygonShape shape=new PolygonShape();
    shape.setAsBox(10, 10);
    Fixture f=MainRunner.getDemo().getPlayer().getFixture();
    MainRunner.getDemo().getPlayer().getBody().destroyFixture(f);
    MainRunner.getDemo().getPlayer().getBody().createFixture(
             MainRunner.getDemo().getPlayer().getFixtureDef());
}

1 个答案:

答案 0 :(得分:0)

试试这个:

行的代码中

MainRunner.getDemo().getPlayer().getBody().createFixture(
             MainRunner.getDemo().getPlayer().getFixtureDef());

添加此更改:

//..
MainRunner.getDemo().getPlayer().getBody().createFixture(
             fdef);
.//

P.S:如果没有通知我删除了答案。你可以把堆栈跟踪?