Я использую одну систему частиц для каждого типа эффекта. Итак, один для эффекта огня, один для искры, другой для взрыва и т. Д.
Я использую категорию для добавления методов [enable] и [disable] к базовым системам частиц Cocos2D, которая выглядит следующим образом:
ParticleEnhancement.h
#include "cocos2d.h"
@interface CCParticleSystem (particleEnhancement)
-(void)enable;
-(void)disable;
@end
ParticleEnhancement.m
#import "ParticleEnhancement.h"
@implementation CCParticleSystem (particleEnhancement)
-(void)enable {
active = YES;
elapsed = 0.0f;
}
-(void)disable {
active = NO;
}
@end
Затем, когда я хочу вызвать его, я просто устанавливаю позицию и активирую вызов. Система частиц будет порождать кучу частиц на основе настроек инициализации. Система может быть запущена несколько раз в разных положениях, и ранее сгенерированные частицы будут вести себя правильно.
Главное, что нужно учитывать, это то, что вам понадобится больший бюджет частиц, чтобы учесть несколько экземпляров данного эффекта, используя одну систему.
Кроме того, это работает для "запускаемых" эффектов, таких как взрыв, но, возможно, не работает так хорошо для длительного эффекта, как след дыма, я действительно не проверял это.
Мне нравится делать это таким образом, потому что это означает, что у меня меньше систем частиц, чтобы спорить, и мне не нужно иметь дело с настройкой пула систем частиц. Система частиц сама по себе хорошо справляется с пулом частиц, нет необходимости повторять это снова на системном уровне.
Этот метод используется в моем приложении Счетчик TCG для всех эффектов частиц.