使用纹理着色精灵不起作用

时间:2017-02-14 10:31:25

标签: ios swift sprite-kit skspritenode

我试图让游戏精灵在受到损坏时闪现一种颜色,颜色会迅速恢复正常。所有精灵都有位图纹理,但它们不受命令的影响。我在具有纯色背景的SpriteNode上尝试了相同的功能,但确实有效,但颜色在中淡出而不是:

//defines sprite
let mySprite = SKSpriteNode(imageNamed: "myTexture")
//defines action to colourise sprite over half a second
 let tintSprite = SKAction.colorizeWithColor(SKColor.redColor(), colorBlendFactor: 1, duration: 0.5)
mySprite.runAction(tintSprite)

似乎没有任何事情发生,我认为这个动作不适用于纹理。在没有纹理的简单精灵上测试它,但在持续时间内淡入:

 let test = SKSpriteNode.init(color: SKColor.blackColor(), size: CGSizeMake(80, 80))
        test.position.x = 100
        test.position.y = 200
        let tintTest = SKAction.colorizeWithColor(SKColor.redColor(), colorBlendFactor: 1, duration: 5)
        test.runAction(tintTest)
        self.addChild(test)

这种方法很好但在2秒内从原来的黑色渐变为红色。

有谁知道如何: 1.色调纹理精灵 2.立即设置颜色然后使其淡化恢复正常。

非常感谢任何帮助。 千瓦

1 个答案:

答案 0 :(得分:1)

添加self.addChild(mySprite)

时,第一个“方法”正在运行
//defines sprite
let mySprite = SKSpriteNode(imageNamed: "myTexture")
self.addChild(mySprite) // missing
//defines action to colourise sprite over half a second
 let tintSprite = SKAction.colorizeWithColor(SKColor.redColor(), colorBlendFactor: 1, duration: 0.5)
mySprite.runAction(tintSprite)

淡出它:

let tintSpriteBack = SKAction.colorizeWithColorBlendFactor(0, duration: 0.5)
mySprite.runAction(tintSpriteBack)

适用于SWIFT 3

let tintSprite = SKAction.colorize(with: SKColor.red, colorBlendFactor: 1, duration: 0.5)
mySprite.run(tintSprite)

let tintSpriteBack = SKAction.colorize(withColorBlendFactor: 0, duration: 0.5)
mySprite?.run(tintSpriteBack)