2

私のプロジェクトでは、いくつかのスプライトノードの周りにグロー効果を提供するために使用する 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")です。唯一のことは、ぼかしを正しく取得できないことです。常にぼやけて見えます。

どんな助けでも大歓迎です。ありがとう!

編集:

これが私のプロジェクトのグローの写真です:

iPhoneゲームの光るライン

グローとラインの色の変化は次のとおりです。

iPhoneゲームの光るライン

4

1 に答える 1

2

グローに関するパフォーマンスの質問に対する 3 つの回答:

    1. 質問で言及されているように、Photoshop または同様のビットマップ エディターで作成された、事前にレンダリングされたグローを使用し、不透明度のあるビットマップとしてエクスポートし、SKSpriteNode テクスチャとして使用します。
    1. 次の例のように、SpriteKit 内で望ましいグローを作成する SKEffectNode のテクスチャをテクスチャに焼き付けてから、SKSpriteNode にロードします。
    1. SKEffectNode からの結果をラスタライズし、カラー キャストの変更によって再レンダリングが発生しないことを願っています。これは素晴らしい拡張機能で示されています: https://stackoverflow.com/a/40362874/2109038

いずれの場合も、好きなようにフェードアウトする白いグローをレンダリングしてから、カラー ブレンドの変更を適用することをお勧めします。これは、SpriteKit にこの機能が組み込まれており、私が行ったいくつかのテストでかなりのパフォーマンスを発揮しているためです。これは、色付けとして知られています。

両方のブレンド量を変更してアニメーション化できます: https://developer.apple.com/reference/spritekit/skspritenode/1519780-colorblendfactor

テクスチャとブレンドされる色: https://developer.apple.com/reference/spritekit/skspritenode/1519639-color

于 2016-11-15T16:42:29.743 に答える