我知道有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 addChild:overlay];
[self addChild:blendNode];
我已经找到了完美的解决方案,使用SKLightNode
点亮纹理,然后使用SKBlendModeAdd
将其混合到帧缓冲区中,但由于某种原因,它无法在iPhone 5上运行( here's a related topic)。我也知道this topic,但也没有帮助。
任何正确使用alpha掩码SKSpriteNode
的解决方案都将非常感谢!
运行iOS 8。
答案 0 :(得分:1)
使用动态生成的CIImage
作为掩码可以解决问题。它可以由CIFilter创建,使用您需要的任何渐变或图像作为蒙版,并将inputCenter
属性设置为您想要的位置。