2

我是 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

?

4

1 回答 1

2

无论哪种方式,你都可以做到。在我的游戏中,我为不同类型的效果设置了不同的发射器类型。这样做的原因是因为我的每个发射器的属性都会如此不同,以至于概括起来没有意义。另一个原因是因为我可能需要同时在屏幕上放置多个发射器。

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

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

于 2016-03-08T10:36:40.833 回答