[英]Box2D Collision Filtering with Simultaneous Collisions
我正在使用Box2DWeb 2.1a,Box2DFlash的直接端口。
我通过设置类别和掩码位来使用联系人筛选器(b2FilterData)。 这部分起作用,但是我没有想到某些令人讨厌的行为。 当不应该碰撞的物体也与另一个应该碰撞的物体接触时,这些物体也会彼此碰撞。 我不想要这个,但是无法找到摆脱它的方法。
我创建了一个带有ShouldCollide方法的b2ContactFilter,它是b2ContactFilter.prototype.ShouldCollide方法的精确副本,以便在联系时打印出类别和掩码位的值。 当发生错误冲突时,我注意到filter1.categoryBits和filter1.maskBits分别变为0x0001和0x65535。 好像b2FilterData是一个新实例,或者b2Body被分配了一个新的b2FixtureDef实例。 我不知道为什么会这样。
您确定要正确分配b2FilterData吗? 它应该应用于b2Fixture而不是b2FixtureDef。 如果您正在做:
var myData = new b2FilterData();
myData.maskBits = ~0x0004;
fixture.m_filter = myData;
请尝试:
fixture.SetFilterData(myData);
如果在调用SetFilterData时遇到错误,则意味着您不是在b2Fixture上而是在b2FixtureDef上调用它,这是错误的。
有没有帮助?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.