首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpriteKit -将模糊添加到整个场景

问SpriteKit -将模糊添加到整个场景
EN

Stack Overflow用户
提问于 2016-08-04 10:12:26
回答 3查看 1.6K关注 0票数 2

当我的暂停按钮被按下时,我正在尝试模糊我的整个GameScene。我有一个名为blurSceen()的方法,但它似乎没有为场景添加效果。有没有办法可以做到这一点,或者我做错了什么?我看过其他关于这个话题的帖子,但都没能达到这个效果。

代码语言:javascript
复制
       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)
        }
EN

回答 3

Stack Overflow用户

发布于 2016-08-04 14:06:16

从SKEffectNode docs

SKEffectNode对象将其子对象渲染到缓冲区中,并可选择将核心图像滤镜应用于此渲染输出。

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

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

票数 3
EN

Stack Overflow用户

发布于 2017-11-04 19:39:58

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

代码语言:javascript
复制
shouldEnableEffects = true
票数 1
EN

Stack Overflow用户

发布于 2017-11-10 12:07:30

Swift 4:

来自gameScene:

代码语言:javascript
复制
    let  blur = CIFilter(name:"CIGaussianBlur",withInputParameters: ["inputRadius": 10.0])
    self.filter = blur
    self.shouldRasterize = true
    self.shouldEnableEffects = true
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38757427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档