3
respostas

Problema no GeradorZumbis com NavMeshSurface

Quando criamos o gerador de zumbis, usamos os colisores para tirar o bug do zumbi nascer em cima de outro zumbi, nascer com uma colisão e então ele ser empurrado para longe.

Eu coloquei um gerador de zumbi próximo a um objeto do cenário, o carro capotado. Com isso também acontecia o bug do zumbi nascer e ter uma colisão com o carro capotado e ser acelerado pra algum lugar. Corrigi isso definindo na LayerZumbi mais de uma layer para testar os colisores, a layer Zumbi que já existia, e outra layer cenário (é válido ressaltar que eu separei os objetos do chão dos objetos do cenário em um outro gameobject chamado chão) . Funcionava corretamente, até eu criar o componente NavMeshSurface no gameobject cenário, agora o zumbi não instância quando o gerador está próximo a algum objeto do cenário. Consegui fazer voltar a funcionar, tirando a layer Cenario da LayerZumbi, porém se eu colocar o gerador próximo a um objeto que tenha rigibody de vez em quando nasce um zumbi sofrendo uma colisão e ele já nasce sendo empurrado. Não consegui resolver mexendo nas layers.

Collider[] colisores = Physics.OverlapSphere(posicaoDeCriacao, 1, LayerZumbi); //Overlapshepere vai testar na posicao de criacao uma esfera de raio 1 tudo que for uma colisao com a layer LayerZumbi (no caso outro zumbi e a layer cenario) e armazenar em colisores
3 respostas

Oi, Luccas, não entendi muito bem o problema, pode colar o código completo?

Porque tecnicamente o fato de ter NavMesh não influencia em nada hora da criação já que são até scripts diferentes que nem se comunicam e o de instanciação não olha pra NavMesh.

Coloquei o link do meu repositório do github, pois não sei quais os arquivos eu tenho que zipar para poder enviar o jogo sem dar erro. Também estou aprendendo a mexer com o github, espero que de certo.

https://github.com/LuccasMB/curso-alura-luccas

A versão mais atual é o commit on Aug 28, 2023 (Hash 3c52412a0ebb10ab84de1f99295ef067aa53233d)

Tentando Colocar um gerador de zumbi próximo a objeto do cenário

Nos gameobjects "GeradorZumbi", a variável publica Layer Zumbi está definida com: Zumbi, Cenario. Para evitar que o zumbi nasça e colida com um objeto do cenário.

Não sei porque, desde que liguei o navMeshSurface no cenário, não gera mais zumbi em alguns geradores. O "GeradorZumbi (7)" é um que não gera nunca. Acredito que ele fica sempre detectando colisão com a layer cenário e não deixa zumbi nascer ali.

Entendi, não acho que o problema é a navmesh, como é testado os colisores do cenário por causa da layer e o zumbi instancia no Y 0 sempre vai ter um colisor lá, então sempre vai falhar a criação.

Minha sugestão seria tirar a colisão do chão já que não estamos usando e o Y está parado por conta do Rigidbody e levar o Raycast do personagem pra algo mais na parte de programação que você pode dar uma lida nesse tópico, assim a colisão com o chão se tornaria desnecessária e você pode retirar e assim só o cenário seria levado em consideração

A opção 2 e mais prática seria mover o chão pra sua propria layer e tirar ela dessa parte de verificação de colisores.

Bons estudos

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