【问题标题】:How do I alpha-mask a SKSpriteNode?如何对 SKSpriteNode 进行 alpha 掩码?
【发布时间】:2014-09-19 07:36:04
【问题描述】:

我知道有 SKCropNode,但它只会根据 maskNode 的 alpha 阈值完全包含或排除像素。我已经尝试过使用SKEffectNodeCIBlendWithAlphaMask 过滤器,但我得到的结果是不可见的,我也不确定如何移动面具。代码如下:

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,这也没有帮助。

任何对SKSpriteNode 进行正确 alpha 掩码的解决方案将不胜感激! 运行 iOS 8。

【问题讨论】:

  • CIImage 是 nil,它现在是掩码,但我仍然不知道如何移动掩码...
  • 你有没有想过这个问题?

标签: ios iphone sprite-kit mask skeffectnode


【解决方案1】:

使用动态生成的CIImage 作为掩码就可以了。它可以由 CIFilter 创建,使用您需要的任何渐变或图像作为遮罩,并将 inputCenter 属性设置为您想要的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2010-09-18
    • 1970-01-01
    相关资源
    最近更新 更多