所以我想做的是使用一个支架(SKSpriteNode * Sprite )并从一组三个 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];
}
}
最佳答案
看起来您正在将所有 Sprites 加载到同一位置:
sprite.position = CGPointMake(rowLength + width30, numberOfRows + height30);
您正在为所有这些创建一个相同的 CGPointMake(不确定 width30 和 height30 是什么,但它们似乎不会在代码中的任何地方更改/增加)。如果 Sprites 的大小也相同,它们将一个一个地叠加在另一个上面。您最终只会看到最后一个已加载。
我假设你想让这个位置以某种方式与两个 for 循环索引 j 和 i 相关。
关于ios - 使用 Sprite Kit 绘制多个相同的 Sprite 作为背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21456718/