Если вы хотите, чтобы тела сталкивались, они должны принадлежать одному и тому же b2World. На каком слое они нарисованы и как не имеет значения для физики. Чтобы определить, когда происходит столкновение, подкласс b2ContactListener
и реализовать функции обратного вызова:
class MyContactListener : public b2ContactListener
{
public:
MyContactListener() : b2ContactListener() {}
void BeginContact (b2Contact *contact);
void EndContact (b2Contact *contact);
void PreSolve (b2Contact *contact, const b2Manifold *oldManifold);
void PostSolve (b2Contact *contact, const b2ContactImpulse *impulse);
};
затем добавьте объект этого класса в ваш b2World:
MyContactListener *listener = new MyContactListener();
world->SetContactListener(listener);