Continuaremos analisando os agentes de navmesh nesta palestra, criando outro agente que só pode
ser utilizado em determinadas áreas.
Então, primeiro de tudo, agarre seu RedAgent e apenas duplique-o.
Se você tem um monte de outros RedAgents porque estava brincando com eles de
antes, pode deixá-los lá ou pode se livrar deles.
Agora eu vou pressionar W aqui e separar esses agentes e vou usar meu material azul, uma cor
que eu fiz antes e criar o agente azul.
Então, vamos chamar isso de BlueAgent ... e este BlueAgent, por ser uma cópia do RedAgent, possui o mesmo script
AIControl e o Nav Mesh Agent anexado a ele.
Eles são importantes.
Você precisa ter aqueles lá e não estamos realmente alterando o código. Estamos mudando
a especificação navmesh. O que eu quero fazer é tornar o BlueAgent incapaz de
descer por esse corredor e isso significa modificar as áreas dentro da malha de navegação para que o BlueAgent seja incapaz de atravessar esse
polígono que está aqui.
Então, voltarei à navegação e podemos ver que tudo está azul e está pronto para ser percorrido neste
caso,
esse é o primeiro valor interno.
Nós vamos adicionar outro, vamos chamá-lo de Corredor. Agora, corredor que
queremos atribuir a esta área aqui.
Portanto, você precisa clicar no polígono (ou na malha) que será o corredor; portanto, em qualquer outro lugar que você desejar definir como
Corredor, também poderá
fazê-lo neste momento, mas apenas selecionando Shift todas as partes que deseja .
Então vamos fazer este aqui.
Agora que está selecionado, vá para a guia Objeto, na guia Navegação. Você verá que esta caixa Estática de navegação está marcada
porque é para isso que a definimos
no Inspetor em Estática aqui.
Agora, se você selecionar um polígono que você não criou anteriormente, como este aqui, poderá
selecioná-lo como estático aqui ou na
Navegação, poderá marcá-lo e este também será marcado.
Assinalar que faz exatamente o mesmo que defini-lo Estático
no Inspetor.
Agora que criamos esse corredor como uma área para a navmesh, nesta seção Objeto, podemos definir
superfícies individuais para esse tipo.
Portanto, neste caso, eu posso soltar essa caixa e vou encontrar 'Corredor' porque digitei isso
nas áreas e para que o polySurface4901 se torne o corredor.
Se voltarmos a assar e depois assar, você verá que fica rosa e vamos apenas verificar as áreas e você pode
ver que a cor do corredor é rosa.
Agora você deve ter notado aqui que eu marquei essa malha de altura porque estava
testando algo antes. Deixe-me assar novamente sem ele.
Certo.
Então, agora que fizemos isso, atribuímos isso ao corredor.
A próxima coisa que precisamos fazer é dizer ao BlueAgent que não é possível descer pelos corredores.
Então, voltamos e encontramos o BlueAgent que está aqui e, no Inspetor, na parte inferior do Nav Mesh Agent, não alteramos
o Tipo de agente.
Ainda estamos trabalhando com o Humanoid, mas alteramos a Máscara de Área, que fica na parte inferior
e aqui mostra todas as diferentes partes da malha de navegação que serão navegáveis por esse agente e,
neste caso, o corredor não.
Então, basta selecioná-lo e isso desativará o corredor.
Agora o BlueAgent não pode descer o corredor.
Então, vamos testar isso.
Não alteramos nenhum código, apenas alteramos a navmesh e para onde o agente pode ir. Pressione Play e nós temos nossos 2
agentes aqui.
Eles poderão passear, mas
se eu selecionar a área interna, o RedAgent poderá chegar lá, mas
o BlueAgent está parado na porta, porque não há como ele atravessar esse
corredor.
Você pode pressionar Ctrl-D para criar alguns RedAgents e Ctrl-D para criar
alguns BlueAgents e vê-los se movimentar e também se apressarem para tentar passar pela porta, porque os caras
azuis vão entrar na estrada do vermelho.
Nesse caso, eles estão bloqueando-os completamente.
Tente agitá-los um
pouco e agora um cara conseguiu. Então, eles podem até se mover um pouco, porque ainda tremem em torno
do local em que estão e alguns deles conseguem passar.
Mas você pode ver nisso o comportamento do vermelho e do azul.
Agora, se o azul precisava entrar, precisamos criar outro caminho para eles. Para criar um caminho
para
os BlueAgents, vou colocar uma rampa aqui.
Então, o que fiz foi remover os canos que estavam por aqui e
também me livrar das grades. Então, havia algumas grades aqui e também do
outro lado.
Eu estendi e girei, para que seja apenas um cubo padrão do Unity, que fez a ponte sobre essa área.
Não é absolutamente perfeito e há um passo adiante, mas estamos
permitindo avançar nessa navmesh.
Também selecionei várias dessas outras áreas no mapa para transformá-las em navmesh, para que, quando os
agentes passarem pela ponte, possam encontrar
o caminho de volta para a outra área.
Agora, este cubo não está anexado ao restante da malha.
É por si só e tudo bem.
Não importa se faz parte de uma malha inteira ou de um único objeto, ele ainda pode ser integrado à malha de navegação.
Agora, selecionamos esse cubo específico neste caso e vamos para a janela Navegação e descemos para
Objeto.
Tornamos uma navegação estática, marcando-a lá.
Também podemos marcá-lo no inspetor e depois definimos como 'Walkable', que é o que queremos que seja.
Voltamos ao Bake e depois clicamos em [Bake] e você verá um bom caminho por lá.
Então, vamos voltar e executar isso. Quando clico aqui, os caras vermelhos vão
descer o corredor porque podem.
Os caras azuis nem sequer tentam descer o corredor, então nem sequer entram nos seus
cálculos quando se dirigem para as costas e depois entram e passam
por outro corredor que está aqui e aqui embaixo. área onde estão os vermelhos.
Agora, os caras vermelhos vão seguir o caminho mais curto (ou o menor custo) para entrar nessa área.
Vamos apenas ver se movemos os vermelhos por aqui primeiro, se podemos fazê-los atravessar a ponte.
Estou apenas realinhando isso e vou configurar minha câmera ... Alinhar com o modo de exibição, para que possamos ver mais
da estação, pressione Play e clico aqui e todos eles vão até lá, porque esse é o caminho mais curto para
chegar lá.
Então, se eu clicar lá, todos eles atravessarão a ponte e, depois que chegarem aqui, será mais curto
para eles entrarem por esse caminho.
Sim.
Então eles entrarão por lá. Então, nesse caso, nós os fizemos ir até lá e então havia
uma distância menor para eles virem por ali do que voltar e atravessar aquele corredor.
Mas se eles estão aqui, no Start, então o corredor é a maneira mais rápida de entrar.
Como poderíamos tornar o corredor mais caro para eles atravessarem? Digamos que o corredor esteja pegando fogo
e seria uma idéia melhor para eles andar por esse caminho do que
passar por aqui.
O que você faz é aumentar o custo dessa parte do
caminho e podemos fazer isso na janela Navegação. Se formos para as Áreas, 'Corredor' está atualmente definido como um
custo de 1, mas se fizermos um custo de 10 para percorrer esse corredor, isso tornará o cálculo um
pouco diferente para eles.
Depois de alterar o custo, será necessário voltar e refazê-lo, para que
esses valores sejam salvos na malha de navegação.
Está bem.
Então, pressione Play e veja o que temos agora. Então, vamos tentar levá-los para aqui.
Agora, neste caso, deve ser muito limítrofe o custo de 10 para que
eles desçam, porque você pode ver 2 deles que estão próximos o suficiente passarem por aqui, chegaram
primeiro, enquanto os que foram empurrados pelo azul caras mais distantes do corredor decidiram que era mais fácil contornar
esse caminho.
Portanto, nesta palestra, examinamos a criação de áreas diferentes e a atribuição de áreas
diferentes a diferentes objetos que estão em nossa navmesh e, em seguida, a atribuição de diferentes áreas ao sistema de busca de caminhos do
agente, que está no agente de navmesh, ativando ou desativando .