Exemple #1
0
    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);
        }
    }
Exemple #2
0
 public void Connect(particleController p, Color c)
 {
     p.right  = gameObject.GetComponent <particleController>();
     left     = p;
     leftLine = gameObject.GetComponent <LineRenderer>();
     leftLine.material.color = c;
     color = c;
 }
Exemple #3
0
 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);
     }
 }