android游戏引擎andengine学习系列五:粒子发射器形成的超炫效果

合集下载

3Dmax粒子特效制作:制造震撼的视觉效果

3Dmax粒子特效制作:制造震撼的视觉效果

3Dmax粒子特效制作:制造震撼的视觉效果3Dmax是一种广泛应用于电影、动画和游戏制作的三维建模软件。

在其中,利用粒子特效技术可以制作出令人惊叹的震撼视觉效果。

本文将详细介绍使用3Dmax制作粒子特效的步骤,并以一个具体的案例来进行说明。

1. 准备工作- 确保已经安装好最新版本的3Dmax软件,并已经熟悉其基本操作。

- 找到一个合适的项目案例,并准备好所需的素材,如模型、纹理贴图等。

2. 创建粒子系统- 打开3Dmax软件,创建一个新的场景。

- 在“创建”菜单中选择“粒子”选项,然后选择“粒子系统”来创建一个新的粒子系统。

- 调整粒子系统的参数,如发射器形状、发射速度、粒子数量等,以满足实现特定效果的需求。

3. 调整粒子外观- 在“显示”菜单中选择“粒子查看器”来查看粒子系统的效果。

- 在“创建”菜单中选择“材质编辑器”来编辑粒子的外观。

- 添加纹理贴图、调整颜色、透明度等参数,以使粒子具有更加逼真的外观。

4. 制作粒子动画- 在时间轴上设置关键帧,以控制粒子的运动轨迹和变化。

- 使用动画曲线编辑器对关键帧进行调整和编辑,以实现更加自然流畅的动画效果。

- 考虑加入物理引擎,如碰撞、重力等,以增加现实感和动态效果。

5. 添加特效- 在“创建”菜单中选择“特效”选项,然后选择合适的特效效果,如爆炸、粉尘或火焰,以增加粒子系统的视觉冲击力。

- 调整特效参数,如大小、颜色、密度等,以达到所需的效果。

- 可以通过叠加多个特效来创造更加复杂和炫目的效果。

6. 渲染与导出- 在渲染设置中选择合适的渲染器,并设置渲染参数,如分辨率和帧率等。

- 确保场景中的光照、阴影和材质等都已经调整好。

- 点击渲染按钮开始渲染动画,并等待完成后保存为指定的格式,如AVI、MP4等。

使用3Dmax制作粒子特效可以创造出各种震撼的视觉效果,如爆炸、烟雾、火焰等。

下面以一个火焰效果的案例来说明制作步骤。

案例:制作火焰粒子特效1. 创建粒子系统:选择“盒子”作为发射器形状,调整粒子的发射速度和数量,使其呈现出火焰形状。

AE技巧 使用粒子发射器制作烟雾和火花效果

AE技巧 使用粒子发射器制作烟雾和火花效果

AE技巧:使用粒子发射器制作烟雾和火花效果Adobe After Effects(AE)是一款强大的视觉效果和动态图形软件,广泛应用于电影、广告、动画等领域。

其中,粒子发射器是一个非常实用的工具,可以用来创造各种粒子效果,包括烟雾和火花效果。

本教程将简要介绍如何使用粒子发射器在AE中制作烟雾和火花效果。

首先,在AE中创建一个新的合成。

在菜单栏中选择“合成” > “新建合成”,设置合成的尺寸、时长和帧速率。

接下来,我们需要创建一个粒子发射器。

在工具栏中选择“图层” > “新建” > “新建效果图层”。

在出现的窗口中,点击“效果” > “模拟” > “粒子发射器”。

在“效果控制”面板中,可以对粒子发射器进行各种设置。

首先,我们可以调整“发射点”以及“速度”参数来控制粒子的发射位置和速度。

通过改变这些参数可以使烟雾或火花以不同的方式扩散或弥漫。

接下来,我们需要设置颜色和形状。

在“颜色over Life”选项中,可以设置粒子在生命周期中的颜色变化。

一般来说,烟雾的颜色会在逐渐变淡,而火花的颜色则可能从明亮到逐渐暗淡。

可以通过添加关键帧来调整颜色的变化。

在“形状”选项中,可以选择不同的形状,例如点、线或者图片等。

在制作烟雾效果时,选择云状形状可以更好地模拟烟雾的外观。

而在制作火花效果时,可以选择粒子形状,并且可以通过调整大小、旋转等参数来达到所需的火花效果。

