Solucionado (ver solução)
Solucionado
(ver solução)
16
respostas

[Dúvida] Utilização do Navigation

Olá, professor. Estou tendo uma certa dificuldade de acompanhar o uso do Navigation devido à diferente versão da Unity.

Estou usando a versão 2022.3.0f1 e a localização está um pouco diferente, mas até aí tudo bem, é fácil de encontrar. Porém, duas opções são apresentadas:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A opção utilizada nas aulas é a que diz "Obsolete" e, de fato, apresenta todas as opções mostradas em aula:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Porém, além do próprio nome que já indica que é uma versão mais antiga da ferramenta, na parte de baixo da janela aparece um aviso sobre isso:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O link apresentado não leva a nada:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Mesmo pesquisando por Navigation no manual da Unity, as instruções são dadas baseadas no Navigation antigo. A janela do Navigation atual mostra-se da seguinte forma:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Eu estava tentando utilizar este mais atual, já que o antigo é obsoleto, mas não estou conseguindo. Ele não tem a opção "Bake" e não entendi como faço para aplicar e ver o NavMesh no meu cenário. O próprio Inspector do cenário não me permite selecionar a opção "Navigation Static" quando abro a opção do Static. Fica em cinza e impossível de selecionar. Se marco o Static, até aparece um "tiquezinho" do lado, mas ainda não vejo o NavMesh no cenário...

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Se coloco o cursor em cima, também sou informada de que a opção "Navigation Static" foi descontinuada:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Gostaria de uma ajuda para saber como devo proceder. O Navigation (Obsolete) aparentemente funciona como deveria, mas apenas por essa questão da Unity informar que será uma opção descontinuada, queria aprender a usar o novo...

Agradeço qualquer ajuda!

16 respostas
solução!

Olá, tudo bem?

Você agora pode criar um objeto vazio e adicionar o componente (seleciona o objeto vazio >inspector > add component) NavMeshSurface e aí lá você vai buildar as coisas, a Unity 2022 agora trás tudo como um componente ao invés de algo mais voltado pro projeto todo como era antigamente.

Então agora vamo supor que você queira pegar uma área mesmo com colisão e falar que você quer que o Agent suba nela, você pode usar o NavMeshModifier no objeto, etc (Isso você não vai usar, to só dando um exemplo do que mudou)

Bons estudos!

Olá, professor! Ainda fiquei com algumas dúvidas...

Primeiramente, adicionar um componente no próprio objeto Cenário seria a mesma coisa? Vi que é possível e, aparentemente, fica tudo igual, mas não sei se existem restrições mais pra frente... Faz diferença eu aplicar no Cenário ou num novo objeto vazio? Considerando que o objeto vazio seria uma coisa só e o objeto Cenário é um objeto com vários filhos...

Segundo, quanto à opção "Static" que é selecionada no Inspector de Cenário, devo deixá-la marcada também? Não entendi exatamente qual a função dela para o funcionamento do NavMesh e, já que estou utilizando um componente agora e não consigo selecionar a opção "Navigation Static", não sei dizer o que é correto (apesar da opção se apresentar selecionada quando ativo o Static como um todo).

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Agora ainda me surgiu outro problema... Estava testando aqui as aplicações e meu NavMesh fica meio esquisito...

Ele é aplicado no cenário, mas, por alguma razão que não entendo, ele falha em alguns pontos que deveriam ter NavMesh:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Sendo esses dois blocos no pé do jogador e do chefe os que me chamam mais atenção, mas existem outros menores aí também. Já tentei alterar várias configurações, tanto do NavMeshSurface quanto na janela Navigation, mas nada resolve. E também fiz teste usando o NavMeshSurface tanto no próprio Cenário quanto num objeto vazio (aproveitando para ir testando e vendo se encontrava alguma diferença na utilização) e o problema acontece em ambos os casos. Também tentei com o Static ativado e desativado. Não sei o porquê dessas falhas...

Update: percebi que se movesse o chefe ou o jogador de lugar e fizesse o Bake novamente, a falha acompanha mais ou menos a posição deles, então vejo que as falhas maiores estão relacionadas com os personagens, mas não sei o que está causando isso. E, ainda assim, existem falhas menores pelo cenário (no próprio print que anexei dá pra ver as outras, próximas aos barris e ao hotel) que também não sei as causas...

