web-dev-qa-db-ja.com

SKSpriteNodeのテクスチャを変更します

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]];

誰かが私を正しい方向に向けることができることを願っています!

18
zipie

シーン(またはスプライト以外のオブジェクト)でアクションを実行しようとしているようです。ただし、2番目のコードは機能するはずですが、SKActionを使用して代わりにこれを試してください。

[head runAction:changeFace];
15

私はそれをここで動作させています、以下のコードを見てください:

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

11
Daniel Lima

これも体験して、風合いを変えることができましたが、風合いは伸びています。これは何が原因ですか?

3
user1969245

これを試して

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