Android游戏开发----LibGdx游戏引擎制作微信火焰效果(附源码)

留心的朋友会发现,安装完微信4.5后,会有一个跳动的火焰、并播放《一无所有》的欢迎页。本篇文章模拟的是火焰跳动的效果。


一、LibGdx游戏引擎介绍

LibGdx是一款基于OpenGL ES技术开发的Android游戏引擎,支持Android平台下的2D游戏开发,物理引擎采用Box2D实现

LibGdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成。它基于Apache License, Version 2.0协议,对商业使用和非商业使用均免费。代码托管于Github中。最新版本为0.9.8。

官方网站:http://code.google.com/p/libgdx/

LibGdx单就性能角度来说,堪称是一款非常强大的 Android游戏引擎。


二、粒子特效

为模拟现实中的水、火、雾、气等效果由各种三维软件开发的制作模块,原理是将无数的单个粒子组合使其呈现出固定形态,借由控制器,脚本来控制其整体或单个的运动,模拟出现真实的效果。


三、LibGdx粒子特效编辑器

下载地址:http://code.google.com/p/libgdx/wiki/ParticleEditor

用来编辑粒子效果的编辑器。(参数可以任意尝试设置)

打开后界面如下, 可直接保存效果为my.p,为后续使用。



四、具体实现

功能:实现一个画面,当手触摸时,火焰随之移动。

核心代码:(my.p放在asset/data目录下,并在该目录下放一张particle.png(为单个粒子的图片文件,文件名唯一))

package com.example.libgdx_02_Particle;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.ParticleEffect;
import com.badlogic.gdx.graphics.g2d.ParticleEmitter;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.Array;

public class Game implements ApplicationListener
{

	SpriteBatch batch;
	ParticleEffect effect;
	int index;
	Array<ParticleEmitter> emitters;
	int count;

	//一旦ApplicationListener开始运行,render函数就会不停执行
	@Override
	public void render()//着色, 渲染.
	{
		// TODO Auto-generated method stub
		Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);//清屏
		Gdx.gl.glClearColor(0f, 0f, 0f, 0f);

		batch.getProjectionMatrix().setToOrtho2D(0, 0, Gdx.graphics.getWidth(),
				Gdx.graphics.getHeight());
		Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
		batch.begin();
		effect.draw(batch, Gdx.graphics.getDeltaTime());
		batch.end();

	}

	@Override
	public void create()
	{
		//初始化
		batch = new SpriteBatch();
		effect = new ParticleEffect();
		//加载文件
		effect.load(Gdx.files.internal("data/my.p"),
				Gdx.files.internal("data/"));
		//设置特效位置
		effect.setPosition(Gdx.graphics.getWidth() / 2,
				Gdx.graphics.getHeight() / 2);

		emitters = new Array<ParticleEmitter>(effect.getEmitters());
		effect.getEmitters().clear();
		effect.getEmitters().add(emitters.get(index));

		//点击屏幕移动, 设置输入
		InputProcessor inputProcessor = new InputProcessor()
		{

			@Override
			public boolean touchUp(int arg0, int arg1, int arg2, int arg3)
			{
				return false;
			}

			@Override
			public boolean touchDragged(int arg0, int arg1, int arg2)
			{
				effect.setPosition(arg0, Gdx.graphics.getHeight() - arg1);
				return false;
			}

			@Override
			public boolean touchDown(int arg0, int arg1, int arg2, int arg3)
			{
				ParticleEmitter emitter = emitters.get(index);
				count += 100;
				if (count > emitter.getMaxParticleCount())
					emitter.setMaxParticleCount(count * 2);
				count = Math.max(0, count);
				emitter.getEmission().setHigh(
						count / emitter.getLife().getHighMax() * 1000);
				effect.getEmitters().clear();
				effect.getEmitters().add(emitter);
				return false;
			}

			@Override
			public boolean scrolled(int arg0)
			{
				// TODO Auto-generated method stub  
				return false;
			}

			@Override
			public boolean keyUp(int arg0)
			{
				// TODO Auto-generated method stub  
				return false;
			}

			@Override
			public boolean keyTyped(char arg0)
			{
				// TODO Auto-generated method stub  
				return false;
			}

			@Override
			public boolean keyDown(int arg0)
			{
				// TODO Auto-generated method stub  
				return false;
			}

			@Override
			public boolean mouseMoved(int arg0, int arg1)
			{
				// TODO Auto-generated method stub
				return false;
			}
		};
		Gdx.input.setInputProcessor(inputProcessor);
	}

	@Override
	public void dispose()
	{
		// 释放资源
		batch.dispose();

	}

	@Override
	public void pause()
	{
		// TODO Auto-generated method stub

	}

	@Override
	public void resize(int arg0, int arg1)
	{
		// TODO Auto-generated method stub

	}

	@Override
	public void resume()
	{
		// TODO Auto-generated method stub

	}

}

运行效果


有没有比微信还炫呢??



更多资料: http://www.apkbus.com/android-57456-1-1.html


源码下载http://download.csdn.net/detail/xn4545945/5643035

原创文章,转载请注明出处http://blog.csdn.net/xn4545945





  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值