繁体   English   中英

具有同时碰撞的Box2D碰撞过滤

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM