2010-12-14 6 views
0

Ich brauche Hilfe bei der Zerstörung der Sprites, die sich in und um die kollidierten Sprites befinden, dh in einem Radius von 2,5 cm sollten alle Sprites zerstört werden. Idee hier ist, dass ich ein Projektil von unten zu den Gegenständen schießen werde, die von der Spitze fallen. Sobald eine Kollision eintritt, sollten alle Sprites in diesem Radius ebenfalls zerstört werden. Wie ein Bombeneffekt. Ich habe box2d für die Kollision verwendet, dh den Hörer kontaktieren. Wie man das macht?Zerstörer Sprites in und um den Collided Sprite

Bitte vorschlagen :-)

Grüße,

Karthik

Antwort

1

Halten Sie ein Array von Sprites, oder wenn Sie eine batchNode verwenden, können Sie das tun.

Wenn die Kollision passiert, gehen Sie durch Ihre Sprites. Überprüfen Sie die Entfernung mit ihrer Position und dem Explosionszentrum und töten Sie sie, wenn sie in Reichweite sind.

z.B.

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

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

} 

die Methode 'isInRangeOf:' innerhalb Ihrer Sprite Unterklasse

So etwas wie ..

-(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; 
    } 


} 

Hoffnung, die hilft wäre.

+0

hat meine Antwort Ihr Problem gelöst? – Bongeh