一、粒子系统简介:

粒子系统最早出现在80年代,主要用于解决由大量按一定规则运动(变化)的微小物质在计算机上的生成和显示问题。Particle System的应用非常广泛,大的可以模拟原子弹爆炸,星云变化,小的可以模拟水波、火焰、烟火、云雾等,而这些自然现象用常规的图形算法是很难逼真再现的。
Particle System可以说是一种基于物理模型来解决问题的方法,它的核心不在于如何显示,而在用于对微小物质模型的规则提取。
粒子运动(变化)的规则可以很简单也可以很复杂,这取决你所模拟的对象。举例来说,在对FireWorks(烟火)的模拟中,我们可以让烟火由上百个小的粒子组成,每个粒子都具有以下一些属性及其规则(对各个属性施加不同的规则,就可以获得不同形态的烟火):
 
Coordinate(坐标)
在烟火爆炸的时刻,每个粒子都有一个相同的初始坐标,随着时间的推移,粒子的新坐标将由它的旧坐标和加速度来求得
Velocity(速度)
每个粒子都有一个随机产生的初始速度,粒子的新速度由加速度和空气阻尼来求得
Acceleration(加速度)
在烟火中,每个粒子的加速度都等于重力加速度
Color(颜色)
粒子颜色取决于粒子的速度或生命值的大小
Life(生命值)
每个粒子都有一个初始的随机生命值,这个值将随着时间的推移而逐渐减小,直到等于0
 
你会发现,Particle System中的粒子与C++中类的概念有些类似,实际上你完全可以将它当成类来处理,一个粒子就是一个类的实例对象,只不过有时在涉及程序优化的具体细节上,你需要放弃使用类,而使用简单而快速的紧凑代码。
 
Particle System虽然在处理大量单独粒子的运动(变化)上很有用处,但是一涉及到需要考虑粒子间相互作用的场合,因为这时的计算量呈粒子数量的指数级增长,它就显得有些力不从心了。比如在模拟有相互引力作用下的大量星体的运动,大量粒子的相互碰撞等。
 
二、粒子系统的生命周期

首先,从粒子池中获取一个粒子,
然后计算赋予初始属性后,发射他。
在粒子飞行过程中,不断的刷新来修正他的属性。
粒子死亡后,回归粒子池。
     function getEmitter(idx)
local emitter = cc.ParticleSnow:create() --创建一个雪花粒子发射器
emitter:setDuration(-) --设置发射粒子的持续时间-1表示一直发射,0没有意义,其他值表示持续时间
emitter:setPosition(, ) --设置粒子发射器的位置
emitter:setLife() --设置粒子的生命值
emitter:setLifeVar() --设置粒子生命值衰减变化率 emitter:setGravity(cc.p(, -)) --设置粒子重力方向,这个点是相对发射点,x正方向为右,y正方向为上
emitter:setSpeed() --设置粒子速度
emitter:setSpeedVar() --设置速度变化率 local startColor = emitter:getStartColor() --设置粒子开始的颜色
startColor.r = 0.9
startColor.g = 0.9
startColor.b = 0.9
emitter:setStartColor(startColor) local startColorVar = emitter:getStartColorVar()
startColorVar.b = 0.1
emitter:setStartColorVar(startColorVar) --设置粒子颜色变化率
local size = cc.Sprite:create("commonUI/newres/snow/snow_" .. idx .. ".png"):getContentSize()
emitter:setStartSize(size.width)
emitter:setEndSize(size.width / ) --设置粒子开始的大小
emitter:setEndSizeVar(size.width / / emitter:getLife()) ----设置粒子生命结束时的大小
if idx == then
emitter:setEmissionRate(emitter:getTotalParticles() / emitter:getLife() / ) --设置发射器每秒钟发射的粒子个数
else
emitter:setEmissionRate(emitter:getTotalParticles() / emitter:getLife() / )
emitter:setTotalParticles() --设置总的粒子个数
end emitter:setTexture(cc.Director:getInstance():getTextureCache():addImage("commonUI/newres/snow/snow_" .. idx .. ".png")) --设置发射的粒子图片
return emitter
end

