我想知道我應該用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