OGEngine_粒子效果

粒子系统

粒子系统表示三维计算机图形学中模拟一些特定的模糊现象的技术,而这些现象用其它传统的渲染技术难以实现的真实感的 game physics。经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或者象发光轨迹这样的抽象视觉效果等等。OGengine开源引擎的粒子系统中包含粒子,粒子发射器,粒子修改器等表现粒子效果。这次做一个简单的粒子效果。

自定义了一个MyParticle的类

  1. public void setMyParticle(float pX, float pY, TextureRegion region, Scene pScene)

复制代码

首先,我们需要选择一个点发射器,所以我们选择的是:

  1. /**
  2. * 点粒子发射器
  3. * @param pCenterX 发射中心点X
  4. * @param pCenterY 发射中心点Y*/
  5. public PointParticleEmitter(
  6. final float pCenterX, final float pCenterY)

复制代码

我们需要图片来创建粒子效果,所以我们选择SpriteParticleSystem

  1. /**
  2. *        精灵粒子系统
  3. *        @param pParticleEmitter 粒子发射器
  4. *        @param pRateMinimum:一秒中能同时发射到屏幕上的粒子最小的数量
  5. *        @param pRateMaximum:一秒中能同时发射到屏幕上的粒子最大的数量
  6. *        @param pParticlesMaximum:屏幕上允许可以存活的最大的粒子数
  7. *        @param pTextureRegion:选择表达的纹理*/
  8. public SpriteParticleSystem(
  9. final IParticleEmitter pParticleEmitter,
  10. final float pRateMinimum,
  11. final float pRateMaximum,
  12. final int pParticlesMaximum,
  13. final ITextureRegion pTextureRegion,
  14. final VertexBufferObjectManager pVertexBufferObjectManager)

复制代码

接下来我们要对粒子做初始化并为其添加粒子修改器

  1. /**粒子初始化*/
  2. public void addParticleInitializer(final IParticleInitializer<T> pParticleInitializer)
  3. /**添加粒子修改器*/
  4. public void addParticleModifier (final IParticleInitializer<T> pParticleInitializer)

复制代码

以下就是各种类型粒子的构造函数

  1. /**
  2. * 速率粒子初始化器
  3. * @param 最小速率X
  4. * @param 最大速率X
  5. * @param 最小速率Y
  6. * @param 最大速率Y*/
  7. public VelocityParticleInitializer(
  8. final float pMinVelocityX, final float pMaxVelocityX,
  9. final float pMinVelocityY, final float pMaxVelocityY)

复制代码

  1. /**限时粒子初始化器
  2. * @param pMinLifeTime 最小存在时间
  3. * @param pMaxLifeTime 最大存在时间*/
  4. public ExpireParticleInitializer(
  5. final float pMinLifeTime, final float pMaxLifeTime)

复制代码

  1. /**
  2. * 缩放粒子修改器
  3. * @pFromTime 开始时间
  4. * @pToTime 结束时间
  5. * @pFromScale 开始缩放值
  6. * @pToScale 结束缩放值 */
  7. public ScaleParticleModifier(
  8. final float pFromTime, final float pToTime,
  9. final float pFromScale, final float pToScale)

复制代码

  1. /**
  2. * 透明粒子修改器
  3. * @pFromTime 开始时间
  4. * @pToTime 结束时间
  5. * @pFromScale 开始透明值
  6. * @pToScale 结束透明值 */
  7. public AlphaParticleModifier(
  8. final float pFromTime, final float pToTime,
  9. final float pFromAlpha, final float pToAlpha)

复制代码

源码:

  1. public void setMyParticle(float pX, float pY, TextureRegion region, Scene pScene) {
  2. PointParticleEmitter particleEmitter = new PointParticleEmitter(pX, pY);
  3. SpriteParticleSystem mParticleSystem =
  4. new SpriteParticleSystem(particleEmitter, 10, 10, 30, region,                                                 pScene.getVertexBufferObjectManager());
  5. mParticleSystem.addParticleInitializer(
  6. new VelocityParticleInitializer<Sprite>(-150,150, -380, 0));
  7. mParticleSystem.addParticleInitializer(
  8. new ExpireParticleInitializer<Sprite>(5f, 6f));
  9. mParticleSystem.addParticleModifier(
  10. new ScaleParticleModifier<Sprite>(0f, 5f, 0, 1.3f));
  11. mParticleSystem.addParticleModifier(
  12. new AlphaParticleModifier<Sprite>(0.8f, 1, 0.2f, 1f));
  13. pScene.attachChild(mParticleSystem);
  14. }

复制代码

添加好效果后,将方法放在Scene中进行调用

  1. MyParticle myParticle = new MyParticle();
  2. myParticle.setMyParticle(
  3. this.getCameraWidth()/2, this.getCameraHeight()*0.8f, ballRegion,
  4. TestScene.this);

复制代码

http://www.eoeandroid.com/forum-863-1.html

www.ogengine.com

OGEngine_粒子效果

时间: 2024-10-21 07:25:51

OGEngine_粒子效果的相关文章

cocos基础教程(8)粒子效果

