显示CCSprite七次

时间:2013-07-18 04:14:59

标签: ios objective-c cocos2d-iphone kobold2d

我是Cocos2d的初学者,我希望以横向模式显示7个硬币。所以这就是我在主要游戏玩法层中所写的内容:

在我的初学者中,我有这个

coins  = [CCSprite spriteWithFile:@"coins.png"];

我为我想要的硬币图案制作了一种方法(显示七次)

- (void)coinPatterns {
    coins.position = ccp(150,150);

    for(int i = 0; i < 7; i++)
    {
        coins.position = ccp (coins.position.x + 20, coins.position.y);
        [self addChild:coins];
    }
}

然后我在我的更新方法中添加了这个

[self coinPatterns];

但由于某种原因,我的代码不断崩溃。有谁知道我怎么解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:3)

我认为你想要做的是为每个硬币创建一个单独的精灵节点,而不是一遍又一遍地重复使用相同的精灵节点(我甚至不确定它是否有效)。你会这样做

- (void)coinPatterns {
    NSInteger originalX = 150;
    for(int i = 0; i < 7; i++)
    {
        CCSprite *coin = [CCSprite spriteWithFile:@"coins.png"];
        coin.position = ccp(originalX, 150);
        originalX += 20;
        [self addChild:coin];
    }
}

这会产生7个硬币,每个硬币间隔20个。此外,在您提供的代码中,所有7个硬币都会堆叠在一起,因为x值从未实际增加。如果使用它,则不必拥有变量或属性coins

如果您想稍后访问这些硬币,例如查看是否有人物碰到它们,您可以制作NSMutableArray属性coinArray,然后将每个硬币添加到数组中添加该行[self.coinArray addObject:coin];下的for循环[self addChild:coin];。这会将它们全部放入阵列中。

要检测碰撞,请按照

的方式执行某些操作
- (void)characterMoved:(CCSprite *)character 
{
    for (CCSprite *coin in self.coinArray)
    {
        if (CGRectIntersectsRect(coin.frame, character.frame)
            // character and coin collided, add points or remove the coin or something
     }
}

这需要你有一个方法characterMoved:每次角色移动时都会触发。