// Update is called once per frame
    void Update()
    {
        t += Time.deltaTime;
        if (t > movingPeriod + pausePeriod)
        {
            t -= movingPeriod + pausePeriod;
        }

        if (t < movingPeriod)
        {
            positions[0] = 4.0f*Easing.Arch2(t);
            positions[1] = Easing.SmoothStartArch3(t);
            positions[2] = Easing.SmoothStopArch3(t);
            positions[3] = Easing.SmoothStepArch4(t);
            positions[4] = Easing.BellCurve6(t);
            const float length = maxX - minX;
            for (int i = 0; i < circles.Length; i++)
            {
                circles[i].localPosition = new Vector3(
                    length*positions[i]+minX,
                    circles[i].localPosition.y,
                    circles[i].localPosition.z);
            }
        }

        if (t > movingPeriod)
        {
            for (int i = 0; i < circles.Length; i++)
            {
                circles[i].localPosition = new Vector3(
                    minX,
                    circles[i].localPosition.y,
                    circles[i].localPosition.z);
            }
        }
    }