我知道有 SKCropNode
,但它只会根据 maskNode
的 alpha 阈值完全输入或排除像素。我已经尝试过将 SKEffectNode
与 CIBlendWithAlphaMask
过滤器一起使用,但我得到的结果是不可见的,我也不确定如何移动蒙版大约。代码如下:
SKSpriteNode* overlay = [SKSpriteNode spriteNodeWithImageNamed"Overlay.png"];
//...
SKEffectNode* blendNode = [[SKEffectNode alloc] init];
blendNode.filter = [CIFilter filterWithName"CIBlendWithAlphaMask"];
UIImage* maskImage = [UIImage imageNamed"MaskImage.png"];
[blendNode.filter setValue:[maskImage CIImage] forKey"inputMaskImage"];
[blendNode addChildverlay];
[self addChild:blendNode];
我已经找到了完美的解决方案,使用 SKLightNode
点亮纹理,然后使用 SKBLendModeAdd
将其混合到帧缓冲区中,但由于某种原因它不会不适用于 iPhone 5 ( here's a related topic )。我知道 this topic也一样,这也没有帮助。
任何对 SKSpriteNode
进行正确 alpha 掩码的解决方案将不胜感激!
运行 iOS 8。
使用动态生成的 CIImage
作为掩码就可以了。它可以由 CIFilter 创建,使用您需要的任何渐变或图像作为 mask ,并将 inputCenter
属性设置为您想要的位置。
关于ios - 如何对 SKSpriteNode 进行 alpha 掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25928729/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |