我想知道我应该用ParticleSystem
去哪条路。在这个特殊情况下,我想同时创建1-20个小爆炸,但是位置不同。现在我正在为每次爆炸创建一个新的ParticleSystem
,然后释放它,但这当然是对性能的惩罚。cocos2d中的多粒子系统
我的问题是:有没有办法用多个发射源创建一个ParticleSystem
。如果不是,我应该在init中创建一个ParticleSystem
的数组,然后在需要爆炸时使用免费的数组?或者还有另一种我没有想到的方法?
我想知道我应该用ParticleSystem
去哪条路。在这个特殊情况下,我想同时创建1-20个小爆炸,但是位置不同。现在我正在为每次爆炸创建一个新的ParticleSystem
,然后释放它,但这当然是对性能的惩罚。cocos2d中的多粒子系统
我的问题是:有没有办法用多个发射源创建一个ParticleSystem
。如果不是,我应该在init中创建一个ParticleSystem
的数组,然后在需要爆炸时使用免费的数组?或者还有另一种我没有想到的方法?
那么,因为没有找到任何帮助,我用我认为最好的方式解决了它。我制作了一系列Partlesystems。
当我需要爆炸在一次我basicly这样做几点:
粒子系统* PS = [EnemyExplosions objectAtIndex:EnemyExplosionPointer ++]; ps.position = ExpPoint; [ps resetSystem];
我不知道是否可以为单个ParticleSystem
创建多个源,但是您的第二个解决方案(创建ParticleSystem
的数组)是解决此类问题的一个很好的通用解决方案。只要您可以重新初始化ParticleSystem
,您将避免任何其他开销,例如实例化成本和内存碎片。
我对每种效果使用单个粒子系统。所以,一个用于火灾效果,一个用于闪光灯,一个用于爆炸等。
我使用一个类别为基本Cocos2D粒子系统添加[enable]和[disable]方法,如下所示:
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 Counter中用于所有粒子效果。
请参阅您的cocos2d库中的ccparticleexamples.m。
这将有助于显示不同类型的粒子发射器。
我想这个问题太具体了。我会问Cocos2d的创造者。 – 2009-07-17 08:27:38