在“运动模糊”选项中,可以通过调整“模糊大小”和“模糊样本”参数来增加烟雾或火花的模糊效果。

模糊效果可以使粒子看起来更加柔和、真实,增强整体的视觉效果。

最后,在合成中添加背景和其他元素,以便与粒子发射器效果进行交互或组合。

例如,可以添加一个文字图层,在烟雾或火花的背景中显示特定文字效果。

可以通过调整图层的混合模式和透明度来融合这些元素。

完成上述步骤后,可以通过点击AE界面底部的“空格键”来预览效果。

如果需要调整粒子效果,可以返回“粒子发射器”图层,对各个参数进行微调。

3Dmax中的粒子系统与动画:创造出炫酷的视觉效果

3Dmax中的粒子系统与动画:创造出炫酷的视觉效果

3Dmax中的粒子系统与动画:创造出炫酷的视觉效果导言:3Dmax是一种常用的三维建模和渲染软件,广泛应用于电影、广告、游戏等领域。

其中,粒子系统是一项重要的技术,可通过模拟物质的运动规律来创造出炫酷的视觉效果。

本文将详细介绍3Dmax中的粒子系统与动画的使用步骤,帮助读者快速掌握这一技术。

1. 什么是粒子系统:- 粒子系统是一种以点或者其他简单几何体为基础,模拟物质粒子运动的技术。

- 粒子系统可以模拟自然现象,如火焰、烟雾、水流等,也可以创造出抽象的视觉效果。

2. 创建粒子系统的基本步骤:- 步骤1:打开3Dmax软件并选择一个场景。

- 步骤2:点击“创建”选项卡,在“几何体”中选择“粒子系统”。

- 步骤3:在视图中点击并拖动,创建一个粒子发射器。

- 步骤4:调整粒子发射器的属性,如发射速度、方向、数量等。

- 步骤5:选择一个粒子形状,并调整其大小、颜色等属性。

- 步骤6:通过调整时间轴中的关键帧来改变粒子的运动轨迹。

3. 粒子系统的常用参数:- 粒子的生命周期:指粒子从出生到消失的时间范围。

- 粒子的速度和方向:影响粒子的运动轨迹。

- 粒子的形状:可以是点、线、平面等。

- 粒子的大小、颜色和透明度:影响粒子的外观。

- 粒子的发射器:控制粒子的发射位置和属性。

- 粒子的碰撞效果:可以模拟物体之间的碰撞和反弹效果。

4. 利用粒子系统创造炫酷的视觉效果实例:- 实例1:模拟烟雾效果- 创建一个球体作为粒子发射器。

- 调整粒子发射器的属性,使粒子从中心向外扩散。

- 选择云朵状的粒子形状,并调整其大小和透明度。

- 通过改变时间轴中的关键帧,使粒子产生随机的运动效果。

- 实例2:模拟火焰效果- 创建一个圆锥体作为粒子发射器。

- 调整粒子发射器的属性,使粒子向上方发射,并具有旋转效果。

- 选择火焰状的粒子形状,并调整其大小和颜色。

- 通过改变发射器的位置和角度,制造出不同形状和颜色的火焰效果。

- 实例3:创造抽象的视觉效果- 创建一个长方体作为粒子发射器。

AE粒子特效 打造震撼的火花喷射效果

AE粒子特效 打造震撼的火花喷射效果

AE粒子特效:打造震撼的火花喷射效果Adobe After Effects(简称AE)是一款功能强大的视频特效软件。

它通过精密的合成、动画和渲染工具,可以制作出各种令人惊叹的视觉效果。

在AE中,使用粒子特效可以让你的视频更加生动、真实,今天我们将学习如何用AE制作一个震撼的火花喷射效果。

步骤一:新建合成首先,打开AE软件并创建一个新的合成。

点击菜单栏中的【文件】-【新建】-【合成】,设置合成的尺寸和长度,点击【确定】。

步骤二:创建发射点在合成中创建一个发射点,这是粒子喷射的源头。

选择【图层】-【新建】-【形状图层】,在画布上绘制一个小圆作为发射点。

接下来,给这个形状图层添加一个【生成】-【径向射线】特效。

调整特效的参数,使得射线从发射点向外辐射。

步骤三:设置粒子效果选择图层面板中的【新建】-【影片图层】,创建一个新的影片图层用于添加粒子效果。

然后,点击菜单栏的【窗口】-【粒子】,打开粒子效果面板。

