首页 文章

SpriteKit聚光灯效果

提问于
浏览
2

我正在尝试使用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但它不起作用 .

有没有其他选择来实现这种效果(在swift中)?

谢谢你的任何建议 .

1 回答

  • 3

    您可以创建父节点(SKNode),将聚光灯节点作为子节点添加到此节点,然后将此父节点设置为包含作为子节点的背景的单个SKCropNode的maskNode .

相关问题