2014-06-21 28 views
1

我試圖用一個SKEmitterNode創建着色器,有點像在寵物小精靈,當你在一個洞穴: http://www.serebii.net/pokearth/maps/johto-hgss/38-route31.png如何在Sprite工具包中使用SKEmitterNode來實現「戰爭迷霧」效果?

這裏是我的代碼至今:

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可能重複的,但由於沒有很好的答案已經給出,我認爲這不是一個問題。

非常感謝。

回答

2

這些不是你正在尋找的節點! ;)

顆粒不能被用來做戰爭的迷霧,即使你可以使他們的行爲產生戰爭的迷霧這將是驚人緩慢。

基於鏈接的截圖,你真的只需要一個像與它「洞」,透明區域。圖像應該是屏幕大小的,只需將邊框覆蓋到任何需要的程度即可。這將是一場不顯露的戰爭迷霧,或者僅僅是圍繞着玩家的黑暗效果。

戰爭實現真正的霧,你發現世界上面積通常使用模式,在其最簡單的形式,它也只是刪除(淡出)矩形黑色精靈。

+0

你有什麼想法如何我可以添加圖像的火焰閃爍效果?而你的答案的缺點是,我必須在每次我想要一個不同的半徑時創建一個額外的圖像:/否則,這是一個好主意:) –

+0

通過縮放戰霧精靈,可以實現不同的半徑。 – LearnCocos2D

+0

任何想法的火炬/火焰閃爍? –