在面板上选择【新建】-【效果】-【粒子保持缩放】,并将其拖拽到影片图层上。

步骤四:调整粒子效果在粒子效果面板上,可以调整粒子的大小、形状、运动轨迹等属性。

具体操作如下:1. 粒子类型:选择【宽条片】作为粒子的形状类型,使其更像是火花。

2. 粒子大小:调整粒子的大小,使其看起来更逼真。

3. 粒子速度:增加粒子的速度,使其以更快的速度喷射出来。

4. 粒子颜色:通过调整粒子颜色的渐变,使火花效果更加逼真。

5. 粒子发射角度:调整粒子发射的角度,使其更具冲击力。

步骤五:添加背景为了让火花喷射效果更加突出,我们可以在合成中添加一个背景。

选择【图层】-【新建】-【实心图层】创建一个实心图层,并将其置于底部。

可以使用渐变工具或者其他插件来为背景添加一些特效,以增加整体的视觉效果。

步骤六:调整动画参数为了给火花喷射效果增添一些动态感,我们可以在时间轴上调整关键帧。

选中粒子效果图层,在关键帧上调整粒子的初始位置、发射速度等参数,使其有一个逐渐变化的效果。

particle effect for ugui原理-概述说明以及解释

particle effect for ugui原理-概述说明以及解释

particle effect for ugui原理-概述说明以及解释1.引言1.1 概述粒子特效在游戏开发中起着重要的作用,能够为游戏场景增添丰富多彩的视觉效果。

在Unity引擎中,通过使用Particle System组件,开发者可以轻松实现各种炫酷的粒子特效,包括火焰、爆炸、烟雾等。

而UGUI (Unity GUI)作为Unity中的UI系统,常用于开发游戏中的界面和交互元素。

本文将重点探讨粒子特效在UGUI中的应用,介绍如何利用Particle System组件结合UGUI实现各种炫酷的效果。

通过深入了解粒子特效在UGUI中的原理和实现方式,能够帮助开发者更好地运用这一技术,为游戏的视觉效果增添亮点。

1.2 文章结构文章结构部分的内容如下:文章结构部分将会介绍本文的具体内容安排,主要包括三个部分:引言、正文和结论。

引言部分将从概述、文章结构和目的三个方面介绍本文的主题和研究意义。

正文部分将详细介绍粒子特效的概念及其在UGUI中的应用,以及Particle System组件与UGUI的结合方法。

结论部分将对本文的主要内容进行总结,并分析粒子特效在UGUI中的优势与不足,同时展望未来该领域的发展方向。

1.3 目的粒子特效在游戏和交互界面设计中起着非常重要的作用,能够为用户提供更加生动和视觉上吸引人的体验。

而在UGUI中,如何有效地应用粒子特效也成为了许多开发者关注的焦点之一。

本文旨在探讨在UGUI中实现粒子特效的原理和方法,帮助读者了解如何将粒子特效无缝地应用到UGUI界面中,提升用户体验和界面效果。

通过本文的学习,读者将能够掌握使用Particle System组件结合UGUI的技巧,灵活地运用粒子特效来丰富界面的设计和交互效果。

2.正文2.1 粒子特效简介:粒子特效是一种通过模拟粒子系统的运动和交互来达到一定视觉效果的技术。

在游戏开发和电影制作中,粒子特效常常被用来模拟火焰、爆炸、烟雾等自然物理现象,以及表现各种特殊效果和动画效果。

3Dmax粒子发射教程:实现火花和爆炸特效

3Dmax粒子发射教程:实现火花和爆炸特效

3Dmax粒子发射教程:实现火花和爆炸特效3Dmax是一款广泛应用于电影、游戏和动画制作的三维建模和渲染软件。

其中的粒子发射功能可以用来创建各种特效,如火花和爆炸。

本文将详细介绍如何使用3Dmax中的粒子发射器来实现火花和爆炸特效。

步骤一:打开3Dmax软件并创建一个新项目。

选择合适的单位和尺寸,以适应你的需求。

在这个项目中,我们将使用米制单位和默认的场景尺寸。

步骤二:在模型化工具栏中选择“粒子系统”并点击“发射器”。

在视图中心创建一个新的发射器,并将其重命名为“火花”。

步骤三:在参数面板中调整发射器的设置。

将发射器的类型设置为“粒子”,并选择“火花”预设。

你还可以调整发射器的位置、速度和方向等属性。

步骤四:在参数面板中选择“粒子”选项卡,并调整粒子的属性。

