粒子系统主

粒子系统主要分为如下两种模式:

1.重力式粒子系统(CCParticleSystemPoint  ): 这种粒子存在重力,好像地球的万有引力一样,所有的粒子都会收到重力的约束,当然重力的大小是可以自己定义的

2.放射性粒子系统(CCParticleSystemQuad):: 这种粒子不存在重力,因此粒子好像都在空中,不再收到地球万有引力的作用

@1——根据 plist 文件创建粒子系统:

[cpp] view plaincopyprint?

  1. CCParticleSystemQuad *emitter1 = CCParticleSystemQuad::create("Particle/BurstPipe.plist");
  2. emitter1->setPosition(ccp( size.width/2,    size.height/2));    // 设置发射粒子的位置
  3. emitter1->setAutoRemoveOnFinish(true);                          // 完成后制动移除
  4. emitter1->setDuration(10);                                      // 设置粒子系统的持续时间秒
  5. this->addChild(emitter1, 0, 1);

@2——不使用plist 文件创建粒子系统

2.1重力式粒子系统/CCParticleSystemPoint  使用代码如下:

[cpp] view plaincopyprint?

  1. 2.1.1】 创建一个Point 粒子系统
  2. CCParticleSystemPoint *m_emitter = new CCParticleSystemPoint();
  3. 2.1.2】 产生300个粒子对象
  4. m_emitter->initWithTotalParticles(300);
  5. 2.1.3】设置粒子对象以及粒子系统的相关参数
  6. //0. 设置粒子的图像,粒子虽小但是还需要有自己的图像,如果没有texture 属性引擎会默认一个图像
  7. m_emitter->setTexture( CCTextureCache::sharedTextureCache("test.png"));  // CCTextureCache::sharedTextureCache()->addImage("a.png"));
  8. //1.设置粒子系统的持续时间
  9. m_emitter->setDuration(-1);
  10. //2.设置重力方向
  11. m_emitter->setGravity(CCPointZero);
  12. //3.设置角度,角度变化率
  13. m_emitter->setAngle(0);
  14. m_emitter->setAngleVar(360);
  15. //4.设置径向加速度,径向加速度变化率
  16. m_emitter->setRadialAccel(70);
  17. m_emitter->setRadialAccelVar(10);
  18. //5.设置切向加速度,切向加速度变化率
  19. m_emitter->setTangentialAccel(80);
  20. m_emitter->setTangentialAccelVar(0);
  21. //6.设置运动速度,运动速度变化率
  22. m_emitter->setSpeed(50);
  23. m_emitter->setSpeedVar(10);
  24. //7.设置粒子位置,粒子位置变化率
  25. m_emitter->setPosition(CCPointMake(s.width/2,s.height/2));
  26. m_emitter->setPosVar(CCPointzero);
  27. //8.设置粒子存在时间,存在时间变化率
  28. m_emitter->setLife(2.0f);
  29. m_emitter->setLifeVar(0.3f);
  30. //9.设置粒子开始时候颜色,粒子开始时颜色变化率
  31. m_emitter->setStartColor({0.5f,0.5f,0.5f,0.5f});       // emitter1->setStartColor(ccc4f(1,0,0,1));//设置粒子RGBA值
  32. m_emitter->setStartColorVar({0.5f,0.5f,0.5f,1.0f});
  33. //10.设置粒子结束时候颜色,粒子结束时颜色变化率
  34. m_emitter->setEndColor({0.1f,0.1f,0.1f,0.2f});
  35. m_emitter->setEndColorVar({0.1f,0.1f,0.1f,0.2f});
  36. //11.设置粒子开始时候大小,粒子开始时大小变化率
  37. m_emitter->setStartSize(1.0f);
  38. m_emitter->setStartSizeVar(1.0f);
  39. //12.设置粒子结束时候大小,粒子结束时大小变化率
  40. m_emitter->setEndSize(32.0f);
  41. m_emitter->setEndSizeVar(8.0f);
  42. //13.设置每秒产生的粒子数
  43. m_emitter->setEmissionRate(m_emitter->getTotalParticles()/m_emitter->getLife());  // 每秒产生粒子数 =  粒子总数/存活时间 ;
  44. 2.1.4】 将这个粒子系统设置到背景层上:
  45. m_background->addChild(m_emitter,1);

2.2【放射性粒子系统/CCParticleSystemQuad】

