Na palestra anterior, deixei-lhe com o desafio de criar uma desova para desovar pacientes.
Muito bem, então o que vamos fazer agora é realmente escrever isso, e eu lhe mostrarei meu método.
O seu pode ser um pouco diferente, mas contanto que os pacientes se instanciem e se coloquem em seu mapa,
então estamos todos bem.
Certo, então, antes de tudo, precisamos realmente que nosso paciente seja um pré-fabricado.
Agora, se você se lembra, ele começou como um pré-fabricado, então fizemos algumas mudanças em nosso paciente básico.
Então você quer ir e clicar em seu paciente e depois vamos arrastar isso para dentro e eu
vou subir no inspetor e queremos anular todas essas coisas que fizemos com nosso paciente.
Portanto, clique em Aplicar tudo para aplicar os de volta ao pré-fabricado.
Certo, então agora vamos criar uma chave de fenda em nossa hierarquia.
Deixe-me apenas rolar todas essas coisas para cima.
Vamos clicar com o botão direito e criar um vazio de chave inglesa.
Está bem?
E essa será a posição de onde nossa chave de porcas estará.
Agora, ela está apenas posicionada ali, então vamos arrastá-la para cá.
Agora, se você quiser ver onde está, além destes eixos, você pode usar o truque que já fiz antes com a área
de espera e a recepção, que é adicionar um renderizador de malha em cubo ou um colisor de caixa ou algo assim, para que você
possa realmente vê-lo.
Agora é preciso estar fora do hospital e perto do chão.
Agora o chão está em zero.
Então, no inspetor, vou dar uma olhada no meu Y para isso.
Na verdade, eu vou definir, digamos sete.
Não importa se é um pouco para cima porque eles vão desovar lá e depois simplesmente
descer para o chão e depois avançar.
Muito bem.
Portanto, vamos deixar isso aí agora.
Vamos criar o código para isso.
Portanto, crie um roteiro afiado em C e chame-o de Spawn.
E vamos em frente, abramos isso e editamos.
Vai exigir, antes de mais nada, nosso objeto de jogo.
Portanto, nossa casa pré-fabricada.
Assim, será objeto de jogo público pré-fabricado do paciente.
E então quantos pacientes queremos.
Portanto, vamos colocar isso aqui em um número público.
Pacientes.
E depois, no início, vamos criar um loop for int i igual a zero.
Eu sou menos que um número de pacientes.
Muito bem.
E mais.
E então, dentro deste laço, instanciaremos nossos pacientes.
Certo, então queremos instanciar e vamos usar nosso pré-fabricado paciente.
E vejamos, queremos colocá-lo nesta posição de parada de transformação, que é a sua desova de posição
e virar em identidade para basicamente uma rotação padrão e nós soletramos transformar corretamente.
Agora o problema com isso que estou pensando agora é que se passarmos por tudo isso no início,
vamos acabar com o quê, 100 pacientes de imediato?
Agora, isso pode ser o que você quer.
Prefiro ter esta desova em intervalos específicos.
Então, em vez disso, vou descer aqui e colocar o vazio.
Vamos desovar o paciente.
E dentro daqui vou mover este código instanciado.
Então, controle x, coloque isso aí embaixo.
Agora isso realmente torna supérfluos nossos pacientes NUM e nosso laço.
Mas agora você já viu como faria isso se quisesse criar um monte de pacientes todos de uma
só vez.
E vamos deixar isso aí, de fato.
E vamos fazer isso de qualquer maneira.
Assim o faremos.
Colocar este instante de volta lá em cima.
Portanto, esta é toda a sua paciência inicial.
E então o que vamos fazer é invocar.
Paciente desovado.
Após, digamos, 5 segundos e depois dentro do paciente desovado, conseguiremos que ele se invoque a si mesmo.
Assim, você continua recebendo pacientes sendo desovados.
E agora aqui vamos ter alcance aleatório para o tempo entre os pacientes.
Portanto, digamos que queremos pacientes a cada 2 a 10 segundos que o façam.
Então agora você pode ver duas maneiras de realmente desovar, certo?
Portanto, vamos salvar isto e vamos voltar à unidade e queremos pegar nosso roteiro de desova e arrastá-lo
para nossa desova aqui.
E depois vamos designar nosso pré-fabricado paciente, que está de volta em nossa pasta de pré-fabricados.
Assim, se formos para nossa pasta de Prefabs, temos nosso paciente lá, podemos arrastá-lo e soltá-lo
no pré-fabricado do paciente e o número de pacientes.
Este é o número inicial que é criado e depois é gerado a cada 5 segundos ou o que quer que tenha sido
definido.
Então vamos criar uma quantidade inicial de cinco e depois eles vão cair do céu basicamente e começar
a vir para o hospital.
Agora, este pequeno rapaz aqui que já está no hospital, você pode apagá-lo ou simplesmente desligá-lo se quiser
usá-lo para testar as coisas um pouco mais tarde.
Está bem.
Portanto, vamos apenas pressionar o jogo e dar uma olhada no que recebemos aqui.
Portanto, há nossos cinco que são inicialmente desovados e todos eles estão vindo para o hospital e, em seguida,
aqui vêm os extras.
Por isso, se entrarmos em nossa visão de jogo aqui, deixe-me apenas definir isto para uma imagem de alta resolução para você.
Agora eles virão e se registrarão e, uma vez registrados, eles se mudarão.
Depois de se baralharem um ao outro e depois entrarem aqui.
Certo.
Portanto, alguns pequenos pedaços de informação de depuração neste ponto.
Se você descobrir que eles não estão chegando ao seu destino, saltando etapas ou o que quer que seja, como, você sabe, isso vai acontecer
enquanto você está tentando testar isto.
O mais comum neste cenário particular, ou o uso da malha de navegação, é que os agentes não podem chegar
ao seu destino.
Por exemplo, aqui em baixo, estamos recebendo uma grande pilha nesta sala de espera.
Agora, lembre-se que a sala de espera tem uma localização específica, o que é um pequeno ponto.
Se eu selecionar isso e viermos até aqui, é bem ali.
Isso significa que os agentes têm que chegar a esse ponto específico para serem considerados na sala de espera.
E se tivermos um olhar no código para isto, vamos apenas fazer uma pausa.
Vamos voltar ao código de alcance dos agentes e dar uma olhada em nosso código de agente G para considerar que eles realmente
chegaram a um destino.
Se tivermos uma olhada na atualização tardia, temos aqui esta linha para a distância restante.
Portanto, vai considerar que você chegou a um ponto de destino na malha de navegação.
Se você estiver a uma distância.
Agora, se você estiver usando agentes de tamanho unitário como eu, eu acho que um é bastante aceitável.
Talvez você queira tornar isto um pouco maior se descobrir que seus agentes simplesmente não estão chegando
a esse local.
Agora, a outra coisa que pode acontecer é se você definir isto como 20, então o agente se considerará como tendo chegado a um ponto de
passagem quando ele estiver a umas 20 unidades de distância, o que fará as ações parecerem um pouco estranhas.
Portanto, pode fazer parecer que um agente chegou à sala de espera quando ainda está de pé aqui,
o que é algo que você não quer.
Portanto, isso é uma coisa.
Agora, qualquer agente que não atinja um ponto de passagem ainda estará tentando executar uma das ações.
Certo.
E você pode dizer se você selecionou um agente.
Então, vamos encontrar alguém que ainda esteja realmente fazendo coisas.
Este cara aqui e ali no inspetor, vamos encontrar seu paciente pai.
Vá para a sala de espera, vá para o hospital e registre-se.
Se você der uma olhada em todas essas coisas, você verá que há uma caixa de seleção pública
no fundo chamada corrida que lhe dirá qual ação ele ainda está tentando executar.
Então, este agente em particular aqui, ele está na recepção.
Portanto, ele obviamente ainda está se registrando.
E se dermos uma olhada em seu registro, é sinal de que ele ainda está, de fato, funcionando.
Agora, se pressionarmos e pressionarmos pausarmos e esperarmos um momento até que ele termine, você pode
ver agora que isso foi assinalado e ele agora vai para a sala de espera.
Certo.
Por isso, enquanto isso acontece, vamos fazer uma nova pausa para dar uma olhada na depuração.
Isto se entrarmos no console, você verá que está imprimindo os planos.
E assim você pode ver aqui diz que o plano é ir ao hospital, registrar-se, ir à sala de espera.
Portanto, este plano está de fato acontecendo em ordem e eu tombei o que está acontecendo no console porque ele estará apenas
escrevendo isto para cada agente em particular.
Mas isto está lhe mostrando que é isto o que o plano é que eles inventaram, que é o plano que
você queria que eles inventassem.
Então isso é pelo menos tudo bom, certo?
Isto é, colocar um grupo inteiro de agentes em funcionamento e desová-los.
Quando voltarmos na próxima palestra, terei que falar um pouco mais sobre como depurar esses
cenários, pois isso é realmente uma grande parte disso, e começaremos a trabalhar para que nossa enfermeira
se candidate.