/// <summary>
    /// Especifica la escala final que tendrá el objeto.
    /// </summary>
    /// <param name="indiceP">Indice en base 0 de la lista de animaciones del objeto. Si el indice no es menor al tamaño de la lista, se creará una nueva animación.</param>
    /// <param name="puntoEscalacionP">Escala final que tendrá el objeto.</param>
    /// <returns>La misma clase para hacer fluidez.</returns>
    public AnimarObjeto AgregarEscalacionPorPunto(int indiceP, Vector3 puntoEscalacionP)
    {
        if (indiceP < 0)
        {
            AnimarObjetoPseudoException.IndiceNegativo(indiceP);
            return(this);
        }

        Vector3 velocidad = puntoEscalacionP - this.transform.localScale;


        if (indiceP < animaciones.Count)
        {
            velocidad /= animaciones[indiceP].tiempo;
            animaciones[indiceP].vectorEscalacion = velocidad;
            animaciones[indiceP].ReiniciarValoresBase();
        }
        else
        {
            velocidad /= 5;
            animaciones.Add(new AnimarObjetoSettings(5, 0)
            {
                vectorEscalacion = velocidad
            });
        }
        return(this);
    }
 /// <summary>
 /// Detiene una animación de la lista, en la posición actual.
 /// </summary>
 /// <param name="indice">Posición de la lista de animaciones en base 0.</param>
 public void Detener(int indice)
 {
     if (indice < animaciones.Count && indice >= 0)
     {
         animaciones[indice].activado = false;
     }
     else
     {
         AnimarObjetoPseudoException.FueraDeIndice(indice, animaciones.Count);
     }
 }
 /// <summary>
 /// Detiene la ultima animación agregada, en la posición actual.
 /// </summary>
 public void DetenerUltimo()
 {
     if (animaciones.Count > 0)
     {
         animaciones[animaciones.Count - 1].activado = false;
     }
     else
     {
         AnimarObjetoPseudoException.NoHayElementos();
     }
 }
 /// <summary>
 /// Reproduce la ultima animación agregada, incluyendo el delay del mismo.
 /// </summary>
 public void ReproducirUltimo()
 {
     if (animaciones.Count > 0)
     {
         animaciones[animaciones.Count - 1].activado = true;
     }
     else
     {
         AnimarObjetoPseudoException.NoHayElementos();
     }
 }
 /// <summary>
 /// Verifica sí una animación de la lista fue terminada con éxito.
 /// </summary>
 /// <param name="indice">Index de la lista.</param>
 /// <returns>Retorna la variable finalizado de algun elemento de la lista.</returns>
 public bool EsAnimacionTerminada(int indice)
 {
     if (indice < animaciones.Count && indice >= 0)
     {
         return(animaciones[indice].finalizado);
     }
     else
     {
         AnimarObjetoPseudoException.FueraDeIndice(indice, animaciones.Count);
     }
     return(false);
 }
 /// <summary>
 /// Verifica sí la última animación agregada fue terminada con éxito.
 /// </summary>
 /// <returns>Retorna la variable finalizado de la última animación agregada.</returns>
 public bool EsUltimaAnimacionTerminada()
 {
     if (animaciones.Count > 0)
     {
         return(animaciones[animaciones.Count - 1].finalizado);
     }
     else
     {
         AnimarObjetoPseudoException.NoHayElementos();
     }
     return(false);
 }
    /// <summary>
    /// Especifica el tiempo y delay de una animación del objeto.
    /// </summary>
    /// <param name="indiceP">Indice en base 0 de la lista de animaciones del objeto. Si el indice no es menor al tamaño de la lista, se creará una nueva animación.</param>
    /// <param name="tiempoP">Tiempo que durará la animación.</param>
    /// <param name="delayP">Tiempo que durará el retraso para la animación.</param>
    /// <returns>La misma clase para hacer fluidez.</returns>
    public AnimarObjeto AgregarTiempo(int indiceP, float tiempoP, float delayP)
    {
        if (indiceP < 0)
        {
            AnimarObjetoPseudoException.IndiceNegativo(indiceP);
            return(this);
        }

        if (indiceP < animaciones.Count)
        {
            animaciones[indiceP].tiempo = tiempoP;
            animaciones[indiceP].delay  = delayP;
            animaciones[indiceP].ReiniciarValoresBase();
        }
        else
        {
            animaciones.Add(new AnimarObjetoSettings(tiempoP, delayP));
        }
        return(this);
    }
    /// <summary>
    /// Especifica la dirección en la que se rotará el objeto cada segundo.
    /// </summary>
    /// <param name="indiceP">Indice en base 0 de la lista de animaciones del objeto. Si el indice no es menor al tamaño de la lista, se creará una nueva animación.</param>
    /// <param name="direccionRotacionP">Dirección en la que se rotará el objeto cada segundo.</param>
    /// <returns>La misma clase para hacer fluidez.</returns>
    public AnimarObjeto AgregarRotacionPorDireccion(int indiceP, Vector3 direccionRotacionP)
    {
        if (indiceP < 0)
        {
            AnimarObjetoPseudoException.IndiceNegativo(indiceP);
            return(this);
        }

        if (indiceP < animaciones.Count)
        {
            animaciones[indiceP].vectorRotacion = direccionRotacionP;
            animaciones[indiceP].ReiniciarValoresBase();
        }
        else
        {
            animaciones.Add(new AnimarObjetoSettings(5, 0)
            {
                vectorRotacion = direccionRotacionP
            });
        }
        return(this);
    }