コード例 #1
0
    private void FixedUpdate()
    {
        int count = fireParticles.Count;

        for (int i = 0; i < count; ++i)
        {
            FireParticle particle = fireParticles.Dequeue();

            if (!particle.Update(Time.fixedDeltaTime))
            {
                for (int j = 0; j < particle.treeDepth; ++j)
                {
                    FireParticle childParticle = new FireParticle();
                    //childParticle.age = Random.Range(0, particle.age);
                    childParticle.particle.position    = particle.particle.position;
                    childParticle.particle.velocity.x += particle.particle.velocity.x;
                    childParticle.particle.velocity.y += particle.particle.velocity.y;
                    childParticle.particle.velocity.z += particle.particle.velocity.z;
                    childParticle.treeDepth            = Random.Range(0, particle.treeDepth);
                    childParticle.color = particle.color + new Color(Random.Range(-0.10f, 0.10f), Random.Range(-0.10f, 0.10f), Random.Range(-0.10f, 0.10f));
                    fireParticles.Enqueue(childParticle);
                }
                particle.Dispose();
            }
            else
            {
                fireParticles.Enqueue(particle);
            }
        }
    }
コード例 #2
0
 private void OnDestroy()
 {
     while (fireParticles.Count > 0)
     {
         FireParticle p = fireParticles.Dequeue();
         if (p != null)
         {
             p.Dispose();
         }
     }
 }