2013-06-18 26 views
0

在下面的代码中添加传感器灯具有两个问题。重新定位矢量b2Vec2(0,50)不起作用;第二个夹具仍然以身体的原点为中心。两种灯具都可以在调试模式下看到,但我无法将传感器灯具移动到主灯具的底部。在Box2Dweb中添加第二个灯具作为传感器Body

其次,当isSensortrue我没有收到任何PostSolve事件。当它被设置为false时,我会得到相应的事件(伴随着碰撞)。我如何使这个传感器不会与其他物体碰撞,但仍会引发事件。感谢您的帮助。

// FIXTURE DEF 
    var fixDef = new box2d.b2FixtureDef(); 
    fixDef.shape = new box2d.b2PolygonShape; 
    fixDef.shape.SetAsBox((25/2/SCALE), (46/2/SCALE)); 
    fixDef.density = 0.99; 
    fixDef.friction = 0.39; 
    fixDef.restitution = 0.0; 
    fixDef.userData = "SBody"; 
    fixDef.filter.categoryBits = CAT.SOLDIER; 
    fixDef.filter.maskBits = CAT.GROUND; 
    this.view.body.CreateFixture(fixDef); 


    // ADD FOOT SENSOR 
    fixDef.density = 0.1; 
    fixDef.friction = 1.; 
    fixDef.restitution = 0.1; 
    fixDef.userData = "Foot"; 
    fixDef.shape.SetAsBox((10/2/SCALE), (100/2/SCALE), new box2d.b2Vec2(0,50), 0); 
    fixDef.isSensor = true; 
    fixDef.filter.categoryBits = CAT.SOLDIER_FOOT_SENSOR; 
    fixDef.filter.maskBits = CAT.SHIP | CAT.GROUND; 
    this.view.body.CreateFixture(fixDef); 

回答

1

我所用的尖端这个答案https://stackoverflow.com/a/4707127/1172891提到添加定位为第三个参数,但我最近发现SetAsBox不能采取第三个参数,也许是习惯了。相反,我发现SetAsOrientedBox是一个类似的方法,并接受定位的第三个参数。发现在Box2dFlash参考http://www.box2dflash.org/docs/2.1a/reference/Box2D/Collision/Shapes/b2PolygonShape.html

对于传感器回调,我只是在第一次尝试PostSolve。我最近考虑尝试其他事件,如EndContact,并发现它的工作。然后我发现这个页面似乎是唯一的地方,明确指出只有传感器抬起BeginContactEndContact事件:http://www.box2dflash.org/docs/2.1a/updating事件部分。

希望能节省一些时间!

相关问题