按下暂停按钮时,我试图模糊整个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)
}
答案 0 :(得分:3)
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