2

按下暂停按钮时,我试图模糊整个 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)
        }
4

3 回答 3

3

SKEffectNode文档

对象将SKEffectNode其子对象渲染到缓冲区中,并可选择将 Core Image 过滤器应用于此渲染输出。

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

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

于 2016-08-04T06:06:16.087 回答
1

我试图模糊整个 SKScene 时遇到了同样的问题,但它不起作用。缺失的部分是这一行:

shouldEnableEffects = true
于 2017-11-04T11:39:57.593 回答
1

斯威夫特 4:

来自游戏场景:

    let  blur = CIFilter(name:"CIGaussianBlur",withInputParameters: ["inputRadius": 10.0])
    self.filter = blur
    self.shouldRasterize = true
    self.shouldEnableEffects = true
于 2017-11-10T04:07:29.733 回答