3
respostas

while INFINITO

Tá No While Infinito

  while(colisores.Length > 0)
        {
            colisores = Physics.OverlapSphere(posicao, generation_range, layerzumbi); // já tentei tirar essa linha
            posicao = UnityEngine.Random.insideUnitSphere * generation_range;
            posicao += transform.position;
            posicao.y = 0;
            yield return null;
        }
3 respostas

Olá Flávio!

Não sou especialista no assunto mas tentarei te ajudar.

A primeira coisa que me vem a mente em relação ao loop infinito é que não está acontecendo um incremento dentro do laço que faça ele sair em algum momento. Isso se alia a sua condicional (colisores.length > 0) que tambem pode causar um loop infinito caso os numero sempre sejam maiores que 0 (o que acontece normalmente).

Para resolver esse problema eu criaria uma variavel do lado de fora do loop para auxilia-lo a percorrer o vetor Colisores.

Ficaria algo como:

var cont = 0;
while(cont < colisores.Length)
        {
            colisores = Physics.OverlapSphere(posicao, generation_range, layerzumbi);
            posicao = UnityEngine.Random.insideUnitSphere * generation_range;
            posicao += transform.position;
            posicao.y = 0;
            cont = cont + 1;
            yield return null;
        }

Repare nas linhas 1, 2 e 8 do código.

Caso tenha alguma duvida me avise.

Espero ter ajudado! :D

Ainda Preciso De Ajuda, O Zumbi Não Spawna Depois Que Coloquei O While

e guilerme obrigado por tentar ajudar, mas eu não quero fazer isso que você colocou, eu quero que fique no while até que o colisores seje = a 0. pra ele não spawnar em cima de objeto

Oi Flávio. Isso pode gerar um loop infinito de ele tanto testar vários códigos vão ficar travados e vai dar gargalo no seu jogo. Algumas vezes é melhor ter uma cláusula de segurança. Um exemplo tosco mas funcional: Guardar sempre o lugar com o menor número de colisores que é o menor risco e se o zumbi não spawnar em X segurandos spawna ele lá. Mesmo tendo problemas manter o código travado pode não ser a melhor escolha.

Claro que você pode testar isso usando o profiler pra medir perfomance e também pode por exemplo usar Layers pra evitar que zumbis colidão com os outros mas não com cenário, etc.

Conseguiu resolver o problema do não spawn?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software