Sim, pode ser no cenário que no fim é um objeto vazio também.

A navmesh nova não leva em consideração só os statics para bake então meio que tanto faz, acho que a melhor forma de você fazer funcionar rápido é colocar todo o cenário numa layer e nas configurações só usar aquela layer para dar o bake, assim não tem influencia de mais nada e evita mais configurações.

Você diz agrupar todos os objetos que compõem o cenário em "Cenário" (sendo assim, todos eles filhos de Cenário) e aplicar o componente NavMeshSurface no objeto "Cenário"? Porque isso eu já fiz. Tentei aplicar a NavMeshSurface tanto nesse objeto Cenário quanto em um novo objeto vazio aleatório. São exatamente as mesmas falhas que aparecem e não sei o que está causando elas...

Não, digo você pegar o cenário e colocar numa layer nova (opção perto do nome do objeto) e colocar todos os objetos nessa layer, aí nas opções do Surface você escolhe só essa layer como o que seria utilizada na navmesh.

Ah sim, entendi. Tinha me confundido kk

Bom, tentei fazer isso mas precisei adaptar. Não posso colocar todo o meu cenário numa layer Cenário, pois isso tira a layer Chão dos pisos e eu acabo criando um problema com a rotação do jogador, já que o raio nunca encontra um objeto na layer Chão. Então foi necessário colocar apenas os objetos do cenário que não tinham layer numa nova layer Cenário e manter os objetos do piso como Chão. Aí na hora de aplicar o NavMeshSurface, escolhi as duas layers para serem incluídas. Para mim, foi tudo de boa, pois não expandi meu cenário e não tem muitos objetos para classificar um por um, mas imagino que se alguém tenha um cenário enorme, isso seria extremamente trabalhoso de se fazer...

Essa solução consertou as falhas que estavam próximas dos personagens, mas ainda tenho falhas próximas de alguns objetos do cenário ou até em pontos elevados do chão, como essas:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Se quiser dar uma olhada nesse tópico eu mostro um jeito de evoluir a rotação para não usar mais a layer de Chao, isso deve ajudar.

Consegui fazer a rotação funcionar sem usar mais a layer Chão, com esse tópico mencionado. Troquei os pisos da layer Chão para layer Cenário, não havendo mais nada na layer Chão. Porém, continuo tendo falhas próximas aos objetos, mesmo tendo alterado a NavMesh para aplicar apenas na layer Cenário.

É teria que avaliar, esses problemas porque podem ser colisores ou cálculos de objetos que deveriam ser estáticos, etc, quer fazer um .zip da pasta do projeto, subir no drive e mandar o link aqui?

Posso mandar sim! Aqui.

Só está com algumas coisas a mais porque eu já estava vendo a aula de aplicar animação e rotação do boss, enquanto não resolvia essa questão do NavMesh.

É o tipo da NavMesh ao invés de UseGeometry RenderMeshes você pode trocar pra Physical Colliders pra usar os colisores ao invés das meshes 3D

Eu tinha tentado isso. E até resolve essas falhas, mas aí ele cria outra:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Acaba deixando essa faixa enorme na frente do hotel...

Não tem problema porque o chefe nunca vai conseguir atravessar essa faixa que não azul, ele calcula isso porque tecnicamente você pode querer usar a navmesh embaixo ou subir num collider, pode pode tirar aumentando o colisor pra baixo e diminuindo o height do calculo da navmesh.

A navmesh nunca vai ser perfeita, ela tem que ser funcional, então nem esquenta pro chefe atravessar essa área você teria que fazer uma função de pulo com a navmesh.

Entendi, ele tá criando uma borda padrão pra fora do collider do hotel. Eu achava que o boss deveria conseguir andar por ali.

E também tinha me preocupado com a NavMesh sendo criada dentro do hotel (no chão mesmo, não a do teto), sendo que existe um collider nele e o boss obviamente não vai andar ali. Então achei que algo estava errado. Tentei tirar essa NavMesh no chão do hotel alterando o height, mas não sumiu. Bom, como o boss não vai ali mesmo, não vou me preocupar haha

Agradeço a ajuda, professor! Tópico longo, mas me ajudou a entender o funcionamento das coisas. Muito obrigada pelo seu tempo e paciência! :D

Boa, qualquer coisa estou por aqui, 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