Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SKTexture返回错误的大小?_Ios_Ios7_Sprite Kit - Fatal编程技术网

Ios SKTexture返回错误的大小?

Ios SKTexture返回错误的大小?,ios,ios7,sprite-kit,Ios,Ios7,Sprite Kit,我有一个图像图谱,它们是80乘80。但SKTexture表示,尽管某些帧显然是80x80,但其中一些帧是33x80。怎么了?我的动画运行时看起来非常错误 代码如下: SKTextureAtlas *myAtlas = [SKTextureAtlas atlasNamed:@"my"]; NSInteger numberOfImages = [run.textureNames count]; NSLog(@"atlas: %@", myAtlas); for (int i = 0; i <

我有一个图像图谱,它们是80乘80。但SKTexture表示,尽管某些帧显然是80x80,但其中一些帧是33x80。怎么了?我的动画运行时看起来非常错误

代码如下:

SKTextureAtlas *myAtlas = [SKTextureAtlas atlasNamed:@"my"];
NSInteger numberOfImages = [run.textureNames count];

NSLog(@"atlas: %@", myAtlas);

for (int i = 0; i < numberOfImages; i++) {
    NSString *textureName = [NSString stringWithFormat:@"walk%.2d", i];
    SKTexture *temp = [myAtlas textureNamed:textureName];
    [self.runningFrames addObject:temp];
}
SKTextureAtlas*myAtlas=[SKTextureAtlas atlasNamed:@“我的”];
NSInteger numberOfImages=[run.textureNames count];
NSLog(@“atlas:%@”,myAtlas);
对于(int i=0;i
日志记录返回以下内容:

<SKTextureAtlas> 'my' 16 textures:
 (
    "<SKTexture> 'walk00.png' (33 x 80)",
    "<SKTexture> 'walk01.png' (80 x 80)",
    "<SKTexture> 'walk02.png' (33 x 80)",
... omitted
)
“我的”16种纹理:
(
“'walk00.png'(33 x 80)”,
“'walk01.png'(80 x 80)”,
“'walk02.png'(33 x 80)”,
…省略
)

为什么呢?我的动画完全失控,它从一边移到另一边,等等。

我找到了解决问题的方法。我正在用这个方法制作动画

[self.player runAction:[SKAction repeatActionForever:[SKAction animateWithTextures:self.runningFrames timePerFrame:0.05 resize:NO restore:YES]] withKey:@"playerRunning"];

将resize更改为YES修复了我的所有问题。

尽管这个问题已经很老了,但在我的跑步者中仍然存在碰撞检测问题。之前我用过这样的方法:

- (CGRect)collisionBoundingBox
{
    return self.frame;
}
然而,似乎SKAction或其他东西改变了我的精灵的框架,尽管有“resize”标志(iOS 7.1)。一旦我将实施更改为:

- (CGRect)collisionBoundingBox
{
    CGFloat x = self.position.x;
    CGFloat y = self.position.y;
    CGFloat w = self.texture.size.width;
    CGFloat h = self.texture.size.height;
    return CGRectMake(x - w / 2, y - h / 2, w, h);
}

它工作得非常好,因为纹理大小是恒定的!无论如何,我认为这是一个小故障-我不想让一些引擎改变我的雪碧帧

步行一号有很多透明的空间(alpha)区域吗?请看这段视频,了解我为什么问@Smick是的,它有很多alpha。所以我应该在所有图像中添加1%的alpha作为背景,以避免这种情况?这看起来像是一个黑客是的,是一个黑客,所以我会做视频中那个家伙做的事。我不喜欢视频的链接,比如说Youtube现在没有加载。你能说说他是干什么的吗?我看了视频,想在同一个问题上寻求帮助,但视频中的那个家伙所做的正是Dvole所建议的。干得好!我在寻找SKTEXTEREATLAS中的东西,没想到要在SKAction中寻找。将不得不用这种方法做一些测试。太棒了!!!这也解决了我的问题谢谢!但还是不明白为什么。。我只是简单地用纹理:timePerFrame:制作动画,开始时一切都很好,但过了一段时间,问题就出现了。。