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

问题描述 投票:2回答:1

我是Spritekit的新手。刚开始制作我的第三至第四场比赛。因此,我想知道以编程方式使用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

sprite-kit particles skemitternode
1个回答
2
投票

您可以选择任何一种方式。在我的游戏中,我针对不同类型的效果使用了不同的发射器类型。这样做的原因是因为我的发射器的每个属性都如此不同,以至于不能一概而论。另一个原因是因为我可能需要同时在屏幕上放置多个发射器。

如果知道大多数或所有属性都相同,并且一次只使用一个发射器,则只需更改纹理即可。

基本上,这取决于您要做什么。没有一个最佳实践。我确实建议您使用粒子编辑器。只需更快地进行视觉调整,您以后就可以随时以编程方式更改属性。

© www.soinside.com 2019 - 2024. All rights reserved.