void MudarParaAnimaBracoFinalizado()
 {
     MonoBehaviour.Destroy(raio);
     MonoBehaviour.Destroy(luz);
     estado = EstadoDoAnimaBraco.AnimaBracoFinalizado;
 }
    public bool AnimaTroca(
        bool eItem = false
        )
    {
        GameObject gerente = manager.gameObject;

        tempoDecorrido += Time.deltaTime;
        switch (estado)
        {
        case EstadoDoAnimaBraco.manipulandoCamera:
            if (mCamera.FocarPonto(VELOCIDADE_DE_MOVIMENTO_DE_CAMERA
                                   * Mathf.Max(Vector3.Distance(gerente.transform.position, alvo.transform.position),
                                               VELOCIDADE_MINIMA_PARA_MOVIMENTO_DE_CAMERA)))
            {
                estado = EstadoDoAnimaBraco.animaTroca;
            }
            break;

        case EstadoDoAnimaBraco.animaTroca:
            animador.AnimaTroca();
            estado         = EstadoDoAnimaBraco.AnimandoTroca;
            tempoDecorrido = 0;
            break;

        case EstadoDoAnimaBraco.AnimandoTroca:
            if (tempoDecorrido > TEMPO_DA_PRIMEIRA_ANIMACAO)
            {
                luz            = ParticulasDeSubstituicao.InsereParticulaDaLuva(gerente, true);
                raio           = ParticulasDeSubstituicao.InsereParticulaDoRaio(posCriature, gerente);
                estado         = EstadoDoAnimaBraco.InsereRaioDeLuva;
                tempoDecorrido = 0;
            }
            break;

        case EstadoDoAnimaBraco.InsereRaioDeLuva:
            if (tempoDecorrido > TEMPO_PARA_INSTANCIAR_PARTICULA_CHAO && alvo.transform.localScale.sqrMagnitude > 0.01f)
            {
                ParticulasDeSubstituicao.ParticulaSaiDaLuva(alvo.transform.position);
                if (!eItem)
                {
                    estado = EstadoDoAnimaBraco.DiminuiEscalaDoCriature;
                }
                else
                {
                    mCamera.InicializaCameraExibicionista(alvo.transform, alvo.GetComponent <CharacterController>().height);


                    estado = EstadoDoAnimaBraco.TerminaORaio;
                }
                tempoDecorrido = 0;
            }
            break;

        case EstadoDoAnimaBraco.DiminuiEscalaDoCriature:
            if (tempoDecorrido < TEMPO_DE_REDUCAO_DE_ESCALA)
            {
                alvo.transform.localScale = Vector3.Lerp(alvo.transform.localScale, Vector3.zero, 2 * Time.deltaTime);
            }
            else
            {
                estado         = EstadoDoAnimaBraco.TerminaORaio;
                tempoDecorrido = 0;
            }
            break;

        case EstadoDoAnimaBraco.TerminaORaio:
            if (tempoDecorrido < TEMPO_PARA_FINALISAR_RAIO)
            {
                if (!eItem)
                {
                    MonoBehaviour.Destroy(alvo);
                }

                ParticulasDeSubstituicao.ReduzVelocidadeDoRaio(raio);
            }
            else if (!eItem)
            {
                MudarParaAnimaBracoFinalizado();
                return(false);
            }

            if (eItem)
            {
                if (mCamera.FocarPonto(VELOCIDADE_DE_MOVIMENTO_DE_CAMERA *
                                       Mathf.Max(Vector3.Distance(gerente.transform.position, alvo.transform.position),
                                                 VELOCIDADE_MINIMA_PARA_MOVIMENTO_DE_CAMERA)))
                {
                    MudarParaAnimaBracoFinalizado();
                    return(false);
                }
            }
            break;

        case EstadoDoAnimaBraco.AnimaBracoFinalizado:
            return(false);
            //break;
        }
        return(true);
    }