大规模运动的物体通常有两种方法实现

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 文件创建粒子系统:

  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);

不使用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 粒子效果的更多相关文章

  1. Cocos2D v3.4.9粒子效果不能显示的原因分析及解决办法

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在游戏App中为了衬托气氛我们往往使用一些特殊的图形效果,粒子 ...

  2. cocos2d粒子效果

    第9章 粒子效果 游戏开发者通常使用粒子系统来制作视觉特效.粒子系统能够发射大量细小的粒子并对他们进行渲染,而且效率要远高于渲染同样数目的精灵.粒子系统可以模拟下雨.火焰.雪.爆炸.蒸气拖尾以及其他多 ...

  3. cocos2d 粒子效果以及Particle Designer粒子工具的学习

    最近在学习cocos2d中的粒子效果吧,下面就把学到的和大家分享下吧! Now!我们先了解下类结构吧 -- CCParticleSystem(所有粒子系统的父类) -- CCParticleSyste ...

  4. 6 cocos2dx粒子效果,类图关系,系统原生粒子和自己定义粒子效果,粒子编译器软件,爆炸粒子效果,烟花效果,火焰效果,流星效果,漩涡粒子效果,雪花效果,烟雾效果,太阳效果,下雨效果

     1 粒子 演示样例 2 类图关系 3 系统原生粒子 CCParticleSystem 全部粒子系统的父类 CCParticleSystemPoint. CCParticleSystemQuad ...

  5. 超炫的HTML5粒子效果进度条 VS 如何规范而优雅地code

    最近瞎逛的时候发现了一个超炫的粒子进度效果,有多炫呢?请擦亮眼镜!   // _this.ch){ _this.particles.splice(i, 1); } }; this.Particle.p ...

  6. 简直要逆天!超炫的 HTML5 粒子效果进度条

    我喜欢粒子效果作品,特别是那些能够应用于实际的,例如这个由 Jack Rugile 基于 HTML5 Cavnas 编写的进度条效果.看着这么炫的 Loading 效果,即使让我多等一会也无妨:)你呢 ...

  7. CodePen 作品秀:Canvas 粒子效果文本动画

    作品名称——Shape Shifter,基于 Canvas 的粒子图形变换实验.在页面下方的输入框输入文本,上面就会进行变换出对应的粒子效果文本动画. CodePen 作品秀系列向大家展示来自 Cod ...

  8. iOS开发——UI进阶篇(十八)核心动画小例子,转盘(裁剪图片、自定义按钮、旋转)图片折叠、音量震动条、倒影、粒子效果

    一.转盘(裁剪图片.自定义按钮.旋转) 1.裁剪图片 将一张大图片裁剪为多张 // CGImageCreateWithImageInRect:用来裁剪图片 // image:需要裁剪的图片 // re ...

  9. 能产生粒子效果的CAEmitterLayer

    能产生粒子效果的CAEmitterLayer 下雪效果: // // RootViewController.m // Cell // // Copyright (c) 2014年 Y.X. All r ...

  10. cocos基础教程(8)粒子效果

    简介 粒子系统是指计算机图形学中模拟特定现象的技术,它在模仿自然现象.物理现象及空间扭曲上具备得天独厚的优势,为我们实现一些真实自然而又带有随机性的特效(如爆炸.烟花.水流)提供了方便. 粒子属性 一 ...

随机推荐

  1. 利用GitHub搭建Hexo博客并开启HTTPS

    Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页. GitHub 是一个面向开源及私有软件项目的托管平台 ...

  2. jqMobi(App Framework)入门学习(一)

    jqMobi(App Framework)入门学习(一) 1. 什么是jqMobi? jqMobi是由appMobi针对HTML5浏览器和移动设备开发的javascript框架.是个极其高速的查询选择 ...

  3. 站点搭建从零開始(二)server空间

    前面介绍了域名相关知识.这里介绍server,也经常被叫做空间.也就是站点数据实际保存的地方. 1.整体介绍 依据国家相关规定,国内server空间须要进行备案.也就是到相关的机构进行登记.详细方法能 ...

  4. bzoj1045: [HAOI2008] 糖果传递(数论)

    1045: [HAOI2008] 糖果传递 题目:传送门(双倍经验3293) 题解: 一开始想着DP贪心一顿乱搞,结果就GG了 十分感谢hzwer大佬写的毒瘤数论题解: 首先,最终每个小朋友的糖果数量 ...

  5. m_Orchestrate learning system---二、如何实现验证码自动点击刷新

    m_Orchestrate learning system---二.如何实现验证码自动点击刷新 一.总结 一句话总结:传过去的url带随机数来避免读取缓存 onclick="this.src ...

  6. HBA卡

    HBA,即主机总线适配器英文“Host Bus Adapter”缩写.是一个在服务器和存储装置间提供输入/输出(I/O)处理和物理连接的电路板和/或集成电路适配器. HBA减轻了主处理器在数据存储和检 ...

  7. 解决linux ping: unknown host www.baidu.com

    如果ping域名的时候出现ping:unknown host  xxx.xxx 但是ping IP地址的时候可以通的话 可知是dns服务器没有配置好, 查看一下配置文件/etc/resolv.conf ...

  8. Bringing up the Avnet MicroZed with Vivado

    Bringing up the Avnet MicroZed with Vivado I recently received the Adam Taylor Edition of Avnet's Zy ...

  9. 中文版 ImageNet Classification with Deep Convolutional Neural Networks

    ImageNet Classification with Deep Convolutional Neural Networks 摘要 我们训练了一个大型深度卷积神经网络来将ImageNet LSVRC ...

  10. LR编写get请求

    LR编写简单Get接口 接口必备信息:接口功能.URL.支持格式.http请求方式.请求参数.返回参数 请求地址 http://api.k780.com:88/?app=life.time 请求方式 ...