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;
您能否共享将碰撞组分配给物理对象的代码?这里需要小心,因为“相同”碰撞组意味着指向相同对象的完全相同的指针 我已经添加了上面的代码,希望它能揭示出什么地方出了问题。排序!!谢谢,伙计,我也给了陨石一个物理体。碰撞组,现在可以了。谢谢你的指点!!