Nesta palestra, apresentarei um conceito poderoso usando A. EU. navegação denominada
Navigation Malhas, ou NavMeshes. NavMeshes são um recurso interno do Unity e são usados para dividir um ambiente em áreas navegáveis
nas quais o algoritmo A * pode ser usado para a busca de caminhos. O método (originalmente chamado de meta-mapa)
foi desenvolvido para aplicações robóticas em
meados dos anos 80. Tornou-se mais popular nos anos 2000 para uso em jogos.
Uma navmesh divide um modelo em uma série de polígonos e atribui um custo a cada um.
Esse custo é considerado no algoritmo de busca de caminhos para determinar o melhor caminho para um A. EU. pegar.
Nós chamamos o A. EU. usando uma navmesh e um 'Agente'.
Este é um termo genérico originário do tradicional A. EU. onde palavras como NPC, Agent e Bot significam
a mesma coisa.
Existem quatro guias no sistema de navegação do Unity para configurar uma navmesh: Agents, Areas, Bake & Object.
O primeiro define um agente.
Um agente possui 4 propriedades principais que você pode definir para definir o tamanho do personagem e as habilidades de movimento.
Eles são usados por uma navmesh para determinar onde um personagem pode e não pode ir no ambiente.
NOTA: Eles não são baseados nas propriedades que você pode definir no sistema de
física, nem no tamanho do
modelo que você está usando, portanto, defina-os com cuidado. O tamanho de um agente é definido por um cilindro no qual o personagem se encaixaria.
Ele tem um raio para determinar a largura do seu personagem e a sua altura. Geralmente, supõe-se que o personagem esteja navegando em um terreno
plano, mas, no caso de inclinações e degraus, é necessário declarar o gradiente de inclinação acessível pelo personagem, bem
como a altura das escadas que ele pode acessar. A guia Agentes também permitirá
definir agentes de tamanhos diferentes adicionando mais de um tipo.
Isso permite que você tenha muitos tipos de agentes, todos com tamanhos e habilidades de navegação diferentes.
A guia Áreas é onde você pode definir diferentes custos para diferentes partes da navmesh.
O custo é usado pelo algoritmo A * para calcular o melhor caminho através da malha de um local
para outro.
Existem três tipos internos que são usados para definir diferentes partes de uma malha como passíveis de passagem, não passíveis de passagem
e saltáveis. Para estes,
você pode adicionar o seu próprio.
Qualquer tipo de área pode ser incluído ou excluído na pesquisa de caminhos de um agente no terreno.
Isso possibilita que alguns caracteres não possam atravessar a água ou passar pelas portas.
A guia Bake transforma suas malhas em uma navmesh.
Ele faz isso dividindo a malha em vários polígonos e determina para onde o agente deve ser
capaz de viajar usando o tamanho do agente cozido.
Quando você cria uma navmesh na guia Bake, ele usa esse tamanho de agente e não os tamanhos
configurados na guia Agents.
Por padrão, o tipo de agente 'Humanoid' é o único tipo de agente reconhecido pela navmesh e, embora você
possa definir vários tipos de agentes na guia Agent, você pode usar o Humanoid apenas na configuração
fornecida pelo Unity.
Dito isso, existem componentes beta disponíveis que permitirão configurar diferentes navmeshes para diferentes tipos de
agentes e veremos isso em workshops posteriores. Outras configurações de cozimento incluem a capacidade
de gerar 'Links fora da malha'.
Eles definem a que distância um intervalo da malha um agente pode cair ou pular.
Os detalhes da navmesh podem ser definidos usando a configuração 'Manual Voxel Size'. Os voxels são uma estrutura de dados usada
para dividir o mundo antes da construção da navmesh.
Quanto maior o tamanho do voxel, menos precisa a malha de navegação, pois as divisões
mundiais maiores perderão alguns detalhes da malha. Esse valor geralmente é definido como 3 por raio do agente. Você está buscando valores
em torno de 2 e 4. A 'Área da região mínima' permite mover seções da
malha que foram calculadas como navegáveis, mas são muito pequenas para serem úteis e você realmente não
deseja que elas sejam incluídas no caminho. Ao aumentar a área mínima da região e refazer
as cozinhas, você pode remover essas pequenas áreas. Quando uma malha naval é gerada para
várias malhas, ela calcula a média da altura e pode fazer coisas como transformar escadas em uma inclinação.
Se esse não é o efeito que você procura, você pode ativar a caixa 'Mesh de altura' antes de assar.
Isso incluirá valores de altura na malha.
Também consumirá mais memória e tempo de cozimento, portanto, não
seja muito generoso com seu uso.
A última guia (a guia Objeto) é onde você pode alinhar tipos de áreas específicos para diferentes partes da sua malha.
Essas são as áreas definidas na guia Áreas.
Essa guia também permite especificar para quais partes da cena você deseja criar uma malha de navegação, além de gerar links de malha
que permitem a transição de uma malha de navegação para outra. Navmeshes é um sistema poderoso para
mover seus NPCs com muito pouco esforço em seu nome.
Com eles, você pode criar todos os tipos de cenários, de patrulhas e multidões a tráfego e bandos. Nesta seção, examinaremos alguns dos elementos fundamentais
que fazem o navmeshes funcionar e criaremos alguns exemplos que realmente
demonstram seu poder.