private IEnumerator CameraZoomAnimation(string contestName, GameObject thing)
    {
        doingSwitchAnimation = true;

        float   time          = 0;
        Vector3 startPosition = mainCamera.transform.position;
        Vector3 finalPosition = thing.transform.position;

        while (time < zoomDuration)
        {
            yield return(new WaitForFixedUpdate());

            time += Time.fixedDeltaTime;
            float progress = time / (zoomDuration + moveOffset);

            //mainCamera.fieldOfView = Mathf.Lerp(zoomStart, zoomAnimEnd, progress);
            Vector3 cameraPos = Vector3.Slerp(startPosition, finalPosition, progress);
            transition.color = Color.Lerp(new Color(1, 1, 1, 0), Color.white, Mathf.Max(0, 2 * time / zoomDuration - 1));
            mainCamera.transform.position = cameraPos;
        }
        mainCamera.GetComponent <AudioSource>().Stop();
        ActiveScene(false);
        time = 0;
        while (time < outAnimDuration)
        {
            yield return(new WaitForFixedUpdate());

            time            += Time.fixedDeltaTime;
            transition.color = Color.Lerp(Color.white, new Color(1, 1, 1, 0), Mathf.Max(0, time / outAnimDuration));
        }
        ContestGame contest = ContestGame.Get();

        contest.StartContest(contestName, thing);

        doingSwitchAnimation = false;
    }