‫Se há algo que é o mais importante para um corredor infinito, então é infinito.
‫E para criar um mundo infinito que precisamos e criação procedural, precisamos criá-lo proceduralmente, o que
‫significa que precisamos fazer isso via código.
‫Portanto, não queremos criar um mundo enorme de, não sei, um bilhão de peças diferentes de nossos elementos mecânicos
‫ou peças antigas.
‫Queremos fazer isso de forma programática e podemos fazer isso de forma procedimental.
‫Portanto, o que eu quero fazer agora é, antes de tudo, configurar meu cristal e mudar o cristal, não estar
‫em nenhum lugar do mundo ou em qualquer lugar onde o posicionei.
‫Eu quero que seja em uma parte da estrada.
‫Então, vamos posicionar nosso cristal.
‫Este aqui.
‫Vamos posicioná-lo em nossa parte da estrada.
‫Então, vamos livrar o Barway de todos os outros cristais.
‫Exclua também, vamos nos livrar de nossas partes da estrada, exclua também.
‫E agora, como diretora Crystal, vamos ao nosso jogo.
‫Então, digamos que aqui está em boa posição.
‫Vamos ver se fica só no topo.
‫Apenas em cima, sim, está bem.
‫Isso é bom e eu quero colocar o cristal na parte da estrada e agora vou desativar o
‫cristal.
‫Agora, como você pode ver, ele não está mais disponível.
‫Teríamos que ativá-lo.
‫E agora essa parte da estrada será uma nova casa pré-fabricada.
‫Então, vamos rastrear essa parte da estrada em nossa pasta de pré-fabricados.
‫E queremos criar várias dessas partes da estrada processualmente mais tarde.
‫Tudo bem.
‫Antes de fazermos isso, há uma peça básica do nosso jogo que sempre será a mesma.
‫Então, esse será o nosso caminho de uma certa maneira.
‫Então, vamos nos livrar dos cristais também.
‫E agora podemos duplicar o cristal e movê-lo de acordo.
‫Portanto, as primeiras etapas são sempre as mesmas e, em seguida, avançamos para o site.
‫Portanto, esta peça será sempre a mesma, então vamos dar uma olhada no jogo que você faz.
‫Sim, é sempre o mesmo.
‫Eles estão sempre se movendo assim.
‫E o próximo.
‫Tudo bem.
‫Portanto, agora é o início do nosso mapa.
‫E agora queremos ir em frente e torná-lo processual para que as peças, sejam criadas de
‫forma automática e eficiente.
‫E para isso, vamos criar um novo roteiro para nossa estrada.
‫Portanto, vamos prosseguir para o nosso caminho no componente e no novo script e chamá-lo de um caminho.
‫Agora, vamos abrir esse.
‫E aqui precisaremos de nosso pré-fabricado repat.
‫Então, jogo público, objeto de estrada pré-fabricada.
‫Vamos atribuir aquele rápido real na unidade, então nosso roteiro precisará de uma estrada pré-fabricada.
‫A propósito, vamos rastrear o script em nossa pasta de scripts.
‫Agora vamos para o nosso.
‫Road e agora leva o road script ou objeto de jogo da parte da estrada.
‫Certo, estamos praticamente sem pré-fabricados.
‫Tudo bem.
‫Em seguida, precisaremos saber a partir de qual ponto queremos ter nosso mundo criado?
‫Então, eu tenho uma flecha aqui.
‫A parte 11 crua não é necessária, então é muito pouco.
‫Portanto, da estrada em diante, quero continuar e criar novas peças da estrada.
‫Então, desse ponto em diante.
‫Portanto, eu preciso posicionar a partir de quando eu quero criar novas partes da estrada, a posição é a posição ou a posição
‫de transformação da nossa parte da estrada.
‫E se dermos uma olhada, está na posição zero zero sete vírgula nove.
‫OK, então vamos verificar essa posição.
‫Vou arrastá-lo de volta ao nosso road script.
‫Eu quero ter essa posição.
‫Vou criar um novo vetor público três último post.
‫Então, vou chamá-lo e adicioná-lo aqui a zero zero sete vírgula nove ou nove.
‫Essa foi a posição da nossa última parte da estrada.
‫Agora, o que precisamos saber é quanto precisamos para mover um objeto?
‫Portanto, esta parte da estrada, vamos posicioná-la do lado de fora e agora vamos movê-la ou duplicar a potência da
‫estrada e movê-la com controle e deslocamento.
‫E então podemos ver que está se movendo em um ponto inteiro, sete zero sete.
‫Isso é basicamente a largura ou a mudança da posição do nosso bloco.
‫E deve ser a largura também.
‫Tudo bem.
‫Então, vamos voltar aos nossos roteiros de estrada aqui.
‫Precisamos saber esse deslocamento.
‫Então, vamos criar um novo deslocamento de flutuação pública e é chamado ponto sete e sete como uma flutuação.
‫E agora vamos criar um método.
‫Vou me livrar do método de inicialização.
‫Vou criar um novo método, public void, criar uma nova parte da estrada.
‫E vou, por enquanto, apenas depurar o backlog, criar uma nova parte da estrada.
‫E dentro do método de atualização, vou verificar se o usuário pressiona um botão.
‫Então insira a chave para baixo.
‫E qual código eu quero.
‫Espaço com pontos do código-chave.
‫Assim, sempre que o jogador pressiona o espaço, quero criar uma nova parte da estrada.
‫Vamos com isso agora.
‫Portanto, vamos criar esse método ainda mais.
‫Portanto, crie uma nova parte da estrada.
‫O que precisamos aqui?
‫Precisamos gerar a posição, que é um vetor três, então não vamos chamá-lo de vetor pós-spon três zero, que
‫é a posição zero zero zero.
‫Essa é uma segunda posição de onde começamos.
‫Então queremos ter uma chance, que é uma variável de intervalo aleatório entre zero e cem.
‫E se a chance for inferior a cinquenta, então eu quero desovar para a esquerda e, caso contrário, quero responder para a
‫direita.
‫Portanto, se a chance for inferior a cinquenta, quero ter um conjunto positivo e, caso contrário, quero um deslocamento
‫negativo.
‫Portanto, a posição de Sporn será o novo vetor três, que é a última posição desse X mais o deslocamento e
‫a última posição Y.
‫Então, suponho que seja por isso e, finalmente, o último post pensou em Z mais o deslocamento, o que significa que ele se moverá ou criará uma
‫posição de desova, que é um vetor três, que atribuirá a posição de desova, que é um
‫vetor três .
‫E usaremos isso mais tarde para gerar nosso objeto de jogo, que é nossa peça escrita ou parte de rolagem.
‫Então, eu queria ser a posição de desova igual ao novo vetor três, último post X menos o deslocamento.
‫Última postagem Y e última postagem Zeeb, mais o.
‫Agora vamos criar os objetos do jogo.
‫Vou chamar um G de instanciado para que criamos dentro de nosso mundo de unidade, escreveu pré-fabricado.
‫E em que posição, enquanto na posição de desova.
‫E qual quatérnio queremos ter?
‫Usamos quaternion dot yula, o que significa que giramos com zero vírgula quarenta e cinco zero porque nossos objetos de jogo também
‫são girados.
‫E queremos que nossas estradas sejam rodadas e queremos que elas sejam rodadas aqui também.
‫E agora precisamos da última posição ou precisamos definir a última posição, que é Gedo, transformar essa
‫posição.
‫Porque essa é a nova posição, certo?
‫Precisamos saber qual é a última posição do nosso novo objeto de jogo.
‫Então começamos com a última posição que configuramos manualmente, e agora sempre configuramos com aquela que
‫é criada.
‫Portanto, o novo trecho da estrada tem uma posição específica e salvamos isso em nossa última variável de postagem.
‫Tudo bem.
‫Então, vamos tentar isso.
‫Voltei para o Unity e criei a tela dividida.
‫Faz sentido aqui porque o que queremos ver é o que está acontecendo na cena.
‫Deixe-me livrar-me do som bem rápido, embora seja ótimo.
‫Agora, vamos entrar no jogo de você e agora vamos apertar o Spassky.
‫E como você pode ver aqui em cena, você nosso mundo é criado agora com base em nossos torneiras.
‫Mas é claro que queremos que isso aconteça, não com base em cliques constantes.
‫Queremos que aconteça com base na posição que ocupamos.
‫Agora, vamos voltar ao script.
‫Então, vamos criar isso automaticamente.
‫Vamos usar o método private void awake aqui.
‫E vamos apenas invocar repeating ou vamos chamar o método revoke repeating e o que
‫queremos invocar repete bem e para criar um novo método de trecho de estrada.
‫E queremos fazer isso após um segundo e a cada segundo.
‫Então, vamos tentar isso.
‫Vamos salvar o jogo e ver o que acontece agora.
‫Então, vamos tentar isso.
‫E podemos ver a cada segundo uma nova parte da estrada é criada.
‫Tudo bem, mas não é exatamente isso que queremos.
‫Não queremos que seja criado sempre que estivermos em uma semana, porque agora o que pode ou pode acontecer é que não iniciamos o
‫jogo e ele está apenas rodando e ainda criamos um mundo enorme a cada segundo.
‫Mas o que queremos fazer é apenas se o jogo for iniciado.
‫Queremos criar esses.
‫Então, como fazemos isso?
‫Bem, não usamos o método awake aqui, mas usamos um diferente, que nós
‫ou criamos um diferente, que chamamos de start start building.
‫E não será privado, mas público porque queremos acessá-lo de nosso gerenciador de jogo e, claro, não precisaremos mais do método de atualização
‫agora com a tecla pressionada, onde criamos novas partes da estrada com
‫base em nosso pressionamento de tecla .
‫Então, vamos entrar no gerenciador de jogo e ir para o método de início do jogo, porque aqui começamos o jogo
‫e esse é um ponto perfeito para criar esses objetos.
‫Então, vamos encontrar um objeto do tipo e vamos encontrar o objeto de estrada.
‫E aí tínhamos um método chamado Start Building, e é esse que queremos chamar.
‫Tudo bem.
‫Vamos testar isso.
‫Então, vamos para o nosso jogo e recebo uma exceção sem referência, e isso tem a ver com o fato de eu não ter mais
‫um gerenciador de jogo.
‫Então, vamos dar uma olhada em como podemos mudar isso.
‫Vamos criar um novo jogo no manager, se esse for o seu caso também.
‫Vou criar um gerenciador de jogo aqui e vou direcionar ou vou reiniciá-lo
‫primeiro aqui e arrastar meu gerenciador de jogo aqui, porque por alguma razão, ele desapareceu.
‫Vou salvar a cena agora e antes de testarmos.
‫E, claro, precisamos atribuir a pontuação e o texto e o texto da pontuação máxima.
‫Então, vamos fazer isso e tentar novamente.
‫E não devemos obter o erro.
‫Tudo bem.
‫Então, agora estamos de volta aos trilhos.
‫De alguma forma, devo ter excluído.
‫OK, agora vamos experimentar ou vamos tentar.
‫Vamos começar o jogo.
‫E como você pode ver, o jogo é criado de maneira processual lá atrás e é um pouco lento demais.
‫Portanto, somos mais rápidos do que o nosso jogo cria essas peças.
‫Então, vamos criar novas partes escritas um pouco mais rápido.
‫A propósito, por exemplo, poderíamos criá-los a cada ponto oh cinco segundos.
‫Então vamos fazer esse ponto cinco F agora que deve resolver esse problema.
‫Acho que o intervalo está bom.
‫Vamos dar uma olhada, vamos começar o jogo e ver se cria o suficiente.
‫Então, o que eu não gosto é que ainda posso ver como ele produz essas peças.
‫Oh, eu caí.
‫Isso significa que é muito simples como resolvê-lo.
‫Eu poderia simplesmente nos livrar desta parte aqui e daquela outra.
‫Bem, eu preciso desse.
‫Vamos trazê-lo de volta à nossa estrada.
‫Eu poderia simplesmente duplicar essa peça aqui e movê-la ainda mais.
‫Na verdade, vamos movê-lo aqui.
‫Duplicado novamente para que eu pudesse simplesmente tornar o mundo um pouco maior.
‫Então, agora vamos salvar isso.
‫E agora não devo mais ver onde é criado.
‫Então, vamos começar o jogo.
‫E agora, é claro, temos o problema aqui de não termos mais o ponto final correto, porque onde ele
‫estava?
‫Nossa estrada precisa ter a última posição.
‫Então, o deslocamento da última posição e deve ser este aqui agora.
‫Portanto, nossa estrada, parte 14 agora é a última.
‫Portanto, vamos alterar os valores aqui e pegar o valor Z também de nossa estrada e inseri-lo aqui.
‫OK, agora vamos tentar novamente.
‫Vamos ver onde as peças são criadas.
‫E como você pode ver, eles são criados na posição certa.
‫Perfeito.
‫E agora não vejo onde meu mundo foi criado e penso, OK, ponto cinco segundos deve ser suficiente porque
‫agora está criando mais rápido do que eu posso andar.
‫OK, assim está bom.
‫Agora, vamos adicionar os cristais novamente, porque não temos cristais.
‫Agora o que queremos é ter nossos cristais.
‫Então, vamos para o nosso roteiro escrito.
‫E aqui na parte de criar uma nova, queremos ter um cristal escrito a cada cinco passos ou a cada cinco.
‫Portanto, vamos criar uma contagem privada e de estradas, que é zero, e aumentar a contagem de estradas para cada estrada
‫que criarmos.
‫Portanto, contagem de estradas mais mais.
‫E então verificamos.
‫Se a contagem de estradas for dividida por cinco, então o módulo cinco é igual a zero, então queremos ativar nosso cristal.
‫Portanto, g transforme o pensamento e coloque a criança na posição zero.
‫Então, nos adicionamos, pegue o objeto do jogo e defina-o como ativo.
‫Verdade.
‫Então, isso vai servir é que cada quinta estrada terá um cristal ativo agora.
‫Tudo bem.
‫E agora vamos dizer o script, vamos voltar ao Unity e ver se funciona.
‫Portanto, as peças iniciais não terão cristais.
‫Portanto, os que criamos manualmente não terão cristais.
‫Então o jogador tem que passar por uma certa parte aqui antes de pegar qualquer cristal.
‫Oh, agora, nós temos um pequeno problema aqui, no entanto.
‫Como você pode ver, a animação não está mais funcionando corretamente.
‫E talvez você possa adivinhar o porquê.
‫Bem, isso tem a ver com o fato de que em um ponto nosso jogador estava no ar ou tocou o ar por apenas uma
‫fração de segundo.
‫E foi então que ele começou a não se mover corretamente mais ou dois.
‫Bem, não apenas corrigido mais, então vamos consertar isso.
‫Podemos consertar isso de duas maneiras.
‫Uma delas pode ser que em um ponto haja algum espaço no meio, de modo que os blocos não fiquem perfeitamente alinhados uns com
‫os outros.
‫Então, qual poderia ser uma das razões pelas quais outro poderia ser ou outra maneira de
‫resolver isso poderia ser ir para a animação de nosso personagem e adicionar uma nova transição, fazer a transição de queda
‫para correr, e essa será baseada em uma condição que nós não criamos.
‫Então, vamos criar um novo parâmetro e chamar esse gatilho.
‫Não cair mais, essa não seria a solução perfeita, então a melhor solução seria realmente verificar se
‫há alguma lacuna entre as minhas peças aqui.
‫Mas eu seria uma opção para fazer isso, não cair mais.
‫Então vamos fazer isso.
‫Vamos voltar ao nosso script aqui e podemos ir aqui em nosso controlador de gráfico e o método de atualização.
‫Poderíamos dizer que se a reformulação não estiver mais nesta posição, poderíamos seguir em frente e definir
‫o gatilho para não cair mais.
‫Acho que é assim que chamo.
‫Então, vamos dar uma olhada.
‫Vamos mudar isso para não cair mais.
‫OK?
‫Esse era o termo correto, então vamos voltar à unidade e mudar isso para não cair mais.
‫E agora vamos ver se esse problema foi resolvido.
‫Então, vamos jogar o jogo aqui.
‫Podemos ir para a nossa cena e talvez encontrar uma visão melhor de coisas como essa.
‫E agora vamos começar o jogo.
‫Então, agora vamos coletar alguns.
‫Como você pode ver, ele estava caindo ali.
‫Houve uma pequena lacuna e foi uma lacuna desde o nosso início.
‫Bem, o ponto onde criei o campo manualmente e onde começamos a fazer proceduralmente.
‫Portanto, deve ter havido uma pequena lacuna entre eles.
‫Então aquele ou a solução que acabei de mostrar a você é apenas um remendo, um pequeno remendo.
‫Você realmente não deve usar esses quando estiver indo para a vida.
‫Portanto, você deve encontrar uma pequena lacuna que temos lá.
‫Mas acho muito chato mostrar isso em detalhes.
‫Portanto, agora vamos dar uma olhada no próximo capítulo.
‫Oh, eu perdi aquele.
‫Como você pode ver, nosso jogo faz o que deveria.
‫Terminamos o jogo?
‫Eu diria que temos o som.
‫Podemos coletar esses pontos.
‫Bem, temos uma pontuação alta e assim por diante.
‫E acho que o mais importante é o nosso mundo processual.
‫Agora, o desafio pode ser um pouco maior.
‫Claro, você pode alterar a velocidade do jogador passo a passo.
‫Então, é claro, você também teria que alterar o tempo em que criamos nosso mapa procedural e que
‫estamos ótimos.
‫Então eu acho que é o suficiente para você ter me visto conectar vinte e seis pontos e no próximo capítulo vamos
‫criar o próximo jogo.
‫Espero que você esteja certo e tenha tornado este jogo ainda melhor.
‫Então você o torna ainda melhor.
‫Então, por favor, vá em frente e adicione recursos que você acha que tornariam este jogo melhor
‫ou simplesmente incrível.
‫Então, por favor, vá em frente, faça isso e compartilhe conosco.
‫Tudo bem.
‫Então, nos vemos no próximo capítulo.