Cocos2d iphone 忽略Cocos2D中具有相同碰撞组的对象之间的碰撞

Cocos2d iphone 忽略Cocos2D中具有相同碰撞组的对象之间的碰撞,cocos2d-iphone,physics,game-physics,spritebuilder,Cocos2d Iphone,Physics,Game Physics,Spritebuilder,我有一个收集陨石的基本火箭游戏。非常基本。这个游戏运行得很好,除了有一个我一直试图解决但无法解决的烦恼 当火箭与陨石碰撞时: -(void)ccPhysicsCollisionPostSolve:(CCPhysicsCollisionPair *)pair rocket:(CCNode *)nodeA meteorite:(CCNode *)nodeB{ [self meteoriteRemoved:nodeB]; [self spawnMeteorite]; score ++; _scoreL

我有一个收集陨石的基本火箭游戏。非常基本。这个游戏运行得很好,除了有一个我一直试图解决但无法解决的烦恼

当火箭与陨石碰撞时:

-(void)ccPhysicsCollisionPostSolve:(CCPhysicsCollisionPair *)pair rocket:(CCNode *)nodeA meteorite:(CCNode *)nodeB{
[self meteoriteRemoved:nodeB];
[self spawnMeteorite];
score ++;
_scoreLabel.string = [NSString stringWithFormat:@"%d", score];
}
它被移除并重生。这很好,但如果陨石靠近另一颗陨石,火箭猛击其中一颗,就会像斯诺克球一样将另一颗陨石击倒。我希望他们保持静止,直到火箭与他们相撞

有没有办法告诉同一碰撞组中的精灵忽略彼此

编辑**

我从一个类中循环加载陨石,该类具有:

@implementation Meteorite

- (void)didLoadFromCCB {
self.physicsBody.collisionType = @"meteorite";
}
@结束

然后使用以下方法生成它们:

-(void)spawnMeteorite{
CCNode *meteorite = [CCBReader load:@"Meteorite"];

CGFloat randomX = ((double)arc4random() / ARC4RANDOM_MAX);
CGFloat randomY = ((double)arc4random() / ARC4RANDOM_MAX);
CGFloat rangeX = 320 - 48;
CGFloat rangeY = 2880 - 200;

meteorite.position = ccp((randomX * rangeX)+24, (randomY * rangeY)+ _ground.contentSize.height + _rocket.contentSize.height);
meteorite.physicsBody.velocity = ccp(0,0);
[_physicsNode addChild:meteorite];

}
下面的代码给出了一个记录,记录了在飞行到一个群体中时,陨石被击中的频率极高,并且大多数陨石都被遗忘了

-(void)ccPhysicsCollisionPostSolve:(CCPhysicsCollisionPair *)pair meteorite:(CCNode *)nodeA meteorite:(CCNode *)nodeB{
NSLog(@"Meteorite HIT");
}

感谢您对此进行研究,希望它能帮助具有相同碰撞组的对象不会相互碰撞。 文件规定:

/**
 *  The body's collisionGroup, if two physics bodies share the same group id, they don't collide. Defaults to nil.
 */
@property(nonatomic, assign) id collisionGroup;

您能否共享将碰撞组分配给物理对象的代码?这里需要小心,因为“相同”碰撞组意味着指向相同对象的完全相同的指针

我已经添加了上面的代码,希望它能揭示出什么地方出了问题。排序!!谢谢,伙计,我也给了陨石一个物理体。碰撞组,现在可以了。谢谢你的指点!!