我有一个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]];
希望有人能够指出我正确的方向!
答案 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];