码迷,mamicode.com
首页 > 其他好文 > 详细

诡异的SpriteKit 游戏查错

时间:2014-07-29 16:52:22      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   文件   io   for   2014   

在Endless Runner 游戏中,做了一些atlas后,发现有个问题,当player跳跃起来的时候,发现他没有动画了,被默认的X图片代替。
原来的图像是这样的。

bubuko.com,布布扣

在增加了一些动画后,我的效果就成这样了。

bubuko.com,布布扣


 
这个不知道为何?
当时碰到这个问题,我去查看了我的player.h,而且去看了的一些提供action的一些方法,结果还是不对,最后发现这个动画是在初始化的时候遍历我们的atlas来提供的,所以去查了一下,终于找到了答案。
原因:
在我们的player sprite相关的类,player.m中,在我们初始化的时候,我们调用了一一个方法来初始换我们的动画效果。代码如下
 

- (void) setupAnimations
{
    self.runFrames = [[NSMutableArray alloc]init];
    SKTextureAtlas *runAtlas = [SKTextureAtlas atlasNamed:@"run"];
    
    for (int i = 0; i < [runAtlas.textureNames count]; i++){
        NSString *tempName = [NSString stringWithFormat:@"run%.3d", i];
        SKTexture *tempTexture = [runAtlas textureNamed:tempName];
        if (tempTexture) {
            [self.runFrames addObject:tempTexture];
        }
    }
    
    self.jumpFrames = [[NSMutableArray alloc] init];
    SKTextureAtlas *jumpAtlas = [SKTextureAtlas atlasNamed:@"jump"];
    for (int i = 0; i < [runAtlas.textureNames count]; i++){
        NSString *tempName = [NSString stringWithFormat:@"jump%.3d", i];
        SKTexture *tempTexture = [jumpAtlas textureNamed:tempName];
        if (tempTexture) {
            [self.jumpFrames addObject:tempTexture];
        }
    }

 


错误就是在这里,我当时是拷贝的函数过去去修改,结果漏了这一个地方,这个地方应该改成jumpAtlas,因为这个方法需要遍历我们的atlas,我们错误的让他去遍历我们的run.atlas文件夹,然后去寻找jump001, jump002等,所以他是找不到相关的文件的,所以导致了会出现默认的那个X来代替我的sprite.

总结,在我们写代码时,可能会出现各种的问题,在差错时会花费我们大量的时间。所以
1) 在拷贝相类似的代码时,需要再三确认是否需要修改。
2) 在我们的游戏出现行为不对的时候,需要先去找到初始化动画的代码,从源头查起,才不会有所疏漏。
 

诡异的SpriteKit 游戏查错,布布扣,bubuko.com

诡异的SpriteKit 游戏查错

标签:style   blog   http   color   文件   io   for   2014   

原文地址:http://www.cnblogs.com/rosegun/p/sprite_game_error.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!