using UnityEngine; using System.Collections; public class SparkSystem : MonoBehaviour { ParticleEmitter emitter; Particle[] particles; public float[] particlesTime; public float particleLifeTime; public float initialParticleTime; public int numberParticles; public AnimationCurve animSizeLifeTime; public float maxSize; public Vector3 posInSphere; public Vector3 gravityVector; public float randDir; public float vel; public float baseHeight; // Use this for initialization public void StartParticles () { emitter = GetComponent(); emitter.maxEmission = numberParticles; emitter.minEmission = numberParticles; emitter.Emit(); particlesTime = new float[numberParticles]; InitializeSystem(); } void InitializeSystem(){ particles = emitter.particles; for (int i = 0; i < numberParticles; i++) { float f = Random.value; particles[i].position = Vector3.zero; particles[i].velocity = Vector3.zero; particles[i].color = Color.white; particles[i].size = 0.0f; particlesTime[i] = -initialParticleTime + Random.value * initialParticleTime; } emitter.particles = particles; } void UpdateCollisions(int i, float dt){ if(particles[i].position.y=0f && particlesTime[i]<=particleLifeTime){ UpdateVel(i,dt); UpdatePos(i,dt); UpdateSize(i,dt); UpdateColor(i,dt); UpdateCollisions(i,dt); }else if(particlesTime[i]<0f){ ResetParticle(i); }else{ ResetParticle(i); particlesTime[i] = -initialParticleTime + Random.value * initialParticleTime; } particlesTime[i] += dt; } emitter.particles = particles; } }