Ios SpriteKit快速全屏渐晕图/带有alpha混合的照明
我正在用SpriteKit做一个平台游戏。我想要达到的效果是,只有玩家周围的区域被照亮,其他的一切都消失在黑暗中。想象一下像假光源或强渐晕的东西。出于测试目的,我创建了以下代码:Ios SpriteKit快速全屏渐晕图/带有alpha混合的照明,ios,swift,sprite-kit,fullscreen,alphablending,Ios,Swift,Sprite Kit,Fullscreen,Alphablending,我正在用SpriteKit做一个平台游戏。我想要达到的效果是,只有玩家周围的区域被照亮,其他的一切都消失在黑暗中。想象一下像假光源或强渐晕的东西。出于测试目的,我创建了以下代码: let effect = SKEffectNode() effect.zPosition = 100 effect.position = CGPoint(x: 0, y: 0) effect.shouldRasterize = false effect.blendMode = SKBlendMode.Multiply
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)
这可以根据需要工作,但对帧速率有一定的影响。考虑到e。G在地图上使用手电筒或其他光源时,我预计帧速率会下降更多
接下来,我想让灯光闪烁,所以我在更新函数中为shine sprite指定了一个随机alpha值。这真的扼杀了帧速率,让它立即下降到大约4帧
我已经读过关于SKEffectNodes及其对帧速率的严重影响的文章。有没有其他方法可以实现这种全屏alpha混合,即使有多个“灯光”,速度也相当快
非常感谢您的建议。也许可以用SKLightNode解决这个问题吗 下面是一篇关于如何使用SKLightNode的文章:
希望这对你有用谢谢,我会试试的。