void SliceEvent(Slice2D slice) { Slicer2DParticlesManager.Instantiate(); foreach (List <Vector2D> pointList in slice.slices) { foreach (Pair2D p in Pair2D.GetList(pointList)) { Vector3 startPosition = new Vector3((float)p.A.x, (float)p.A.y, posZ); Emit(startPosition); Emit(startPosition); Vector3 pos = p.A.ToVector2(); pos.z = posZ; while (Vector2.Distance(pos, p.B.ToVector2()) > 0.5f) { pos = Vector2.MoveTowards(pos, p.B.ToVector2(), 0.35f); Emit(pos); //Particle2D particle = Particle2D.Create(Random.Range(0, 360), pos); // Slicer2DParticlesManager.particlesList.Add(particle); } } } }
static public void Instantiate() { if (instance != null) { return; } GameObject manager = new GameObject(); manager.name = "Slicer2D Particles"; instance = manager.AddComponent <Slicer2DParticlesManager>(); }
void Start() { if (instance == null) { instance = this; } else if (instance != this) { Debug.LogWarning("Slicer2D: Multiple Particle Managers Detected!"); Destroy(this); } }
void Emit(Vector3 startPosition) { startPosition.z = -5; Slicer2DParticlesManager manager = Slicer2DParticlesManager.instance; ParticleSystem particleSystem = manager.GetParticleSystem(); ParticleSystem.EmitParams emitParams = new ParticleSystem.EmitParams(); emitParams.startColor = Color.white; emitParams.startSize = 4; emitParams.position = startPosition; emitParams.startLifetime = 2; float direction = Random.Range(0, 360) * Mathf.Deg2Rad; float speed = 2; emitParams.rotation = direction * Mathf.Rad2Deg; emitParams.velocity = new Vector2(Mathf.Cos(direction) * speed, Mathf.Sin(direction) * speed); //emitParams.startLifetime = particle.timer; particleSystem.Emit(emitParams, 1); particleSystem.Play(); }
void SliceEvent(Slice2D slice) { Slicer2DParticlesManager.Instantiate(); foreach (List <Vector2D> pointList in slice.slices) { foreach (Pair2D p in Pair2D.GetList(pointList)) { Particle2D firstParticle = Particle2D.Create(Random.Range(0, 360), new Vector3((float)p.A.x, (float)p.A.y, posZ)); Slicer2DParticlesManager.particlesList.Add(firstParticle); Particle2D lastParticle = Particle2D.Create(Random.Range(0, 360), new Vector3((float)p.B.x, (float)p.B.y, posZ)); Slicer2DParticlesManager.particlesList.Add(lastParticle); Vector2 pos = p.A.ToVector2(); while (Vector2.Distance(pos, p.B.ToVector2()) > 0.5f) { pos = Vector2.MoveTowards(pos, p.B.ToVector2(), 0.35f); Particle2D particle = Particle2D.Create(Random.Range(0, 360), new Vector3(pos.x, pos.y, posZ)); Slicer2DParticlesManager.particlesList.Add(particle); } } } }