2016-11-01 7 views
12

暗い画面に黒い画像が映っているので、画像に白い輝きを追加したいのです。私はあなたが質問してくださいより多くの情報が必要な場合、グローに追加するために使用する方法かわからないんだけどSKSpriteNodeに輝き効果を追加する

Ghost = SKSpriteNode(imageNamed: "Ghost1") 
Ghost.size = CGSize(width: 50, height: 50) 
Ghost.position = CGPoint(x: self.frame.width/2 - Ghost.frame.width, y: self.frame.height/2) 

Ghost.physicsBody = SKPhysicsBody(circleOfRadius: Ghost.frame.height/1.4) 
Ghost.physicsBody?.categoryBitMask = PhysicsCatagory.Ghost 
Ghost.physicsBody?.collisionBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall 
Ghost.physicsBody?.contactTestBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall | PhysicsCatagory.Score 
Ghost.physicsBody?.affectedByGravity = false 
Ghost.physicsBody?.isDynamic = true 
Ghost.zPosition = 2 

self.addChild(Ghost) 

:これは、動画像のための私のコードです。

答えて

19

私はちょうど今SKSpriteNode

let sun = SKSpriteNode(imageNamed: "sun") 

あなたがそれをしなければならないすべて与え

extension SKSpriteNode { 

    func addGlow(radius: Float = 30) { 
     let effectNode = SKEffectNode() 
     effectNode.shouldRasterize = true 
     addChild(effectNode) 
     effectNode.addChild(SKSpriteNode(texture: texture)) 
     effectNode.filter = CIFilter(name: "CIGaussianBlur", withInputParameters: ["inputRadius":radius]) 
    } 
} 

プロジェクトにこれを追加しSKSpriteNode

にグロー効果を追加するには、この拡張機能を作成しました

sun.addGlow() 

enter image description here

+3

これは、答えを超えて素晴らしい答えです。これはサービスと洞察力の寛大な提供であり、拡張の観点から思考に内在する権力のもう一つの驚くべきデモンストレーションです。ありがとうございました!!!それだけでは不十分です。追加!^ 3。パフォーマンスのクエリ:私はエフェクトをつけて、スプライトとして使うために手動でテクスチャにベイク処理を終えました。このぼかし効果は、フレームごとに更新されますか?あるいは、それらは "ベーク"して、基礎となるオブジェクト(それらが適用されている)が変更されない限り、単にビットマップ/スプライトの追加として動作しますか? – Confused

+1

@Confused:非常に良い点。私はちょうど私の拡張子 'effectNode.shouldRasterize = true'にこの行を追加しました。今度はぼかし効果が最初に計算され、次のフレームのためにキャッシュされます。 'effectNode'の内部で何かが変更されると、キャッシュは自動的に無効になります(しかし、このコードでは起こりません)。 –

+0

もう一度、ありがとうございます。それは私のために明らかになった。私は 'effectNodes'がインテリジェントな、自己認識の最適化を行うかどうかは確かではありませんでした。私は、時々、彼らはそうすると思います。しかし、フレームレートに奇妙な変化を見ることから推測するだけです。画面に表示されるフレームレートとXcodeのデバッグツールとの間に相関関係があることはよくありません。しかし、shouldRasterizeは...定数の再計算の最適化/防止を強制する必要があります。私は願います。乾杯! – Confused

関連する問題