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

标签 sprite-kit particles skemitternode

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

或者

// 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 - 以编程方式使用 SKEmitterNode 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35862269/

相关文章:

ios - 是否可以在SKEmitterNode上应用过滤器?

swift - 发射器未添加玩家位置

ios - Sprite kit Sprite 加载性能改进

ios - 仅当玩家在 Y 轴上向上时移动地面视差

iphone - 困惑 : SKSpriteNode & SKTexture difference.

python - pygame - 粒子效果

ios - 落沙粒子物理

xcode - SKEmitterNode 不显示粒子

ios - 如何使用 SpriteKit 将节点固定在某个位置

matlab - 不同大小颗粒的 3D MATLAB 散点图