[cpp] view plaincopyprint?

  1. 2.2.1】 创建一个Quad粒子系统
  2. CCParticleSystemQuad *m_emtter = new CCParticleSystemQuad();
  3. 2.2.2】 产生300个粒子对象
  4. m_emitter->initWithTotalParticles(300);
  5. 2.2.3】设置粒子对象以及粒子系统的相关参数
  6. 1 2 3 4 5 6 7 8 9 10 11 12 13 和重力式粒子系统一样唯一不同的就是参数
  7. 下面增加发射型粒子系统特有的属性
  8. //14. 设置粒子开始时候自旋转的速度,以及变化率:
  9. m_emitter->setStartSpin(0);
  10. m_emitter->setStartSpinVar(0);
  11. //15. 设置粒子结束时候自旋转的速度,以及变化率:
  12. m_emitter->setEndSpin(0);
  13. m_emitter->setEndSpinVar(2000);
  14. 2.2.4】将 m_emitter 设置到 m_background这个层(Layer)上面
  15. m_background->addChild(m_emitter,1);

重力vs半径模式

重力模式能够让粒子飞向或者远离一个中心点。这种的优势是它允许一个动态的,组织的效果。你可以用如下代码设置重力模式:

重力模式

[cpp] view plaincopyprint?

  1. m_emitter->setEmitterMode(kCCParticleModeGravity);
  2. m_emitter->setGravity(CCPointZero);

在重力模式中,以下属性是合法的:

gravity (Point)。粒子系统的重力。

speed (float)。粒子们射出的速度。

speedVar(float)速度变量

tangencialAccel(float)粒子们的正切加速度

tangencialAccelVar(float)粒子们正切加速度的变量

radialAccel(float)粒子们的半径加速度。

radialAccelVar(float)粒子们半径加速度的变量

半径模式

半径模式能够让粒子在圆中旋转。也可以创造螺旋模式能让粒子向屏幕里屏幕外飞。你可以设置半径模式用下面的几行代码:

[cpp] view plaincopyprint?

  1. m_emitter->setEmitterMode(kCCParticleModeRadius);
  2. // 设置开始半径和结束半径
  3. m_emitter->setStartRadius(100);
  4. m_emitter->setStartRadiusVar(0);
  5. m_emitter->setEndRadius(kCCParticleStartRadiusEqualToEndRadius);
  6. m_emitter->setEndRadiusVar(0);

半径模式有下列合法的属性:
   startRadius (a float).粒子的开始半径

startRadiusVar (a float). 开始半径变量
   endRadius (a float). 粒子的结束半径
   endRadiusVar (a float).结束半径变量
   rotatePerSecond (a float).围绕一个来源点的每秒旋转角度
   rotatePerSecondVar (a float).每秒旋转角度变量

粒子们的常规属性:

startSize:粒子的初始尺寸(像素值)
startSizeVar
endSize:粒子的结束尺寸(如果你想让粒子的开始大小同结束大笑相同,就用一下kCCParticleStartSizeEqualToEndSize
endSizeVar
startColor :粒子开始颜色(ccColor4F)
startColorVar
endColor :粒子结束颜色
endColorVar
startSpin:仅用在CCParticleSystemQuad中,起始螺旋度
startSpinVar
endSpin:仅用在CCParticleSystemQuad中,结束螺旋度
endSpinVar
life粒子的生命生存时间,单位是秒
lifeVar
angle:粒子开始角度,float
angleVar
positon:CCPoint粒子位置
positonVar
centerOfGravity :CGPoint

系统通用属性:

emissionRate duration (a float):每秒有多少粒子被发射

duration (a float):粒子系统生存时间

blendFunc (a ccBlendFunc):用于系统渲染的OpenGL的渲染函数

positionType (a tCCPositionType).:使用kCCPositionTypeFree (默认值)属性可以自由的移动粒子们。或者使用kCCPositionTypeGrouped 让粒子们一组一组的移动。

texture (a CCTexture2D).粒子的纹理

cocos2dx已经为我们提供了非常多的粒子系统效果:

-- CCParticleSystem(所有粒子系统的父类)
-- CCParticleSystemPoint、CCParticleSystemQuad (点粒子和方形粒子系统,都继承了CCParticleSystem的所有属性)
-- CCParticleExplosion  :爆炸粒子效果
-- CCParticleFireworks  :烟花粒子效果
-- CCParticleFire             :火焰粒子效果
-- CCParticleFlower       :花束粒子效果
-- CCParticleGalaxy        :星系粒子效果
-- CCParticleMeteor       :流星粒子效果
-- CCParticleSpiral         :漩涡粒子效果
-- CCParticleSnow         :雪粒子效果)
-- CCParticleSmoke      :烟粒子效果
-- CCParticleSun            :太阳粒子效果
-- CCParticleRain          :雨粒子效果

粒子系统主

时间: 2024-10-11 17:53:21

