Exemplo n.º 1
0
    // método que corrige o problema de loop infinito criado pelo while
    // quando usar o metodo tem que usar  startCoroutine(metodo());
    IEnumerator GerarNovoZumbi()
    {
        Vector3 posicaoDeCriacao = AleatorizarPosicao();

        Collider[] colisor = Physics.OverlapSphere(posicaoDeCriacao, 1, LayerZumbi);

        while (colisor.Length > 0)
        {
            posicaoDeCriacao = AleatorizarPosicao();
            colisor          = Physics.OverlapSphere(posicaoDeCriacao, 1, LayerZumbi);
            yield return(null);
        }


        // atribuiçao mais rapida, estudar isso com mais calma para entender melhor
        // ******************* !!!!
        ControlaInimigo zumbi = Instantiate(Zumbi, posicaoDeCriacao, transform.rotation).
                                GetComponent <ControlaInimigo>();

        zumbi.meuGerador = this;
        // unity parte 3 criando um chefao , aula 03 , video 4 balanceando qual....


        quantidadeDeZumbisVivosAtual++;
    }
Exemplo n.º 2
0
    IEnumerator GerarNovoZumbi()
    {
        Vector3 posicaoDeCriacao = AleatorizarPosicao();

        Collider[] colisores = Physics.OverlapSphere(posicaoDeCriacao, 1, LayerZumbi);

        while (colisores.Length > 0)
        {
            posicaoDeCriacao = AleatorizarPosicao();
            colisores        = Physics.OverlapSphere(posicaoDeCriacao, 1, LayerZumbi);
            yield return(null);
        }

        GameObject gameObj = Pool.GetObjectFromPool();

        if (gameObj != null)
        {
            ControlaInimigo zumbi = gameObj.GetComponent <ControlaInimigo>();
            zumbi.meuGerador = this;
            zumbi.gameObject.transform.position = posicaoDeCriacao;
            zumbi.gameObject.transform.rotation = transform.rotation;
            zumbi.gameObject.SetActive(true);
            quantidadeDeZumbisVivos++;
        }
    }
Exemplo n.º 3
0
    IEnumerator GerarNovoZumbi()
    {
        Vector3 posicaoDeCriacao = AleatorizarPosicao();

        Collider[] colisores = Physics.OverlapSphere(posicaoDeCriacao, 1, LayerZumbi);

        while (colisores.Length > 0)
        {
            posicaoDeCriacao = AleatorizarPosicao();
            colisores        = Physics.OverlapSphere(posicaoDeCriacao, 1, LayerZumbi);
            yield return(null);
        }
        ControlaInimigo zumbi = Instantiate(Zumbi, posicaoDeCriacao, transform.rotation).GetComponent <ControlaInimigo>();

        zumbi.meuGerador = this;
        quantidadeDeZumbisVivos++;
    }
Exemplo n.º 4
0
    IEnumerator GerarNovoZumbi()
    {
        Vector3 posicao = aleatorizaPosicao();

        Collider[] colisores = Physics.OverlapSphere(posicao, 1, layerZumbi);

        while (colisores.Length > 0)
        {
            posicao   = aleatorizaPosicao();
            colisores = Physics.OverlapSphere(posicao, 1, layerZumbi);
            yield return(null);
        }

        ControlaInimigo zumbiCI = Instantiate(zumbi, posicao, transform.rotation).GetComponent <ControlaInimigo>();

        zumbiCI.meuGerador = this;
        numeroAtualDeZumbis++;
    }
Exemplo n.º 5
0
    void OnTriggerEnter(Collider objetoDeColisao)
    {
        switch (objetoDeColisao.tag)
        {
        case "Inimigo":
            ControlaInimigo inimigo = objetoDeColisao.GetComponent <ControlaInimigo>();
            inimigo.TomarDano(1);
            Quaternion inversaoDoSentidoDeRotacao = Quaternion.LookRotation(-transform.forward);
            inimigo.ParticulaSangue(transform.position, inversaoDoSentidoDeRotacao);
            break;

        case "ChefeDeFase":
            objetoDeColisao.GetComponent <ControlaChefe>().TomarDano(1);
            break;
        }


        Destroy(gameObject);
    }
