Beispiel #1
0
    public bool AnimaEnvia(
        CriatureBase oInstanciado = null,
        string nomeDoGameObject   = "")
    {
        tempoDecorrido += Time.deltaTime;
        switch (estadoEnvia)
        {
        case EstadoDoAnimaEnvia.iniciaAnimacao:
            tempoDecorrido = 0;
            animador.AnimaEnvia();
            estadoEnvia = EstadoDoAnimaEnvia.animaEnvia;
            break;

        case EstadoDoAnimaEnvia.animaEnvia:
            //if (tempoDecorrido > ((treinador)?TEMPO_DA_ANIMA_ENVIA_TREINADOR:TEMPO_DA_ANIMA_ENVIA))
            AnimatorStateInfo A = oAnimado.GetComponent <Animator>().GetCurrentAnimatorStateInfo(0);
            if (A.IsName("enviaCriature") && A.normalizedTime >= 1)
            {
                luz            = ParticulasDeSubstituicao.InsereParticulaDaLuva(oAnimado.gameObject, false);
                raio           = ParticulasDeSubstituicao.InsereParticulaDoRaio(posCriature, oAnimado.gameObject, false);
                estadoEnvia    = EstadoDoAnimaEnvia.Instancia;
                tempoDecorrido = 0;
            }
            break;

        case EstadoDoAnimaEnvia.Instancia:
            if (tempoDecorrido > TEMPO_PARA_INSTANCIAR_CRIATURE)
            {
                if (oInstanciado == null && !treinador)
                {
                    oInstanciado = GameController.g.Manager.Dados.CriaturesAtivos[0];
                }

                if (!treinador)
                {
                    C           = GameController.g.El.retorna(oInstanciado.NomeID);
                    posCriature = MelhoraInstancia.ProcuraPosNoMapa(posCriature);
                    C           = (GameObject)MonoBehaviour.Instantiate(C, posCriature, Quaternion.identity);

                    C.transform.parent = GameController.g.transform;
                }

                Debug.Log(nomeDoGameObject + " : " + treinador);
                if (nomeDoGameObject == "" && !treinador)
                {
                    InicializadorDoJogo.InsereCriatureEmJogo(C, GameController.g.Manager);
                }
                else if (treinador)
                {
                    Debug.Log("inimigo");
                    C           = InsereInimigoEmCampo.RetornaInimigoEmCampo(oInstanciado).gameObject;
                    posCriature = MelhoraInstancia.ProcuraPosNoMapa(posCriature);
                    C.name      = nomeDoGameObject != "" ? nomeDoGameObject : "Inimigo";
                }

                C.transform.localScale = new Vector3(0.01f, 0.01f, 0.01f);
                ParticulasDeSubstituicao.ParticulaSaiDaLuva(posCriature);

                tempoDecorrido = 0;
                estadoEnvia    = EstadoDoAnimaEnvia.AumentaEscala;
            }
            break;

        case EstadoDoAnimaEnvia.AumentaEscala:
            if (!treinador)
            {
                GameController.g.Manager.CriatureAtivo.GetComponent <UnityEngine.AI.NavMeshAgent>().enabled = false;
            }
            if (C.transform.localScale.sqrMagnitude < 2.5f)
            {
                C.transform.localScale = Vector3.Lerp(C.transform.localScale, new Vector3(1, 1, 1), 4 * Time.deltaTime);
                C.transform.position   = posCriature;
            }
            else
            {
                C.transform.localScale = new Vector3(1, 1, 1);
                estadoEnvia            = EstadoDoAnimaEnvia.finalizaEnvia;
                tempoDecorrido         = 0;
            }
            break;

        case EstadoDoAnimaEnvia.finalizaEnvia:

            if (tempoDecorrido < TEMPO_PARA_FINALISAR_RAIO)
            {
                if (!treinador)
                {
                    GameController.g.Manager.CriatureAtivo.GetComponent <UnityEngine.AI.NavMeshAgent>().enabled = true;
                }
                ParticulasDeSubstituicao.ReduzVelocidadeDoRaio(raio);
            }
            else
            {
                if (treinador)
                {
                    animador.ResetaEnvia();
                    animador.ResetaTroca();
                }

                MonoBehaviour.Destroy(raio);
                MonoBehaviour.Destroy(luz);
                return(false);
            }
            break;
        }
        return(true);
    }