cocos2diOSゲームにパーティクルエフェクトを追加しようとしています。すべてのスプライトがパフォーマンスを向上させるためにスプライトバッチを使用しているため、スプライトにパーティクルを追加するときに問題が発生します。このため、スプライトにパーティクルエフェクトを簡単に使用できないようです。ゲームプレイレイヤーにすべてのパーティクルエフェクトを保持するだけですべてが正しく機能しますが、各スプライトに独自のパーティクルエフェクトを追跡させたいと思います。これが私のプレーヤークラスにある私のコードです:
-(void)loadParticles
{
shieldParticle = [[CCParticleSystemQuad alloc] initWithFile:@"shieldParticle.plist"];
shieldParticle.position = self.position;
[self addChild:shieldParticle];
}
このテクニックを使用すると、次のようにエラーが発生します
CCSprite only supports CCSprites as children when using CCSpriteBatchNode
これを回避するために、別のクラス、particleBaseを作成しました。
particleBaseクラスでは、ccspriteから継承し、パーティクルエフェクトを追跡するためのiVarがあります。
#import "cocos2d.h"
@interface particleBase : CCSprite
{
CCParticleSystem *particleEffect;
}
-(void)setParticleEffect:(NSString *)effectName;
-(void)turnOnParticles;
-(void)turnOffParticles;
@end
#import "particleBase.h"
@implementation particleBase
-(void)setParticleEffect:(NSString *)effectName
{
particleEffect = [[CCParticleSystemQuad alloc] initWithFile:effectName];
particleEffect.active = YES;
particleEffect.position = self.position;
[self addChild:particleEffect];
}
このテクニックを使用するとき、私は自分のプレーヤークラスでこれを試しました:
-(void)loadParticles
{
shieldParticle = [[particleBase alloc] init];
[shieldParticle setParticleEffect:@"shieldParticle.plist"];
[shieldParticle turnOnParticles];
[shieldParticle setPosition:self.position];
[self addChild:shieldParticle z:150];
}
これを行ってもエラーは発生しませんが、パーティクルも表示されません。
どんな助けでも大歓迎です。