粒子系统主的相关文章

Unity Notes调制粒子系统的颗粒的最大数目

Unity该粒子系统是很容易使用.这样的问题是在实际的过程中遇到的:以控制的粒子系统组件的动态需要可产生颗粒的最大数目. 看doc他说,有maxParticles控制.却没有这个开放的參数.仅仅能通过其他的方式来实现. 这里能够通过手动产生粒子的方式来实现.也即ParticleSystem中的Emit方法,详细代码例如以下: public class ParticleSystemComp : MonoBehaviour { ParticleSystem mParticleSystem = nul

Unity3D:粒子系统Particle System

1. GameObject → Create Other  →  Particle System. 2. 选中 Particle System,可看到下列屬性: 3.Particle System: Duration: 粒子发射时间(设定为5秒,每5秒发射一次粒子). Looping:是否循环产生粒子(如果要持续发射就打勾:否则将Looping关闭). Start Delay:粒子一开始产生是否延迟发射(若设定为5,时间过5秒才开始发射粒子,预设为0). Start Lifetime:粒子生命周

Direct-X学习笔记--三维粒子系统

哇塞,一转眼已经到了传说中的粒子系统了,学会了粒子系统就可以做出一些更好玩的效果啦!加油啦! 一.简介 粒子系统,正如其名称,由各种小的粒子构成.通常用来模拟火焰,爆炸,烟,水流,火花,落叶,雨,雪等等难以用具体的形状来描述的物体.单个的粒子非常简单,可以用多边形来表示,甚至用像素表示.但是,不要小看了这样微小的粒子,当粒子的数量级达到上千,上万,甚至十万时,表现力是及其震撼的! 下面附上两张DX自带的粒子系统的截图: 帅呆了...然而我并做不出来... 粒子系统有三个特性: 1.群体性:粒子如

粒子系统(一)

一.初识粒子系统 1.主模块 ● Duration: 持续时间.即把循环关了以后,持续多少秒停止发射粒子 ● Looping: 循环 ● Prewarm: 预热.粒子系统在游戏开始前就开始计算 ● Start Delay: 延迟.即延迟多少秒开始发射粒子 ● Start Lifetime: 初始化粒子寿命(生命周期) ? Constant: 常数 ? Curve: 曲线 ? Random Between Two Constants: 两个常数之间的随机数 ? Random Between Two

MySQL 主主复制

MySQL的主主复制就是两台 mysql 节点互为主从.搭建起来 mysql 主从,再来搭建主主复制就非常简单了. 视频链接:http://www.roncoo.com/course/view/658088f6e77541f5835b61800314083e 在原来主从的基础上做如下操作: 1.开启原从节点的 binlog 日志 2.原从节点创建读取副本的用户 3.在原主节点中让 master 指向从节点 4.在原主节点执行 start slave 命令 以上步骤即可完成主主节点的配置 下面有一

MySQL集群(二)之主主复制

前面介绍了主从复制,这一篇我将介绍的是主主复制,其实听名字就可以知道,主主复制其实就是两台服务器互为主节点与从节点.接下来我将详细的给大家介绍,怎么去配置主主复制! 一.主从复制中的问题 1.1.从节点占用了主节点的自增id 环境: 主节点:zyhserver1=1.0.0.3 从节点:udzyh1=1.0.0.5 第一步:我们在主节点中创建一个数据库db_love_1,在创建一个表tb_love(里面有id自增和name属性). create database db_love_1; use d

主键类型定义错了调试了半天

package com.itheima.demo1; import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table; @Entity@Table(name="u_user")public class User

WordPress主循环(The Loop)函数have_posts(),the_post()详解

WordPress中调用文章标题是the_title();调用文章内容时用到the_content();调用文章的作者时用到the_author();等等这些函数,都需要在主循环中使用,下面就介绍一下如何用have_posts()和the_post()开始Wordpress文章中循环,并说明如何结束循环. 语法 1 <?php if (have_posts()) :  while (have_posts()) : the_post(); ?> 2 当找到文章时返回此语句 3 <?php 

说说WordPress的主查询函数-query_posts()

今天说说WordPress 的主查询函数 -query_posts(),因为我正在制作的主题里面多次用到了这个函数 . query_posts()查询函数决定了哪些文章出现在WordPress 主 循环(loop)中,正因为如此,query_posts函数仅用于修改主页循环(Loop),而不是在页面上生成次级循环.如果你希望在主循环外另外生 成循环,应该新建独立的WP_Query对象,用这些对象生成循环.在主循环外的循环上使用query_posts会导致主循环运行偏差,并可能在页面上 显示出你不