4

ダメージを与えるゲーム内のキャラクターやオブジェクトにグローを追加しようとしています。ゲーム内の「悪い」もの、つまりスパイク、ガードなどに赤い輝きが必要です。次のコードを使用していますが、rasterize を true に設定してもパフォーマンスが非常に悪いです。エフェクトを追加すると、パフォーマンスが 60 fps から 30 fps に急速に低下します。グロー効果は、さまざまな形状のスプライトに適用する必要があります。円、三角形、四角形、人など。他のアプローチにもオープンですが、以下のコードは私が望む正確な視覚効果を与えてくれます。コードを実行することができれば、「良い」オブジェクトに緑色の光を当てたいと思います。

また、左右に 1.5 シーンのノードを追加するだけで、「悪い」SKNode の量を減らしました。この変更は役に立たなかったようです。問題は、効果が追加された SKNodes と SKNodes/SKSpriteNodes の特に大量の人口に実際に到達したときに発生するようです。

glowAtlas = SKTextureAtlas(named: "GlowTextures")

// create a glowing effect
func getGlow(imageName: String, imageSize: CGSize, glowColor: SKColor) -> SKEffectNode {

試す

 let glow = SKSpriteNode(imageNamed: imageName)

また

let texture = glowAtlas.textureNamed(imageName)
let glow = SKSpriteNode(texture: texture)

...

 glow.size = imageSize
 glow.color = glowColor
 glow.colorBlendFactor = 1.0

 // Create an effects node with a gaussian blur filter
 let effectsNode = SKEffectNode()
 effectsNode.shouldRasterize = true
 effectsNode.shouldEnableEffects = true

 let filter = CIFilter(name: "CIGaussianBlur")
 // Set the blur amount. Adjust this to achieve the desired effect
 let blurAmount = 5.0
 filter!.setValue(blurAmount, forKey: kCIInputRadiusKey)

 effectsNode.filter = filter
 effectsNode.blendMode = .Alpha
 effectsNode.addChild(glow)

 return effectsNode
}
4

0 に答える 0