私のプロジェクトでは、いくつかのスプライトノードの周りにグロー効果を提供するために使用する SKEffectNode があります。spriteNode (blurNode) を使用して障害物の色を取得し、それを effectNode に渡します。これはうまくいきます。
let blurNode = SKSpriteNode(imageNamed: "neonLine.png")
blurNode.color = obstacle.color
blurNode.colorBlendFactor = 1.0
blurNode.size = CGSize(width: obstacle.size.width + 30, height: obstacle.size.height + 30)
let effectNode = SKEffectNode()
effectNode.shouldRasterize = true
obstacle.addChild(effectNode)
effectNode.addChild(blurNode)
effectNode.filter = CIFilter(name: "CIGaussianBlur", withInputParameters: ["inputRadius":30])
effectNode.alpha = 1.0
私の問題はここで発生します。
let colorFadegreen = SKAction.sequence([SKAction.colorize(with: UIColor(red: 0, green: 0.6471, blue: 0.3569, alpha: 1.0), colorBlendFactor: 1.0, duration: 3)])
obstacle.removeAllActions()
obstacle.run(colorFadegreen)
blurNode.removeAllActions()
blurNode.run(colorFadegreen)
私がやりたいのは、障害物の周りにある「輝き」を障害物で色を変えることです。それがまさに起こることです。ただし、そうすると、フレームレートが 30fps に低下します。
それで、私の質問は、このタスクのパフォーマンスを改善する方法を知っている人はいますか? または、これを行う別の方法があるのでしょうか。
私が考えたアイデアの 1 つは、Photoshop で「neonLine.png」を手動でぼかしてから、そのようにぼかしノードに追加すること
let blurNode = SKSpriteNode(imageNamed: "bluredNeonLine.png")
です。唯一のことは、ぼかしを正しく取得できないことです。常にぼやけて見えます。
どんな助けでも大歓迎です。ありがとう!
編集:
これが私のプロジェクトのグローの写真です:
グローとラインの色の変化は次のとおりです。