2016-03-08 35 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

相关问题