使用Sprite Kit将相同sprite的倍数绘制为背景

时间:2014-01-30 12:35:28

标签: ios objective-c sprite-kit skspritenode

所以我要做的是使用一个持有者(SKSpriteNode *精灵)并从一组三个精灵加载: 珊瑚 水 基

我打算做的是基于之前创建的NSMutableArrays,在iPad屏幕的位置绘制特定的纹理,例如:

位置1,6:水 位置5,18:珊瑚。

正在发生的问题是它只绘制一个纹理而没有其他纹理。有没有解决这个问题?我应该以不同的方式解决这个问题吗?

// Load the sprites
SKSpriteNode *sprite;

TerrainType ter;

for (int i = 0; i < numberOfRows; i++)
{
    innerArray = [terrainArray objectAtIndex:i];

    for (int j = 0; j < rowLength; j++)
    {
        ter = [[innerArray objectAtIndex:j] intValue];
        sprite = [[SKSpriteNode alloc] init];

        switch (ter)
        {
            case base1:
                sprite = [SKSpriteNode spriteNodeWithImageNamed:@"MidBase"];
                break;

            case base2:
                sprite = [SKSpriteNode spriteNodeWithImageNamed:@"MidBase"];
                break;

            case coral:
                sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Coral"];
                break;

            default:
                sprite = [SKSpriteNode spriteNodeWithImageNamed:@"PureWater"];
                break;

        }
        sprite.position = CGPointMake(rowLength + width30, numberOfRows + height30);
        [self addChild:sprite];
    }
}

1 个答案:

答案 0 :(得分:1)

看起来你正在将所有精灵加载到同一位置:

sprite.position = CGPointMake(rowLength + width30, numberOfRows + height30);

您正在为所有这些创建相同的CGPointMake(不确定width30和height30是什么,但它们似乎不会在代码中的任何位置更改/增加)。如果Sprites也具有相同的大小,则它们将叠加在另一个上。而你最终只看到最后一个加载。

我假设您希望以某种方式使此位置与两个for循环索引j和i相关。