0

SpriteKit ゲームのテクスチャに問題があります:

touchesBegan私は:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

  UITouch *touch = [touches anyObject];
  CGPoint location = [touch locationInNode:self];

  SKNode *node = [self nodeAtPoint:location];

  if ([node.name isEqualToString:@"worm"]) {

    [node removeAllActions];
    SKAction *change = [SKAction setTexture:[SKTexture textureWithImageNamed:@"worm2"]];
    [node runAction:change];

このコードは機能しますが、新しいテクスチャ "worm2" がスケーリングされているため、本来の状態と比べて見栄えが悪くなります。

Apple ドキュメントから、https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKAction_Ref/Reference/Reference.html#//apple_ref/occ/clm/SKAction/setTexture:resize :

メソッドがあるはずです: setTexture:resize:

しかし、私が載せた写真からわかるように、この方法は存在しません.. ここに画像の説明を入力

私は何が欠けていますか?

みんなありがとう

4

3 に答える 3

2

[SKAction setTexture:resize:]iOS 7.1でのみ利用可能だと思います。API の相違点をご覧ください。

古いバージョンを実行している場合は、Xcode を最新バージョン (5.1) に更新してください。

于 2014-03-11T16:29:35.027 に答える
1

このコード:

SKAction *change = [SKAction setTexture:[SKTexture textureWithImageNamed:@"worm2"]];
[node runAction:change];

テクスチャを直接変更するのと同じです:

SKSpriteNode* sprite = (SKSpriteNode*)node;
sprite.texture = [SKTexture textureWithImageNamed:@"worm2"];
// optional: update sprite size to match texture size
sprite.size = sprite.texture.size;

テクスチャの変更を遅らせたくない場合を除き、アクションを使用してテクスチャを変更する必要はありません (そして効率が低下します)。

于 2014-03-11T16:30:49.337 に答える