在SKSpriteNode上更改纹理

时间:2013-10-27 13:32:01

标签: ios7 sprite-kit

我有一个SKSpriteNode,我想在用户触摸屏幕时更改其上的纹理。但无法弄清楚如何做到这一点。

创建并添加头部。 (在标题中声明)。

    head = [SKSpriteNode spriteNodeWithImageNamed:[NSString stringWithFormat:@"%@",face]];
    head.position = CGPointMake(size.width / 2, size.height / 2);
    [self addChild:head];

当检测到触摸时,运行以下内容,但我无法确定如何将其应用于SKSpritenode?!

            SKAction* changeFace = [SKAction setTexture:[SKTexture textureWithImageNamed:[NSString stringWithFormat:@"%@",face]]];
            [self runAction:changeFace];

我也试过以下,但它似乎没有用......

            head.texture = [SKTexture textureWithImageNamed:[NSString stringWithFormat:@"%@",face]];

希望有人能够指出我正确的方向!

4 个答案:

答案 0 :(得分:15)

看起来你正在尝试在场景上运行动作(或者除了你的精灵之外的任何其他对象。)第二个代码应该可以工作,但是使用SKAction试试这个。

[head runAction:changeFace];

答案 1 :(得分:11)

我在这里工作,请看下面的代码:

1 - 创建SKSpriteNode

self.ninja = [SKSpriteNode spriteNodeWithImageNamed:@"ninja1"];
self.ninja.position = CGPointMake(self.ninja.size.width/2, self.frame.size.height/2);
[self addChild:self.ninja];

2 - 更改纹理:

self.ninja.texture = [SKTexture textureWithImageNamed:@"ninja2"];

Obs:我在touchesBegan事件中更改了纹理,但这应该以你想做的任何方式工作。

答案 2 :(得分:3)

我也遇到过这个,我能够改变纹理,但纹理是拉伸的。 造成这种情况的原因是什么?

答案 3 :(得分:0)

试试这个

SKAction*animation=[SKAction animateWithTextures:actions timePerFrame:0.1 resize:NO restore:YES];