我正在尝试使用一个简单的动画创建一个节点,因此我创建了一个动画,每个帧都作为.png文件,我将它们全部放在一个文件夹中,并将其命名为stoneanimation2.atlas。
这是我尝试过的代码:
SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"stoneanimation2"];
SKTexture *stone2 = [atlas textureNamed:@"stone2.png"];
SKTexture *stone3 = [atlas textureNamed:@"stone3.png"];
SKTexture *stone4 = [atlas textureNamed:@"stone4.png"];
SKTexture *stone5 = [atlas textureNamed:@"stone5.png"];
SKTexture *stone6 = [atlas textureNamed:@"stone6.png"];
SKTexture *stone7 = [atlas textureNamed:@"stone7.png"];
SKTexture *stone8 = [atlas textureNamed:@"stone8.png"];
SKTexture *stone9 = [atlas textureNamed:@"stone9.png"];
SKTexture *stone10 = [atlas textureNamed:@"stone10.png"];
SKTexture *stone11 = [atlas textureNamed:@"stone11.png"];
SKTexture *stone12 = [atlas textureNamed:@"stone12.png"];
SKTexture *stone13 = [atlas textureNamed:@"stone13.png"];
SKTexture *stone14 = [atlas textureNamed:@"stone14.png"];
SKTexture *stone15 = [atlas textureNamed:@"stone15.png"];
SKTexture *stone16 = [atlas textureNamed:@"stone16.png"];
SKTexture *stone17 = [atlas textureNamed:@"stone17.png"];
SKTexture *stone18 = [atlas textureNamed:@"stone18.png"];
SKTexture *stone20 = [atlas textureNamed:@"stone20.png"];
SKTexture *stone21 = [atlas textureNamed:@"stone21.png"];
SKTexture *stone22 = [atlas textureNamed:@"stone22.png"];
SKTexture *stone23 = [atlas textureNamed:@"stone23.png"];
SKTexture *stone24 = [atlas textureNamed:@"stone24.png"];
SKTexture *stone25 = [atlas textureNamed:@"stone25.png"];
SKTexture *stone26 = [atlas textureNamed:@"stone26.png"];
SKTexture *stone27 = [atlas textureNamed:@"stone27.png"];
SKTexture *stone28 = [atlas textureNamed:@"stone28.png"];
NSArray *atlasTexture = @[stone2,stone3,stone4,stone5,stone6,stone7,stone8,stone9,stone10,stone11,stone12,stone13,stone14,stone15,stone16,stone17,stone18,stone20,stone21,stone22,stone23,stone24,stone25,stone26,stone27,stone28];
stoneAnimation = [SKAction animateWithTextures:atlasTexture timePerFrame:.01];
之前,我只有10帧左右。但是我决定添加更多,我认为它与图集本身搞混了,因为Xcode说“SpriteKit Texture Atlas Generator Error”这是错误信息:
Command /Applications/Xcode.app/Contents/Developer/Tools/../usr/bin/TextureAtlas failed with exit code 11
每次我完全制作新地图集,或者只是重命名它,看看是否有效,我都会得到同样的错误。此外,在构建设置中,我将“启用Atlas Generator”设置为“YES”。我已经尝试重置IOS模拟器,以及我能想到的一切!请帮助!
答案 0 :(得分:1)
当我的纹理图集中有太多大图像时,这个错误发生在我身上。将它分成两个单独的地图集后,游戏就构建得很好。
答案 1 :(得分:1)
我发现我的问题是纹理图集没有正确导入,我认为是因为我之前正确导入它然后更改了它。所以我有一个?通过项目导航器中的纹理图集。我没有需要更改任何代码,我所做的只是右键单击纹理图集并单击:源代码控制>添加所选文件。
它与我的代码无关
答案 2 :(得分:0)
添加属性NSArray * _stoneFrames;
-(void)addObject
{
NSMutableArray *stoneAnimationFrames = [NSMutableArray array];
SKTextureAtlas *stoneAnimatedAtlas = [SKTextureAtlas atlasNamed:@"stoneanimation2"];
int numImages = stoneAnimatedAtlas.textureNames.count;
for (int i=1; i <= numImages; i++) {
NSString *textureName = [NSString stringWithFormat:@"stone%d", i];
SKTexture *temp = [stoneAnimatedAtlas textureNamed:textureName];
[stoneAnimationFrames addObject:temp];
}
_stoneFrames = stoneAnimationFrames;
SKTexture *temp = _stoneFrames[0];
_stone = [SKSpriteNode spriteNodeWithTexture:temp];
[self addChild:_stone];
[self animateStone];
}
-(void)animateStone
{
[_stone runAction:[SKAction repeatActionForever:
[SKAction animateWithTextures:_stoneFrames
timePerFrame:0.1f
resize:NO
restore:YES]] withKey:@"animated Stone"];
return;
}
您还可以查看此博文http://www.raywenderlich.com/45152/sprite-kit-tutorial-animations-and-texture-atlases