我有一本图集,他们是80乘80。但是SKTexture说一些帧是33x80,尽管它们很明显是80x80。怎么啦?我的动画运行时看上去很不对劲。
以下是代码:
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> 'my' 16 textures:
(
"<SKTexture> 'walk00.png' (33 x 80)",
"<SKTexture> 'walk01.png' (80 x 80)",
"<SKTexture> 'walk02.png' (33 x 80)",
... omitted
)为什么会这样呢?我的动画完全失控了,它从一边移到另一边,等等。
发布于 2013-10-09 13:18:05
我找到了解决这个问题的办法。我在用方法做动画
[self.player runAction:[SKAction repeatActionForever:[SKAction animateWithTextures:self.runningFrames timePerFrame:0.05 resize:NO restore:YES]] withKey:@"playerRunning"];把大小调整为是,解决了我所有的问题。
发布于 2014-09-10 13:28:13
尽管这个问题很老,但在我的跑步者身上仍然有一个碰撞检测的问题。早些时候,我曾经使用过这样的方法:
- (CGRect)collisionBoundingBox
{
return self.frame;
}然而,尽管“调整大小”标志( SKAction 7.1),但似乎SKAction或其他东西改变了我的精灵的框架。一旦我将实现更改为:
- (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);
}它的工作非常好,因为texture.size是常数!无论如何,我认为这是一个小故障-我不想要一些发动机改变我的雪碧框架!
https://stackoverflow.com/questions/19269657
复制相似问题