我正在尝试使用SKEmitterNode创建着色器,有点像在洞穴中的Pokemon中:
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的重复项,但是由于没有给出好的答案,因此我认为这不是问题。
非常感谢你。
最佳答案
这些不是您要查找的节点! ;)
粒子不能用于制造战争迷雾,即使您可以使它们的行为产生战争迷雾,其速度也将令人望而却步。
根据链接的屏幕截图,您实际上只需要一个带有“孔”的图像,即透明区域。图像应为屏幕大小,并遮盖边框至您需要的程度。这将是一场非公开的战争迷雾,或者仅仅是玩家周围黑暗的影响。
在真正的战争迷雾中,您发现世界各地的情况通常使用一种模式,以其最简单的形式,它只是删除(逐渐消失)矩形的黑色精灵。
关于ios - 如何在Sprite Kit中使用SKEmitterNode来实现“ war 迷雾”效果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24341712/