簡體   English   中英

SpriteKit快速全屏小插圖/具有Alpha混合的照明

[英]SpriteKit fast fullscreen vignette / lighting with alpha blending

我正在用SpriteKit制作平台游戲。 我想達到這樣的效果:僅播放器周圍的區域被照亮,其他所有東西都變暗。 想象一下,諸如假光源或強效裝飾圖案之類的東西。 為了進行測試,我創建了以下代碼:

let effect = SKEffectNode()
effect.zPosition = 100
effect.position = CGPoint(x: 0, y: 0)
effect.shouldRasterize = false
effect.blendMode = SKBlendMode.Multiply

let gray = SKSpriteNode()
gray.color = SKColor.grayColor()
gray.size = self.frame.size
gray.blendMode = SKBlendMode.Multiply
gray.position = CGPoint(x: 0, y: 0)

let shine = SKSpriteNode(imageNamed: "Shine")
shine.position = CGPoint(x: 0, y: 0)
shine.blendMode = SKBlendMode.Screen
shine.setScale(3.0)

effect.addChild(gray)
effect.addChild(shine)

self.world.addChild(effect)

這可以按需工作,但是對幀速率有一定的影響。 考慮到地圖上的火炬或其他光源可能還會產生類似的效果,因此我希望幀速率會下降得更多。

接下來,我想讓燈光閃爍,所以我在更新功能中為發光精靈分配了一個隨機的alpha值。 這確實殺死了幀速率,使其立即下降到大約4幀。

我已閱讀有關SKEffectNodes及其對幀速率的嚴重影響。 是否有其他方法可以實現這種全屏alpha混合,即使有多個“燈光”,也相當快?

任何建議是真正的贊賞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM