0

所以我想做的是使用一个支架(SKSpriteNode * sprite)并从一组三个精灵中加载:珊瑚水基地。

我打算做的是基于先前创建的 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];
    }
}
4

1 回答 1

1

看起来您正在将所有 Sprite 加载到同一位置:

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

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

我假设你想让这个位置以某种方式与两个 for 循环索引 j 和 i 相关。

于 2014-01-30T13:23:00.937 回答