我想添加一个粒子效果到我的cocos2d iOS游戏。向粒子添加粒子时遇到问题,因为我的所有精灵都使用spritebatch来提高性能。由于这个原因,我似乎无法轻易地在我的精灵上使用粒子效果。如果我简单地将所有粒子效果保留在我的游戏层上,一切正常,但我宁愿让每个精灵跟踪它自己的粒子效果。这里是我的代码,它位于我的播放器类:在cocos2d中使用粒子效果与ccspritebatchnode
-(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继承它,并有伊娃跟踪粒子效果:
#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];
}
当这样做我没有收到错误,但是粒子也不显示。
任何帮助将不胜感激。
它的工作原理!谢谢!我不知道你可以做些什么,比如self.parent.parent。 – 2012-07-26 20:18:08