Esempio n. 1
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);
        }
    }
Esempio n. 2
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
        });
    }
Esempio n. 3
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);
                    }
                }
            }
        }
    }