我有一个收集陨石的基本火箭游戏。非常基本。这场比赛很好,除了我一直在努力解决的一个真正的烦恼,但不能。
当火箭与陨石相撞时:
-(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";
}@end
然后使用以下方法生成它们:
-(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");
}谢谢你调查这件事,希望能帮上忙
发布于 2014-05-27 23:32:02
具有相同碰撞组的对象不相互碰撞。这些文件指出:
/**
* 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;您能分享分配碰撞组给物理对象的代码吗?这里您需要小心,因为“相同”碰撞组意味着与指向同一个对象的指针完全相同!
https://stackoverflow.com/questions/23899813
复制相似问题