你可以设置粒子的尺寸、颜色、寿命等参数,以实现火花的效果。

还可以调整粒子的速度和加速度,以控制火花的运动轨迹。

步骤五:在发射器的属性面板中,选择“外观”选项卡,并调整火花的表面材质。

你可以选择透明的材质,并添加一些纹理和颜色,以增加细节和真实感。

步骤六:通过调整发射器的形状来改变火花的外形。

你可以选择圆柱形、球体或自定义的形状。

调整形状的参数,如半径、高度和分割数,以达到理想的效果。

步骤七:为了使火花看起来更真实,你可以使用粒子系统中的着火和烟雾效果。

选择“着火”选项卡,并调整火焰的颜色、密度和透明度。

你还可以添加一些烟雾效果,以增加真实感。

步骤八:完成了火花特效后,你可以开始制作爆炸效果。

在模型化工具栏中再次选择“发射器”,并创建一个新的发射器,并将其命名为“爆炸”。

步骤九:在参数面板中调整发射器的设置。

将发射器的类型设置为“粒子”,并选择“爆炸”预设。

调整发射器的位置、速度和大小等属性,以适应你的爆炸效果需求。

步骤十:在参数面板中选择“粒子”选项卡,并调整粒子的属性。

你可以设置爆炸颗粒的尺寸、颜色、速度和方向等参数,以实现爆炸的效果。

还可以调整粒子的生命周期和散射程度,以控制爆炸的形状和范围。

基于AndEngine引擎的手机游戏动画制作

基于AndEngine引擎的手机游戏动画制作作者:陈海燕王丽芬张燕宁张景峰来源:《电脑知识与技术》2017年第31期摘要:随着智能手机的迅速发展,各种手机平台上的软件开发逐渐形成一项庞大的产业。

与应用程序开发相比,游戏开发显得更加灵活多变。

而利用游戏引擎制作手机游戏可以让开发者能容易和快速地上手而不用从零开始。

AndEngine是一款基于OpenGL ES技术的Android游戏引擎,为开发者提供了免费且易用的游戏框架,可以让经验不多的开发者迅速投入到快速增长的市场中来,同时又不会限制专业级游戏开发者的创意。

该文着重介绍如何利用AndEngine 引擎制作手机游戏动画。

关键词:AndEngine;游戏引擎;动画;瓦片贴图中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)31-0265-021 制作动画所需要的素材游戏中的动画指的是会根据游戏动作改变其形态的精灵。

在AndEngine中,动画有别于不改变物体形态的简单变换与旋转。

播放动画效果,需要有描述该物体各种形态的帧图像。

帧动画就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。

开发者可以使用任何绘图工具来制作帧动画所需要的图片,也可以使用动画制作软件来做动画图像。

本文以一个跳远的人为例,在跳远动画范例中,有12帧图像,每幅图像的大小为52像素×63像素。

2 制作动画的瓦片贴图将所有的动画帧都做成一张共用的精灵表并载入,可以大大提升绘制速度。

AndEngine要求瓦片贴图以矩阵方式排列,而且每张瓦片贴图必须大小相同且按播放动画的顺序放置。

可以将帧图像用拼图软件按照要求拼成如下的大图,图像大小为312像素×126像素。

3 AndEngine的动画所用到的类和主要方法AndEngine中有专门为动画精灵设置的名为AnimatedSprite的类,它从TiledTextureRegion 对象中提取动画的帧。

AE粒子发射器的高级应用技巧

AE粒子发射器的高级应用技巧AE粒子发射器(After Effects Particle Generator)是一款常用的粒子效果插件,广泛用于影视制作和特效设计。

通过合理运用AE粒子发射器的高级应用技巧,可以创造出更加逼真炫酷的特效效果。

本文将为您介绍AE粒子发射器的高级应用技巧,帮助您提升特效设计的水平。

一、粒子发射器在AE软件中打开AE粒子发射器插件,点击“新建”按钮,即可创建一个粒子发射器。

根据您的需求,可以调整发射器的形状、速度、角度等参数,以及添加重力、速度、大小等影响粒子运动的参数。

通过调整这些参数,您可以创造出各种炫酷的粒子发射效果。

二、发射器脉冲效果粒子的发射不一定要按照恒定速度进行,通过添加脉冲效果,可以使粒子在不同的时间段内以不同的速度进行发射。

