以编程方式使用 SKEmitterNode 的正确方法

Correct way to use SKEmitterNode Programmatically

我是 Spritekit 的新手。刚开始制作我的第 3-4 场比赛。所以我想知道以编程方式使用 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

// 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

?

您可以任意选择。在我的游戏中,我针对不同类型的效果使用了不同的发射器类型。这样做的原因是因为我的每个发射器的属性都非常不同,以至于无法概括。另一个原因是因为我可能需要同时在屏幕上显示多个发射器。

如果您知道您的大部分或所有属性将是相同的并且您一次只打算使用一个发射器,那么您可以只更改纹理。

基本上这取决于你想做什么。没有一种最佳实践。不过我确实推荐使用粒子编辑器。只是必须更快地在视觉上调整事物,并且您以后可以随时以编程方式更改属性。