2013-03-18 2 views
0

En utilisant la méthode ci-dessous, comment peut-on faire référence à des sprites spécifiques en vérifiant si elles se croisent?Comment faire référence aux sprites lors de l'utilisation de la détection de collision Cocos2d?

- (void)update:(ccTime)dt { 
    for (CCSprite *sprite in movableSprites) { 
     if (CGRectIntersectsRect(sprite.boundingBox, sprite.boundingBox)) { 
      break; 
     } 
    } 
} 

Il semble que tous les sprites sont disponibles dans l'objet moveableSprites, mais je ne sais pas comment vérifier si sprites spécifiques ... Je ne heurtent sais pas comment faire référence à eux. S'il y a un moyen plus facile d'effectuer une détection de collision, je suis intéressé.

Répondre

3

Il semble que votre code ci-dessus retournera toujours TRUE parce que vous vérifiez si le BoundingBox de sprite entre en collision avec sprite, et comme ils sont les mêmes, il sera toujours. Doit être comparé à un autre sprite différent de la même image-objet.

if (CGRectIntersectsRect(sprite.boundingBox, otherSprite.boundingBox)) {// 
     break; 
    } 

Si cela ne répond pas à votre question peut-être vous cherchez à éviter d'énumérer à travers le tableau? Si c'est le cas, essayez d'utiliser tags. Someting comme ci-dessous.

CCSprite *aSprite = [CCSprite spriteWithFile:@"hurdle1.png"]; 

    [self addChild:aSprite tag:2]; 

maintenant [auto getChildByTag: 2] peut prendre la place de sprite et vous pouvez simplement ajouter boundingBox pour vérifier les collisions, comme ci-dessous.

if (CGRectIntersectsRect([self getChildByTag:2].boundingBox, checkSprite.boundingBox)) {// 
     break; 
    } 
Questions connexes