void Start()
    {
        //Por defecto, al principio el zoom está alejado
        zoomState          = ZommState.far;
        camera.fieldOfView = fovFar;

        //Cámara en reposo
        workingSate = WorkingState.idle;

        //Asigno los transforms
        tr       = this.gameObject.transform;
        trPlayer = player.transform;

        if (viewType == ViewType.custom)
        {
            //Me posiciono con respecto al player
            tr.position = new Vector3(trPlayer.position.x, trPlayer.position.y + height, trPlayer.position.z + distance);
        }

        //Calculo la dirección al player
        diff = trPlayer.position - tr.position;

        if (viewType == ViewType.custom)
        {
            //Miro al player
            tr.LookAt(trPlayer);
        }
    }
    IEnumerator makeZoom()
    {
        //Variables de trabajo

        //Diferencia entre valores extremos del zoom
        float fovDifference = fovFar - fovNear;

        //Cantidad de fov a sumar o restar. Oscila entre cero y fovDifference
        float currentFovQuantity;

        //Tiempo actual de evaluación de la curva. Oscila de cero a uno
        float currentTimeEvaluate;

        //Tiempo de transición actual. Oscila de cero a timeTransition. Se incrementa en cada bucle con Time.deltaTime
        float currentTransitionTime = 0;


        while (true)
        {
            //Calculo el lugar donde debo evaluar la curva, determinado por el tiempo (eje x)
            currentTimeEvaluate = currentTransitionTime / timeTransition;
            //La cantidad de fov la devuelve la evaluación de la curva, determinada por la diferencia entre los dos valores extremos del zoom (eje y)
            currentFovQuantity = transitionZoom.Evaluate(currentTimeEvaluate) * fovDifference;

            if (debug)
            {
                Texto.text = "Zoom: " + currentFovQuantity.ToString();
            }

            if (zoomState == ZommState.far)
            {
                //Si estoy en far, le resto la cantidad de fov que me haya devuelto la evaluación de la curva
                camera.fieldOfView = fovFar - currentFovQuantity;
                if (currentTimeEvaluate >= 1)
                {
                    //Se ha evaluado la curva completamente, cambio de estado y salgo del bucle while
                    camera.fieldOfView = fovNear;
                    zoomState          = ZommState.near;
                    break;
                }
            }
            else
            {
                //Si estoy en near, le sumo la cantidad de fov que me haya devuelto la evaluación de la curva
                camera.fieldOfView = fovNear + currentFovQuantity;
                if (currentTimeEvaluate >= 1)
                {
                    //Se ha evaluado la curva completamente, cambio de estado y salgo del bucle while
                    camera.fieldOfView = fovFar;
                    zoomState          = ZommState.far;
                    break;
                }
            }

            //Miro al player
            tr.LookAt(trPlayer);
            //Recalculo el tiempo de transición
            currentTransitionTime += Time.deltaTime;
            //Salgo hasta el próximo update
            yield return(0);
        }
        //Miro al player
        tr.LookAt(trPlayer);
        //Cámara en reposo
        workingSate = WorkingState.idle;
    }