2

だから、私が取り組んでいるゲームに単純な弾丸システムを使用していますが、フレームレートとメモリを占有しないように、配列と画面から弾丸を削除する最良の方法は何だろうと思っていましたか?

-(void)spinTapped
{     
        [self.character stopAllActions];
        [self.character runAction:self.gunAction];
        isRunning = NO;
        CCSprite *bullet = [CCSprite spriteWithFile:@"rwby_bullet.png"];
        bullet.position = ccp(self.character.position.x , self.character.position.y + 15);
        [bullet setScale:2];
        if (isRight) {
            bullet.tag = 10;
        }
        else {
            bullet.tag = -10;
        }
        [bullets addObject:bullet];
        [self addChild:bullet z:-1];

}

そして更新で:

for(CCSprite *bullet in bullets)
    {
        CGPoint bulletPosition = ccp(bullet.position.x , bullet.position.y);
        CGPoint B_tilePosition = [self tileCoorForPosition:bulletPosition];
        bullet.position = ccp(bullet.position.x + bullet.tag , bullet.position.y);

        NSMutableArray *emptySpace = [[NSMutableArray alloc] initWithCapacity:10000];
        [emptySpace addObject:[NSNumber numberWithInt:0]];

        @try {
            bullet_GID = [self.background tileGIDAt:B_tilePosition];
        }
        @catch (NSException *exception) {
            bullet_GID = 535677655;
        }
        @finally {

        }
        if(bullet_GID == 535677655)
        {
            [bullet setVisible:NO];
          //  [bullets removeObject:bullet];

        }
        else if(bullet_GID)
        {
            [bullet setVisible:NO];
          //  [bullets removeObject:bullet];
        }
    }

[bullets removeObject:bullet] は、1 つの弾丸がタイルに当たり、別の弾丸が画面上にあるときにアプリをクラッシュさせます (これが問題だと思います)。では、弾丸を取り除く適切な方法は何ですか?

4

1 に答える 1