SpriteKit - 为整个场景添加模糊

时间:2016-08-04 02:12:26

标签: swift xcode sprite-kit skeffectnode

按下暂停按钮时,我试图模糊整个GameScene。我有一个名为blurSceen()的方法,但它似乎并没有将效果添加到场景中。有没有办法可以实现这个目标,还是我做错了什么?我已经查看了有关此主题的其他帖子,但尚未能完成此效果。

       func blurScreen() {     
            let effectsNode = SKEffectNode()

            let filter = CIFilter(name: "CIGaussianBlur")
            let blurAmount = 10.0
            filter!.setValue(blurAmount, forKey: kCIInputRadiusKey)

            effectsNode.filter = filter
            effectsNode.position = self.view!.center
            effectsNode.blendMode = .Alpha

            // Add the effects node to the scene
            self.addChild(effectsNode)
        }

3 个答案:

答案 0 :(得分:3)

来自SKEffectNode docs

  

SKEffectNode对象将其子项呈现为缓冲区,并可选择将Core Image过滤器应用于此呈现的输出。

效果节点仅将过滤器应用于其子节点。您的效果节点没有子节点,因此无需应用过滤器。

您可能想要的是尽早在场景中添加效果节点 - 但不要在其上设置过滤器 - 并将您以后想要模糊的所有节点放入其中作为它的孩子。在应用模糊时,请在(已存在,已有子节点)效果节点上设置过滤器。

答案 1 :(得分:1)

我有同样的问题试图模糊整个SKScene,它只是没有工作。这个难题的缺失就是这一行:

shouldEnableEffects = true

答案 2 :(得分:0)

Swift 4:

来自gameScene的

    let  blur = CIFilter(name:"CIGaussianBlur",withInputParameters: ["inputRadius": 10.0])
    self.filter = blur
    self.shouldRasterize = true
    self.shouldEnableEffects = true