在AE粒子发射器插件中,选择“速度曲线”功能,可以自定义粒子的速度变化规律。

您可以根据需要调整速度曲线,制造出脉冲效果的粒子发射效果。

三、粒子之间的相互作用AE粒子发射器不仅可以发射粒子,还可以实现粒子之间的相互作用效果。

通过添加“吸引”、“斥力”等力场效果,可以让粒子产生相互吸引或斥力的效果。

在AE粒子发射器插件的控制面板中,选择“力场”选项,设置力场参数,即可实现粒子间的相互作用效果。

四、粒子路径效果除了通过设置粒子的发射方向和速度来控制粒子移动路径外,还可以通过使用路径图层来控制粒子的移动路径。

在AE中,创建一个形状图层,将其设置为路径,然后将其应用到AE粒子发射器中,即可使粒子按照路径进行移动。

通过调整路径的形状和曲线,可以创造出更加复杂的粒子路径效果。

五、粒子纹理效果除了简单的点、线、云等形状的粒子,AE粒子发射器还可以导入自定义的纹理作为粒子的形状。

在AE粒子发射器中,选择“粒子形状”选项,点击“更改纹理”按钮,即可导入您所需要的纹理图片。

通过使用不同的纹理,可以创造出各种独特的粒子效果。

六、粒子精确控制技巧在进行特效设计过程中,有时候需要对粒子进行更加精确的控制,以达到更加理想的效果。

安卓游戏开发引擎介绍

安卓游戏开发引擎简介本文由扬速科技提供Android 游戏引擎汇总1.AndEngine简介:AndEngine 基于libGDX框架开发,使用OpenGL ES进行图形绘制。

同时继承了BOX2D物理引擎,因此能实现一些较为复杂的物理效果。

在Rokon 停止更新以后,AndEngine 成为Android 最为流行的2D游戏引擎优点:(1)高效:在大运算量好事情况下,使用C/C++本地代码进行开发。

比如物理引擎或者音频处理。

(2)AndEngine是开源项目,开发者可对源码进行修改,它的源码在github上托管。

(3)拥有Particle System (粒子系统),能制作雨雪流水等效果,另外还有Streak(动态模糊),Ratial Bule(径向模糊)等(4):使用JNI封装了BOX2D的C++端,使得运行效率提高。

如果游戏中使用物理引擎,则优先考虑使用该引擎。

缺点:没有官网文档,网上文档教程少,学习难度大。

但是网上可收集到较多源码。

语言:java最低运行环境:不详2.Rokon简介:是一款Android 2D游戏引擎,基于OpenGL ES技术开发,物理引擎为Box2D,因此能够实现一些较为复杂的物理效果,该项目最新版本为 2.0.3 (09/07/10)。

优点:(1)开发文档相当之完备,并且项目作者对反馈Bug的修正非常之神速,所以该框架的使用在目前也最为广泛,有人干脆将它称为Cocos2d-iPhone 引擎的Android版(业务逻辑和编码风格上也确实很像)。

语言:java最低运行环境要求为Android 1.5。

3. LGame简介:是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本,目前最高版本同为0.2.6(31/07/10)。

优点:(1) 层绘图器LGrpaphics封装有J2SE以及J2ME提供的全部GraphicsAPI(PC版采用Graphics2D封装,Android版采用Canvas模拟实现),所以能够将J2SE或J2ME开发经验直接套用其中,两版本间主要代码能够相互移植。

粒子发射器 利用粒子系统创建粒子发射效果

粒子发射器:利用粒子系统创建粒子发射效果粒子系统是Blender软件中非常强大和有趣的工具之一。

它可以模拟和创建出各种粒子的效果,比如火花、烟雾、雨滴等。

在本教程中,我们将学习如何使用粒子系统创建一个粒子发射效果。

首先,打开Blender软件并创建一个新的场景。

接下来,选择默认的立方体,然后按快捷键Shift+A,选择"Mesh"->"Plane",添加一个平面对象。

将平面对象移动到场景的底部,作为粒子发射器的基准。

在属性窗口中切换到“粒子”选项卡。

点击“+”按钮,创建一个新的粒子系统。

确保粒子系统的类型设置为“Emitter”。

在“发射器”选项中,将“发射速度”设置为适当的值,可以控制粒子发射的速度。

将“发射器”旁边的“外向速度”设置为一个负值,以使粒子向场景外发射。

接下来,我们需要设置粒子呈现的样式。

