Cocos2d-x粒子系统

原创 2014年08月05日 16:16:19

CCparticleSystem类封装实现对粒子的控制与调度,其中操作包括有:

1、产生粒子

2、更新粒子状态

3、回收无效的粒子

CCparticleSystem派生出CCParticleSystemPoint(重力式粒子系统)和CCParticleSystemQuad(放射性粒子系统)

粒子效果有:

CCParticleExplosion (爆炸粒子效果)
CCParticleFireworks (烟花粒子效果)
CCParticleFire (火焰粒子效果)
CCParticleFlower (花束粒子效果)
CCParticleGalaxy (星系粒子效果)
CCParticleMeteor (流星粒子效果)
CCParticleSpiral (漩涡粒子效果)
CCParticleSnow (雪粒子效果)
CCParticleSmoke (烟粒子效果)
CCParticleSun (太阳粒子效果)
CCParticleRain (雨粒子效果)

实例:

1、通过制定纹理图片创建粒子效果

	CCParticleSystem *particle = CCParticleExplosion::create();
	particle->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
	particle->setAutoRemoveOnFinish(true);
	this->addChild(particle);

2、根据属性创建放射性粒子系统(无重力)CCParticleSystemQuad

CCParticleSystem *m_emitter;
	m_emitter = new CCParticleSystemQuad();
	m_emitter->initWithTotalParticles(300);
	//设置纹理
	m_emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
	m_emitter->setDuration(-1);
	//对齐
	m_emitter->setGravity(CCPointZero);
	//角度
	m_emitter->setAngle(90);
	m_emitter->setAngleVar(360);
	//速度
	m_emitter->setSpeed(160);
	m_emitter->setSpeedVar(20);
	//生命周期
	m_emitter->setLife(4);
	m_emitter->setLifeVar(1);
	//粒子旋转
	m_emitter->setStartSpin(0);
	m_emitter->setStartSizeVar(0);
	m_emitter->setEndSpin(0);
	m_emitter->setEndSpinVar(0);
 	//粒子颜色
	ccColor4F startColor = {0.5f,0.5f,0.5f,0.5f};
	m_emitter->setStartColor(startColor); 
	ccColor4F startColor2 = {0.5f,0.5f,0.5f,1.0f};
	m_emitter->setStartColorVar(startColor2);
	ccColor4F startColor3 =	{0.1f,0.1f,0.1f,0.2f};
	m_emitter->setEndColor(startColor3); 
	ccColor4F startColor4 =	 {0.1f,0.1f,0.1f,0.2f} ;
	m_emitter->setEndColorVar(startColor4); 
    //粒子尺寸
	m_emitter->setStartSize(20.0f);  
	m_emitter->setStartSizeVar(10.0f);   
	m_emitter->setEndSize(32.0f);  
	m_emitter->setEndSizeVar(8.0f);
	//每秒出现粒子数
	m_emitter->setEmissionRate(m_emitter->getTotalParticles()/m_emitter->getLife());  // 每秒产生粒子数 =  粒子总数/存活时间 ;
	//位置
	m_emitter->setPosition(ccp(visibleSize.width/2, visibleSize.height/2));
	this->addChild(m_emitter);
效果:



cocos2d-x安装与配置

最近需要用到cocos2d-x环境,便想着在我这台比较破的电脑上安装。安装过程真的是一波三折。在网上找的教程都是比较老的了,心想也没办法了,就按照这个先这么装吧!于是我就先下了coco2d-x-3.1...
  • chinalzn
  • chinalzn
  • 2017年05月12日 14:58
  • 580

Cocos2d-x实现计时器与定时器功能

笔者最近在写一个计时和定时的功能,上网查看了不少讲述实现计时器定时器的文章,大多都直接采用Cocos2d-x的定时器schedule。但是schedule定时器会有一定的误差。 为了尽量的消除误差,笔...
  • wsr270591269
  • wsr270591269
  • 2017年05月29日 12:10
  • 402

《Cocos2d-x实战 C++卷》上线了-源码-样章-感谢大家的支持

《Cocos2d-x实战 C++卷》上线了感谢大家一直以来的支持! 全面介绍Cocos开发技巧,采用Cocos2d-x3.2版本,并且详细介绍跨平台移植已经多平台发布细节。· 各大商店均开始销售:京东...
  • tonny_guan
  • tonny_guan
  • 2014年12月01日 21:05
  • 5003

Cocos2d-x教程(17)-Box2D 物理引擎

Box2D的基本使用方法
  • u012945598
  • u012945598
  • 2014年01月03日 13:30
  • 7671

cocos2d-x中的碰撞检测

今天在csdn看到一篇文章,写矩形与圆形的碰撞检测,借鉴了作者的检测思路,我把它用到了cocos2d-x中。 原文章的地址:http://blog.csdn.net/yorhomwang/articl...
  • guochuanqi
  • guochuanqi
  • 2014年01月16日 11:46
  • 2546

我所理解的Cocos2d-x Cocos2d-x 内存管理机制

C++内存管理C++显式堆内存管理性能上有一定优势,但有如下缺点: 野指针:指针指向的内容已经被释放,但是其他指针还可能指向它。 重复释放:重复释放一个已经释放的内存单元,或者释放一个野指针,都会导致...
  • sinat_24229853
  • sinat_24229853
  • 2016年07月21日 15:15
  • 381

【cocos2d-x】属性设置及单例模式

出自图书《制作自己的捕鱼达人》 单例: 相对于前面的内容,单例(singleton)则是一个很易于理解的概念。在Cocos2d-x引擎中,我们能看到大量单例的身影,它们大部分出现在一些...
  • eclipse_c
  • eclipse_c
  • 2015年05月18日 22:45
  • 446

cocos2d-x高级UI控件详细介绍

对应官网的CCControlExtention。可以通过TestCpp的EntentionTest查看效果。 http://cocos2d-x.org/projects/cocos2d-x/...
  • xzongyuan
  • xzongyuan
  • 2013年06月26日 14:22
  • 5341

[图文]将cocos2d-x项目移植到android上

Visual Studio开发环境下,将cocos2d-x项目移植到android上(使用eclipse+ndk+python)
  • VistaTns
  • VistaTns
  • 2016年05月04日 16:36
  • 1026

《Cocos2d-x之Lua核心编程》读书笔记:Lua基础

Lua编程三类用户 需要一门简单的脚步语言嵌入到应用程序中的开发者 想要提高c/c++语言开发者 想要提高运行效率的脚步开发者 特点 易嵌入,可以方便的与c/c++编写的游戏逻辑互相调用 简单,不涉及...
  • c_boy_lu
  • c_boy_lu
  • 2016年01月29日 15:07
  • 1692
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cocos2d-x粒子系统
举报原因:
原因补充:

(最多只允许输入30个字)