cocos2d-x:Particle System(粒子系统)的更多相关文章

  1. Particle System(粒子系统)

    粒子系统应用:Unity的粒子系统可以制作烟雾,气流,火焰和各种大气效果.   粒子系统模块介绍:         大部分的属性可以通过曲线控制(见曲线编辑器),颜色属性可以被定义了颜色动画的渐变器控 ...

  2. 粒子系统模块(Particle System Modules40)

    粒子系统模块(Particle System Modules40) 粒子系统模块(忍者飞镖) 粒子系统(忍者飞镖)(Particle System (Shuriken)) 用模块描述粒子一段时间内的行 ...

  3. cocos2d-x Tests讲解 Particle System(粒子系统)

    转载请注明出处: http://www.cnblogs.com/shangdahao/archive/2012/04/14/2447571.html 一.粒子系统简介: 粒子系统最早出现在80年代,主 ...

  4. Unity3D学习笔记——组件之Effects(效果/特效)——Particle System(粒子系统)

    Effects:效果/特效. Particle System:粒子系统.可用于创建烟雾.气流.火焰.涟漪等效果. 在Unity3D 3.5版本之后退出了新的shuriken粒子系统:   添加组件之后 ...

  5. Unity3D:粒子系统Particle System

    1. GameObject → Create Other  →  Particle System. 2. 选中 Particle System,可看到下列屬性: 3.Particle System: ...

  6. Cesium中级教程9 - Advanced Particle System Effects 高级粒子系统效应

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 要了解粒子系统的基础知识,请参见粒子系统入门教程. Weathe ...

  7. Cesium中级教程8 - Introduction to Particle Systems 粒子系统入门

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ What is a particle system? 什么是粒子 ...

  8. [原]Unity3D深入浅出 - 粒子系统(Particle System)

    粒子系统是在三维空间渲染出来的二维图像,主要用于烟,火,水滴,落叶等效果.一个粒子系统由粒子发射器.粒子动画器和粒子渲染器三个独立的部分组成. Unity中自带了一些粒子效果,在Assets>I ...

  9. Unity Particle System Sorting Order

    http://answers.unity3d.com/questions/577288/particle-system-rendering-behind-sprites.html

随机推荐

  1. Xcode静态检查分析代码

    Clang静态分析和Instruments来剖析代码有一些不同,Clang更致力于在编译的过程中通过自身的一套判断机制来找出代码中潜在的隐患.   在XCode 3.2之后的版本里,Clang已经被集 ...

  2. .net中的反射(转载)

    原文地址:http://www.cnblogs.com/Stephenchao/p/4481995.html 两个现实中的例子:1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的 ...

  3. Delphi容器类之---TOrderedList、TStack、TQueue、TObjectStack、TObjectQueue

    TOrderedList.TStack.TQueue Contnrs单元还定义了其他三个类:TOrderedList.TStack.TQueue TOrderedList TOrderedList = ...

  4. hosts文件权限导致监听无法启动

    1.所属系统:2.问题描述:3.解决4.参考???疑点:为什么修改主机名会使hosts文件权限发生改变 1.所属系统: ZHJS2#[/]uname -a HP-UX ZHJS2 B.11.31 U ...

  5. oracle sql 执行计划分析

    转自http://itindex.net/detail/45962-oracle-sql-%E8%AE%A1%E5%88%92 一.首先创建表 SQL> show user USER is &q ...

  6. MVVM页面跳转 技巧性标记

    刚学MVVM 百度了很多概念性的东西 也参考了网上的例子 基本有了了解 但是我发现 我做了一个登录页面以后 我跳转咋办呢? VM里面咋做跳转? 问了一下其他的群友得到了一些启发.感谢“上海*松” 我仅 ...

  7. [spring源码学习]七、IOC源码-Context

    一.代码实例 如之前介绍的,spring中ioc是它最为核心的模块,前边花了大量时间分析spring的bean工厂和他如何生成bean,可是在我们实际应用中,很少直接使用beanFactory,因为s ...

  8. [spring源码学习]四、IOC源码——普通bean初始化

    一.代码例子 此节开始涉及到一个bean具体生成和保存的过程,仅仅涉及到最简单的bean,代码依旧是最简单的 public static void main(String[] args) { Defa ...

  9. Map排序

    HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 ...

  10. POJ No.2386【B007】

    [B007]Lake Counting[难度B]—————————————————————————————————————————— [Description] Due to recent rains ...