我正在尝试使用 SKEmitterNode 创建一个着色器,有点像在洞穴中的口袋妖怪: http ://www.serebii.net/pokearth/maps/johto-hgss/38-route31.png
这是我到目前为止的代码:
NSString *burstPath =
[[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"];
SKNode *area = [[SKNode alloc] init];
SKSpriteNode *background = [SKSpriteNode spriteNodeWithColor:[SKColor blackColor] size:CGSizeMake(self.frame.size.width, self.frame.size.width)];
background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
SKEmitterNode *burstNode =
[NSKeyedUnarchiver unarchiveObjectWithFile:burstPath];
burstNode.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame));
burstNode.particleBlendMode = SKBlendModeSubtract;
[area addChild:background];
[area addChild:burstNode];
[self addChild:area];
这是 SKEmitterNode:http ://postimg.org/image/60zflqjzt/
我有两个想法。第一个是创建一个矩形 SKSpriteNode 并从矩形 SKSpriteNode 中删除 SKEmitterNode。这样,我们就有了一个黑色的矩形,中间有一个“洞”,我们可以看穿它。
第二个是将矩形SKSpriteNode和SKEmitter节点添加到另一个SKNode(区域),然后设置SKEmitterNode的particleBlendMode,最后在颜色函数中设置SKNode(区域)的alpha。例如,如果一个像素的颜色为黑色,则该像素的 alpha 值为 1.0,而另一个像素为白色,则其他像素的 alpha 值为 0.0。
这个问题可能与How to create an alpha mask in iOS using sprite kit在某些方面重复,但由于没有给出好的答案,我认为这不是问题。
非常感谢。