libgdx粒子系统的使用
ibgdx粒子系统编辑器—Particle Editor
下载地址:http://libgdx.googlecode.com/svn/jws/particle-editor.jnlp
官方网站上对软件中的各个参数的解释如下:
Delay: 当粒子系统开始后,发射器等待多少时间开始发射
Duration:发射器生存跨度,也就是粒子效果持续的的时间,注意这个时间和粒子生存时间不同
Count: 顾名思义,同一时间可出现的粒子个数,有一个上限一下下限。
Emission: 每秒钟发射多少个粒子,这个参数带了一张图表,图表中间写着duration,代表图表X 轴表示发射器生存时间,意思是说发射器的生存时间内,该图表控制各个时间点粒子每秒钟发射多少个,左边的上下两个文本框用于控制生成初始值时的范围,左边的'>'字符用于输入另外一个数值,比如说下面那个”>“, 发射器会在这两个值中间选择一下随机值作为上限值,Relative,如果选中,表示图表中的值是相对值,相对于初始值。否则是个绝对值.
Life: 一个粒子的生存时间,
Life Offset: 决定粒子在显示之前已经用掉它生命多少值 ,这样可以实现让一个粒子在它生命50%时再显现
X Offset and Y Offset: 粒子出现在位置相对中心位置的像素偏移
Spawn: 用于产生粒子的发射器的形状
Spawn Width and Spawn Height: 发射器的形状的宽,高
Size: 粒子的大小
Velocity:
Angle:
Rotation:
这个几值用于控制粒子的运动轨迹:
Wind and Gravity: 烟为生存时间内在X轴和Y轴上每秒种的像素偏移值
Tint: 粒子的颜色,可以在粒子生存期内变化任意多个颜色
Transparency:粒子的透明度
package com.hyl.libgdx.a; import java.util.ArrayList; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.ParticleEffect; import com.badlogic.gdx.graphics.g2d.ParticleEffectPool; import com.badlogic.gdx.graphics.g2d.SpriteBatch; public class CGame implements ApplicationListener{ SpriteBatch batch; BitmapFont bf; ParticleEffect particle; ParticleEffect tem; ParticleEffectPool particlepool; ArrayList<ParticleEffect> particlelist; @Override public void create() { batch=new SpriteBatch(); bf=new BitmapFont(); particle=new ParticleEffect(); particle.load(Gdx.files.internal("particle.p"), Gdx.files.internal("")); particlepool=new ParticleEffectPool(particle, 5, 10); particlelist=new ArrayList<ParticleEffect>(); } @Override public void dispose() { //释放内存 batch.dispose(); bf.dispose(); if(tem!=null){ tem.dispose(); particlepool.clear(); } } @Override public void pause() { } @Override public void render() { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);//清屏 Gdx.gl.glClearColor(0f, 0f, 0f, 0f);//背景颜色 batch.begin();//绘图 bf.draw(batch, "HYL", Gdx.graphics.getWidth()*0.4f,Gdx.graphics.getHeight()/2); batch.end(); if(true){ if(Gdx.input.isTouched()){ //当此触摸点与上一触摸点距离大于一定值的时候触发新的粒子系统,由此减小系统负担 tem=particlepool.obtain(); tem.setPosition(Gdx.input.getX(), Gdx.graphics.getHeight()-Gdx.input.getY()); particlelist.add(tem); } batch.begin(); for(int i=0;i<particlelist.size();i++){ particlelist.get(i).draw(batch, Gdx.graphics.getDeltaTime()); } System.out.println(particlelist.size()); batch.end(); ParticleEffect temparticle; for(int i=0;i<particlelist.size();i++){ temparticle=particlelist.get(i); if(temparticle.isComplete()){ particlelist.remove(i); } } } } @Override public void resize(int arg0, int arg1) { } @Override public void resume() { } }
第一个参数是Particle Editor生成的编辑文件(注意后缀名也是自己取的,读取的时候记得对应),第二个参数是形成单个粒子的图片文件。
这里有一点非常重要!请万分注意:第一个参数是ParticleEditor生成的编辑文件,图片文件的文件名必须为particle.png,也就是说无论粒子编辑文件的名字是什么,系统读取的图片文件都应该是particle.png,而有关两者的路径问题,举个例子大家就应该能明白。如果在asset下的data文件夹的话,格式应该写为Gdx.files.internal(“data/particle.p”)和Gdx.files.internal(“data/”)也就是说,png图片实际上是不需要在代码中写出来的,不过文件名要保持一致才能正确读取。
效果:
推荐阅读
-
Win10系统如何查看流量使用情况?Win10查看所有程序流量使用情况的方法
-
使用PageAdmin网站内容管理系统做网站的好处
-
使用asp实现支持附件的邮件系统(二)
-
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
-
第三方库LibUSB在Android系统上的简单使用
-
幻影粒子怎么使用G滤镜中的图片?
-
Python_WIN10系统中递归所有文件夹所有文件_移动所有文件到主目录(使用到的库:os + glob + shutil)
-
32位和64位CPU的操作系统的区别 判断、使用建议
-
Linux怎么使用ss命令查看系统的socket状态
-
Linux系统中的mount挂载磁盘命令使用教程