CCSprite *red=[CCSprite spriteWithFile:@"red.png"];
red.tag=3;
[self addChild:red];
CCSprite *blue=[CCSprite spriteWithFile:@"blue.png"];
blue.tag=4;
[self addChild:blue];
тогда, пока вы создаете красное и синее тело, у вас есть
b2BodyDef bd;
bd.type=b2_dynamicBody;
bd.position.Set(w/PTM_RATIO,h/PTM_RATIO);
bd.userData=red;
// в вашей функции шага для каждого m_body
b2Fixture *f=m_body->GetFixtureList();
b2Vec2 locationWorld = b2Vec2(desiredlocationX/PTM_RATIO, desiredlocationY/PTM_RATIO);
if (f->TestPoint(locationWorld)) {
CCSprite *actor = (CCSprite*)m_body->GetUserData();
if ([actor tag] == 3) {
//red box
}
else if([actor tag] == 4){
//blue box
}
}