Ios 如何使两个节点的交点透明

Ios 如何使两个节点的交点透明,ios,sprite-kit,transparent,fragment-shader,skspritenode,Ios,Sprite Kit,Transparent,Fragment Shader,Skspritenode,我小时候在我的场景中添加了一个背景SKSpriteNode。此节点本身有一些子节点。每个子对象都有一些彩色像素以及完全透明的像素。子节点在屏幕上移动,有时相互交叉 我想让孩子们的相交彩色区域在他们移动时完全透明,这样背景精灵就会显示出来。对于每个子节点的非相交区域,节点应显示为法线。我试着玩blendmode,但没有达到预期效果。有什么办法吗?或者,有没有办法在SpriteKit之外做到这一点 谢谢我认为没有命令可以实现你想要的。可以更改精灵的整个纹理/图像,也可以使用过滤器更改精灵的部分纹理/

我小时候在我的场景中添加了一个背景SKSpriteNode。此节点本身有一些子节点。每个子对象都有一些彩色像素以及完全透明的像素。子节点在屏幕上移动,有时相互交叉

我想让孩子们的相交彩色区域在他们移动时完全透明,这样背景精灵就会显示出来。对于每个子节点的非相交区域,节点应显示为法线。我试着玩blendmode,但没有达到预期效果。有什么办法吗?或者,有没有办法在SpriteKit之外做到这一点


谢谢

我认为没有命令可以实现你想要的。可以更改精灵的整个纹理/图像,也可以使用过滤器更改精灵的部分纹理/图像外观,但不能专门修改精灵的部分纹理/图像。更具体地说,精灵的alpha属性应用于整个精灵,而不仅仅是其中的一部分。

仔细研究,似乎可以将SKShader指定给我的子节点,并将背景纹理作为统一的对象传递给着色器。为了模拟透明效果,我会在背景纹理中找到相应的像素。然而,似乎我需要知道子节点相对于背景节点的位置才能做到这一点。这可以通过每帧更换一个制服来实现,但我相信这会导致性能不佳。不过,我们需要稍后再尝试。