2016-08-18 71 views
0

我在我的世界中设置了一个联系人侦听器,并且由于某些原因,当灯具碰撞时它不会被调用。我可以确认灯具确实与box2dDebugRenderer发生碰撞。我怀疑问题“可能”是每个球员的框架,我删除夹具并添加一个新的(因为没有办法(我知道)调整大小/重新定位夹具)。我将听众添加到正确的世界,世界正在正确地工作,行为正在被称为(当然)。谢谢你的帮助!Box2d | setContactListener不起作用

这就是所谓的播放器类中的每个帧:在您的FixtureDef

private void createFixture(boolean remove) { 

    if (remove) { 
     body.destroyFixture(fixture); 
    } 

    BodyDef bodyDef = new BodyDef(); 
    bodyDef.type = BodyDef.BodyType.KinematicBody; 
    bodyDef.position.set(0, 0); 
    body = world.createBody(bodyDef); 
    FixtureDef fixtureDef = new FixtureDef(); 
    CircleShape circle = new CircleShape(); 
    circle.setRadius(getWidth()/2); 
    circle.setPosition(new Vector2(0, getY() + getHeight()/2)); 
    fixtureDef.shape = circle; 
    fixture = body.createFixture(fixtureDef); 

    circle.dispose(); 
} 

回答

0

你缺少筛选数据。您必须设置类别位和掩码位。

试试这个:

fixtureDef.filter.categoryBits = 1; 
fixtureDef.filter.maskBits = 1;