Я использую Box2DWeb 2.1a, прямой порт Box2DFlash.
Я использую контактные фильтры (b2FilterData), устанавливая категорию и биты маски. Это работает отчасти, но есть некоторое раздражающее поведение, которого я не ожидал. Когда предметы, которые не должны сталкиваться, также находятся в контакте с другим объектом, с которым они должны сталкиваться, эти объекты также сталкиваются друг с другом. Я не хочу этого, но не могу понять, как от него избавиться.
Я создал b2ContactFilter с методом ShouldCollide, который является точной копией метода b2ContactFilter.prototype.ShouldCollide для распечатки значений категории и битов маски при контакте. Когда происходят ошибочные коллизии, я заметил, что filter1.categoryBits и filter1.maskBits становятся 0x0001 и 0x65535 соответственно. Это как если бы b2FilterData был новым экземпляром, или b2Body был назначен новый экземпляр b2FixtureDef. Хотя я не знаю, почему это произошло.