cocos2d-x 粒子效果
大规模运动的物体通常有两种方法实现
1。使用帧动画来模拟
2,粒子效果
粒子系统有CCParticleSystem类实现,CCParticleSystem实现了对粒子的控制与调度,对粒子的操作包含:
1,产生粒子
2。更新粒子状态
3,回收无效粒子
粒子系统继承自CCNode ,能够加入到其它节点之中
cocos2d-x内置了一些粒子效果如:
- CCParticleSystem(全部粒子系统的父类)
-- CCParticleSystemPoint、CCParticleSystemQuad (点粒子和方形粒子系统,都继承了CCParticleSystem的全部属性)
-- CCParticleExplosion :爆炸粒子效果
-- CCParticleFireworks :烟花粒子效果
-- CCParticleFire :火焰粒子效果
-- CCParticleFlower :花束粒子效果
-- CCParticleGalaxy :星系粒子效果
-- CCParticleMeteor :流星粒子效果
-- CCParticleSpiral :漩涡粒子效果
-- CCParticleSnow :雪粒子效果)
-- CCParticleSmoke :烟粒子效果
-- CCParticleSun :太阳粒子效果
-- CCParticleRain :雨粒子效果
样例:
ParticleSystem *particle = ParticleSnow::create();
particle->setTexture(CCTextureCache::sharedTextureCache()->addImage("snow.png"));
this->addChild(particle);
上面这段代码加入到init里面就能够看到雪花的粒子效果
首先须要知道的是粒子的发射器模式,不同发射器模式下有不同的可用參数。也因此会产生不同的效果。这个就有点像是模具。用什么模具就生成出什么样的模型产品,假设随便引用參数那是有可能会报错的:
1.重力模式->setEmitterMode(kCCParticleModeGravity)
重力模式下能够依照设定的重力点setGravity,依据附加參数如速度、径向加速度、切向加速度……来获得相应的粒子效果。
2.半径模式->->setEmitterMode(kCCParticleModeRadius)
这个模式下,粒子的活动范围、动作是按圆形、半径来划分的。像上面的爆炸中心效果我就设定粒子初始产生的活动半径范围和粒子生命周期结束时活动的半径范围。
粒子还有三种关于运动位置坐标的影响模式->setPositionType()。这里引用一段解释:
如果粒子发射器A被增加了SpriteB, ( B->addChild(A) )
1.kCCPositionTypeFree
当B运动时,若设置Free,A发出的粒子则会出现拖尾现象。
若设置其它的,则不会出现拖尾。
2.kCCPositionTypeRelative
当A相对B中坐标变动的时,若设置Relative,A发出的粒子则会出现拖尾现象。
3.kCCPositionTypeGrouped
而设置Grouped,无论什么坐标改变都不会发生拖尾现象。
总结,Free是相对于世界,Relative相对于父节点,Grouped是相对于发射器坐标。
@1——依据 plist 文件创建粒子系统:
- CCParticleSystemQuad *emitter1 = CCParticleSystemQuad::create("Particle/BurstPipe.plist");
- emitter1->setPosition(ccp( size.width/2, size.height/2)); // 设置发射粒子的位置
- emitter1->setAutoRemoveOnFinish(true); // 完毕后制动移除
- emitter1->setDuration(10); // 设置粒子系统的持续时间秒
- this->addChild(emitter1, 0, 1);
不使用plist文件创建粒子效果
auto size = Director::getInstance()->getWinSize();
auto m_emitter = ParticleSystemQuad::createWithTotalParticles(900);
m_emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("snow.png"));
//The code below we can use both in 2.x and 3.x
m_emitter->setDuration(-1);
m_emitter->setGravity(Point(0, -240)); // in Cocos2d-x-2.x CCPoint(0, -240) is used
m_emitter->setAngle(90);
m_emitter->setAngleVar(360);
m_emitter->setRadialAccel(50);
m_emitter->setRadialAccelVar(0);
m_emitter->setTangentialAccel(30);
m_emitter->setTangentialAccelVar(0);
m_emitter->setPosition(Point(size.width / 2, size.height));
m_emitter->setPosVar(Point(400, 0));
m_emitter->setLife(4);
m_emitter->setLifeVar(2);
m_emitter->setStartSpin(30);
m_emitter->setStartSpinVar(60);
m_emitter->setEndSpin(60);
m_emitter->setEndSpinVar(60);
m_emitter->setStartColor(Color4F(255,255,255,1));
m_emitter->setStartColorVar(Color4F(0,0,0,0));
m_emitter->setEndColor(Color4F(255, 255, 255, 1));
m_emitter->setEndColorVar(Color4F(0, 0, 0, 0));
m_emitter->setStartSize(30);
m_emitter->setStartSizeVar(0);
m_emitter->setEndSize(20.0f);
m_emitter->setEndSizeVar(0);
m_emitter->setEmissionRate(100);
addChild(m_emitter,10);
在重力模式中,下面属性是合法的:
gravity (Point)。粒子系统的重力。
speed (float)。
粒子们射出的速度。
speedVar(float)速度变量
tangencialAccel(float)粒子们的正切加速度
tangencialAccelVar(float)粒子们正切加速度的变量
radialAccel(float)粒子们的半径加速度。
radialAccelVar(float)粒子们半径加速度的变量
半径模式有下列合法的属性:
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).粒子的纹理
cocos2d-x 粒子效果的更多相关文章
- Cocos2D v3.4.9粒子效果不能显示的原因分析及解决办法
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在游戏App中为了衬托气氛我们往往使用一些特殊的图形效果,粒子 ...
- cocos2d粒子效果
第9章 粒子效果 游戏开发者通常使用粒子系统来制作视觉特效.粒子系统能够发射大量细小的粒子并对他们进行渲染,而且效率要远高于渲染同样数目的精灵.粒子系统可以模拟下雨.火焰.雪.爆炸.蒸气拖尾以及其他多 ...
- cocos2d 粒子效果以及Particle Designer粒子工具的学习
最近在学习cocos2d中的粒子效果吧,下面就把学到的和大家分享下吧! Now!我们先了解下类结构吧 -- CCParticleSystem(所有粒子系统的父类) -- CCParticleSyste ...
- 6 cocos2dx粒子效果,类图关系,系统原生粒子和自己定义粒子效果,粒子编译器软件,爆炸粒子效果,烟花效果,火焰效果,流星效果,漩涡粒子效果,雪花效果,烟雾效果,太阳效果,下雨效果
1 粒子 演示样例 2 类图关系 3 系统原生粒子 CCParticleSystem 全部粒子系统的父类 CCParticleSystemPoint. CCParticleSystemQuad ...
- 超炫的HTML5粒子效果进度条 VS 如何规范而优雅地code
最近瞎逛的时候发现了一个超炫的粒子进度效果,有多炫呢?请擦亮眼镜! // _this.ch){ _this.particles.splice(i, 1); } }; this.Particle.p ...
- 简直要逆天!超炫的 HTML5 粒子效果进度条
我喜欢粒子效果作品,特别是那些能够应用于实际的,例如这个由 Jack Rugile 基于 HTML5 Cavnas 编写的进度条效果.看着这么炫的 Loading 效果,即使让我多等一会也无妨:)你呢 ...
- CodePen 作品秀:Canvas 粒子效果文本动画
作品名称——Shape Shifter,基于 Canvas 的粒子图形变换实验.在页面下方的输入框输入文本,上面就会进行变换出对应的粒子效果文本动画. CodePen 作品秀系列向大家展示来自 Cod ...
- iOS开发——UI进阶篇(十八)核心动画小例子,转盘(裁剪图片、自定义按钮、旋转)图片折叠、音量震动条、倒影、粒子效果
一.转盘(裁剪图片.自定义按钮.旋转) 1.裁剪图片 将一张大图片裁剪为多张 // CGImageCreateWithImageInRect:用来裁剪图片 // image:需要裁剪的图片 // re ...
- 能产生粒子效果的CAEmitterLayer
能产生粒子效果的CAEmitterLayer 下雪效果: // // RootViewController.m // Cell // // Copyright (c) 2014年 Y.X. All r ...
- cocos基础教程(8)粒子效果
简介 粒子系统是指计算机图形学中模拟特定现象的技术,它在模仿自然现象.物理现象及空间扭曲上具备得天独厚的优势,为我们实现一些真实自然而又带有随机性的特效(如爆炸.烟花.水流)提供了方便. 粒子属性 一 ...
随机推荐
- python_字符串常用操作
name = "monicao"name.capitalize() #首字母大写print(name.capitalize()) print(name.count("o& ...
- STM32 SPI 发送第一个数据不成功问题
STM32的标准库,跟HAL库都是很实用的, 在使用SPI库的过程中一定要注意时序的问题. 我在调试SPI过程中,调试了两个IC,都是用HAL库, 第一个IC没出问题,第二个IC出现了第一次发送数据不 ...
- 数字签名技术与https
1,非对称加密技术 非对称加密算法需要两个密钥,公开密钥(publickey)和私有密钥(privatekey):公钥和私钥是成对出现的. 非对称加密例子:B想把一段信息传给A,步骤:1)A把公钥传给 ...
- JDBC连接mysql时出现的ssl问题
使用MySQL数据库时出现如下错误: WARN: Establishing SSL connection without server's identity verification is not r ...
- 游标和动态SQL
游标类别:静态游标(指在编译的时候,游标就与一个select语句进行了静态绑定的游标.这样的游标仅仅能作用于一个查询语句)和动态游标(就是希望我们的查询语句在执行的时候才跟游标绑定.为了使用动态游标, ...
- 【MVC架构】——怎样利用Json在View和Controller之间传递数据
在MVC架构中,尽管非常多东西和三层非常相似,可是也有非常大的差别.就比方传递数据.在三层架构中,传递数据就仅仅要一层返回,另外一层用同样类型的变量来接收即可了.在MVC中,事实上原理是一样的,Con ...
- postMan模拟get和post请求,支持局域网和外网
chrome应用postMan,可以安装一下,非常方便. 可以FQ下载安装. post参数要在body中设置 get参数直接在url中
- xBIM 基础12 WeXplorer xViewer的导航、相机、剖切、隐藏等操作
系列目录 [已更新最新开发文章,点击查看详细] 本篇将学习xViewer的导航,剪切和隐藏.这应该足以使用户能够通过所有缩放,平移,轨道运行和隐藏可能的障碍物来检查建筑物内部.点击这里可以看到 ...
- Kettle和ETL的基本构成
不多说,直接上干货! 这里,我说的通俗易懂点,好方便大家的理解. ETL解决方案就像业务流程一样,具有输入.输出,以及一个或多个工作环节,处理步骤.同样的,这些步骤也具有输入和输出,并可以执行将一个输 ...
- Java8新特性 利用流和Lambda表达式对List集合进行处理
Lambda表达式处理List 最近在做项目的过程中经常会接触到 lambda 表达式,随后发现它基本上可以替代所有 for 循环,包括增强for循环.也就是我认为,绝大部分的for循环都可以用 la ...