Xcode 为初学者提供帮助。Cocos2s/2d平台

Xcode 为初学者提供帮助。Cocos2s/2d平台,xcode,cocos2d-iphone,nsmutablearray,collision,Xcode,Cocos2d Iphone,Nsmutablearray,Collision,我正在绞尽脑汁寻找NSMutableArrays,需要一些帮助 我试着测试“玩家”和“硬币”在关卡中的碰撞,就像传统的马里奥一样 我收到一个崩溃报告,“*集合在枚举时发生了变异。” 我遵循了类似的精灵碰撞方法,如下所示: 出于某种原因,如果只产生了1枚硬币,那么一切都正常-但是如果产生了>1枚硬币,任何硬币碰撞都会导致崩溃 我知道这是一个noob问题,与[delete addObject:nuCoin]有关;-我已经环顾四周,阅读了制作子数组来处理删除功能的内容-但是我显然迷路了,如果能得到帮

我正在绞尽脑汁寻找
NSMutableArrays
,需要一些帮助

我试着测试“玩家”和“硬币”在关卡中的碰撞,就像传统的马里奥一样

我收到一个崩溃报告,“*集合在枚举时发生了变异。”

我遵循了类似的精灵碰撞方法,如下所示:

出于某种原因,如果只产生了1枚硬币,那么一切都正常-但是如果产生了>1枚硬币,任何硬币碰撞都会导致崩溃

我知道这是一个noob问题,与[delete addObject:nuCoin]有关;-我已经环顾四周,阅读了制作子数组来处理删除功能的内容-但是我显然迷路了,如果能得到帮助,我将不胜感激,提前谢谢

-(void) coinCollision {

    NSMutableArray *coinsToDelete = [[NSMutableArray alloc] init];
    NSMutableArray *delete = [[NSMutableArray alloc] init];

    for (CCSprite *nuCoin in _coins) {


        CGRect coinRect = CGRectMake((nuCoin.position.x+1) - (nuCoin.contentSize.width/4),
                                     (nuCoin.position.y+5) - (nuCoin.contentSize.height/4),
                                     nuCoin.contentSize.width/3.5,
                                     nuCoin.contentSize.height/7);




    for (CCSprite *Player in _player) {
        CGRect playerRect = CGRectMake(player.position.x - (player.contentSize.width/4),
                                    player.position.y - (player.contentSize.height*.05),
                                    player.contentSize.width*.05,
                                    player.contentSize.height/2);



            if (CGRectIntersectsRect(coinRect, playerRect)) {

                [coinsToDelete addObject:nuCoin];}


        }


    for (CCSprite *nuCoin in coinsToDelete) {

        [[SimpleAudioEngine sharedEngine] playEffect:@"Coin.mp3"];
        [_coins removeObject:nuCoin];

        [delete addObject:nuCoin];
        [map removeChild:nuCoin cleanup:YES];

    }

    }

    [delete release];

}

在(…in…)循环的快速枚举
中,不能向可变数组添加对象或从可变数组中删除对象。您需要开发一些其他逻辑来实现这一点(例如,存储要删除的对象的索引,或者将它们标记为可删除,在完成for循环后,一步删除所有对象)

例如:

NSMutableArray *markedAsDeletee = [NSMutableArray array];
for (CCSprite *sprite in array)
{
    if (/* decide wheteher this sprite should be deleted */)
        [markedAsDeletee addObject:sprite];
}

[array removeObjectsInArray:markedAsDeletee];

谢谢你的帮助,-我处于这样一个noob水平,虽然我理解你说什么,但无法描绘代码。你/某人能举个例子吗?谢谢:)@user1593384当然可以,但你能考虑一下吗?这是一项显而易见的任务。:)我整天都在考虑这个问题——最糟糕的是我明白这本来就很容易。太令人沮丧了,我错过了这个基本的理解/学习:)@user1593384试着用算法思考。考虑你想达到的目标,以及如何把它变成你所使用的语言可以解释的更小的块。用户1593384啊,如果我的答案真的有用的话,我会很感激将其标记为已接受。谢谢