Exemplo n.º 6
0
    private void OnTriggerEnter(Collider objetoDeColisao)
    {
        Quaternion rotacaoOpostaABala = Quaternion.LookRotation(-transform.forward);

        switch (objetoDeColisao.tag)
        {
        case "Inimigo":
            ControlaInimigo inimigo = objetoDeColisao.GetComponent <ControlaInimigo>();
            inimigo.TomarDano(1);
            inimigo.SoltarParticulaSangue(transform.position, rotacaoOpostaABala);
            break;

        case "ChefeDeFase":
            ControlaChefe chefe = objetoDeColisao.GetComponent <ControlaChefe>();
            chefe.TomarDano(1);
            chefe.SoltarParticulaSangue(transform.position, rotacaoOpostaABala);
            break;
        }
        Destroy(gameObject);
    }
Exemplo n.º 7
0
    void OnTriggerEnter(Collider other)
    {
        Quaternion rotacaoOpostaABala = Quaternion.LookRotation(-transform.forward);

        switch (other.tag)
        {
        case Tags.INIMIGO:
            ControlaInimigo scriptInimigo = other.GetComponent <ControlaInimigo>();
            scriptInimigo.TomarDano(dano);
            scriptInimigo.ParticulaSangue(transform.position, rotacaoOpostaABala);
            break;

        case Tags.CHEFE_DE_FASE:
            ControlaChefe scriptChefe = other.GetComponent <ControlaChefe>();
            scriptChefe.TomarDano(dano);
            scriptChefe.ParticulaSangue(transform.position, rotacaoOpostaABala);
            break;
        }
        Destroy(gameObject);
    }
Exemplo n.º 8
0
    private void OnTriggerEnter(Collider objetoDeColisao)
    {
        Quaternion balaRotacaoNegativa = Quaternion.LookRotation(-transform.forward);

        switch (objetoDeColisao.tag)
        {
        case Tags.Inimigo:
            ControlaInimigo inimigo = objetoDeColisao.GetComponent <ControlaInimigo>();
            inimigo.TomarDano(danoBala);
            inimigo.ParticulaSangue(transform.position, balaRotacaoNegativa);
            break;

        case Tags.ChefeDeFase:
            ControlaChefe chefe = objetoDeColisao.GetComponent <ControlaChefe>();
            chefe.TomarDano(danoBala);
            chefe.ParticulaSangue(transform.position, balaRotacaoNegativa);
            break;
        }

        Destroy(gameObject);
    }
Exemplo n.º 9
0
    void OnTriggerEnter(Collider objetoDeColisao)
    {
        Quaternion rotacaoOpostaABala = Quaternion.LookRotation(-transform.forward);

        switch (objetoDeColisao.tag)
        {
        case Tags.Inimigo:
            ControlaInimigo inimigo = objetoDeColisao.GetComponent <ControlaInimigo>();
            inimigo.TomarDano(tamanhoDoDano);
            inimigo.ParticulaSangue(transform.position, rotacaoOpostaABala);
            break;

        case Tags.Chefe:
            objetoDeColisao.GetComponent <ControlaChefe>().TomarDano(tamanhoDoDano);
            break;
        }



        // gameobject com g minusculo quer dizer o proprio objeto que tem o script
        Destroy(gameObject);
    }
Exemplo n.º 10
0
    IEnumerator GerarZumbiNovo(bool utilizarSom)
    {
        Vector3 posicaoDeCriacao = AleatorizarPosicao();

        Collider[] Colisores = Physics.OverlapSphere(posicaoDeCriacao, 1, layerZumbi);;

        while (Colisores.Length > 0)
        {
            posicaoDeCriacao = AleatorizarPosicao();
            Colisores        = Physics.OverlapSphere(posicaoDeCriacao, 1, layerZumbi);
            yield return(null);
        }

        ControlaInimigo zumbi = Instantiate(Zumbi, posicaoDeCriacao, Quaternion.identity).GetComponent <ControlaInimigo>();

        zumbi.meuGerador = this;
        quantidadeDeZumbis++;
        if (Random.value < PorcentagemDeGerarComSom && utilizarSom)
        {
            ControlaAudio.instancia.PlayOneShot(SomDeGrunhido);
        }
    }
Exemplo n.º 11
0
    void OnTriggerEnter(Collider objetoDeColisao)
    {
        if (objetoDeColisao.gameObject.tag == "Inimigo")
        {
            //dar dano no inimigo
            var dano    = Random.Range(50, 60);
            var critico = Random.Range(0, 100) < 5;

            if (critico)
            {
                dano = dano * 2;
                Debug.Log("Critico " + dano);
            }

            Quaternion rotacaoOpostaBala = Quaternion.LookRotation(-transform.forward);

            ControlaInimigo inimigo = objetoDeColisao.GetComponent <ControlaInimigo> ();
            inimigo.TomarDano(dano);
            inimigo.ParticulaSangue(transform.position, rotacaoOpostaBala);
        }


        Destroy(gameObject);
    }