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

效果:



 

猜你喜欢

转载自hylxinlang.iteye.com/blog/1884964
今日推荐