0

衝突したスプライト内およびその周囲にあるスプライトを破壊する助けが必要です。つまり、半径 2.5 cm 内にあるすべてのスプライトを破壊する必要があります。ここでのアイデアは、上から落下するオブジェクトに下から発射物を発射することです。衝突が発生すると、その半径の周りのすべてのスプライトも破壊されます。爆弾効果のように。衝突、つまり接触リスナーにbox2dを使用しました。どうやってそれを行うのですか?

提案してください:-)

よろしく、

カーシック

4

1 に答える 1

1

スプライトの配列を保持するか、batchNodeを使用している場合はそれを行うことができます。

衝突が発生したら、スプライトを通過します。それらの位置と爆発の中心で距離を確認し、範囲内にある場合はそれらを殺します。

例えば

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

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

}

メソッド'isInRangeOf:'はスプライトサブクラス内にあります

何かのようなもの..

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


}

お役に立てば幸いです。

于 2010-12-14T11:16:40.770 に答える