【问题标题】:SpriteKit - Adding a blur to the entire SceneSpriteKit - 为整个场景添加模糊
【发布时间】:2016-08-04 02:12:26
【问题描述】:

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

【问题讨论】:

  • 也许您应该考虑只模糊场景中的一些节点。如果你对整个场景进行模糊处理,文本(例如,比分、比赛状态)也会被模糊。这是一个示例:stackoverflow.com/questions/26385156/…
  • @Epsilon 这是我遵循的教程,在我调用上述方法后,我的场景中没有任何东西变得模糊。
  • 您是否添加了一个节点作为effectsNode 的子节点?只有添加到效果节点的节点才会被模糊。

标签: swift xcode sprite-kit skeffectnode


【解决方案1】:

来自SKEffectNode docs

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

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

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

【讨论】:

  • 但是我需要模糊的所有东西都已经有一个父级,即场景本身。
  • 如果你想模糊一切,你很幸运——SKSceneSKEffectNode 的子类,所以你可以将过滤器应用到场景本身。仅当存在您想要模糊的节点时,您才需要添加自己的效果节点(在这种情况下,您需要将效果节点的子对象设置为模糊的对象,并使对象保持不-其他节点或场景的模糊子节点)。
  • 我将如何做到这一点?我以为我上面的代码就可以做到这一点。
  • 要模糊整个场景,请分配给场景本身的filters 属性。 (场景在你的函数中是self。)
  • self.filter = 过滤器?场景仍然没有模糊
【解决方案2】:

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

shouldEnableEffects = true

【讨论】:

    【解决方案3】:

    斯威夫特 4:

    来自游戏场景:

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

    【讨论】:

    • 你知道为什么当我将它应用到我的场景时,它会将渲染区域分成四部分,并且只显示其中一个区域的场景吗?真的很奇怪!
    • 跟进我自己:出于某种原因,我的场景的相机无法很好地使用滤镜。一旦我移除它,整个场景就会呈现这种效果。
    猜你喜欢
    • 2014-04-24
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多