【问题标题】:SpriteKit spotlight effectSpriteKit 聚光灯效果
【发布时间】:2015-05-02 02:23:27
【问题描述】:

我正在尝试使用 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 sprite-kit crop


    【解决方案1】:

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

    【讨论】:

    • 完美解决方案。易于实施且运行良好!谢谢。
    • 是否可以控制裁剪部分的不透明度?
    • 尝试将 alpha 值设置为 SKCropNode 的子节点
    猜你喜欢
    • 1970-01-01
    • 2015-12-03
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多