七、cocos2dx之粒子系统
本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=66
一、介绍
粒子系统指的是一个使用大量很小的精灵或者其他的一些绘制对象模拟一些模糊效果。使用传统的绘制技术很难实现。它们经常被用到一些混乱系统,自然现象以及一些化学反应动画效果中。
二、点阵vs矩形
在之前版本的cocos2dx中,有两种类型的粒子系统:矩形和点阵粒子系统:
1)CCParticleSystemQuad
2)CCParticleSystemPoint
CCParticleSystemQuad有一些额外的特点而CCParticleSystemPoint不支持:
1)旋转粒子系统:粒子们能够围绕轴线旋转,而CCParticleSystemPoint没有这个属性
2)粒子们有大小。而在CCParticleSystemPoint中,如果粒子尺寸大于64,那么将会被当成64
3)整个系统可以被缩放,可以使用缩放属性
因为CCParticleSystemPoint不支持CCParticleBatchNode,所以它被从cocos2dx粒子系统中移除掉了(囧)。
三、CCParticleBatchNode
一个CCParticleBatchNode 能够引用一个纹理并且只有一个纹理(一个图片文件)。只有被包含在纹理中的CCParticleSystems可以被添加到CCSpriteBatchNode。被添加到CCSpriteBatchNode 中的CCParticleSystems在一个OpenGL ES绘制中调用。如果 CCParticleSystems没有被添加进一个CCParticleBatchNode,那么每一个粒子系统都需要被OpenGL ES绘制一次,那样效率就很低了。
创建一个矩形粒子系统
CCParticleSystemQuad* m_emitter = newCCParticleSystemQuad();
m_emitter = CCParticleFire::create();
四、重力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).粒子的纹理
七、cocos2dx之粒子系统的更多相关文章
- cocos2d-x开发记录:二,基本概念(粒子系统,Scheduler和定时器)
七,粒子系统 1.导言 术语粒子系统是指计算机图形学技术,它使用大量非常小的精灵或其他图形对象来模拟某些种类的“模糊”现象,于传统渲染技术相比,它很难复制.通常是高度混沌无序的系统,自然现象.化学反应 ...
- [原创]cocos2d-x研习录-第三阶 特性之粒子系统
我想接触过游戏引擎的同学,对粒子系统应该不会陌生.它用于解决由大量按一定规则运动(变化)的微小物质在计算机上的生成和显示问题.粒子系统在游戏中有着非常广泛的应用,可以模拟很多现象,如火花.爆炸.烟雾. ...
- Cocos2dx淌坑日记:粒子系统PositionType的正确使用
Cocos2dx中的粒子系统,有三种定位方式,对应于不同需求. 之前我有一个想做的效果,是类似彗星的扫尾.但是当父节点也就是CCLayer跟着物体移动的时候,发现尾巴并没有跟随CCLayer移动,而是 ...
- [Cocos2d-x For WP8]Particle粒子系统
在游戏中,经常要实现一些真实的效果,这些效果(如,火焰,雪花等)都是由大量微粒组合而形成的.为了在游戏中实现这种效果,我们必须引进粒子系统,粒子系统中需要包括四个部分:粒子对象,运动规律,随机性,粒子 ...
- Cocos2d-x中自定义粒子系统
除了使用Cocos2d-x的11种内置粒子系统外,我们还可以通过创建ParticleSystemQuad对象,并设置属性实现自定义粒子系统,通过这种方式完全可以实现我们说需要的各种效果的粒子系统.使用 ...
- Cocos2d-x内置粒子系统
从类图中我们可以看到,Cocos2d-x中有内置的11粒子,这些粒子的属性都是预先定义好的,我们也可以在程序代码中单独修改某些属性,我们在上一节的实例中都已经实现了这些属性的设置. 内置粒子系统 内置 ...
- cocos2d-x Tests讲解 Particle System(粒子系统)
转载请注明出处: http://www.cnblogs.com/shangdahao/archive/2012/04/14/2447571.html 一.粒子系统简介: 粒子系统最早出现在80年代,主 ...
- 23、Cocos2dx 3.0游戏开发找小三之粒子系统:你那里下雪了吗?
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30485919 春雨惊春清谷天,夏满芒夏暑相连, 秋处 ...
- cocos2dx粒子系统的简单使用
cocos2dx自带的几种封装好的粒子系统,下面做个简单使用演示. ParticleFire 火焰粒子系统 ParticleFireworks 烟花粒子系统 ParticleSun 太阳粒子系统 Pa ...
随机推荐
- springmvc结合freemarker,非自定义标签
参考:http://viralpatel.net/blogs/spring-mvc-freemarker-ftl-example/ 上图: 目录层级: 启动后的访问地址:http://localhos ...
- 利用Console来调试JS程序、Console用法总结
http://blog.163.com/zhangmihuo_2007/blog/static/27011075201452522824347/ http://blog.163.com/zhangmi ...
- 页面的拼装配置Appache SSI
O(∩_∩)O哈哈哈~今天又遇到了一个好东西,记录一下下哈~ 一个网站,有些页面的头部跟尾部是相同的,还在为总是复制,为错了一个小小点而需要改好多个页面烦恼吗?现在我知道怎么来偷懒了! 1.首先找到c ...
- codevs 1256 打鼹鼠 LIS
题目链接 题目描述 Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的. 根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时 ...
- 解决Flex4 发布后访问 初始化极其缓慢的问题
原文http://blog.163.com/vituk93@126/blog/static/170958034201282222046364/ 昨天找了个免费.net空间,想测试一下做的一个简单Fle ...
- 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap good
上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...
- iOS6与iOS7屏幕适配技巧
一.没有包装任何 导航控制器 或者 UITabBarController 1.控制器的view是UIScrollView\UITableView\UICollectionView时(控制器是UITab ...
- Windows Latex 中日文字体设置例
中文字体例: \documentclass[CJK]{article} \usepackage{CJKutf8} \newcommand{\songti}{\CJKfamily{song}} % 宋体 ...
- 关于oracle spfile配置文件问题
$ORACLE_SID决定spfile dbs 默认 在启动Oracle数据库时报错,如下: [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: R ...
- strdup函数的使用方法
函数名: strdup 功 能: 将串复制到新建的位置处 用 法: char *strdup(char *str): 这个函数在linux的man手冊里解释为: The strdup() func ...