七,粒子系统

1.导言

术语粒子系统是指计算机图形学技术,它使用大量非常小的精灵或其他图形对象来模拟某些种类的“模糊”现象,于传统渲染技术相比,它很难复制。通常是高度混沌无序的系统,自然现象。化学反应过程等。

2.点与象限

在早起的cocos2d-x的版本中,有两个类型的粒子系统:象限和点这两种粒子系统:

◆CCParticleSystemQuad

◆CCParticleSystemPoint

与CCParticleSystemPoint相比CCParticleSystemQuad有这些额外的功能:

◆旋转的粒子,粒子可以围绕它的轴旋转。CCParticleSystemPoint忽略这个属性。

◆粒子能有任何大小。在CCParticleSystemPoint中,如果大小是大于64,它将被视为64。

◆整个系统能使用缩放属性被缩放。

因为CCParticleSystemPoint不支持CCParticleBatchNode,它已从cocos2d-x粒子系统中删除。

3.CCParticleBatchNode

一个CCParticleBatchNode能引用一个并且仅有一个纹理(一个图像文件,一个纹理地图集)。只有在纹理中被包含的CCParticleSystems能被添加到CCSpriteBatchNode。所有CCParticleSystems添加到CCSpriteBatchNode中被OpenGL ES绘制调用一次。如果CCParticleSystems没有被添加到一个CCParticleBatchNode那么OpenGL ES需要为每一个CCParticleSystems来绘制调用,这是非常低效率的。

4.创建一个象限Particle System

CCParticleSystemQuad* m_emitter = newCCParticleSystemQuad();

m_emitter = CCParticleFire::create();

5.Gravity 对 Radius 模式

Gravity(重力)模式

重力模式让粒子系统飞向或远离一个中心点。它的长处是在于允许非常动态有组织的效果。设置的代码如下:

// Gravity Mode

this->m_nEmitterMode = kCCParticleModeGravity;

// Gravity Mode: gravity

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

以下这些属性只在重力模式下有效:

gravity (一个CGPoint)粒子系统的重力

speed (float) 粒子的发射速度

speedVar (float)速度的方差

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

tangencialAccelVar (float) 正切加速度方差

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

radialAccelVar (float) 半径加速度方差

Radius(半径)模式

半径模式可以让例子旋转成一个圈。它还允许你创建要么向内或向外冲的螺旋效应的粒子。设置代码如下

// Radius Mode

this->m_nEmitterMode = kCCParticleModeRadius;

// Radius Mode: startRadius

this->modeB.startRadius = ;

this->modeB.startRadiusVar = ;//ccp(0,0);

以下这些属性只在半径模式下有效:

startRadius (float) 粒子系统的起始半径

startRadiusVar (float) 起始半径的方差

endRadius (float)粒子系统的结束半径

endRadiusVar (afloat) 结束半径的方差

rotatePerSecond (float)每秒围绕原点旋转度数

rotatePerSecondVar (float) 度数方差

6.所有模式的通用属性

以下是粒子系统的通用属性

startSize: 粒子颗粒的起始像素大小

startSizeVar

endSize: 如果你想要使用kCCParticleStartSizeEqualToEndSize开始大小==最终尺寸。

endSizeVar

startColor (ccColor4F)

startColorVar (ccColor4F)

endColor (ccColor4F)

endColorVar (ccColor4F)

startSpin:仅用于CCParticleSystemQuad

startSpinVar:仅用于CCParticleSystemQuad

endSpin:仅用于CCParticleSystemQuad

endSpinVar:仅用于CCParticleSystemQuad

life:短时间内粒子生存的时间

lifeVar:

angle: (a float)粒子的起始角度

angleVar

positon: (CGPoint)

posVar

centerOfGravity (CGPoint)

系统的通用属性

emissionRate (float)。每秒发射多少粒子

duration (float)。粒子系统存在多少秒(和live属性不同)。使用kCCParticleDurationInfinity表示无限。

blendFunc (ccBlendFunc)。用于系统的OpenGL混合函数

positionType (tCCPositionType)。使用kCCPositionTypeFree(默认)自由移动粒子,或使用kCCPositionTypeGrouped移动一个组。

texture (CCTexture2D)。用于粒子系统的纹理

例子

cocos2d-x附带一些预定义的粒子,在运行时可以定制。列出预定义的粒子

CCParticleFire: Point particle system. Uses Gravity mode.

CCParticleFireworks: Point particle system. Uses Gravity mode.

CCParticleSun: Point particle system. Uses Gravity mode.

CCParticleGalaxy: Point particle system. Uses Gravity mode.

CCParticleFlower: Point particle system. Uses Gravity mode.

CCParticleMeteor: Point particle system. Uses Gravity mode.

CCParticleSpiral: Point particle system. Uses Gravity mode.

CCParticleExplosion: Point particle system. Uses Gravity mode.

CCParticleSmoke: Point particle system. Uses Gravity mode.

CCParticleSnow: Point particle system. Uses Gravity mode.

