ActionScript
TypeScript
JavaScript

通过Particle3D类播放3D粒子

发布时间:2017-01-20

LayaAir引擎可以播放通过编辑器创建的粒子动画,编辑器支持创建三种类型的粒子,这三种粒子都使用同一套参数,区别只在于参数的设置以及是使用2D还是3D。


下面我们通过示例了解Particle3D类播放3D粒子。

代码示例:

package  
{
	import laya.d3.core.Camera;
	import laya.d3.core.particle.Particle3D;
	import laya.d3.core.scene.Scene;
	import laya.d3.core.Sprite3D;
	import laya.d3.math.Vector3;
	import laya.net.Loader;
	import laya.particle.ParticleSetting;
	import laya.utils.Browser;
	import laya.utils.Handler;
	/**
	 * ...
	 * @author ww
	 */
	public class Particle3DSample 
	{
		private var pos:Vector3;
		private var Vel:Vector3;
		private var scene:Scene;
		private var particle:Particle3D;
		
		public function Particle3DSample() 
		{
			init();
		}
		
		public function init():void {		
			Laya3D.init(0, 0);
			pos = new Vector3();
			Vel = new Vector3();
			Laya.stage.bgColor = "#000000";
			Laya.stage.scaleMode = "full";
			
			scene = Laya.stage.addChild(new Scene()) as Scene;
			
			var camera:Camera = scene.addChild(new Camera(0, 0.1, 100)) as Camera;
			camera.transform.translate(new Vector3(0, 1, 2.6));
			camera.transform.rotate(new Vector3(-20, 0, 0), false, false);
			camera.clearColor = null;
			
					
			Laya.timer.frameLoop(1, this, updateParticle);
			
			Laya.loader.load("Test3D.part3d", new Handler(this, showParticle),null,Loader.JSON);

		}
		
		private function updateParticle():void {
			Vector3.ZERO.cloneTo(pos);
			Vector3.ZERO.cloneTo(Vel);
			if (particle) {
				particle.templet.addParticle(pos, Vel);
			}
		}

		public function showParticle(settings:ParticleSetting = null):void {	
			ParticleSetting.checkSetting(settings);
			particle = new Particle3D(settings);
			scene.addChild(particle);
			updateSpPos();
		}
		
		private function updateSpPos():void {
			if (particle) {
				particle.x = Browser.clientWidth * 0.5;
				particle.y = Browser.clientHeight * 0.5;
			}
		}
	}

}