有人知道SKSpriteNode
上两个不同的SKTexture
之间是否有褪色的方法(随着时间的推移)吗。我假设你不能直接做到这一点,并计划使用ZPosition
更高的重复子精灵来实现渐变,但我只是想检查一下,是否有一些使用SKAction
的方法我已经仔细研究过了。
下面的代码应该解决这个问题,假设新纹理适合旧纹理的顶部(它不会将淡出上一个纹理,而只是将淡出顶部的新纹理)。我省略了一些次要的实现细节,比如定时模式。
-(void) fadeTexture:(SKTexture *)newTexture ontoSpriteNode:(SKSpriteNode *)referenceSpriteNode withDuration:(CFTimeInterval)duration {
SKSpriteNode * fadeInSprite = [self fadeInSpriteWithTexture:newTexture referenceSpriteNode:referenceSpriteNode];
[[referenceSpriteNode parent] addChild:fadeInSprite];
[fadeInSprite runAction:[SKAction sequence:@[
[SKAction fadeAlphaTo:1 duration:duration],
[SKAction runBlock:^{
[fadeInSprite removeFromParent];
[referenceSpriteNode setTexture:newTexture];
}]
]]];
}
-(SKSpriteNode *) fadeInSpriteWithTexture:(SKTexture *)newTexture referenceSpriteNode:(SKSpriteNode *)referenceSpriteNode {
SKSpriteNode * fadeInSprite = [SKSpriteNode spriteNodeWithTexture:newTexture size:[referenceSpriteNode size]];
[fadeInSprite setAlpha:0];
[fadeInSprite setAnchorPoint:[referenceSpriteNode anchorPoint]];
[fadeInSprite setPosition:[referenceSpriteNode position]];
return fadeInSprite;
}