使用 SKAction colorizeWithColor 使 SKSpriteNode 闪烁白色

Posted

技术标签:

【中文标题】使用 SKAction colorizeWithColor 使 SKSpriteNode 闪烁白色【英文标题】:Make SKSpriteNode flash white with SKAction colorizeWithColor 【发布时间】:2014-02-26 00:37:23 【问题描述】:

好的,所以我有一个精灵,它假设被某物击中时会闪烁白色,我正在使用它

SKAction *changeColorAction = 
[SKAction colorizeWithColor:[SKColor whiteColor] colorBlendFactor:1.0 duration:1];

精灵会闪烁,但不是白色,而是变成透明的。 如果我使用任何其他颜色,如 redColor、blueColor 等。它可以完美运行。

我怎样才能让它真正变白?

感谢您的帮助!!! :D

【问题讨论】:

【参考方案1】:

用白色着色应该为您提供图像的原始颜色。它实际上意味着“不着色”。您不能将其着色为“白色”。而是使用您准备的使图像看起来更亮的纹理。

【讨论】:

谢谢!是的,这就是我到处阅读的内容。啊。大声笑:) 如果精灵正在动画(例如走路),这不会很好地工作。我认为需要一个 skeffectnode 或着色器来将其设置为白色。我认为这将是非常简单的着色器,但我对 glsl 着色器没有任何技能。【参考方案2】:

试试这个:

func blink() 

    inviolable = true
    lifeCount--

    if lifeCount <= 0 

        lifeCount = 0
    

    var changeColorAction: SKAction = SKAction.runBlock  () -> Void in

        self.alpha = 0.5
    

    var changeBackAction: SKAction = SKAction.runBlock  () -> Void in

        self.alpha = 1.0
    

    var waitAction: SKAction = SKAction.waitForDuration(0.2)

    var finalAction: SKAction = SKAction.runBlock  () -> Void in

        self.inviolable = false
    

    var combined: SKAction = SKAction.sequence(
        [   changeColorAction,
            waitAction,
            changeBackAction,
            waitAction,
            changeColorAction,
            waitAction,
            changeBackAction,
            waitAction,
            changeColorAction,
            waitAction,
            changeBackAction,
            changeColorAction,
            waitAction,
            changeBackAction,
            changeColorAction,
            waitAction,
            changeBackAction,
            finalAction])

    runAction(combined)

【讨论】:

【参考方案3】:

非常感谢您提出 alpha 技巧。非常适合我正在寻找的东西。

你可以使用

run(SKAction.repeat(SKAction.sequence(changeColorAction,
            waitAction,
            changeBackAction,
            waitAction), count: 4) 

【讨论】:

以上是关于使用 SKAction colorizeWithColor 使 SKSpriteNode 闪烁白色的主要内容,如果未能解决你的问题,请参考以下文章

一次运行两个 SKAction

是否可以在 SKAction 中途结束?

使用 SKAction colorizeWithColor 使 SKSpriteNode 闪烁白色

使用带有完成处理程序的循环在多个节点上执行单个 SKAction 动画

SKAction playSoundFileNamed 播放白噪声

更改 SKAction playSoundFileNamed 的持续时间