Ejemplo n.º 1
0
    public void Prepare(Slider slider)
    {
        this.discCount = (int)slider.value;
        discHeight     = 2f / discCount;
        for (int i = discCount - 1; i >= 0; i--)
        {
            Disc disc = Instantiate <Disc>(discPrefab);
            disc.transform.position = poles[0].transform.position + poles[0].discLocation + Vector3.up * (discCount - i - 1) * discHeight;
            float radius;
            if (discCount != 1)
            {
                radius = Mathf.Lerp(minDiscWidth, maxDiscWidth, i / (discCount - 1f));
            }
            else
            {
                radius = Mathf.Lerp(minDiscWidth, maxDiscWidth, 0f);
            }
            disc.transform.localScale = new Vector3(radius, discHeight, radius);
            MeshRenderer discMeshRenderer = disc.GetComponentInChildren <MeshRenderer>();
            Material     discMaterial     = new Material(discMeshRenderer.material);
            float        colorTime;
            if (discCount != 1)
            {
                colorTime = (float)(discCount - i - 1) / (discCount - 1);
            }
            else
            {
                colorTime = 1;
            }
            discMaterial.color        = discColors.Evaluate(colorTime);
            discMeshRenderer.material = discMaterial;

            poles[0].discs.Push(disc);
            discs.Add(disc);
            disc.index = i;
            disc.pole  = poles[0];
        }
        discs.Reverse();
    }