繁体   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