ParticleEditor粒子編輯器

歡迎轉載!轉載時請註明出處:http://write.blog.csdn.net/postedit/8126525

呵呵~ 上一講,只是將粒子系統的基礎知識,也有朋友問windows版的粒子編輯器,windows的粒子編輯器確實很少,不過我在網上也是收到了一款,也挺不錯的...

下面就更大家簡單介紹下這款軟件,然後製作出一個下雪效果的步驟,肯定比test的下面好看多了...呵呵~  

1、下載:

ParticleEditor 下載地址:http://code.google.com/p/cocos2d-windows-particle-editor/downloads/list

2、介紹軟件

File:save,save as(導出plist文件),new,Open 

Samples:有test裏面的一些例子,暫時版本沒有增加自己添加紋理進來功能...不過粒子系統有設置圖片的方法,如果要求不高的話,也是可以用的...可能後面的版本作者會增加此功能

編輯器裏面有說明,我就簡單介紹右邊的功能:

半徑模式:這種只有圍繞中心運動,這個下面的參數要有效

編輯器:IsBackgroundMove背景是否動,Scale縮放

大小:粒子的開始大小和結束大小

角度:粒子的運動方向...(-90)垂直朝下

生命:粒子生命

位置:設置PosVar值就可以了,SourcePosition不用管..設置資源的

紋理渲染:對於一般情況,只需要記住:“我們最常使用的CC_BLEND_SRC和CC_BLEND_DST分別對應GL_ONE和GL_ONE_MINUS_SRC_ALPHA”。

顏色:StartColor, EndColor, StartColorVar, EndColorVar這4個屬性代表着粒子的初始顏色、結束顏色以及其浮動值。

重力模式:重力、速度等的設置

自旋:粒子的旋轉

EmissionRate

粒子的發射速率,即每秒發射的粒子數量。

這裏有一個問題,不知道算不算是bug,我給大家描述一下:

CCParticleSystem加載.plist文件時並沒有讀取這個EmissionRate的值。實際上,它是由粒子數量上限除以粒子生命期算出來的。

1 // emission Rate
2 m_fEmissionRate = m_uTotalParticles / m_fLife;

有點兒說不通對不對。我爲什麼要在(第一個)粒子的生命期內把所有的粒子都發出去?

這是CCParticleSystem加載.plist文件的問題,臨時的解決辦法就是,在加載.plist文件後,再手工調用setEmissionRate設置每秒的發射量。

3、導出.plist文件,然後將其對應的圖片,一同copy到新建工程的Resource文件夾下...

(注意兩個文件要放在一起,要不然找不到..自然你也可以進.plist下去修改圖片資源的路徑,不過沒有必要..放一起就好了)

4、實現下雪效果:

老樣子,上傳我的demo代碼:

ParticleTestScene.h

  1. #pragma once  
  2. #include "cocos2d.h"  
  3. using namespace cocos2d;  
  4. class ParticleTestScene :public CCScene  
  5. {  
  6. public:  
  7.     ParticleTestScene(void);  
  8.     ~ParticleTestScene(void);  
  9.     static CCScene* scene();  
  10. };  

ParticleTestScene.cpp

  1. #include "ParticleTestScene.h"  
  2. #include "ParticleTestLayer.h"  
  3.   
  4. ParticleTestScene::ParticleTestScene(void)  
  5. {  
  6. }  
  7.   
  8.   
  9. ParticleTestScene::~ParticleTestScene(void)  
  10. {  
  11. }  
  12.   
  13. CCScene* ParticleTestScene::scene()  
  14. {  
  15.     CCScene* scene=CCScene::create();  
  16.     CCLayer* layer=new ParticleTestLayer();  
  17.     scene->addChild(layer);  
  18.     return scene;  
  19. }  


ParticleTestLayer.h

  1. #pragma once  
  2. #include "cocos2d.h"  
  3. using namespace cocos2d;  
  4. class ParticleTestLayer :public CCLayer  
  5. {  
  6. public:  
  7.     virtual void onEnter();  
  8. protected:  
  9.     CCParticleSystem*    m_emitter;  
  10.     CCSprite*            m_background;  
  11.     unsigned int m_nOrder;  
  12. };  

PartileTestLayer.cpp

  1. #include "ParticleTestLayer.h"  
  2. #include "cocos2d.h"  
  3. void ParticleTestLayer::onEnter()  
  4. {  
  5.     CCLayer::onEnter();  
  6.     //注意:如果你的層繼承的是CCLayerColor,必須初始化顏色值  
  7.     /*initWithColor( ccc4(127,127,127,255) );*/  
  8.   
  9.     //創建一個CCParticleSystem粒子系統  
  10.     CCNode *parent1 = CCNode::create();//創建一個父節點  
  11.   
  12.     //創建一個CCParticleSystemQuad系統:每個粒子用4個點(Quad,矩形)表示的粒子系統  
  13.     CCParticleSystemQuad *emitter1 = CCParticleSystemQuad::create("pottersnow.plist");  
  14.   
  15.     emitter1->setBlendAdditive(false);//是否混合  
  16.   
  17.     CCSize s = CCDirector::sharedDirector()->getWinSize();  
  18.   
  19.     emitter1->setPosition(ccp( s.width/2-30,    s.height/2+60));  
  20.   
  21.     parent1->addChild(emitter1, 0, 1);  
  22.   
  23.     addChild(parent1, 10, 1000);  
  24. }  

運行效果:

哈哈~   這效果比test裏面的好吧~    好了,該睡覺了....

感謝大家閱覽我的博文,希望也能看到大家留下的腳印...呵呵!
如果講述得有誤,或者不對的地方,還望各位指出!

發佈了101 篇原創文章 · 獲贊 19 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章