在“呈现”选项中,将“渲染类型”设置为“对象”,然后选择一个合适的对象作为粒子的外观。

可以选择一个球体、一个立方体或者其他几何图形。

调整“大小”和“颜色”选项,以获得想要的效果。

我们还可以设置粒子的生命周期。

在“生命”选项中,可以分别设置粒子的寿命和衰减。

通过调整这些值,可以控制粒子的持续时间和逐渐消失的速度。

还可以在“力场”选项中添加各种力场效果,例如重力、引力等。

通过调整这些力场参数,可以影响粒子的运动轨迹和速度。

当所有的设置都完成后,点击“播放”按钮,就可以看到粒子发射效果了。

可以随时调整参数来调整粒子效果,直到满意为止。

除了创建基本的粒子发射效果,Blender还提供了许多高级的粒子系统功能,如粒子碰撞、粒子形状调整等。

通过深入学习这些功能,可以创造出更加复杂和逼真的粒子效果。

总结一下,在本教程中,我们学习了如何使用Blender的粒子系统创建一个粒子发射效果。

通过调整粒子的参数和设置粒子的外观,可以创造出各种独特的粒子效果。

希望本教程对你在Blender中使用粒子系统有所帮助,让你能够更加灵活和创造性地使用这个强大的工具。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

android游戏引擎andengine学习系列五:粒子发射器形成的超炫效果我们在试用andengine编写游戏应用的时候,如果想在游戏中增加丰富多彩绚丽的元素,可是尝试下试用粒子发射器,andengine examples中提供了三个例子来演示两种动态火焰的形成,效果很逼真,粒子发射器能够形成火焰,其原理可以理解成跟示波器形成图形有点相似,粒子发射器发射的是自定义的效果元素,示波器发射的是电子,都是通过大量的元素进行刷新,绘制等操作形成的图形,所不同的是,粒子发射器发射的粒子有范围的限制,而且需要自己手动的将过期的粒子杀死来形成动态的效果,而示波器是电子不断打在屏幕上形成的印记。

下面我尝试从源码来解释火焰效果的形成。

一,圆盘型粒子发射器,先看效果图:a.b.c.d. onLoadResources()方法:[java] view plaincopy@Override public void onLoadResources() { this.mTexture = new Texture(32, 32,TextureOptions.BILINEAR_PREMULTIPLYALPHA); this.mParticleTextureRegion = TextureRegionFactory.createFromAsset(this.mTexture, this, "gfx/particle_point.png", 0, 0);this.mEngine.getTextureManager().loadTexture(this.mText ure); }这个方法不用多说了,前面的博文都有介绍,注意:particle_point.png便是粒子的样式图片,为一个光点。

