18

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

4 に答える 4

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 イベントでテクスチャを変更しましたが、これは任意の方法で機能するはずです。

于 2014-02-13T02:05:57.880 に答える
3

私もこれを体験しましたが、テクスチャーを変えることはできましたが、テクスチャーはストレッチです. これは何が原因ですか?

于 2014-03-04T02:17:11.927 に答える
0

これを試して

SKAction*animation=[SKAction animateWithTextures:actions timePerFrame:0.1 resize:NO restore:YES];
于 2014-05-13T12:54:39.883 に答える