首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKTexture返回错误的大小?

SKTexture返回错误的大小?
EN

Stack Overflow用户
提问于 2013-10-09 10:36:11
回答 2查看 973关注 0票数 0

我有一本图集,他们是80乘80。但是SKTexture说一些帧是33x80,尽管它们很明显是80x80。怎么啦?我的动画运行时看上去很不对劲。

以下是代码:

代码语言:javascript
复制
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];
}

日志记录返回以下内容:

代码语言:javascript
复制
<SKTextureAtlas> 'my' 16 textures:
 (
    "<SKTexture> 'walk00.png' (33 x 80)",
    "<SKTexture> 'walk01.png' (80 x 80)",
    "<SKTexture> 'walk02.png' (33 x 80)",
... omitted
)

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-09 13:18:05

我找到了解决这个问题的办法。我在用方法做动画

代码语言:javascript
复制
[self.player runAction:[SKAction repeatActionForever:[SKAction animateWithTextures:self.runningFrames timePerFrame:0.05 resize:NO restore:YES]] withKey:@"playerRunning"];

把大小调整为是,解决了我所有的问题。

票数 6
EN

Stack Overflow用户

发布于 2014-09-10 13:28:13

尽管这个问题很老,但在我的跑步者身上仍然有一个碰撞检测的问题。早些时候,我曾经使用过这样的方法:

代码语言:javascript
复制
- (CGRect)collisionBoundingBox
{
    return self.frame;
}

然而,尽管“调整大小”标志( SKAction 7.1),但似乎SKAction或其他东西改变了我的精灵的框架。一旦我将实现更改为:

代码语言:javascript
复制
- (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是常数!无论如何,我认为这是一个小故障-我不想要一些发动机改变我的雪碧框架!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19269657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档