所以我要做的是使用一个持有者(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];
}
}
答案 0 :(得分:1)
看起来你正在将所有精灵加载到同一位置:
sprite.position = CGPointMake(rowLength + width30, numberOfRows + height30);
您正在为所有这些创建相同的CGPointMake(不确定width30和height30是什么,但它们似乎不会在代码中的任何位置更改/增加)。如果Sprites也具有相同的大小,则它们将叠加在另一个上。而你最终只看到最后一个加载。
我假设您希望以某种方式使此位置与两个for循环索引j和i相关。