Ответ от iforce2d может быть устаревшим.Я получил следующий код, работающий должным образом с box2d v2.2.1, cocos2D v2.0.0 с использованием Xcode v4.5.2 (здесь я предполагаю, что у меня есть указатель на b2Body с именем 'body' только с одним фиксатором, т.е. я не выполняю итерации повсе приборы на теле):
b2Fixture *fix = body->GetFixtureList();
b2Filter filter = fix->GetFilterData();
filter.groupIndex = -1*kPlayerGroupIndex;
fix->SetFilterData(filter);
В приведенном выше коде я предотвращаю столкновение «тела» с телом моего игрока, которое также имеет такое же значение groupIndex, то есть -1 * kPlayerGroupIndex, где kPlayerGroupIndex являетсяцелочисленная положительная константа.Любые тела с этим отрицательным индексом группы никогда не сталкиваются друг с другом.Вы также можете соответствующим образом обновить categoryBits или maskBits для предотвращения коллизий.
GetFilterData (& filter) и SetFilterData (& filter) вернули мне ошибки, учитывая номера версий, которые я цитировал выше.