将SKShader应用于多个图层

时间:2016-08-23 18:55:58

标签: ios swift sprite-kit shader

在我正在制作的游戏中,我使用多个图层来管理背景场景,如下所示:

  1. 背景
  2. 背景障碍
  3. 前景障碍
  4. 我正在使用置换着色器来创建涟漪效果,但我不确定如何将其应用于整个背景部分。每个层都是一个单独的SKNode,我在其中添加不同的SKSprites。

    我希望涟漪效果影响所有图层,但我无法将着色器应用于SKNode。

1 个答案:

答案 0 :(得分:0)

您不能将一个着色器效果应用于多个图层,因此您可能需要做的是通过在父节点中创建兄弟节点并捕获节点的输出来捕获其他图层的状态,如下所示:

SKTexture *captureTexture = [skView textureFromNode:node];

然后将此纹理指定给一个节点并将着色器附加到该节点。您可能无法使用此捕获方法获得完整的FPS更新,但我可能是使其正常工作的唯一方法。