エフェクトの種類ごとに単一のパーティクル システムを使用します。つまり、1 つは炎の効果用、1 つは輝き用、もう 1 つは爆発用などです。
カテゴリを使用して [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 カウンターですべてのパーティクル エフェクトに使用されています。