我目前正在使用SKLightNode,屏幕上有一些精灵。 我希望那些精灵根据光线的位置投射阴影,但我想要直接点亮灯光的精灵,并隐藏另一个精灵后面的精灵。
我有这段代码:
let light = SKLightNode()
override func didMove(to view: SKView)
{
light.categoryBitMask = 1
light.falloff = 1.0
light.shadowColor = SKColor.black
light.zPosition = 2
addChild(light) // I add the light
for _ in 0...10
{
let object = SKSpriteNode(imageNamed: "stone")
object.position = CGPoint(x: CGFloat.random(min: playableRect.minX, max: playableRect.maxX), y: CGFloat.random(min: playableRect.minY, max: playableRect.maxY))
object.shadowCastBitMask = 1
object.zPosition = 2
addChild(object) // I add 10 wall sprites
}
}
正如您所看到的,问题是阴影中的精灵并未被隐藏。
当我改变墙壁时' zPosition为1(低于光的zPosition),我有:
这里的一切都是隐藏的,仍然不好。
我从2015年的旧stackoverflow问题中读到,SpriteKit不支持这种情况。还是这样吗? 无论如何,有没有解决方法?