七,粒子系统

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. Delegate模式

    转载:http://www.cnblogs.com/limlee/archive/2012/06/13/2547367.html 代理模式 顾名思义就是委托别人去做事情. IOS中经常会遇到的两种情况 ...

  2. 算法笔记_189:历届试题 横向打印二叉树(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 二叉树可以用于排序.其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树. 当遇到空子树 ...

  3. 改动Apach默认port

    一.改动Apache的默认port号 在WEB SERVER界,无论是微软的IIS还是世界排名第一的Apache,它们安装好后默认的网页服务port号都是80.有必要指出的是,假设你的电脑中已经安装有 ...

  4. 【基于Android的ARM汇编语言系列】之三:ARM汇编语言程序结构

    作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...

  5. css 设置英文字母大小写转换(text-transform)

      css 设置英文字母大小写转换 CreateTime--2018年5月25日07点16分 Author:Marydon 1.实现:通过text-transform实现 2.text-transfo ...

  6. Oracle常用标准表

    一.INV(库存) 子库存:mtl_secondary_inventories 事物处理:mtl_material_transactions mmt 事务处理来源类型:mtl_txn_source_t ...

  7. grub安装的 三种安装方式

    1. 引言 grub是什么?最常态的理解,grub是一个bootloader或者是一个bootmanager,通过grub可以引导种类丰富的系统,如linux.freebsd.windows等.但一旦 ...

  8. 通过JS控制各种元素的点击事件的【时间间隔】,特别适合【发表评论】功能

    1.使用情景模拟:下单(防止用户无脑狂点).支付(防止用户无脑点击支付).发表评论(防止用户无脑点击),当然如果你用了一个提示框进行屏蔽,下面代码可以无视了,右上角谢谢. 2.默写情景比如:比如发表评 ...

  9. (一)Linux实操之——权限、任务调度、磁盘分区

    1. 权限 1.1 查看权限 通过ls -l命令可以看到文件的详细信息 下面以一条信息解释各个位置字符的作用 -rwxr--r--. 1 root root 32 6月 18 10:15 choose ...

  10. HDUOJ----2487Ugly Windows

    Ugly Windows Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...