1

現在、チュートリアルhttp://www.raywenderlich.com/25736/how-to-make-a-simple-iphone-game-with-cocos2d-2-x-tutorialを行っています。忍者スターがモンスターに当たったときに反応する部分に問題があります。私のコードは次のとおりです。

- (void)update:(ccTime)dt {    
    NSMutableArray *projectilesToDelete = [[NSMutableArray alloc] init];
    for (CCSprite *projectile in _projectiles) {

        NSMutableArray *monstersToDelete = [[NSMutableArray alloc] init];
        for (CCSprite *monster in _monsters) {
            if (CGRectIntersectsRect(projectile.boundingBox, monster.boundingBox)) {
                [monstersToDelete addObject:monster];
            }
        }

        for (CCSprite *monster in monstersToDelete) {
            [_monsters removeObject:monster];
            [self removeFromParentAndCleanup:YES];
        }

        if (monstersToDelete.count > 0) {
            [projectilesToDelete addObject:projectile];
        }
        [monstersToDelete release];
    }

    for (CCSprite *projectile in projectilesToDelete) {
        [_projectiles removeObject:projectile];
        [self removeChild:projectile cleanup:YES];
    }
    [projectilesToDelete release];

}

これは正常に動作し、クラッシュしませんが、発射体でモンスターを攻撃すると、シミュレーターで画面が黒くなります。エラーでも何でもありません。CGRectIntersectRect をログに記録したところ、想定どおりに記録されました。問題は、これが発生すると、すべてが黒くなることです。理由はありますか?

4

2 に答える 2

0

親から現在のレイヤーを削除する [self removeFromParentAndCleanup:YES] を実行しています。したがって、黒い画面が表示されます。

代わりに、子モンスターをレイヤーから削除することをお勧めします。

于 2013-03-07T21:09:08.023 に答える