Cocos2d-JS自定义粒子系统

阅读更多

除了使用Cocos2d-JS的11种内置粒子系统外,我们还可以通过创建ParticleSystem对象,并设置属性实现自定义粒子系统,通过这种方式完全可以实现我们说需要的各种效果的粒子系统。使用ParticleSystem自定义粒子系统至少有两种方式可以实现:代码创建和plist文件创建。
代码创建粒子系统需要手工设置这些属性,维护起来非常困难,我们推荐使用Particle Designer等粒子设计工具进行所见即所得的设计,这些工具一般会生成一个描述粒子的属性类表文件plist,然后通过类似下面的语句加载:
var particleSystem = new cc.ParticleSystem("res/snow.plist");
snow.plist是描述运动的属性文件,plist文件是一种XML文件,参考代码如下:

[html]  view plain copy
 
  1. xml version="1.0" encoding="UTF-8"?>  
  2. >  
  3. <plist version="1.0">  
  4. <dict>  
  5.     <key>anglekey>  
  6.     <real>270real>      
  7.     <key>angleVariancekey>  
  8.     <real>5real>  
  9.     <key>blendFuncDestinationkey>  
  10.     <integer>771integer>  
  11.     <key>blendFuncSourcekey>  
  12.     <integer>1integer>  
  13.     <key>durationkey>  
  14.     <real>-1real>  
  15.     <key>emitterTypekey>  
  16.     <real>0.0real>  
  17.     <key>finishColorAlphakey>  
  18.     <real>1real>  
  19.     <key>finishColorBluekey>  
  20.     <real>1real>  
  21.     <key>finishColorGreenkey>  
  22.     <real>1real>  
  23.     <key>finishColorRedkey>  
  24.     <real>1real>  
  25.     <key>finishColorVarianceAlphakey>  
  26.     <real>0.0real>  
  27.     <key>finishColorVarianceBluekey>  
  28.     <real>0.0real>  
  29.     <key>finishColorVarianceGreenkey>  
  30.     <real>0.0real>  
  31.     <key>finishColorVarianceRedkey>  
  32.     <real>0.0real>  
  33.     <key>finishParticleSizekey>  
  34.     <real>-1real>  
  35.     <key>finishParticleSizeVariancekey>  
  36.     <real>0.0real>  
  37.     <key>gravityxkey>  
  38.     <real>0.0real>  
  39.     <key>gravityykey>  
  40.     <real>-10real>  
  41.     <key>maxParticleskey>  
  42.     <real>700real>  
  43.     <key>maxRadiuskey>  
  44.     <real>0.0real>  
  45.     <key>maxRadiusVariancekey>  
  46.     <real>0.0real>  
  47.     <key>minRadiuskey>  
  48.     <real>0.0real>  
  49.     <key>minRadiusVariancekey>  
  50.     <real>0.0real>  
  51.     <key>particleLifespankey>  
  52.     <real>3real>  
  53.     <key>particleLifespanVariancekey>  
  54.     <real>1real>  
  55.     <key>radialAccelVariancekey>  
  56.     <real>0.0real>  
  57.     <key>radialAccelerationkey>  
  58.     <real>1real>  
  59.     <key>rotatePerSecondkey>  
  60.     <real>0.0real>  
  61.     <key>rotatePerSecondVariancekey>  
  62.     <real>0.0real>  
  63.     <key>rotationEndkey>  
  64.     <real>0.0real>  
  65.     <key>rotationEndVariancekey>  
  66.     <real>0.0real>  
  67.     <key>rotationStartkey>  
  68.     <real>0.0real>  
  69.     <key>rotationStartVariancekey>  
  70.     <real>0.0real>  
  71.     <key>sourcePositionVariancexkey>  
  72.     <real>1200real>  
  73.     <key>sourcePositionVarianceykey>  
  74.     <real>0.0real>  
  75.     <key>speedkey>  
  76.     <real>130real>  
  77.     <key>speedVariancekey>  
  78.     <real>30real>  
  79.     <key>startColorAlphakey>  
  80.     <real>1real>  
  81.     <key>startColorBluekey>  
  82.     <real>1real>  
  83.     <key>startColorGreenkey>  
  84.     <real>1real>  
  85.     <key>startColorRedkey>  
  86.     <real>1real>  
  87.     <key>startColorVarianceAlphakey>  
  88.     <real>0.0real>  
  89.     <key>startColorVarianceBluekey>  
  90.     <real>0.0real>  
  91.     <key>startColorVarianceGreenkey>  
  92.     <real>0.0real>  
  93.     <key>startColorVarianceRedkey>  
  94.     <real>0.0real>  
  95.     <key>startParticleSizekey>  
  96.     <real>10real>  
  97.     <key>startParticleSizeVariancekey>  
  98.     <real>5real>  
  99.     <key>tangentialAccelVariancekey>  
  100.     <real>0.0real>  
  101.     <key>tangentialAccelerationkey>  
  102.     <real>1real>  
  103.     <key>textureFileNamekey>  
  104.     <string>snow.pngstring>  
  105. dict>  
  106. plist>  

