`
westice
  • 浏览: 114295 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用jmonkey的粒子系统制造爆炸效果

阅读更多

学校的那些乱七八糟的事太多了,难得挤出时间构建我的坦克。现在给坦克子弹加上爆炸效果。

算法不用自己写,直接利用里面的粒子类就行了,真是太容易了!

	public class Test extends SimpleGame {
	    private static final Logger logger = Logger
	            .getLogger(Test.class.getName());
        private Node explosion;
        private ParticleMesh pMesh;
	  /**
	   * Entry point for the test,
	   * @param args
	   */
	  public static void main(String[] args) {
		  Test app = new Test();
	    app.setDialogBehaviour(ALWAYS_SHOW_PROPS_DIALOG);
	    app.start();
	  }

	@Override
	protected void simpleInitGame() {
		// TODO Auto-generated method stub
		pMesh=ParticleFactory.buildParticles("pMesh", 200);    //新建一个粒子系统,一次喷200个粒子。
		explosion=new Node("explosion");          //爆炸节点
		pMesh.setInitialVelocity(0.3f);                                     //初始喷射速度
		pMesh.setEmissionDirection(new Vector3f(0,-1,0));    //喷射方向
        pMesh.setMinimumAngle(180*FastMath.DEG_TO_RAD);     //设置喷射范围角度,这里很关键。
        											    //把喷射范围设成一个圆周就是爆炸效果了
        											    //就是这里有点不能理解的是 180度就够了。
        											    //而且还有min 和max两个方法
        											    //下面的lifetime也一样有两个方法
        pMesh.setMaximumLifeTime(100f);
        pMesh.setSpeed(2f);            //喷射速度
        pMesh.setStartSize(25f);      //起始大小
        pMesh.setEndSize(5f);      //生命结束时的大小,在这之间应该是均匀变化的
        
        //给粒子加上纹理图,每个粒子的形状就跟这幅图一样了
        TextureState ts1=display.getRenderer().createTextureState();
        Texture tx=TextureManager.loadTexture(Test.class.getClassLoader().getResource("jmetest/data/texture/flaresmall.jpg"));
        ts1.setTexture(tx);
        pMesh.setRenderState(ts1);
        
		pMesh.setLocalScale(0.03f);
		explosion.attachChild(pMesh);
		rootNode.attachChild(explosion);
	}

 这是效果图:

 


 
  • 大小: 22.1 KB
分享到:
评论
1 楼 cd1985 2009-11-28  
   期待您更新博客。

相关推荐

Global site tag (gtag.js) - Google Analytics