简介 粒子系统是指计算机图形学中模拟特定现象的技术,它在模仿自然现象.物理现象及空间扭曲上具备得天独厚的优势,为我们实现一些真实自然而又带有随机性的特效(如爆炸.烟花.水流)提供了方便. 粒子属性 一个强大的粒子系统它必然具备了多种多样的属性,这样才能配置出多样的粒子.下面就来看看粒子系统的主要属性吧. 主要属性: _duration 发射器生存时间,即它可以发射粒子的时间,注意这个时间和粒子生存时间不同.单位秒,-1表示永远:粒子发射结束后可点击工具栏的播放按钮再次发射 _emissionRa

关于Unity中粒子效果的使用

粒子效果1: 游戏中会有很炫酷的特效,比如爆炸,水花,火焰等;2: unity提供粒子编辑器,方便特效人员来开发很炫酷的特效;3.粒子效果一般有专门的粒子特效师来做,我们只需要拿来用就好了,很多参数没必要掌握. Particle System组件面板 1: 粒子系统主体;2: 喷射(Emission);3: 形态(shape);4: 生命周期内的速度偏移(velocity over lifetime);5: 生命周期内的限制速度(limit velocity over lifetime);6:

IOS开发——UI进阶篇(十八)核心动画小例子,转盘(裁剪图片、自定义按钮、旋转)图片折叠、音量震动条、倒影、粒子效果

一.转盘(裁剪图片.自定义按钮.旋转) 1.裁剪图片 将一张大图片裁剪为多张 // CGImageCreateWithImageInRect:用来裁剪图片 // image:需要裁剪的图片 // rect:裁剪图片的尺寸,传递是像素 CGImageRef norImage = CGImageCreateWithImageInRect(norBigImage.CGImage, clipRect); 2.每次点击按钮立马变为选中状态,并且取消上次的按钮的选中状态 当然还要重写- (void)setH

libgdx 2D 粒子效果二

在上一篇随笔中,我们能够把粒子效果在stage中使用了. 想了想,在实际应用中粒子效果可能有2中使用的情况: 1. 单独的粒子效果,比如一个飞行的火球.他跟真正的Actor没啥关系,只有自己的position或者说飞行轨迹. 施法者放完后爱哪玩去哪玩去,粒子效果跟他无关了. 2. 跟真正的Actor相关的粒子效果,比如飞机发动机的火焰,或者飞机爆炸的效果. 他一直跟着飞机在动. -------------------当然以上两种未必用粒子效果实现,我只是这么说... 对于第二种情况,不防封装一个

超炫的粒子效果!代码,就应该这么写!

最近瞎逛的时候发现了一个超炫的粒子进度效果,有多炫呢?请擦亮眼镜! 粗略一看真的被惊艳到了,而且很实用啊有木有!这是 Jack Rugile 写的一个小效果,源码当然是有的.聪慧如你,肯定觉得这个东西so easy 要看啥源码,给我3分钟我就写出来了吧.所以你的思路可能是: 1)进度条的实现没什么好说的,简单的一个 fillRect(0,0,long,20),long和20是分别进度条的长宽.然后每帧动画调用前将画布清除clearRect(0,0,canvas.width,canvas.heig

C#学习日志 day9 -------------- cocos2d-x 3.0 粒子效果简介

cocos2d是一款实用的游戏引擎,其可以在windows phone中应用,但是比较差强人意的是其代码只能用c++来写. 因为我们的wp应用我负责粒子效果的实现,所以这里我介绍一下各种粒子效果. cocos2d中自带了十种粒子效果.可以说,一般的效果我们都可以用cocos2d自带的粒子效果实现.即使不能我们也可以通过对其自带粒子效果进行一些属性的调整从而实现我们想要的效果. 这里先贴出十种粒子效果的实现代码 ParticleRain *snow = ParticleRain::create()

Canvas + JavaScript 制作图片粒子效果

首先看一下源图和转换成粒子效果的对比图:       左侧图片为源图,右侧图片为粒子效果图.该效果是在Canvas画布上制作的.将图片制作成粒子效果相对而言是比较简单的.重点了解两个知识点即可 1:图片是通过image对象形式绘制在画布上的,然后使用Canvas的getImageData接口,获取图像的像素信息. var imageData=ctx.getImageData(x, y, width, height); 参数说明:x,y为画布上的x和y坐标 width,height为获取指定区域图

用仿ActionScript的语法来编写html5——第八篇,图片处理+粒子效果

用仿ActionScript的语法来编写html5系列开发到现在,应该可以做出一些东西了,下面先来研究下图片的各种效果预览各种效果看下图 效果和代码看这里,看不到效果的请下载支持html5的浏览器 http://fsanguo.comoj.com/html5/jstoas07/index.html 2013年3月13日追加 该系列文章写的很早,目前该系列文章中所总结的方法等都已经封装进了lufylegend.js引擎里 lufylegend.js引擎的下载链接 http://lufylegend

Cocos2D v3.4.9粒子效果不能显示的原因分析及解决办法

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在游戏App中为了衬托气氛我们往往使用一些特殊的图形效果,粒子效果无疑是其中最为常用,也最为方便的一种. 正常使用下,粒子效果的确很稳定,但是本猫最近在RPG游戏里却遇到了粒子效果不能显示的问题,调试着实花了一些功夫.现将问题现象,分析以及解决方法记录下来和大家一起分享,也便于以后回忆查找. 问题现象很简单,就是粒子效果不显示-但也不是所有粒子效果都不显示,只