使用 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 colorizeWithColor 使 SKSpriteNode 闪烁白色
使用带有完成处理程序的循环在多个节点上执行单个 SKAction 动画