Away3D Particle System is a particles system powered by GPU and based on Away3D game engine.
Sample
package { import a3dparticle.animators.actions.color.ChangeColorByLifeGlobal; import a3dparticle.animators.actions.drift.DriftLocal; import a3dparticle.animators.actions.rotation.BillboardGlobal; import a3dparticle.animators.actions.scale.ScaleByLifeGlobal; import a3dparticle.animators.actions.velocity.VelocityLocal; import a3dparticle.generater.SingleGenerater; import a3dparticle.particle.ParticleBitmapMaterial; import a3dparticle.particle.ParticleParam; import a3dparticle.particle.ParticleSample; import a3dparticle.ParticlesContainer; import a3dparticle.TransformFollowContainer; import away3d.containers.ObjectContainer3D; import away3d.core.base.Object3D; import away3d.primitives.PlaneGeometry; import flash.geom.ColorTransform; import flash.geom.Vector3D; /** * ... * @author liaocheng */ public class Smoke extends ObjectContainer3D { private var particle:ParticlesContainer; [Embed(source = "yan.png")] private var Img:Class; public function Smoke():void { //step 1:we create one sample var material:ParticleBitmapMaterial = new ParticleBitmapMaterial(new Img().bitmapData); var plane:PlaneGeometry = new PlaneGeometry( 20, 20, 1, 1, false); var sample:ParticleSample = new ParticleSample(plane.subGeometries[0], material); //step 2:we create a generater which will group the samples. var generater:SingleGenerater = new SingleGenerater(sample, 1500); //step 3: we create a container and set some attributes. particle = new TransformFollowContainer(); particle.loop = true; //step 4:we add some actions to the container. var action:VelocityLocal = new VelocityLocal(); particle.addAction(action); var action2:ChangeColorByLifeGlobal = new ChangeColorByLifeGlobal(new ColorTransform(0.5, 0.5, 0.5, 0.5), new ColorTransform(0.5, 0.5, 0.5, 0)); particle.addAction(action2); var action3:BillboardGlobal = new BillboardGlobal(); particle.addAction(action3); var action4:ScaleByLifeGlobal = new ScaleByLifeGlobal(0.5,2); particle.addAction(action4); var action5:DriftLocal = new DriftLocal(); particle.addAction(action5); //step 5:we set the param function whose return value will be used for actions particle.initParticleFun = initParticleParam; //finally,we generate the particles,and start particle.generate(generater); particle.start(); addChild(particle); } public function set target(value:Object3D): void { TransformFollowContainer(particle).followTarget = value; } private function initParticleParam(param:ParticleParam):void { param.startTime = Math.random() * 5; param.duringTime = Math.random() * 1 + 5; var degree:Number = Math.random() * Math.PI * 2; var cos:Number = Math.cos(degree); var sin:Number = Math.sin(degree); var r1:Number = Math.random() * 15; param["VelocityLocal"] = new Vector3D(r1*cos, Math.random() * 20+50, r1*sin); param["DriftLocal"] = new Vector3D(Math.random()*10, 0, Math.random()*10,Math.random()*5+2); } } }
New: Away3D Particle System (particles system powered by GPU and based on Away3D engine) http://t.co/wGzK3Gk0 #as3 #flash #gamedev