欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

libgdx粒子系统的使用

程序员文章站 2022-05-21 09:44:19
...

ibgdx粒子系统编辑器—Particle Editor

下载地址:http://libgdx.googlecode.com/svn/jws/particle-editor.jnlp


libgdx粒子系统的使用
            
    
    博客分类: android游戏 android游戏libgdx 
 官方网站上对软件中的各个参数的解释如下:

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

 

效果:


libgdx粒子系统的使用
            
    
    博客分类: android游戏 android游戏libgdx 
 

  • libgdx粒子系统的使用
            
    
    博客分类: android游戏 android游戏libgdx 
  • 大小: 101.7 KB
  • libgdx粒子系统的使用
            
    
    博客分类: android游戏 android游戏libgdx 
  • 大小: 65.1 KB