我一直在尝试SKLightNode的SpriteKit特性,并且在处理阴影方面遇到了困难。具体来说,无论我将SKLightNode设置为什么,它的SKLightNode属性似乎都不会做任何事情。这是我的电灯代码:
//set up lights
var light = SKLightNode()
light.categoryBitMask = LightCategory.Light1
/*THIS DOESN'T DO ANYTHING*/ light.falloff = CGFloat(0.01)
light.ambientColor = UIColor.whiteColor()
light.lightColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.5)
light.shadowColor = UIColor(red: 0.5, green: 0.25, blue: 0.25, alpha: 0.5)
light.position = CGPointMake(size.width / 2.0, size.height * 0.75)
light.zPosition = DrawOrder.Lights
addChild(light)在这里,我把它添加到播放器中:
//set up player
player.position = CGPoint(x: size.width * 0.1, y: size.height * 0.3)
player.shadowCastBitMask = LightCategory.Light1
player.zPosition = DrawOrder.Sprites
addChild(player)根据苹果公司的文件,falloff应该设置“光源衰减率的指数”,并接受从0.0到1.0的CGFloat。但是无论我将falloff设置为什么,阴影都是无穷无尽的。
我做错了什么?
更新屏幕截图(FPS低由于模拟器):

发布于 2015-04-23 15:55:40
我以前也有过这个问题。作为一项工作,您可以将falloff设置为大于1的数字。实际上,如果您在SKScene的.sks文件中创建了一个.sks,那么它在默认情况下有一个falloff of 1.5,所以文档可能是不正确的?
编辑
在您的例子中,您的问题似乎还在于您将ambientColor设置为白色。把它设置为黑色,你就能看到灯正常工作。
https://stackoverflow.com/questions/29828324
复制相似问题