我一直在研究这个问题,我没有找到任何合理的解决方案来解决这个问题。我一直试图做的是编辑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());
}
答案 0 :(得分:0)
试试这个:
在行的代码中
MainRunner.getDemo().getPlayer().getBody().createFixture(
MainRunner.getDemo().getPlayer().getFixtureDef());
添加此更改:
//..
MainRunner.getDemo().getPlayer().getBody().createFixture(
fdef);
.//
P.S:如果没有通知我删除了答案。你可以把堆栈跟踪?