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

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

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

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

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

感谢您的帮助!!! :D

【问题讨论】:

    标签: objective-c sprite-kit skspritenode


    【解决方案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) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-18
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 2015-04-07
        • 2015-07-17
        • 2014-08-24
        • 1970-01-01
        相关资源
        最近更新 更多