2

があることは知ってSKCropNodeいますが、のアルファしきい値に基づいてピクセルを完全にインまたは除外するだけmaskNodeです。私がすでに試したのは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 では機能しません (関連トピックはこちら)。私もこのトピックを認識していますが、どちらも役に立ちませんでした。

aを適切にアルファマスクするための解決策は大SKSpriteNode歓迎です! iOS 8 を実行しています。

4

1 に答える 1

1

マスクとして動的に生成されたものを使用すると、CIImageうまくいきます。inputCenter必要なグラデーションまたは画像をマスクとして使用し、必要な位置にプロパティを設定して、CIFilter によって作成できます。

于 2014-09-19T09:38:39.980 に答える