2016-03-08 40 views
2

我是Spritekit的新手。剛開始製作我的第3-4款遊戲。所以我想知道什麼是以編程方式使用SKEmitterNode的正確方法。正確使用SKEmitterNode的方法以編程方式

特別是如果我想在我的遊戲中有多個粒子 - 噴氣發動機起火,並且在子彈擊中敵船時發生多次爆炸,那麼正確的做法是什麼。

我是否繼續創建新的SKEmitterNode並將其添加到場景中,還是添加單個全局EmitterNode並在更新函數中更改其屬性?

// FIRE ENGINE 

SKEmitterNode *_myEmitter = [[SKEmitterNode alloc] init]; 
// codes.. 
[self addChild:_myEmitter]; // add to scene 

// EXPLOSION 

SKEmitterNode *_myEmitter = [[SKEmitterNode alloc] init]; 
// codes.. 
[self addChild:_myEmitter]; // add to scene 

OR

// IN INIT METHOD 

_myEmitter = [[SKEmitterNode alloc] init]; // global variable 
// codes.. 
[self addChild:_myEmitter]; // add once 


// IN UPDATE 

//when explode 
_myEmitter.particleTexture = [SKTexture textureWithImageNamed:@"explode.png"]; 
... modify code 


//when engine fire 
_myEmitter.particleTexture = [SKTexture textureWithImageNamed:@"fire.png"]; 
... modify code 

+0

像hamobi說的,這取決於情況。如果您有不同類型的效果,可以方便地定義不同的發射器,而不是以編程方式配置它們... – Whirlwind

回答

2

你可以這樣做。在我的遊戲中,我對不同類型的效果有不同的發射器類型。其原因是因爲我的每個發射器的屬性會如此不同以至於無法推廣。另一個原因是因爲我可能需要一次在屏幕上有多個發射器。

如果您知道您的大部分或全部屬性都是相同的,並且您只打算一次使用一個發射器,那麼您可以更改紋理。

基本上它取決於你想要做什麼。沒有一個最佳實踐。我建議使用粒子編輯器。只需更快速地以可視方式調整東西,隨後可以隨時以編程方式更改屬性。

+0

感謝您的分享。至於粒子編輯器,我使用我自己的應用程序來做到這一點 - 粒子X.:D我只是擔心記憶方面。我想用ARC,當發射器完成它的工作時,事情就會自動消失。 – GeneCode

+0

只需從場景中刪除發射器,如果你不再需要它 – hamobi

+0

我不能只使用和忽略? esp發射器像爆炸(一次不連續)? Thought ARC會照顧這個嗎? – GeneCode

相關問題