Ios SKTexture返回错误的大小?
我有一个图像图谱,它们是80乘80。但SKTexture表示,尽管某些帧显然是80x80,但其中一些帧是33x80。怎么了?我的动画运行时看起来非常错误 代码如下: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 <
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:制作动画,开始时一切都很好,但过了一段时间,问题就出现了。。