CCParticleRain: Point particle system. Uses Gravity mode.

八,Scheduler (任务调度)和Timer Callback(定时器回调)

两种不同的回调类型CCScheduler vs NSTimer(objective-c中的定时器)

Scheduler负责触发回调任务

1.一个不同类型的callbacks selectors:

Update selector:它会每帧调用。你能自定义优先级

Custom selector: 它能自定义间隔时间

应该尽可能地避免选择自定义选择器。更新选择器更快和更少的内存消耗。

2.CCScheduler vs NSTimer

Cocos2D调度器提供你游戏的定时事件和调用。你不应该使用NSTimer。应该使用CCScheduler类。

◆CCNode 对象知道如何调用和取消调度事件并且使用Cocos2D调度器有几个独特的优势比使用NSTimer要好

◆只要CCNode不再可见或从场景中移除,调度器就会释放。

◆当Cocos2D 暂停或恢复被rescheduled时,调度器也会释放

◆自从最近一次调度器被调用后开始,下次调用后调度器传递一个单位为milliseconds的间隔时间。这个间隔时间对物理引擎是非常有用的。

◆使用this->scheduleUpdate()会确保你的更新函数将会在每帧渲染之前被调用

因此,CCScheduler可以帮你节省大量的时间并让你专注于你的游戏的机制。

cocos2d-x开发记录:二,基本概念(粒子系统,Scheduler和定时器)的更多相关文章

  1. Dokuwiki 二次开发记录

    Dokuwiki 二次开发记录 [转]http://www.syyong.com/other/Dokuwiki-Secondary-Development-Record.html DokuWiki 是 ...

  2. SQL开发技巧(二)

    本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上-- 文章系列目录 SQL开发技巧(一) SQL开 ...

  3. Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  4. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(二)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/06/2339490.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  5. .NET Web开发总结(二)

    第二章 4.1  Application对象 在.NET开发中具有举足轻重的作用 Application对象的作用和运行机制存储所有用户的信息将一个网站创建一个应用程序一 . 创建一个Global文件 ...

  6. SQL开发技巧(二) 【转】感觉他写的很好

    本文转自: http://www.cnblogs.com/marvin/p/DevelopSQLSkill_2.html 本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列 ...

  7. CozyRSS开发记录9-快速实现一个RSS解析器

    CozyRSS开发记录9-快速实现一个RSS解析器 1.再读RSS标准 既然需要自己实现一个RSS解析器,那自然需要仔细的读一读RSS的标准文档.在网上随便找了两份,一份英文一份中文: http:// ...

  8. ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章

    上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据.   目录: ASP.N ...

  9. ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表

    显示文章列表分两块,管理员可以显示全部文章列表,一般用户只显示自己的文章列表.文章列表的显示采用easyui-datagrid.后台需要与之对应的action返回json类型数据   目录 ASP.N ...

  10. ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章

    上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东 ...

随机推荐

  1. css选择器顺序的小技巧

    在线演示 本地下载 css的选择器的顺序其实很有意思,如果应用的好的话,可以做一些简单的逻辑出来,配合上css3,就可以尽可能的脱离js了. 这里的演示是一个带有hover事件的四张照片,效果来自一个 ...

  2. 远程binlog

    binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式 ...

  3. 在命令行上 使用 mutt, fetchmail, maildrop, msmtp 收发邮件

    基于shell 现在已经有了 Mail.app, Thunderbird, Outlook 这些图形化工具能很方便的处理邮件,为啥还需要 mutt 这种命令行文本方式的邮件工具呢?mutt 的一个优势 ...

  4. eclipse could not create the Java Vitual Machine

      eclipse could not create the Java Vitual Machine CreateTime--2018年4月27日11:07:15 Author:Marydon 1.情 ...

  5. Filezilla开源FTP传输工具

    生于忧患,死于安乐!在进取中思考... 官网:https://filezilla-project.org/ #FileZilla截图 免费.开源的FTP链接工具! 云下载: http://pan.ba ...

  6. Tomcat自带log的配置详解

    最近几天被日志搞得烦死了,不详细了解不行呀! Tomcat根目录文件作用说明 根目录下有bin,conf,lib,logs,temp,webapps,work 7个文件夹 bin目录 主要是用来存放t ...

  7. PLSQL常用配置

    峰回路转,此乃常客! 01.PL/SQL Developer记住登陆密码 为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码: 设置方法: PL/SQL Develop ...

  8. 从域名到网站,快速创建全新社区站点 - phpwind一键部署操作文档

    关于phpwind一键部署服务,请查阅PW官网:http://www.phpwind.com/setup.html 选择一键部署镜像版本,立即开始使用: PW建站系统(Centos 64位) ———— ...

  9. vim+xdebug调试PHP

    一.安装xdebug 1.编译安装xdebug,也可以使用pecl install xdebug wget http://xdebug.org/files/xdebug-2.3.2.tgz tar - ...

  10. js ie下有效 showModalDialog 、showModelessDialog

    <input type="button" value="打开选择输入框"/> <script type="text/javascri ...