ダメージを与えるゲーム内のキャラクターやオブジェクトにグローを追加しようとしています。ゲーム内の「悪い」もの、つまりスパイク、ガードなどに赤い輝きが必要です。次のコードを使用していますが、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
}