2016-03-08 4 views
2

Я новичок в Spritekit. Просто начинаю делать свою третью-четвертую игру. Поэтому я хотел бы знать, как правильно использовать SKEmitterNode программно.Правильный способ использования SKEmitterNode Programatically

В частности, какая правильная практика, если я хочу иметь несколько частиц в своей игре - огонь реактивного двигателя, а также несколько взрывов, когда пуля попадает в вражеское судно.

Должен ли я продолжать создавать новый объект 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 

?

+0

Как сказал хамоби, это зависит от ситуации. Если у вас есть разные типы эффектов, удобно настроить разные эмиттеры, чтобы их программно настроить ... – Whirlwind

ответ

2

Вы можете сделать это в любом случае. В моей игре у меня были разные типы эмиттеров для разных типов эффектов. Причина этого в том, что каждый из свойств моего эмиттера будет настолько отличаться, что было бы разумно обобщать. Другая причина заключается в том, что мне может потребоваться сразу несколько эмиттеров.

Если вы знаете, что большинство или все ваши объекты будут одинаковыми, и вы будете использовать только один эмиттер за раз, то вы можете просто изменить текстуру.

В основном это зависит от того, что вы пытаетесь сделать. Существует не одна лучшая практика. Однако я рекомендую использовать редактор частиц. Просто нужно быстрее настраивать визуально, и вы всегда можете изменить свойства программно позже.

+0

Спасибо за обмен. Что касается редактора частиц, я использую свое приложение для этого - Particle X.: D Меня беспокоит только память. Я полагаю, что с ARC вещи просто удаляются автоматически, когда эмиттер выполняет свою работу. – GeneCode

+0

просто удалите излучатель со сцены, если он вам больше не нужен – hamobi

+0

Могу я просто использовать и игнорировать? esp излучатель как взрыв (однократное не непрерывное)? Мысль ARC позаботится об этом? – GeneCode

Смежные вопросы