onLoadScene()方法:[java] view plaincopy@Override public Scene onLoadScene(){ this.mEngine.registerUpdateHandler(new FPSLogger()); final Scene scene = new Scene(1);//CircleOutlineParticleEmitter为圆形的例子发射器,其构造方法中的参数:第一第二个为圆心的位置,第三个为半径final CircleOutlineParticleEmitter particleEmitter = new CircleOutlineParticleEmitter(CAMERA_WIDTH * 0.5f, CAMERA_HEIGHT * 0.5f + 20, 80);//ParticleSystem为粒子系统,屏幕上的所有粒子都归这个类统一管理final ParticleSystem particleSystem = new ParticleSystem(particleEmitter, 60, 60, 360,this.mParticleTextureRegion); //备注1scene.setOnSceneTouchListener(new IOnSceneTouchListener() { @Override public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent){ particleEmitter.setCenter(pSceneTou chEvent.getX(), pSceneTouchEvent.getY());return true; } }); //初始化粒子的状态//ColorInitializer中的参数为RGB颜色,(1,0,0)就代表红色//AlphaInitializer 中的参数为透明值//setBlendFunction这个是颜色的混合方式,这里有详细的介绍:<ahref="/yujunyong/archive/2011/04/ 13/2015467.html">/yujunyong/a rchive/2011/04/13/2015467.html</a>//VelocityInitializer中的参数:第一个为x轴最小的速度,第二个为x轴最大的速度,第三个为y轴最小的速度,第四个为y轴最大的速度//RotationInitializer中的参数:第一个是最小的角度,第二个是最大的角度particleSystem.addParticleInitializer(new ColorInitializer(1, 0, 0));particleSystem.addParticleInitializer(newAlphaInitializer(0));particleSystem.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE);particleSystem.addParticleInitializer(new VelocityInitializer(-2, 2, -20, -10));particleSystem.addParticleInitializer(new RotationInitializer(0.0f, 360.0f)); //修改粒子的状态//ScaleModifier中的参数:第一个为from状态,第二个为to状态,第三个为开始的时间,第四个为结束的时间;//ScaleModifier(1.0f, 2.0f, 0, 5)代表是在0-5秒,粒子放大一倍;//------------------------------------------------------------------------------------------------- //ColorModifier中的参数:第一第三第五代表开始的颜色RBG值,第二第四第六代表最终的颜色RGB值,第七第八个参数为时间范围//ColorModifier(1, 1, 0, 0.5f, 0, 0, 0, 3)代表0-3秒,颜色(1,0,0)变为(1,0.5f,0);//------------------------------------------------------------------------------------------------- //AlphaModifier中的参数:第一个代表from的透明值,第二个代表to的透明值,第三第四个为时间的范围//AlphaModifier(0, 1, 0, 1)代表在0-1秒,粒子由不透明变成透明状态//------------------------------------------------------------------------------------------------- //ExpireModifier中的参数:第一个参数为粒子的最小存活时间,第二个参数为粒子最长的存活时间;//ExpireModifier(6, 6)代表粒子可以存活6秒particleSystem.addParticleModifier(new ScaleModifier(1.0f, 2.0f, 0, 5));particleSystem.addParticleModifier(new ColorModifier(1, 1, 0, 0.5f, 0, 0, 0, 3));particleSystem.addParticleModifier(new ColorModifier(1, 1, 0.5f, 1, 0, 1, 4, 6));particleSystem.addParticleModifier(new AlphaModifier(0, 1, 0, 1)); particleSystem.addParticleModifier(new AlphaModifier(1, 0, 5, 6));particleSystem.addParticleModifier(new ExpireModifier(6, 6)); //备注2scene.getTopLayer().addEntity(particleSystem);return scene; }备注1:ParticleSystem粒子系统类中的构造参数,第一个为定义的粒子发射器,第二个是一秒中能同时发射到屏幕上的粒子最小的数量,第三个是一秒中能同时发射到屏幕上的粒子最大的数量,第四个参数为屏幕上允许可以存活的最大的粒子数,第五个为粒子纹理。

备注2:这里是形成效果动态最关键的代码,将过期的粒子杀死,粒子系统则会发布新的粒子来凑足自己所规定的最大的粒子数,此处规定6秒钟为过期的时间,于是当到了第6秒的时候,第一个发射出来的粒子便被杀死了。

可以看到ParticleSystem类中更新的源码:[java] view plaincopyfinal int particlesToSpawnThisFrame= Math.min(this.mMaxParticles - this.mParticlesAlive, (int)FloatMath.floor(this.mParticlesDueToSpawn));this.mParticlesDueToSpawn -= particlesToSpawnThisFrame; for(int i = 0; i < particlesToSpawnThisFrame;i++){ this.spawnParticle(); }mMaxParticles便是我们上面规定的最大的粒子数360,而mParticlesAlive则为屏幕上还存活的粒子的数量,这条代码就是得到粒子系统根据屏幕上的粒子存活的数量以及必须要达到多少数量来确定还需要发射多少数量,于是知道了自己还需要发射多少数量,便用了一个for循环来进行发射。

其中的更新的方法:[html] viewplaincopy@Override protected void onManagedUpdate(final float pSecondsElapsed){ if(this.mParticlesSpawnEnabled){ this.spawnParticles(pSecondsElapsed);} final Particle[] particles =this.mParticles; finalArrayList<IParticleModifier> particleModifiers = this.mParticleModifiers; final int particleModifierCountMinusOne =this.mParticleModifierCount - 1; for(int i = this.mParticlesAlive - 1; i >= 0; i--) { final Particle particle = particles[i]; /* Apply all particleModifiers */ for(int j = particleModifierCountMinusOne; j >= 0; j--){ particleModifiers.get(j).onUpdateParticle(particle); }particle.onUpdate(pSecondsElapsed);if(particle.mDead){ this.mParticlesAlive --; final int particlesAlive =this.mParticlesAlive; particles[i] = particles[particlesAlive];particles[particlesAlive] =particle; } } } 可以看到,最后if判断,如果粒子已经被杀死,那么屏幕上存活的粒子数将会减少一个,并且重新赋值。

相关文档
最新文档