SpriteKit Swift使整个场景变暗,然后将其改回

时间:2015-12-20 20:20:04

标签: swift sprite-kit skscene sknode

有没有办法让整个场景,包括它的所有子节点(不仅仅是背景颜色)颜色更深?我正在寻找类似于此代码的效果:

node.color = SKColor.blackColor()
node.colorBlendFactor = 0.25

上面的代码将node颜色加深,同时保持原始颜色(除了那些颜色只是更暗)和细节。 但是,据我所知,此代码不适用于场景,它只适用于SKSpriteNode。有没有办法让整个场景变暗?答案可能是某种过滤器,一种特殊的场景着色方式,或者可能没有办法。一切都有帮助!

由于

1 个答案:

答案 0 :(得分:3)

  

答案可能是某种过滤器......

事实上。虽然@TrentSartain's answer非常实用,但并不是唯一的方法。 SKScene继承自SKEffectNode,因此您可以将核心图像滤镜(或滤镜链)应用于整个场景,以此作为使其变暗或添加其他视觉效果的方法。

一旦进入Core Image filters,您就拥有了各种变暗选项 - 例如,您可以将参数变为CIExposureAdjust而不是CIToneCurve。或者你可以组合几个滤镜,所以你的场景(例如)会变暗,灰度变暗,模糊不清。

注意:动态核心图像过滤器没有SKAction,但您可以在CIFilter函数或{{3}中更改update个对象的参数阻止。