我正在使用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)
这可以按预期工作,但对帧速率有一些影响。考虑到e可能会产生类似的影响。 G。地图上的火炬或其他光源,我预计帧速率会下降得更多。
接下来,我想让灯光闪烁,所以我在更新功能中为shine sprite分配了一个随机alpha值。这真的杀死了帧率,让它立即下降到大约4帧。
我已经了解了SKEffectNodes及其对帧速率的重大影响。有没有其他方法可以实现这种全屏阿尔法混合,即使有多个"灯光也可以相当快速地进行#34;
真的很感激任何建议。
答案 0 :(得分:2)
这可能是用SKLightNode解决的吗?
这是一篇关于如何使用SKLightNode的文章:
http://www.ymc.ch/en/playing-with-ios-8-sprite-kit-and-sklightnode
希望对你有任何用处