在上述的plist文件描述的属性和属性值都是成对出现,其中标签描述的是属性,描述的属性值。
plist文件中textureFileName属性指定了纹理图片,纹理图片宽高必须是2的n次幂,大小不要超过64x64像素,在美工设计纹理图片时候,不用关注太多细节,例如:设计雪花纹理图片时候,按照雪花是有6个角的,很多人会设计为下图所示的样式,而事实上我们需要的下图所示的渐变效果的圆点。

雪花图片
 
雪花粒子纹理图片





提示 描述粒子属性的plist文件,可以通过粒子系统设计工具生成,有关粒子系统工具使用大家可以参考本系列丛书的工具卷(《Cocos2d-JS实战(卷Ⅳ):工具详解》)。
下面我们通过实现如下图所示的下雪粒子系统,介绍一下自定义粒子系统的实现。

Cocos2d-JS自定义粒子系统_第1张图片

下雪粒子系统实例

图中所示的下雪实例,使用plist文件创建,主要代码如下:

[html]  view plain copy
 
  1. var HelloWorldLayer = cc.Layer.extend({  
  2.       
  3.     ctor: function () {  
  4.         //////////////////////////////  
  5.         // 1. super init first  
  6.         this._super();  
  7.         var size = cc.director.getWinSize();  
  8.   
  9.   
  10.         var bg = new cc.Sprite("res/background-1.png");  
  11.         bg.x = size.width / 2;  
  12.         bg.y = size.height / 2;  
  13.         this.addChild(bg);  
  14.   
  15.   
  16.         var particleSystem = new cc.ParticleSystem("res/snow.plist");  
  17.         particleSystem.x = size.width / 2;  
  18.         particleSystem.y = size.height - 50;          
  19.         this.addChild(particleSystem);  
  20.           
  21.         return true;  
  22.     }  
  23. });  

从代码可见plist文件创建粒子系统要比代码创建简单很多,这主要是因为采用了plist描述粒子属性。

 

 

更多内容请关注最新Cocos图书《 Cocos2d-x实战:JS卷——Cocos2d-JS开发

本书交流讨论网站:http://www.cocoagame.net

欢迎加入Cocos2d-x技术讨论群:257760386

更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com

智捷课堂现推出Cocos会员,敬请关注: http://v.51work6.com/courseInfoRedirect.do?action=netDetialInfo&courseId=844465&categoryId=0

 

 

 

 

 

 

 

 

《Cocos2d-x实战 JS卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11659698.html

欢迎关注智捷iOS课堂微信公共平台,了解最新技术文章、图书、教程信息
Cocos2d-JS自定义粒子系统_第2张图片

你可能感兴趣的:(cocos2d-x)