private void CreateParticles(float angle, int numSoundParticles, bool loop) { particleController prev = null; particleController first = null; for (float i = 0; i < angle; i += (float)angle / numSoundParticles) { particleController pc = Instantiate(particlePrefab) as particleController; if (prev != null) { prev.Connect(pc, soundColor); } else { first = pc; } prev = pc; Physics2D.IgnoreCollision(pc.GetComponent <Collider2D>(), GetComponent <Collider2D>()); Vector2 dir = new Vector2(Mathf.Cos(i), Mathf.Sin(i)); pc.rb.velocity = dir * soundSpeed; pc.transform.position = transform.position; pc.setStrength(soundStrength); Destroy(pc.gameObject, lifetimeSoundParticles); } if (loop) { prev.Connect(first, soundColor); } }
public void Connect(particleController p, Color c) { p.right = gameObject.GetComponent <particleController>(); left = p; leftLine = gameObject.GetComponent <LineRenderer>(); leftLine.material.color = c; color = c; }
void OnCollisionEnter2D(Collision2D col) { if (gameObject.layer == 8 && col.gameObject.tag == "SoundParticle" && alpha < 200) { particleController pc = col.gameObject.GetComponent <particleController>() as particleController; collisions += 1; Color pcolor = pc.color; alpha += 0.01f; c = (c * alpha + pcolor * 0.01f) / (alpha + 0.01f); c.a = alpha; SetColor(c); } }