0

以下の方法を使用して、特定のスプライトが交差しているかどうかを確認するときにどのように参照できますか?

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

すべてのスプライトが moveableSprites オブジェクトで使用できるようですが、特定のスプライトが衝突しているかどうかを確認する方法がわかりません...それらを参照する方法がわかりません。衝突検出を実行する簡単な方法があれば、興味があります。

4

1 に答える 1

3

スプライトのバウンディングボックスがspriteと衝突するかどうかをチェックしているため、上記のコードは常に TRUE を返すようです。それらは同じであるため、常にそうなります。

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

同じスプライトではなく、別のスプライトと比較する必要があります。

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

それがあなたの質問に答えない場合、おそらく配列を列挙することを避けようとしていますか? その場合は、タグを使用してみてください。以下のようなもの。

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

    [self addChild:aSprite tag:2];

[self getChildByTag:2] がスプライトの代わりになり、以下のように、境界ボックスを追加して衝突をチェックすることができます。

    if (CGRectIntersectsRect([self getChildByTag:2].boundingBox, checkSprite.boundingBox)) {//
        break;
    }
于 2013-03-18T05:56:00.843 に答える