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图片实际上是不需要在代码中写出来的,不过文件名要保持一致才能正确读取。
效果: