2010-12-14 33 views
0

J'ai besoin d'aide pour détruire les sprites qui se trouvent à l'intérieur et autour des sprites entrés. Dans un rayon de 2,5 cm, tous les sprites doivent être détruits. L'idée ici est que je vais tirer un projectile du fond vers les objets tombant du haut. Une fois que la collision se produit, tous les sprites autour de ce rayon doivent également être détruits. Comme un effet de bombe. J'ai utilisé box2d pour la collision, c'est-à-dire l'auditeur de contact. Comment faire cela?Détruire des lutins dans et autour du Sprite Collidé

S'il vous plaît Proposer :-)

Cordialement,

Karthik

Répondre

1

Tenir un tableau de vos sprites, ou si vous utilisez un batchNode vous pouvez le faire. Lorsque la collision se produit, passez par vos sprites. Vérifiez la distance avec leur position et le centre d'explosion et tuez-les s'ils sont à portée.

par exemple.

CCSprite *sprite; 
for (sprite in [batchNode descendants]) { 

    if ([sprite isInRangeOf:[explosionSprite position]]) { 
     [sprite yourRemovalMethod]; 
    } 

} 

la méthode 'isInRangeOf:' serait au sein de votre sous-classe de sprite

Quelque chose comme ..

-(BOOL) isInRangeOf:(CGPoint)explosionCenter { 

//Use pythagoras theorem to work out the distance between [sprite position] and [explosionCenter] 

    CGFloat dx = explosionCenter.x - [self position].x; 
    CGFloat dy = explosionCenter.y - [self position].y; 
    float distance = sqrt(dx*dx + dy*dy); 

// If your distance is less than or equal to your 'death radius' return YES, else No. 
    if (distance <= 25) { 
    return TRUE; 
    } else { 
    return FALSE; 
    } 


} 

espoir qui aide.

+0

Est-ce que ma réponse a résolu votre problème? – Bongeh