Na palestra anterior, reunimos nosso seletor e chegamos a um ponto em que pudemos fazer com que nosso caráter
se aproximasse de nossas portas.
Agora, nesta fase, não é a árvore do comportamento que nos decepciona.
Bem, não há nada que realmente nos decepcione no momento, mas não é a árvore
de comportamento que precisamos manipular para fixar a posição de movimento de nosso caráter.
Mas temos que estender os métodos porque temos uma árvore de comportamento, mas também estamos tentando interagir
com uma malha de navegação e o que quer que você esteja fazendo em qualquer tipo de jogo, você vai estar interagindo com
o ambiente do jogo em si.
Portanto, você terá um código que liga as coisas da árvore de comportamento ao jogo real.
Agora, se fosse um atirador animado em primeira pessoa ou algo parecido, então você teria que
ter um monte de seus próprios métodos que chamam estados de animação e coisas assim.
Mas neste caso, estamos realmente preocupados apenas com os estados da malha de navegação e com a movimentação da malha de navegação.
Agora, se voltarmos ao nosso código de ladrão, este é realmente o nível mais alto do código de comportamento.
Este é o material que você quer escrever aqui que interage com sua árvore de comportamento.
Uma vez criada sua estrutura de árvore de comportamento como a que temos, você não deveria ter que entrar e tocar nisso.
Você não quer colocar nenhum código de malha de navegação especial dentro de sua árvore de comportamento.
Deve ser muito genérico que você pode aplicá-lo a qualquer coisa.
Portanto, vamos voltar ao nosso comportamento de ladrão de nível superior e, na verdade, estender nossos métodos de ir até a
porta, a porta traseira na porta da frente aqui embaixo, porque queremos ser capazes de ir até a porta,
mas também passar pela porta.
Portanto, a passagem pela porta está realmente se livrando daquele obstáculo da malha de navegação.
Portanto, isto é algo que precisamos incorporar nestes comportamentos ou nestes métodos que entram em nossas ações,
não algo que você colocaria no próprio código da árvore de comportamento real.
Certo.
Portanto, para começar, precisamos realmente colocar algo nessas duas portas para nos dar uma indicação sobre se
elas estão lá ou não.
Agora, o que vou fazer é sugerir que estas portas possam ser trancadas e, no futuro, você poderia ter um monte de portas
ao redor do local e fazer com que seu agente verifique qual porta está destrancada para poder passar
por ela.
Portanto, vamos criar um novo roteiro tão rapidamente.
C - Script afiado, vamos chamar esse cadeado, abri-lo no editor e isso vai simplesmente segurar
um bool público é um valor bloqueado, vamos defini-lo inicialmente como falso.
Muito bem.
Então é isso.
É isso aí.
Sim.
Poupe isso.
Volte para a unidade.
Agora vamos agarrar nossa porta da frente e arrastar e soltar essa fechadura para lá, e vamos assinalá-la imediatamente para dizer que
a porta da frente está trancada.
Então pegaremos a porta traseira e colocaremos essa fechadura aqui e não a teremos trancada.
Portanto, se voltarmos ao nosso comportamento para nosso ladrão agora no topo aqui, vamos para a porta da frente.
Se isso falhar, vamos então para a porta dos fundos.
Ok, então a porta da frente está trancada.
O comportamento deve ser o de ir até a porta da frente, não conseguir entrar pela porta da frente e depois dar
a volta até a porta de trás, que é o que queremos lá.
Agora, vamos ter que estender estas duas coisas aqui.
Se você acrescentar mais portas, então você terá mais destes métodos particulares.
Mas ao lidar com a porta em si, ela está trancada.
O comportamento vai ser praticamente o mesmo e vai atravessar todas as portas.
Portanto, o que faremos aqui é nos dar outro método.
Assim, o status de nó público vai até a porta, o que faz dele um genérico vai até a porta e nós passaremos pelo objeto
de jogo da porta.
E se você tem um monte de objetos com os quais você tem que interagir, que são basicamente o mesmo
tipo de objeto, você poderia colocar esse tipo de comportamento de objeto aqui ou as propriedades dos objetos, eu acho.
Portanto, neste caso, é a porta e é se ela está trancada ou não.
Certo, então não colocaremos aqui nenhum status igual.
Vá até o local e nós passaremos pela nossa posição de transformação de pontos de porta.
Certo, então se o SX for igual ao sucesso do ponto de status do nó, isso significa que o agente conseguiu chegar até a porta.
Agora, nesse caso, temos agora que acrescentar um pouco mais de lógica se porta.
Ou devo dizer que o ponto da fechadura da porta não é trancado.
Portanto, se a porta não estiver trancada, então vamos passar de ponto de porta ativo para falso.
Isto vai realmente se livrar da porta.
Vai continuar a existir.
Vai ser apenas desligado, o que significa que não será mais um obstáculo na malha de navegação.
E então vamos colocar de volta nenhum ponto de status ponto de sucesso porque é quando dizemos que conseguimos fazer
isto.
Agora, se a porta por acaso estiver trancada, então queremos voltar ao ponto de status do nó de falha do ponto, e neste momento
isto voltará à nossa seqüência e dirá à nossa seqüência que esta porta em particular falhou.
Vá para a porta ao lado.
Experimente a porta ao lado.
Desculpe.
Não na seqüência, no seletor.
Portanto, há este que falhou.
Vai para o próximo.
Certo.
E depois vamos colocar um outro e simplesmente voltar.
Portanto, se isto ainda estiver funcionando, ainda queremos voltar a correr a partir daqui.
Agora podemos substituir, ir para o local na porta dos fundos e ir para a porta da frente com nosso go to door.
Por isso, vamos colocar à porta e vamos apenas passar pela porta de trás e depois vamos à porta e passamos
pela porta da frente, lá embaixo.
Ok, é hora de testar isso, então economize.
Vamos voltar à unidade agora.
Ainda vai para a porta da frente e depois para a porta de trás, se necessário.
Então, ele vai para a porta da frente.
Não consegue entrar pela porta da frente.
Vou dar a volta pela porta dos fundos.
Então, ele vai tentar a porta traseira e a porta traseira está destrancada.
Sabemos que está desbloqueado, se livra dele e entra, continua a pegar o diamante, pegando
o diamante e depois fazendo nossa fuga.
Agora, não diz ir para a porta traseira para sair porque aquele obstáculo da porta traseira não está lá.
A malha de navegação na verdade vai encaminhar o ladrão de volta por aquele caminho de qualquer maneira, porque se torna um caminho, porque há
um obstáculo aqui, você não pode realmente usar isso.
Ótimo.
Portanto, isso está funcionando muito bem.
Agora, uma coisa você deve ter notado, meu ladrão, se eu clicar nele neste cenário, ele está indo um pouco
mais rápido do que antes.
E isso porque quando você está testando isso, fica um pouco trabalhoso esperar
que seu assaltante, você sabe, se movimente em seu mapa.
Então, tudo o que fiz foi selecionar o ladrão e, no agente de malha de navegação, ajustar a velocidade para dez.
Está bem?
Portanto, isso é basicamente estender seu código e seus métodos e onde você deve realmente manter as interações
das coisas do motor do jogo.
Certo.
Portanto, as medidas ou animações do NAV ou o que quer que você esteja fazendo separadamente e fora dessa árvore de comportamento, porque
você quer manter isso tão genérico quanto possível.
Muito bem.
É hora de um desafio.
O que eu gostaria que você fizesse é estender seu código para que quando o ladrão chegar ao diamante, o diamante desapareça
de sua cena ou ele o pegue, o que quer que você queira fazer com ele.
Certo.
Portanto, este é o seu desafio é basicamente modificar e vamos ao código, vamos ao Diamond.
Então é com este aqui que você vai trabalhar.
Você tem o objeto diamantado lá.
Você quer pegá-lo ou se livrar dele quando isso for bem sucedido.
Pausa o vídeo, agora, dê-lhe uma chance.
Quando voltarmos, eu lhe mostrarei como fazer isso.
Certo.
Bem-vindo de volta.
Como você foi?
Bem, temos uma situação semelhante com a nossa ida ao diamante, como fazemos com as nossas portas,
praticamente no que diz respeito à lógica que vai acontecer aqui dentro.
Se for bem sucedido, então não queremos devolver o sucesso imediatamente.
Na verdade, nós só queremos agarrar o diamante.
Muito bem, então vamos subir aqui e modificaremos isto.
Por isso, vamos colocar.
Status do nó.
S é igual a isso e então queremos se o s for bem sucedido.
Portanto, se não for igual a nenhum status sem sucesso, então o que vamos fazer é, bem, você pode desativar o diamante
ou pode realmente prender o diamante ao agente.
Portanto, vamos tentar prender o diamante ao agente.
Então, o que faríamos neste caso é irmos com diamante ponto, transformar ponto pai é igual a este objeto de jogo ponto,
transformar ponto.
Assim, isso se torna o pai.
Agora, caso contrário, vamos fazer um retorno do SE aqui embaixo.
Se for bem sucedido, ele vai retornar com sucesso se não retornar o que quer que esteja correndo ou.
Sim, está bem.
Portanto, economize isso.
Vamos voltar à unidade e vamos experimentar isto.
Por isso, vamos fazer um jogo de imprensa.
Vamos entrar novamente pela porta dos fundos.
Agora, neste caso, o diamante é o plinto inteiro com o diamante em cima.
Portanto, o lote inteiro.
Por isso, vamos lá.
Se você quisesse agarrar apenas o objeto diamantado, teria que escavar na hierarquia de plinto
aqui e agarrá-lo.
Mas você teria que ter o diamante como um objeto de jogo separado que você passou para o roteiro.
Porque o plinto é o que realmente está na missão do NAV.
Você tem que ir para o plinto, mas isso não significa que você não possa pegar o diamante.
Você simplesmente não pode usar o diamante roxo em si como seu destino na malha de navegação porque ele não está na malha de navegação.
Certo.
Então, ele agarrou o diamante e foi com ele.
Agora.
Ele é.
Sim, ele está derrapando um pouco por causa da velocidade que eu consegui subir tão rápido, e eu realmente
não compensei por isso, mas isso está funcionando.
Então, como você enfrentou esse desafio?
Espero que você tenha percebido isso.
Agora você pode estender isso ainda mais se quiser roubar algum desses quadros que estão em cena, porque você
só tem que fazer a mesma coisa que fez com o Door.
Então, em vez de ir ao Diamond, seja como ir ao trabalho de arte, e então você poderia ir a qualquer um destes
em particular, roubá-lo, pegá-lo e tirá-lo da galeria.