使用SKEffectNode以增量方式模糊SKShapeNode

Rag*_*ghu 4 ios sprite-kit skeffectnode swift

我正试图在我的程序中模糊SKShapenode.但是,我希望shapenode逐渐模糊,持续时间约为1秒.我如何实现这一目标?目前的代码立即模糊了它.

func generateAnimation() {

var blurAction : SKAction = SKAction.runBlock{
   //the method below returns a shapeNode
    var circle = self.generateImage()
    var effect : SKEffectNode = SKEffectNode()
    var filter : CIFilter = CIFilter(name:"CIGaussianBlur")
    filter.setValue(10, forKey: "inputRadius")
    effect.filter = filter
    effect.addChild(circle)
    self.addChild(effect)           
}
Run Code Online (Sandbox Code Playgroud)

ric*_*ter 6

updateSKScene子类(或委托)中实现该方法.然后,在一秒钟的过程中,每次update调用方法时再次运行此行:

filter.setValue(10, forKey: "inputRadius")
Run Code Online (Sandbox Code Playgroud)

除了传递值之外10,根据经过的时间在0到10之间进行插值.

您可能会发现每帧重新渲染模糊使得难以保持平滑的帧速率.所以你可以考虑伪装它.制作两个节点,其中一个节点具有模糊效果,并使用fadeInWithDuration/ fadeOutWithDurationactions来淡化模糊节点并淡出不模糊节点.