2014-05-27 2 views
0

У меня есть базовая ракетная игра, которая собирает метеориты. Очень простой. Игра отлично работает, но есть настоящая досада, которую я пытался сгладить, но не могу.Игнорировать столкновения объектов с той же группой столкновений в Cocos2D

Когда ракета сталкивается с метеоритом:

-(void)ccPhysicsCollisionPostSolve:(CCPhysicsCollisionPair *)pair rocket:(CCNode *)nodeA meteorite:(CCNode *)nodeB{ 
[self meteoriteRemoved:nodeB]; 
[self spawnMeteorite]; 
score ++; 
_scoreLabel.string = [NSString stringWithFormat:@"%d", score]; 
} 

Снимается игре и появитесь. Это прекрасно работает, но если метеорит близок к другому метеориту, а ракета врезается в один, он отбрасывает другой, как снукерные шары. Я хочу, чтобы они оставались неподвижными до тех пор, пока ракета не столкнется с ними.

Можно ли описать спрайты в одной группе столкновений, чтобы игнорировать друг друга?

EDIT **

я загружаю метеориты в цикле из класса, который имеет:

@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]; 

} 

Следующий код дает журнал Meteorite Hit чрезвычайно часто при полете в группу, и большая часть t полет улетает в забвение!

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

Спасибо за глядя на это, надеюсь, что это помогает

ответ

1

объектов с одной и той же группы столкновения не сталкиваются друг с другом. Документация гласит:

/** 
* 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; 

Не могли бы вы поделиться код, который назначает группу столкновений с вашими объектами физики? Вы должны быть осторожны здесь, потому что «та же» группа столкновений означает точно такой же указатель на тот же объект!

+0

Я добавил код выше, надеюсь, что он проливает свет на то, что происходит не так. – Dave440

+0

Отсортировано !! Спасибо, я дал метеоритам также физическую группу.collisionGroup, и теперь это работает. Спасибо за указатель !! – Dave440

Смежные вопросы