7、cocos2dx之粒子系统

本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=66函数

1、介绍动画

粒子系统指的是一个使用大量很小的精灵或者其余的一些绘制对象模拟一些模糊效果。使用传统的绘制技术很难实现。它们常常被用到一些混乱系统,天然现象以及一些化学反应动画效果中。this

 

2、点vs矩形spa

在以前版本的cocos2dx中,有两种类型的粒子系统:矩形和点阵粒子系统:.net

1)CCParticleSystemQuad对象

2)CCParticleSystemPointblog

CCParticleSystemQuad有一些额外的特色而CCParticleSystemPoint不支持:图片

1)旋转粒子系统:粒子们可以围绕轴线旋转,而CCParticleSystemPoint没有这个属性ci

2)粒子们有大小。而在CCParticleSystemPoint中,若是粒子尺寸大于64,那么将会被当成64get

3)整个系统能够被缩放,可使用缩放属性

由于CCParticleSystemPoint不支持CCParticleBatchNode,因此它被从cocos2dx粒子系统中移除掉了(囧)。

3、CCParticleBatchNode

一个CCParticleBatchNode 可以引用一个纹理而且只有一个纹理(一个图片文件)。只有被包含在纹理中的CCParticleSystems能够被添加到CCSpriteBatchNode。被添加到CCSpriteBatchNode 中的CCParticleSystems在一个OpenGL ES绘制中调用。若是 CCParticleSystems没有被添加进一个CCParticleBatchNode,那么每个粒子系统都须要被OpenGL ES绘制一次,那样效率就很低了。

建立一个矩形粒子系统

CCParticleSystemQuad* m_emitter = newCCParticleSystemQuad();
m_emitter = CCParticleFire::create();

  

4、重力vs半径模式

重力模式


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

 

//重力模式
this->m_nEmitterMode = kCCParticleModeGravity;

this->modeA.gravity = ccp(0,-90);

  

 

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

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

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

speedVar(float)速度变量

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

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

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

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

半径模式


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

 

// 半径模式
this->m_nEmitterMode = kCCParticleModeRadius;
// 设置开始半径
this->modeB.startRadius = 0;
this->modeB.startRadiusVar = 0;//ccp(0,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).粒子的纹理

相关文章
相关标签/搜索