Na palestra anterior, nós montamos nossas ações e colocamos nosso caráter em movimento agora, a fim de executar
um plano.
Como tal, precisamos adicionar em seqüência nós.
Até agora, temos como ir até a porta e ir até o nó da van, mas na verdade eles não funcionam em seqüência.
E é isso que você quer como seu plano e quer que seu agente os administre um a um.
Agora, se em algum momento durante a seqüência uma dessas ações falhar, então não há sentido em continuar com
a seqüência.
Portanto, você tem que levar isso em consideração quando estiver realmente programando o nó de seqüência.
Então, basicamente, o que acontece é que um nó de seqüência é como um nó lógico, e se todos os seus filhos são bem sucedidos,
então o nó de seqüência realmente retorna com sucesso a seus pais.
Se alguma das crianças falhar em uma ou mais delas, então o próprio nó seqüencial falha e ele relata
uma falha na árvore a seus pais.
Muito bem, então vamos criar um nó de seqüência em nosso código de árvore de comportamento.
Vamos criar outro arquivo C-sharp.
Esta será chamada de seqüência e abrirá isso em seu editor.
Certo.
Mais uma vez, isto vai ser um nó, não um comportamento de mineiro.
E podemos nos livrar do conteúdo disso.
Agora, a primeira coisa que faremos é apenas criar uma construtora pública.
Então seqüencie e teremos que passar pelo nome para isso.
E agora vamos escrever seu processo.
Portanto, será um processo de status de ponto de sobreposição pública e, na verdade, não precisa daquele nó ali dentro, mas isso não
importa muito.
Certo.
Portanto, isto vai retornar o ponto de status de funcionamento como padrão.
Agora, antes disso, ela vai basicamente percorrer todas as suas crianças e executar seu método de processo.
Mas você não pode ter um loop aqui dentro.
Lembre-se, é como uma atualização em unidade, então você tem como que colocá-lo em funcionamento e depois ver se ainda está funcionando
da próxima vez que este processo aparecer e funcionar novamente.
Certo.
Portanto, antes de mais nada, o que vamos fazer é agarrar o status de administrar a primeira criança.
Portanto, status.
O status de criança é igual a criança.
Criança atual.
Agora, se você se lembra de quando criamos nosso nó pela primeira vez, nós fizemos aquele inteiro infantil atual.
E isso é apenas manter um registro de qual criança está correndo atualmente.
Portanto, está inicialmente fixado em zero.
Então, voltamos ao nosso nó e damos uma olhada.
É aqui em cima.
Portanto, a primeira vez que executarmos isso lá dentro, ela vai pegar aquela primeira criança
que está naquela matriz de processadores ou os processadores de crianças.
Está bem.
Agora, se este status de criança é igual a status ponto correndo, isso significa que aquela criança ainda está correndo, e nesse
caso vamos apenas devolver o status ponto correndo K, não vamos correr mais nada.
Não vamos definir o processo para fazer outra criança porque estamos atualmente no meio de já estar
fazendo alguma coisa.
Certo.
Assim, isto pode ser, por exemplo, ir para Diamond.
O agente ainda pode estar caminhando para lá, o que significa que aquele nó em particular ainda
não retornou um valor, não teve sucesso ou falhou.
Ainda está funcionando por conta própria.
Certo.
Agora, se não estiver funcionando, se o status de criança for igual a falha de status de ponto, então vamos retornar o status de criança, basicamente
dizendo que, está bem, este nó de seqüência relatou agora uma falha.
Estamos terminados.
Não estamos fazendo mais crianças porque não podemos continuar.
Uma de nossas crianças declara ou nossas ações infantis falharam.
Certo, se você não pode ir ao diamante, então não adianta continuar tentando roubar o diamante,
etc.
Certo, então uma vez que passamos por isso, se não falhamos, isso significa que agora devemos ter sucesso com aquela criança em particular
porque ela não está correndo e não está falhando.
Portanto, a criança mais atual queremos ir na próxima vez que entrarmos aqui para a próxima criança e realmente processá-la.
Portanto, vamos dizer se a criança atual é maior ou igual ao número de pontos das crianças.
Portanto, se realmente chegamos ao final de nossa lista, então a criança atual arrependida é igual a zero.
Vamos reinicializar isso para a próxima vez.
Podemos executar esta seqüência e vamos retornar o status de ponto de sucesso, de modo que, basicamente, já percorremos todas
as crianças e nenhuma delas relatou um fracasso, o que significa que somos bem sucedidos.
Conseguimos chegar ao final da seqüência.
Portanto, digamos que, está bem, conseguimos, estamos acabados.
Ótimo.
Esse é o seu nó de seqüência.
Simples, simples, simples.
Mas é apenas para dar a volta à cabeça como isto está realmente funcionando.
E é um looping, mas não é um looping em um único por loop aqui dentro.
Muito bem.
Por isso, agora vamos começar com isso, economize isso e voltaremos ao nosso comportamento de ladrão, porque é aqui que precisamos
montar tudo isso.
Portanto, temos nossa ida ao diamante e nossa ida ao Van, o que significa que nossos agentes vão ao diamante e depois
voltam para o Van, ou pelo menos é isso que queremos.
Agora, eu sei na ilustração no início desta palestra, eu também tinha ido até a porta e vou acrescentar
isso um pouco mais tarde.
Só queremos manter isto simples por enquanto.
Agora já estamos acrescentando essas duas coisas ao nosso nó de roubo, mas ainda assim, agora vai se tornar uma seqüência.
Portanto, vamos mudar de nosso nó básico para uma seqüência e vamos mudá-la aqui para uma seqüência.
Agora estão sendo adicionados a ela, e tudo bem.
Eles estão acrescentando para que você queira que eles sejam processados.
Agora, quando começamos, corremos o processo de copa da árvore uma vez que ela não continua rodando a árvore, mas
precisamos continuar rodando a árvore da mesma forma que a unidade continua rodando sua atualização,
que está aqui embaixo e vazia no momento.
Portanto, em vez de rodar nossa árvore aqui em START, nós realmente queremos rodá-la em atualização.
E, para poder executá-lo em atualização, precisamos saber o que ele está retornando a cada vez.
Portanto, vou subir o topo aqui e colocar uma outra variável para que não seja o status do
ponto, que na verdade será o status da árvore igual ao ponto de status do nó rodando como padrão ali.
E então o que vamos fazer é tirar este processo de árvore do início.
Portanto, vamos cortar isso de lá.
Traga-o para nossa atualização aqui mesmo e depois apenas teste.
Se o status verdadeiro for igual a nenhum ponto de status em execução, então vamos processar a árvore.
Agora, quando o fizermos, também precisamos ter certeza de atualizar o status da árvore, para que isto a pare de funcionar
novamente.
Caso contrário, ele irá circular e continuará a executar qualquer ação específica que você esteja tentando realizar.
Portanto, colocaremos o status de árvore igual ao processo de comércio.
Certo, então vamos salvar isso e agora estamos prontos para experimentar.
Portanto, vamos voltar à unidade e vamos pressionar o jogo e devemos ver esses comportamentos
acontecerem onde vamos ao diamante.
Assim, a malha de navegação está agora no controle até onde se trabalha no caminho, vamos para o diamante e então alcançamos
o diamante.
Então, na verdade, o sucesso retornou lá.
E agora podemos voltar para a van.
E então, porque aquela árvore é bem sucedida, vamos parar por aí e não vai continuar.
Se você retirar esse status de árvore igual ao seu processo de árvore na atualização, você verá realmente que isso
irá saltar em torno e loop através desse comportamento.
Muito bem.
Portanto, temos isso funcionando agora se você precisar depurar isso, porque é um pouco por fé, eu acho, com a maneira
que nós realmente codificamos para você enquanto você passa por isso, o que você pode gostar
de fazer é em seus processos, colocar alguns logs de depuração para ver qual processo está realmente funcionando.
Porque, lembre-se, tivemos o trabalho de enviar um nome a cada nó.
Está bem?
Portanto, aqui você pode realmente colocar como um registro de depuração de crianças, o nome atual do ponto criança aqui.
Isso lhe permitiria manter-se informado.
E você também pode então imprimir qual é o status.
Assim, em todos os seus processos, onde quer que estejam em folha, faça alguns registros de depuração e então você pode observar
o que está acontecendo, observar qual deles está processando e onde seus problemas podem estar.
Muito bem.
Chegou a hora de um desafio.
Se você se lembra logo no início, tínhamos uma pequena árvore de comportamento
que tinha uma porta entre começar aqui, ir para uma porta, ir para o diamante e depois voltar para a van.
O que eu gostaria que você fizesse é montar esta pequena seqüência onde nós agora, primeiro, vamos até a porta,
vamos até o diamante, e depois vamos até a van.
Agora, quando eu digo para ir até a porta, na verdade quero que você vá até esta porta aqui.
Portanto, quero que seu agente vá até aquela porta, vá até o diamante, e depois vá até a van.
Ou, de fato, você poderia até dizer ir até a porta, ir até o diamante, ir até a porta e ir até Van.
Portanto, veja se você pode colocar isso dentro.
Pausa o vídeo agora.
Vá em frente e faça isso.
Quando voltarmos, eu lhe mostrarei como fazê-lo.
Bem-vindo de volta.
Como você enfrentou esse desafio?
Agora, você pode ter encontrado um pequeno soluço com isso, e eu falarei sobre isso quando isso
acontecer comigo.
Primeiro de tudo, esta porta aqui, se a encontrarmos na cena do crime, é chamada de porta dos fundos.
Então é isso aí.
E é esse que queremos.
Portanto, dentro de nosso código de comportamento de ladrão, precisamos criar espaço para passar por ele.
Portanto, vamos voltar ao topo aqui e vamos colocar um objeto de jogo público de volta assim, e então precisamos criar uma folha
para aquela coisa em particular.
Por isso, queremos uma folha aqui.
Vamos pegar isso e eu vou apenas copiá-lo e colocá-lo aqui.
Então vá até a porta e vamos chamá-la de backdoor.
Só para ser específico aqui, vá para Backdoor e então colocaremos aqui Backdoor e vamos para Backdoor como nosso
método que precisamos então criar.
Então vamos até o fundo e temos que ir até Diamond.
Então vamos apenas fazer uma cópia disso, ir para a porta dos fundos e então nossa ida para o local será.
Posição transformada da porta traseira.
O resto vai ficar tudo bem.
Vamos voltar aqui para cima e acrescentar na seqüência "ir para trás".
Então, na verdade queremos que esse seja o primeiro, não é mesmo?
Então vamos subir aqui e colocar um ponto de aço, adicionar criança, ir para a Backdoor, ir para a Diamond e depois queremos voltar para a porta traseira
para sair e depois ir para a van.
Portanto, vamos salvar isso, voltar à unidade e vamos pressionar o jogo e dar uma olhada no que recebemos.
É claro, depois de irmos para o código de borracha e passarmos por aquele objeto da porta traseira para nosso roteiro.
Então lá está o jogo da imprensa e agora vamos dar uma olhada no jogo.
Portanto, imediatamente a primeira coisa que você teria notado é que ele parece estar indo para
a porta da frente, mas não está.
Ele está pegando um atalho para a porta traseira através da porta da frente.
Agora isso é por causa da malha de navegação.
É encontrar um caminho mais curto através dessa abertura na porta da frente.
Então, mas pelo menos ele foi lá.
Acho que agora ele foi para a porta dos fundos, agora ele está voltando para o diamante.
E quando ele fizer isso, vai voltar para a porta dos fundos.
E então vou assumir aqui que ele vai fazer um atalho por aquela porta da frente.
Oh, agora ele calculou de forma diferente e volta para a van.
Obviamente.
Com certeza foi por esse caminho.
Tão bom.
Agora, a questão é que ele foi para a porta dos fundos porque aparentemente a porta da frente está trancada e ele não pode
passar por lá, mas neste caso ele pode.
Agora, isso é, como eu disse, uma questão de malha de navegação, e vamos resolver isso nos próximos vídeos.
Certo.
Então isso são seqüências.
Quando voltarmos na próxima palestra, vamos olhar para os seletores.