我试图让游戏精灵在受到损坏时闪现一种颜色,颜色会迅速恢复正常。所有精灵都有位图纹理,但它们不受命令的影响。我在具有纯色背景的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.立即设置颜色然后使其淡化恢复正常。
非常感谢任何帮助。 千瓦
答案 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)