// 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++; }
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++; } }
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++; }
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++; }
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); }
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); }
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); }
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); }
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); }
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); } }
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); }