// Use this for initialization
 void Start()
 {
     posAlvo = distanciaDeAfastamento * dirAfastamento + transform.position;
     posAlvo = MelhoraInstancia.PosEmparedado(posAlvo, transform.position);
     posAlvo = MelhoraInstancia.ProcuraPosNoMapa(posAlvo);
     R       = GetComponent <Rigidbody>();
 }
Пример #2
0
        public static PetManager Initialize(PetName petName, int nivel, Vector3 pos)
        {
            PetBase    P = new PetBase(petName, nivel);
            GameObject G = InstantiatePet(P, pos);

            G.transform.position = MelhoraInstancia.ProcuraPosNoMapa(G.transform.position);
            return(ConfigureCriatureBase(G, P));
        }
Пример #3
0
    public static void InsereAtaque(Vector3 partida, Vector3 chegada, float altura, GameObject dono, int forca)
    {
        //Debug.Log(partida + " : " + chegada + " : " + Screen.width + " : " + Screen.height);
        bool foi = true;

        PosNoMapa posM = MelhoraInstancia.TelaParaMundo3D(partida);

        foi     = posM.estaNoMapa;
        partida = posM.pos;

        posM    = MelhoraInstancia.TelaParaMundo3D(chegada);
        foi    &= posM.estaNoMapa;
        chegada = posM.pos;

        if (foi)
        {
            partida = new Vector3(partida.x, altura, partida.z);
            chegada = new Vector3(chegada.x, altura, chegada.z);

            Elementos elemento;

            if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name != "Tutorial")
            {
                switch (ControladorGlobal.c.DadosGlobais.PerfilAtualSelecionado.PersonagemAtualSelecionado.Bonus)
                {
                case BonusDePersonagem.maisAtaque:
                    elemento = Elementos.cuboMaisAtaque;
                    break;

                case BonusDePersonagem.esferasDeFogo:
                    elemento = Elementos.cuboEmChamas;
                    break;

                default:
                    elemento = Elementos.cuboColisor;
                    break;
                }
            }
            else
            {
                elemento = Elementos.cuboColisor;
            }

            Transform       T   = MonoBehaviour.Instantiate(ControladorDeJogo.c.RetornaElemento(elemento)).transform;
            AplicadorDeDano apD = T.GetComponent <AplicadorDeDano>();
            apD.dono = dono;
            apD.dano = forca;

            T.rotation   = Quaternion.LookRotation(chegada - partida);
            T.position   = 0.5f * (chegada + partida);
            T.localScale = new Vector3(elemento == Elementos.cuboMaisAtaque? 10:5, 1, 0.75f * (chegada - partida).magnitude);

            MonoBehaviour.Destroy(T.gameObject, 0.25f);
        }
    }
Пример #4
0
 // Update is called once per frame
 void Update()
 {
     tempoDecorrido     += Time.deltaTime;
     transform.position += dirAfastamento * distanciaAfastando * Time.deltaTime / tempoAfastando;
     if (tempoDecorrido > tempoAfastando)
     {
         transform.position = MelhoraInstancia.PosEmparedado(posInicial + dirAfastamento * distanciaAfastando, posInicial);
         GetComponent <EstadoDePersonagem_Gerente>().ApComandos.Mov.PararMovimento();
         Destroy(this);
     }
 }
Пример #5
0
    PosNoMapa DistanciaNoMapa(Vector3 final)
    {
        bool      foi     = true;
        PosNoMapa posM    = MelhoraInstancia.TelaParaMundo3D(Vector3.zero);
        Vector3   inicial = posM.pos;

        foi &= posM.estaNoMapa;

        posM  = MelhoraInstancia.TelaParaMundo3D(final);
        final = posM.pos;
        foi  &= posM.estaNoMapa;

        return(new PosNoMapa()
        {
            pos = final - inicial, estaNoMapa = foi
        });
    }
Пример #6
0
    void bUpdate()
    {
        bool      foi = false;
        float     distanciaAlvo;
        Vector3   dir = Vector3.zero;
        PosNoMapa pos = new PosNoMapa();

        for (int i = 0; i < itens.Length; i++)
        {
            foi           = false;
            distanciaAlvo = Random.Range(distanciaMin, distanciaMax);
            if (itens[i].VerificaNovoSpawn())
            {
                int cont = 0;
                while (!foi && cont < 100)
                {
                    cont++;
                    dir  = Vector3.ProjectOnPlane(Random.insideUnitSphere, Vector3.up).normalized;
                    dir *= distanciaAlvo;

                    dir = MelhoraInstancia.PosEmparedado(heroi.position + dir, heroi.position);
                    pos = MelhoraInstancia.EstaNoMapa(dir);
                    if (Vector3.Distance(heroi.position, pos.pos) > distanciaAlvo - 1)
                    {
                        foi = pos.estaNoMapa;
                    }
                }

                if (foi)
                {
                    GameObject G = ControladorDeJogo.c.RetornaElemento(
                        (Elementos)System.Enum.Parse(typeof(Elementos), itens[i].Nome.ToString())
                        );
                    G = (GameObject)MonoBehaviour.Instantiate(G, pos.pos + 1.5f * Vector3.up, G.transform.rotation);

                    if (itens[i].Nome == NomeItem.estrelaDeCristal)
                    {
                        EstrelaDeCristal.EstrelasEmCampo.Add(G);
                    }
                }
            }
        }
    }
Пример #7
0
    void SpawnarInimigo()
    {
        Vector3   onde = Vector3.zero;
        PosNoMapa p;
        bool      noMapa = false;
        int       cont   = 0;

        while (!noMapa)
        {
            onde = Vector3.ProjectOnPlane(Random.insideUnitSphere, Vector3.up).normalized;
            onde = Random.Range(distanciaMinSpawn, distanciaMaxSpawn) * onde + heroi.position;
            cont++;
            p      = MelhoraInstancia.EstaNoMapa(onde);
            noMapa = p.estaNoMapa;
            onde   = p.pos;
        }

        GameObject G = MonoBehaviour.Instantiate(vorticeDeSpawn, onde, vorticeDeSpawn.transform.rotation);

        SelecionarInimigoSpawnado(G);
        inimigosEmCampo.Add(G);
    }
Пример #8
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 > TEMPO_DA_ANIMA_ENVIA)
            {
                luz            = ParticulasDeSubstituicao.InsereParticulaDaLuva(manager.gameObject, false);
                raio           = ParticulasDeSubstituicao.InsereParticulaDoRaio(posCriature, manager.gameObject, false);
                estadoEnvia    = EstadoDoAnimaEnvia.Instancia;
                tempoDecorrido = 0;
            }
            break;

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

                C           = elementosDoJogo.el.retorna(oInstanciado.NomeID);
                posCriature = MelhoraInstancia.ProcuraPosNoMapa(posCriature);
                C           = (GameObject)MonoBehaviour.Instantiate(C, posCriature, Quaternion.identity);

                C.transform.parent = elementosDoJogo.el.transform;

                if (nomeDoGameObject == "" && manager != null)
                {
                    InicializadorDoJogo.InsereCriatureEmJogo(C, manager);
                }

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

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

        case EstadoDoAnimaEnvia.AumentaEscala:
            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)
            {
                ParticulasDeSubstituicao.ReduzVelocidadeDoRaio(raio);
            }
            else
            {
                MonoBehaviour.Destroy(raio);
                MonoBehaviour.Destroy(luz);
                return(false);
            }
            break;
        }
        return(true);
    }
Пример #9
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);
    }