void shiftBalls(int startIndex, bool start = false)
    {
        if (!start)
        {
            float progressDistance = 0; // Vector3.Distance(_balls[startIndex].transform.position, _balls[prevIndex].transform.position);

            for (int i = startIndex; i >= 0; i--)
            {
                balls[i].Progress += 2 * BallSizePercent;
                float percentProgress = 0;
                balls[i].transform.position = Path.GetArcParametrizedTime(balls[i].Progress, ref percentProgress);
                //if (_balls[i].CatchingUp && progressDistance > Radius)
                //    break;

                if (i - 1 >= 0)
                {
                    progressDistance = Mathf.Abs(balls[i].Progress - balls[i - 1].Progress);
                }

                if (progressDistance > 2 * BallSizePercent)
                {
                    Debug.Log(i + "    " + (i - 1));
                    break;
                }
            }
        }

        else
        {
            for (int i = startIndex; i >= 0; i--)
            {
                balls[i].Progress += 2 * BallSizePercent;
                float percentProgress = 0;
                balls[i].transform.position = Path.GetArcParametrizedTime(balls[i].Progress, ref percentProgress);
            }
        }
    }