SpriteKit Swift 使整个场景变暗,然后再改回来
SpriteKit Swift make an entire scene darker, then change it back
有没有办法让整个场景,包括它的所有子节点(不仅仅是背景色)的颜色变深?我正在寻找类似于此代码的效果:
node.color = SKColor.blackColor()
node.colorBlendFactor = 0.25
以上代码将 node
着色为较深的颜色,同时保持原始颜色(除了那些颜色更深)和细节。
但是,据我所知,此代码不适用于场景,它仅适用于 SKSpriteNode
。有什么办法可以使整个场景变暗吗?答案可能是某种滤镜,一种为场景着色的特殊方法,或者可能就是没有办法。任何帮助!
谢谢
当我需要做类似于你所要求的事情时,我只需在其他所有内容之上添加一个 SKSpriteNode
,如下所示:
let dimPanel = SKSpriteNode(color: UIColor.blackColor(), size: self.size)
dimPanel.alpha = 0.75
dimPanel.zPosition = 100
dimPanel.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
self.addChild(dimPanel)
只需确保面板的 zPosition
大于您要调暗的所有内容。
这样,您还可以使用 SKAction.colorizeWithColor
将面板更改为您想要的任何颜色。
要添加面板然后删除它,您可以从 0 开始 alpha,然后执行:
dimPanel.runAction(SKAction.sequence([
SKAction.fadeAlphaTo(0.75, duration: 3),
SKAction.fadeOutWithDuration(3)
]))
The answer could be some sort of filter...
确实如此。而 is quite practical, it's not the only way. SKScene
inherits from SKEffectNode
,因此您可以将 Core Image 滤镜(或滤镜链)应用到整个场景,作为使其变暗或添加其他视觉效果的一种方式。
一旦你进入 Core Image filters,你就有了各种变暗的选项——例如,你可以通过将参数增加到 CIExposureAdjust
而获得与 CIToneCurve
不同的效果.或者您可以组合多个滤镜,这样您的场景(例如)会淡化为灰度并在变暗时变得模糊。
注意:没有 SKAction
s 用于动画 Core Image 滤镜,但您可以在 update
函数或 customActionWithDuration:actionBlock:
块。
有没有办法让整个场景,包括它的所有子节点(不仅仅是背景色)的颜色变深?我正在寻找类似于此代码的效果:
node.color = SKColor.blackColor()
node.colorBlendFactor = 0.25
以上代码将 node
着色为较深的颜色,同时保持原始颜色(除了那些颜色更深)和细节。
但是,据我所知,此代码不适用于场景,它仅适用于 SKSpriteNode
。有什么办法可以使整个场景变暗吗?答案可能是某种滤镜,一种为场景着色的特殊方法,或者可能就是没有办法。任何帮助!
谢谢
当我需要做类似于你所要求的事情时,我只需在其他所有内容之上添加一个 SKSpriteNode
,如下所示:
let dimPanel = SKSpriteNode(color: UIColor.blackColor(), size: self.size)
dimPanel.alpha = 0.75
dimPanel.zPosition = 100
dimPanel.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
self.addChild(dimPanel)
只需确保面板的 zPosition
大于您要调暗的所有内容。
这样,您还可以使用 SKAction.colorizeWithColor
将面板更改为您想要的任何颜色。
要添加面板然后删除它,您可以从 0 开始 alpha,然后执行:
dimPanel.runAction(SKAction.sequence([
SKAction.fadeAlphaTo(0.75, duration: 3),
SKAction.fadeOutWithDuration(3)
]))
The answer could be some sort of filter...
确实如此。而 SKScene
inherits from SKEffectNode
,因此您可以将 Core Image 滤镜(或滤镜链)应用到整个场景,作为使其变暗或添加其他视觉效果的一种方式。
一旦你进入 Core Image filters,你就有了各种变暗的选项——例如,你可以通过将参数增加到 CIExposureAdjust
而获得与 CIToneCurve
不同的效果.或者您可以组合多个滤镜,这样您的场景(例如)会淡化为灰度并在变暗时变得模糊。
注意:没有 SKAction
s 用于动画 Core Image 滤镜,但您可以在 update
函数或 customActionWithDuration:actionBlock:
块。