我正在尝试使用Sprite Kit为iOS游戏创建聚光灯效果。目的是要有一个背景,该背景可以通过在屏幕边缘反弹的几个移动聚光灯显示出来。
我已经成功地找到了使用SKCropNode或更简单地使用SKSpriteNode来移动聚光灯的解决方案。
对于SKSpriteNode解决方案,我只是在场景的顶部(即,它是最后添加的子项)添加了一个SKSpriteNode,该图像比场景大(长1.5宽,宽1.5宽)。图像是一个黑色的矩形,中间有一个透明的圆圈(使用alpha通道)。我添加了一个等于圆大小的物理体。我给了它一个冲动,SpriteKit完成了其余的工作。然后,我有一个很好的聚光灯,在透明圆圈后面(或下方)反射并显示一切(即,添加到场景中的任何精灵)。
对于SKScropNode解决方案,我创建了一个SKCropNode,并向其中添加了背景精灵。然后,我用仅由一个透明圆圈组成的图像定义了SKSCropNode的蒙版。我还添加了一个等于圆圈大小的物理体,给了它一个冲动,它起作用了。实际上,几乎是因为我找不到使遮罩的非透明部分成为背景颜色以外的方法的方法。即使场景的背景颜色不是黑色,我也希望像使用SKSpriteNode解决方案一样将其设置为黑色。
我也尝试使用SKLightNode,但结果不如上述解决方案那样好,因为光线会扩散得太多,并且不允许具有精确的光线圆周。我想要内部完全透明,外部完全黑色,没有从透明到黑色的渐变。
我的主要问题是,我需要有3个弹起的聚光灯,而不仅仅是一个。
使用SKSpriteNode解决方案,如果我添加3个SKSpriteNode,则顶部的SKSpriteNode的黑色部分将覆盖下面其他2个SKSpriteNode的白色圆圈。
使用SKCropNode解决方案,每个SKScropNode只能有一个掩码。我试图级联SKScropNode,但是它不起作用。
是否有其他选择(快速)实现此效果?
感谢您的任何建议。
您可以创建一个父节点(SKNode),将您的Spotlight节点作为子节点添加到该节点,然后将该父节点作为maskNode设置到包含背景作为子节点的单个SKCropNode。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句