Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SpriteKit快速全屏渐晕图/带有alpha混合的照明_Ios_Swift_Sprite Kit_Fullscreen_Alphablending - Fatal编程技术网

Ios SpriteKit快速全屏渐晕图/带有alpha混合的照明

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

我正在用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及其对帧速率的严重影响的文章。有没有其他方法可以实现这种全屏alpha混合,即使有多个“灯光”,速度也相当快


非常感谢您的建议。

也许可以用SKLightNode解决这个问题吗

下面是一篇关于如何使用SKLightNode的文章:


希望这对你有用

谢谢,我会试试的。