`

cocos2d-x Particle System(粒子系统)

    博客分类:
  • ios
 
阅读更多

 

一、粒子系统简介:

粒子系统最早出现在80年代,主要用于解决由大量按一定规则运动(变化)的微小物质在计算机上的生成和显示问题。Particle System的应用非常广泛,大的可以模拟原子弹爆炸,星云变化,小的可以模拟水波、火焰、烟火、云雾等,而这些自然现象用常规的图形算法是很难逼真再现的。
Particle System可以说是一种基于物理模型来解决问题的方法,它的核心不在于如何显示,而在用于对微小物质模型的规则提取。
粒子运动(变化)的规则可以很简单也可以很复杂,这取决你所模拟的对象。举例来说,在对FireWorks(烟火)的模拟中,我们可以让烟火由上百个小的粒子组成,每个粒子都具有以下一些属性及其规则(对各个属性施加不同的规则,就可以获得不同形态的烟火):
 
Coordinate(坐标)
在烟火爆炸的时刻,每个粒子都有一个相同的初始坐标,随着时间的推移,粒子的新坐标将由它的旧坐标和加速度来求得
Velocity(速度)
每个粒子都有一个随机产生的初始速度,粒子的新速度由加速度和空气阻尼来求得
Acceleration(加速度)
在烟火中,每个粒子的加速度都等于重力加速度
Color(颜色)
粒子颜色取决于粒子的速度或生命值的大小
Life(生命值)
每个粒子都有一个初始的随机生命值,这个值将随着时间的推移而逐渐减小,直到等于0
 
你会发现,Particle System中的粒子与C++中类的概念有些类似,实际上你完全可以将它当成类来处理,一个粒子就是一个类的实例对象,只不过有时在涉及程序优化的具体细节上,你需要放弃使用类,而使用简单而快速的紧凑代码。
 
Particle System虽然在处理大量单独粒子的运动(变化)上很有用处,但是一涉及到需要考虑粒子间相互作用的场合,因为这时的计算量呈粒子数量的指数级增长,它就显得有些力不从心了。比如在模拟有相互引力作用下的大量星体的运动,大量粒子的相互碰撞等。
 
二、粒子系统的生命周期


 首先,从粒子池中获取一个粒子,
然后计算赋予初始属性后,发射他。
在粒子飞行过程中,不断的刷新来修正他的属性。
粒子死亡后,回归粒子池。
 
 三、例子相关属性
Variance 浮动值:表示随机上下浮动的修正值,实际值由原始值+浮动值组成,例如Lifespan=5,Lifespan Variance=1 那么随机出来的结果就是4~6


 四、发射器相关属性
发射器有两种,一种是重力发射器(用于实现在重力条件下的粒子运动),另一种是放射发射器(用于实现在无重力下的粒子运动)。


 五、纹理Texture
如果没有贴图的话,所有粒子将会是单调的色块。粒子的贴图没有具体限制,可以是灰度图,也可以是一张具体的图片。但要小于64x64pixel
六、cocos2d-x实现Particle System
第一种方法:
CCParticleSystem* m_emitter;
 m_emitter = CCParticleFireworks::node();
 m_emitter->retain();
 this->addChild(m_emitter, 10);
 m_emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage(“image.png”) );
 m_emitter->setPosition(ccp(489,320));
 第二种方法:
CCParticleSystem* m_emitter;
m_emitter = new CCParticleSystemQuad();
 m_emitter->initWithTotalParticles(50);
 this->addChild(m_emitter, 10);
 m_emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage(s_stars1) );
 m_emitter->setDuration(-1);
   
   // gravity
 m_emitter->setGravity(CCPointZero);
   
   // angle
 m_emitter->setAngle(90);
 m_emitter->setAngleVar(360);
   
   // speed of particles
 m_emitter->setSpeed(160);
 m_emitter->setSpeedVar(20);
   
   // radial
 m_emitter->setRadialAccel(-120);
 m_emitter->setRadialAccelVar(0);
   
   // tagential
 m_emitter->setTangentialAccel(30);
 m_emitter->setTangentialAccelVar(0);
   
   // emitter position
 m_emitter->setPosition( CCPointMake(160,240) );
 m_emitter->setPosVar(CCPointZero);
   
   // life of particles
 m_emitter->setLife(4);
 m_emitter->setLifeVar(1);
   
   // spin of particles
 m_emitter->setStartSpin(0);
 m_emitter->setStartSizeVar(0);
 m_emitter->setEndSpin(0);
 m_emitter->setEndSpinVar(0);
   
   // color of particles
 ccColor4F startColor = {0.5f, 0.5f, 0.5f, 1.0f};
 m_emitter->setStartColor(startColor);
   
 ccColor4F startColorVar = {0.5f, 0.5f, 0.5f, 1.0f};
 m_emitter->setStartColorVar(startColorVar);
   
 ccColor4F endColor = {0.1f, 0.1f, 0.1f, 0.2f};
 m_emitter->setEndColor(endColor);
   
 ccColor4F endColorVar = {0.1f, 0.1f, 0.1f, 0.2f}; 
 m_emitter->setEndColorVar(endColorVar);
   
   // size, in pixels
 m_emitter->setStartSize(80.0f);
 m_emitter->setStartSizeVar(40.0f);
 m_emitter->setEndSize(kParticleStartSizeEqualToEndSize);
   
   // emits per second
 m_emitter->setEmissionRate(m_emitter->getTotalParticles()/m_emitter->getLife());
   
   // additive
 m_emitter->setIsBlendAdditive(true);
 第三种方法:
CCParticleSystemQuad *system = new CCParticleSystemQuad();
  system->initWithFile("Images/SpinningPeas.plist");//plist文件可以通过例子编辑器获得
  system->setTextureWithRect(CCTextureCache::sharedTextureCache()->addImage("Images/particles.png")
       ,      CCRectMake(0,0,32,32));
  addChild(system, 10);
system->setPosition
 
  • 大小: 36.4 KB
  • 大小: 40.9 KB
  • 大小: 28.1 KB
分享到:
评论

相关推荐

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    2. **图形与动画**:讲解如何使用Cocos2d-x的绘图API绘制2D图形,实现精灵(Sprite)、动画(Animation)和粒子系统(Particle System)。 3. **物理引擎**:介绍Cocos2d-x内置的Box2D物理引擎,用于模拟游戏中的...

    cocos2d-x-3.13.1.zip

    5. Particle System:粒子系统用于创建火焰、烟雾、水流等特效,增加游戏视觉吸引力。 6. Audio Manager:音频管理模块支持音乐和音效的播放,为游戏营造氛围。 四、开发实践 使用cocos2d-x 3.13.1进行游戏开发,...

    cocos2d-x 案例开发大全 第二章(源码)

    6. **粒子系统(Particle System)**:cocos2d-x内置了强大的粒子系统,可用于创建各种特效,如火、烟雾、爆炸等。 7. **脚本支持**:除了C++,cocos2d-x还支持JavaScript和Lua脚本语言,提供更灵活的开发方式。在...

    《Cocos2d-x实战 JS卷 Cocos2d-js开发》随书源码下

    7. **粒子系统(Particle System)**:掌握如何创建和控制粒子效果,如火焰、烟雾等,以增强游戏视觉表现。 8. **层(Layer)与菜单(Menu)**:学习如何使用Layer组织游戏逻辑,以及创建用户界面(UI)的Menu类,...

    Cocos2D-X游戏开发技术精解学习

    此外,还会介绍粒子系统(Particle System)的使用,用于创建火焰、烟雾、雪花等特效。 物理引擎是现代游戏不可或缺的一部分,Cocos2d-x集成了Box2D物理引擎,书中的章节将引导读者了解物理世界的设定,如刚体...

    cocos2d-x-2.2.0.zip 完整版包

    6. **粒子系统(Particle System)**:内置的粒子系统允许开发者创建各种特效,如火、烟雾、星光等,增强游戏视觉表现。 7. **游戏性能优化**:2.2.0版本中包含了对多线程的支持,以及内存管理和渲染优化,有助于...

    COCOS2d-X by Example Beginner-'s Guide

    - **粒子系统(Particle System)**: 创建如火焰、烟雾等效果,增强游戏的视觉体验。 - **过渡效果(Transition Effects)**: 在不同场景间切换时使用的动画效果。 ### 用户界面设计 良好的用户界面设计可以提升玩家的...

    cocos2d-x 2.x 图层特效Effect

    4. **粒子系统(Particle System)**:cocos2d-x内置了强大的粒子系统,可以创建火、烟雾、雪、星光等各种复杂的粒子特效。 5. **网格动作(Grid Actions)**:这些特效可以对图层进行扭曲、拉伸、抖动等操作,如...

    cocos2d-x捕鱼达人源码IOS ANDORID WP8

    4. **粒子系统(Particle System)**:在捕鱼游戏中,炮弹爆炸、鱼死亡等特效通常用粒子系统来制作。cocos2d-x内置了强大的粒子编辑器,可以方便地创建和调整各种粒子效果。 5. **触摸事件处理**:玩家通过触摸屏幕...

    cocos2d-x 2.2.1 api 中文版

    8. **粒子系统(Particle System)**:`CCParticleSystemQuad`类提供了一个强大的粒子系统,可以创建火、烟、雪等特效。 9. **纹理(Texture)**:`CCTexture2D`类管理游戏中的纹理资源,包括加载、缓存和重复使用...

    cocos2d-x手机游戏开发

    接下来,书中详细讲述了cocos2d-x的绘图系统,包括精灵(Sprite)的使用、纹理(Texture)管理、动画(Animation)制作、粒子系统(Particle System)以及物理引擎(Box2D)的应用。这些章节将帮助开发者掌握如何...

    cocos2d-x飞行射击类游戏整套素材资源包

    资源包中可能包含子弹发射的粒子效果、爆炸的动态图片序列,开发者可以利用cocos2d-x的粒子系统(Particle System)来实现这些特效。 5. 道具与UI元素:游戏中的道具如护盾、升级道具、分数显示等都是通过UI元素来...

    Cocos2D-X2.2.3学习笔记17(粒子系统)

    在本学习笔记中,我们将深入探讨Cocos2D-X2.2.3中粒子系统的使用和相关知识。 1. 粒子系统基础 粒子系统是通过模拟大量小粒子的行为来生成复杂动态效果的技术。在Cocos2D-X中,粒子系统类名为`...

    【COCOS2DX-游戏开发之二八】 Cocos2d-x-3c 设计之路 CocosBase CocosNet CocosWidget

    这部分通常包括场景管理、精灵(Sprite)、动作(Action)、层(Layer)、粒子系统(Particle System)等。例如,场景管理器(Director)负责控制游戏的运行流程,精灵则用于显示2D图像,动作则可以实现精灵的动态...

    Cocos2d-html5 references/cocos2d-html5文档

    9. **粒子系统(Particle System)**:用于创建各种视觉效果,如火、烟雾、星光等。 10. **物理引擎(Physics Engine)**:Cocos2d集成了一些物理引擎,如Box2D,用于实现物理模拟。 11. **Tiled地图(Tiled Maps...

    iOS游戏应用源代码——cocos2d-cocos2d-iphone-extensions.zip

    7. **扩展性**:正如压缩包名所示,cocos2d-iphone有许多社区开发的扩展,如菜单(Menu)、粒子系统(Particle System)、图块地图(Tile Map)等,这些扩展增强了框架的功能。 在压缩包中的"e42002b"版本,可能...

    cocos2d-x-3.0别猜百块儿

    同时,游戏中的点击反馈、得分提示等可以通过Label和粒子系统(Particle System)来实现。音效部分,Cocos2d-x提供了AudioEngine模块,方便加载和播放音频文件。 六、项目构建与打包 在Xcode环境中,我们可以使用...

    cocos2d-x实战C++卷

    ### cocos2d-x实战C++卷知识点概览 #### 一、cocos2d-x简介与框架理解 cocos2d-x是一款非常流行的跨平台游戏开发框架,支持多种编程语言,其中C++版本(cocos2d-x)因其高性能而备受青睐。本书《cocos2d-x实战C++...

    子龙山人兄弟翻译cocos2d-iphone教程.rar

    教程还将涉及cocos2d-iphone的扩展功能,如粒子系统(Particle System)用于创建华丽的特效,以及Tiled地图编辑器的使用,用于构建大型游戏世界。此外,还有关于动画制作、资源管理、游戏存档和IAP(In-App Purchase...

Global site tag (gtag.js) - Google Analytics