Ответ 1
Похоже, вы пытаетесь запустить действие на сцене (или любой другой объект, кроме вашего спрайта). Второй код должен работать, но вместо этого используйте SKAction.
[head runAction:changeFace];
У меня есть 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]];
Надеюсь, кто-то сможет указать мне в правильном направлении!
Похоже, вы пытаетесь запустить действие на сцене (или любой другой объект, кроме вашего спрайта). Второй код должен работать, но вместо этого используйте SKAction.
[head runAction:changeFace];
У меня он работает здесь, посмотрите на код ниже:
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"];
Обс: Я меняю текстуру в событии touchhesBegan, но это должно работать так, как вы хотите.
Я тоже переживаю это, мне удалось изменить текстуру, но текстура растянута. Что вызывает это?
Попробуйте это
SKAction*animation=[SKAction animateWithTextures:actions timePerFrame:0.1 resize:NO restore:YES];