Desenvolvimento de dispositivos móveis - crie seu primeiro jogo para celular! | Tirion Learning | Skillshare
Pesquisar

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Desenvolvimento de dispositivos móveis - crie seu primeiro jogo para celular!

teacher avatar Tirion Learning, Software Engineer

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Introdução

      1:49

    • 2.

      Montagem

      1:36

    • 3.

      Noções básicas

      5:51

    • 4.

      Como criar nosso personagem

      5:43

    • 5.

      Como criar um ambiente

      7:42

    • 6.

      Introdução à física

      9:56

    • 7.

      Nosso primeiro script

      24:26

    • 8.

      Seguir câmera

      9:17

    • 9.

      Estados de personagens

      9:08

    • 10.

      Loop de jogos

      5:44

    • 11.

      Timers

      4:07

    • 12.

      Como criar nosso mapa

      17:51

    • 13.

      Como melhorar nosso mapa

      22:55

    • 14.

      Melhorias menores

      11:13

    • 15.

      Pontuação

      10:37

    • 16.

      SALVANDO

      2:58

    • 17.

      Como melhorar visuais

      12:27

    • 18.

      Projeto de som

      9:20

    • 19.

      Sistema de menu

      17:31

    • 20.

      Como monetizar nosso jogo

      8:26

    • 21.

      Finalização

      5:50

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

776

Estudantes

2

Projetos

Sobre este curso

Olá, e bem-vindo ao meu curso para criar seu primeiro jogo para celular!

Neste curso, vamos criar o nosso próprio jogo para celular divertido e monetisable Vamos usar Unity e C# para desenvolver nosso jogo e cobriremos tudo o que se relaciona jogo para celular, desde o básico de codificação até todos os detalhes do nosso motor de jogo.

Nos últimos anos, criei e lançei 4 jogos para dispositivos móveis, inteiramente por conta própria, e todos estão disponíveis para download no Google Play. Agora, usando as habilidades que adquiri, criei este curso, na esperança de que pudesse espalhar este conhecimento e ajudar você a criar seu primeiro jogo.

Quando eu estava construindo meus jogos para celular, encontrei muitos problemas e, como resultado, passei horas ou até dias pesquisando na web por maneiras simples de superá-los. Neste curso, vou cobrir tudo o que gostaria de saber quando comecei a desenvolver jogos para dispositivos móveis e explicar todo o processo de criação de jogos para dispositivos móveis do início ao fim, através de tutoriais em vídeo fáceis de seguir. Depois de concluir este curso, você terá todo o conhecimento Unity e C# que você precisa para começar a criar seus próprios jogos e aplicativos por si mesmo!

Criar um jogo para celular do zero pode ser uma tarefa complicada, mas com a ajuda deste curso, você vai aprender o que me provou ser a maneira mais fácil e eficiente para desenvolver jogos para celular em Unity.

Se você quiser se inscrever, você vai tomar uma decisão sábia, aprender uma habilidade valiosa e em demanda e se divertir ao fazê-lo. Espero ter o privilégio de ensinar.

Tenha um ótimo dia! :)

Conheça seu professor

Teacher Profile Image

Tirion Learning

Software Engineer

Professor
Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução: Ei lá e bem-vindo ao meu curso sobre como fazer seu primeiro jogo móvel usando o mecanismo de jogos Unity integrado à linguagem de programação orientada a objetos C Sharp. O jogo móvel é um setor de US$1 bilhão em rápido crescimento. E em 2021, os jogos móveis de alerta representaram 59% da receita total da indústria de jogos em todo o mundo. Criando um jogo divertido e interativo e seja uma incrível fonte de renda passiva. E as habilidades necessárias para desenvolver jogos ou software em geral estão em alta demanda agora do que nunca. Se você tomou a sábia decisão de aprender a desenvolver jogos para dispositivos móveis, mas fazendo um pouco para começar, você veio ao lugar certo. Neste curso, abordaremos todos os conceitos básicos da imunidade C-afiada, que permitirá que você torne seu jogo dos sonhos uma realidade sem absolutamente nenhuma experiência prévia necessária. Também cobrirá todos os aspectos principais do desenvolvimento e design de jogos para dispositivos móveis, desde loops de jogos a sistemas de menus e ganhará feedback para adicionar integração. Ou, como dito antes, estaremos construindo nosso jogo usando o mecanismo de jogo Unity integrado ao C-sharp, uma das ferramentas intuitivas mais utilizadas para desenvolvimento de jogos móveis, tanto água. Depois de concluir este curso, você construirá seu primeiro jogo monetizável do Fanta e adquirirá as habilidades e conhecimentos para melhorar e mudar o jogo para torná-lo euro. Além disso, você terá criado essa linha preta, certo? Construir um jogo para celular pode ser um tabuleiro de tarefas complicado. A orientação de uma experiência, urina se você sair onde quer que seja muito menos intimidante. O que você está esperando? Invista em si mesmo para aprender o básico do desenvolvimento móvel, você pode começar a fazer sua primeira reunião. 2. Montagem : Ei lá e seja bem-vindo. Agora, como mencionado na lição anterior, as ferramentas que usaremos para seguir em frente, jornada de desenvolvimento de jogos, nossa unidade e C-sharp, que são verdadeiras, poderosas, confiáveis e, o mais importante, ferramentas gratuitas para desenvolvimento de jogos. Para começar este curso, você precisará ter o Unity instalado, bem como o editor de scripts, como Visual Studio, para codificar C-Sharp no processo de instalação para ambos é bastante simples. No entanto, vou passar brevemente para evitar possíveis erros que possam surgir. Em primeiro lugar, vá para unity.com, barra para baixar a versão mais recente do Unity Hub. Selecione qualquer um dos links de download azuis presentes na tela que se adapte à sua plataforma e siga o processo de instalação a partir disso. Este aplicativo permitirá que você adicione, remova e atualize várias instalações de unidade em seu dispositivo. Em seguida, inicie o Unity Hub e certifique-se de que a versão do Unity que você está instalando como desenvolvimento móvel foi verificada Vou demonstrar esse processo instalando a versão mais recente do Unity atualmente disponível no meu dispositivo, verificando o modo Livros Android e iOS, aceitando os termos e condições e clicando em sim, se aparecer um prompt, a instalação começará. Uma vez feito isso, vá para o Visual Studio.Microsoft.com, forward slash baixa o download do próprio editor de código da Microsoft. Clique no botão Download gratuito abaixo do título da comunidade para instalar a versão mais recente do Visual Studio. Depois que isso for baixado e instalado, você estará pronto para começar a desenvolver seu primeiro jogo para dispositivos móveis. 3. Noções básicas: Ei, lá. Em nossa última lição, instalamos o Unity e o Visual Studio. E, ao fazer isso, configure nosso ambiente de desenvolvimento. Agora precisamos criar o arquivo do projeto para o nosso jogo móvel. Para começar, inicie o Unity Hub e selecione o botão azul Novo em projetos. Quando a janela de criação aparecer, insira o nome do jogo para celular e selecione o local do arquivo do projeto. Depois disso, certifique-se de selecionar o modelo 2D. Evite qualquer um dos modelos móveis gerados automaticamente pois não os usaremos neste curso. Depois de terminar, selecione Criar, Nova Jersey gerará um novo projeto para você. Isso pode levar algum tempo, então preparado para esperar um pouco. Depois que seu projeto estiver sendo criado no Unity for carregado. A primeira coisa que vamos fazer é garantir que Visual Studio esteja definido como nosso editor de código. Na parte superior da tela, selecione Editar preferências. Depois que essa janela aparecer, vá para ferramentas externas e certifique-se de que a versão do Visual Studio que você instalou esteja selecionada como o editor de script externo. Se não for e não for uma das opções suspensas, selecione a opção Procurar e encontre e clique duas vezes no arquivo EXE de ponto no local instalado do Visual Studio. Antes de começarmos a entrar no layout do Unity Editor, vou começar com poucos conceitos relevantes para álcoois, que deve tornar tudo mais fácil como eu entendo. Começarei com o básico. Obviamente, vamos usar o Unity como nosso mecanismo de jogo. Se esse termo não for familiar, pense nisso como uma ferramenta que usamos para simplificar alguns dos aspectos do desenvolvimento de jogos. Bem, isso torna alguns dos nossos obstáculos de desenvolvimento de jogos mais fáceis. Inevitavelmente teremos que escrever nosso próprio código e lógica. Em algum momento. Vamos escrever esse código no Visual Studio, os codificadores que instalamos anteriormente. Isso basicamente formatará e codificará em cores toda nossa lógica para facilitar a análise e a compreensão. Ele estará escrevendo o código real na linguagem de programação c-sharp. Os conceitos básicos de todas essas ferramentas serão abrangidos extensivamente neste curso. Portanto, não se preocupe se algo parecer desconhecido. Além disso, existem alguns conceitos de unidade e C-sharp que serão úteis para entender antes de começar a se beneficiar, você ganhará muitos conceitos e C-sharp pode ser mais útil para aqueles que o fazem sabe como se desenvolver em qualquer idioma. Portanto, se você tiver alguma experiência de codificação, poderá pular alguns dos próximos pontos. Durante a codificação. E C-sharp é um tópico incrivelmente demorado que não pôde ser explicado em nenhum curto período de tempo. Alguns conceitos podem ser úteis para saber antes de começarmos a desenvolver, começarão com os procedimentos. Procedimentos geralmente identificáveis ao longo deste curso pela palavra código vazio, ou áreas do nosso código que chamamos em determinados momentos para realizar determinadas tarefas, como calcular escolas secundárias para gerar segmentos de mapa. O outro conceito de codificação principal que vamos abordar antes de começar são variáveis. Você pode pensar em variáveis. É como espaços de armazenamento para diferentes tipos de dados. O tipo de dados que podem ser armazenados é determinado pelo tipo de variável. Por exemplo, uma variável inteira para armazenar um número e uma variável de string armazenará o texto. Agora, em unidade, existem mais alguns conceitos que podem ser úteis para entender antes de começarmos. Um objeto é qualquer coisa em nosso jogo ao qual podemos atribuir lógica, como o personagem vai impulsionar a escola. Quando nos referimos como sprite, nos referimos ao design de arte para um personagem. Além disso, como visto como unidades maneira de diferenciar entre seções do seu jogo, como a seção do menu principal da seção de seleção de nível em diferentes níveis. E, novamente, é possível criar seu jogo e uma única cena. E por uma questão de simplicidade, estaremos fazendo isso neste tutorial. Isso não é um problema para nós, porque nosso jogo não será exigente incorretamente se não estivéssemos fazendo um jogo de tiro em primeira pessoa com gráficos incríveis, no entanto, usando várias cenas, seríamos aconselhado. Finalmente, quando nos referimos a ativos, nos referimos a arquivos que usamos em nosso jogo , como arquivos PNG serão MP3. Não se preocupe se tudo isso parecer um pouco demais pois vamos passar por isso ao longo do curso, a única coisa que precisa estar afundando no momento são os conceitos básicos e básicos de unidade e C- afiado. Agora que analisamos o básico do nosso mecanismo de jogo e da linguagem de programação. Vamos começar com o layout do editor Unity. Quando você não fotografar, pela primeira vez, você será recebido por esta porta de layout bastante intimidante. Se isso parecer confuso ou complicado , pois ficará muito mais familiarizado com o tempo. Além disso, muitos dos recursos que você pode ver um editor que não precisaremos neste curso. No topo do Unity Editor está um menu onde você pode gostar de muitos outros aplicativos, salvar seus arquivos de carregamento de projetos, acessar ajuda, etc. Entraremos neste menu mais tarde, mas é o que você está indo usar principalmente para navegar pela unidade. Abaixo disso, temos nossa hierarquia de cena. Esta é uma lista de todos os objetos atuais em nossa cena. Aqui é onde armazenamos tudo. Sou um jogo do nosso personagem para um mapa de componentes para nossos objetos de design visual. Com algumas exceções mais complexas. Se um objeto não for exibido na hierarquia de cena, ele não estará no nosso jogo. Por baixo disso, temos um menu de ativos, que é a lista de cada arquivo armazenado em nosso diretório de jogos. Se quiséssemos adicionar uma música ao nosso jogo ou a um sprite de personagens importamos para este local no editor Unity, o que nos permite adicioná-la ao nosso jogo. À direita está o inspetor de objetos, que nos permite ajustar as várias propriedades dos objetos em nossa cena. Isso inclui sua posição em nossa cena, tamanho, rotação, a lógica que eles atribuíram a eles, como eles se parecem, etc Finalmente, no centro do aditivo, temos nosso CGI. Isso nos permitirá ver como o jogo e a ação foram testados, experimentar visuais e muito mais. Você pode pensar nisso como uma prévia do que nossos jogadores verão quando jogarem nosso jogo, o que nos permite testar nosso projeto sem construí-lo, ele o tempo todo. Agora, a localização e o tamanho de todas essas áreas em seu editor podem ser diferentes dependendo do layout da janela. Se você estiver usando o layout padrão como eu, você terá, deve ser semelhante, mas você pode alterar essa camada à medida se familiarizar para ver o que funciona para você. Novamente, se tudo isso se sentir intimidante, não se preocupe. Você não precisa se lembrar de tudo o que passamos neste vídeo, mas pode ser benéfico assisti-lo novamente, como você pode entender alguns dos conceitos, na segunda vez. Isso não é necessário. No entanto, como abordaremos todos esses conceitos básicos ao longo do curso quando nos depararmos com eles. 4. Criando nosso personagem: Ei lá e seja bem-vindo de volta. Os últimos três vídeos abordamos a introdução ao meu curso, os conceitos básicos de unidade e C-sharp configurando nosso ambiente de desenvolvimento, todos os conceitos que precisamos conhecer. Mas chegou a hora de começarmos a criar nosso jogo para celular. Agora, se você olhar para minha tela, verá que estou usando o layout padrão do editor Unity. E sob ativos, tenho tudo o que é gerado automaticamente quando você faz seu projeto. E esta pasta Ativos do curso, que vocês não terão. Todo esse curso Assets pasta é, é, são todos os ativos. Então, a corrente é apenas arquivos PNG, mas depois quando eu adicionar vários jogos também serão os MP3s e antes. Se eu precisar deles, qualquer coisa que eu precisarei para o meu jogo e todos os ativos que vou vincular abaixo deste vídeo na seção Recursos. Você precisa fazer é encontrar a seção de recursos deste vídeo, baixar os ativos do curso, arquivo zip, extrair o arquivo zip, para que você tenha apenas uma pasta normal. Preciso colocar essa pasta dentro da pasta de ativos do seu projeto Unity. E depois de fazer isso, sua tela deve se parecer exatamente com a minha nos ativos. Agora, nossa primeira tarefa no Unity será criar nosso personagem. Isso não vai ser incrivelmente quente no momento porque não vamos adicionar nenhuma lógica complexa. Não vamos adicionar nenhum script. Vamos apenas fazer o personagem que vamos usar como personagem principal para o resto do curso. Faremos isso indo até aqui para a hierarquia de objetos, clicando com o botão direito do mouse e selecionando a opção Criar vazio. Agora vamos nomear nosso jogador. Estou nomeando ele brincar. E à direita aqui, podemos ver todas as propriedades que esse objeto possui atualmente. Atualmente, sua posição no eixo x, eixo y e eixo z, que realmente não usaremos porque é um jogo 2D. No entanto, eu recomendo que você sempre faça isso 0. Agora, o que vamos precisar fazer é que precisaremos selecionar essa ferramenta aqui, que é a ferramenta de movimentação. Isso dependendo da sua versão do Unity, deve estar aqui. Se você tiver uma versão anterior, ela pode estar aqui em cima, mas encontre a ferramenta Mover e você terá que arrastá-la para onde quiser. Você também pode fazer isso apenas alterando esses valores. Mas, obviamente, não podemos ver nada ainda porque esse objeto não tem nada atribuído a ele. Para torná-lo realmente nosso personagem. Vamos adicionar um renderizador sprite, o que nos permite adicionar um sprite que abordamos anteriormente, um arquivo PNG a esse objeto. Eu já digitei, mas para o seu estojo, digitando renderizador sprite e selecione este aqui. E você pode ver aqui que isso deve ser todas as configurações padrão que você tem. E há um sprite aqui que atualmente não tem nada atribuído a ele. Essas pequenas caixas aqui é o que vamos atribuir sprites ou arquivos de áudio, qualquer coisa para quando estamos adicionando esses componentes aos nossos objetos. Obviamente, você entra na pasta de ativos do curso se estiver usando-a. E vamos querer fazer nosso sprite ao quadrado. Então clique no jogador. E vamos arrastar este quadrado todo o caminho até lá. Agora mesmo. Muito grande. o qual você pode ter um problema Com o qual você pode ter um problema se estiver tentando fazer um jogo para celular. Então, vamos realmente mudar essa propriedade aqui em todos os nossos ativos. Selecione o círculo, mantenha pressionado, mude o quadrado e o triângulo. E vamos fazer os pixels por unidade com 10000. Uma vez terminado, devemos ter um brilho muito menor. Agora eu poderia continuar diminuindo isso até precisar, mas, em vez disso, selecione esta ferramenta Rec. Em seguida, clique aqui, mantenha pressionada a tecla Shift e mova-o assim para que eu possa dimensionar meu sprite conforme preciso. Neste momento, esse é um sprite muito melhor. Eu diria que talvez vamos torná-los um pouco maiores. Isso é muito melhor. A propósito, deve-se notar que estou navegando pelo editor Unity usando minha roda de rolagem para aumentar e diminuir o zoom e manter pressionado o botão direito do mouse para se mover pela cena. É principalmente assim que eu navego no editor Unity. Existem maneiras diferentes, mas essa funciona para mim. Então podemos ver a escala definir esses valores de gripe muito grandes e a escala z está definida que não precisamos. Então, vamos fazer isso 0. E vamos fazer esses 300,32. Ele não altera ou o valor corresponde, e é mais fácil para o computador armazenar esses valores. Bem aqui temos nosso sprite, ele é apenas um quadrado. Se clicarmos nesta janela do jogo aqui, podemos ver como isso ficará assim que jogarmos o jogo. E, de fato, se clicarmos neste botão Play no topo, ele testará nosso jogo e basicamente executará tudo. E podemos ver, obviamente , é apenas um sprites. Não vai se mover, mas é assim que nosso personagem ficará no jogo. O que é importante notar é que, se eu fizer alguma alteração durante esta janela do jogo, elas não a salvam. Por exemplo, eu o fiz muito tempo e depois cliquei aqui. Essa mudança não vai salvar se eu fizesse isso na visualização de cena, no entanto, ela seria transferida. É assim que o Unity funciona. Você pode fazer pequenas alterações no seu jogo enquanto estiver jogando. Você pode testar como eles funcionam e então eu verei que você não salvará. Portanto, tenha isso em mente. Agora, nosso personagem é praticamente feito na maior parte, fizemos praticamente tudo o que podemos, não podemos fazer muito mais isso neste momento, porque não aprendemos nenhum outro conceito. Mas, por enquanto, a única outra coisa que vamos fazer é mudar a cor dele. Vamos fazer dele um bom personagem amarelo. Como podemos ver, isso se destaca um pouco melhor em nossa cena. Consegui nosso personagem amarelo contra o fundo azul. Não quero que ele melhore toda essa camada. Mas se você seguiu em frente, você deveria ter criado seu primeiro personagem com um componente renderizador de sprite do jogador fora do orgulho dos quadrados ou seu próprio sprite. Mas eu recomendo usar a pasta Ativos do curso oficial e mudar a cor para o que você quiser. Você pode até torná-los verdes ou azuis. Vou ficar com os outros fenólicos. Gosto de como isso parece. Se você fez isso, deu o primeiro passo para fazer seu jogo para celular. A próxima coisa que vamos fazer é criar um ambiente para esse lugar. Então ele não está apenas no meio do abismo, mas bom trabalho a todos. E te vejo no próximo vídeo. 5. Como desenhar um ambiente: Ei lá, e bem-vindo de volta à unidade. Em nosso último episódio, criamos esse objeto de jogador e atribuímos a posição e a escala, bem como um sprite e uma cor a esse objeto. O que vamos fazer neste episódio, no entanto, é que vamos criar um ambiente para fazer nossa cena parecer um pouco mais viva. Antes de fazer isso, devemos primeiro ter certeza de que nossa versão Unity está realmente construindo para a plataforma correta. Queremos. Nesse caso, celular. Vai para o canto superior esquerdo e selecione Arquivo, Configurações de compilação e, em seguida, escolha uma plataforma aqui. Posso selecionar o Windows dedicado vários Android como os três módulos de plataforma que instalei para esta versão do Unity. Se eu quisesse construir para outra coisa, eu poderia simplesmente selecionar e clicar em Isolamento do Módulo de Plataforma ou para os mais simples, como iOS, posso selecionar Instalar com Unity Hub. Playstation parece ter alguma documentação estranha necessária, mas obviamente não vamos nos preocupar com isso. No entanto, vou inicializar meu jogo para Android, pois achei muito mais fácil de testar, recomendo exatamente a mesma coisa. Mesmo se você tiver um telefone iOS como Audrey, vou clicar em Switch Platform e oferecer um curto tempo de carregamento. Ele deve garantir que meu projeto possa executar o unity para Android. Vamos então fechar isso e entrar em uma visão do jogo. Podemos selecionar a resolução correta que queremos. Atualmente, defini o meu para a paisagem 2160181080. Você pode selecionar o que quiser. Você pode fazer 1920 por 1080 ou mesmo retrato, mas eu não recomendo que você faça isso neste curso porque apenas reinicializando nosso cenário de jogo. Agora temos a proporção correta. Vamos criar nosso ambiente, mas não queremos que todos os objetos de ambiente que criamos estejam aqui em uma lista porque isso vai ficar muito confuso. Em vez disso, vamos encomendá-los um pouco. Faremos isso usando pastas ou objetos pai com o botão direito do mouse e selecione Criar vazio. Vamos chamar esse ambiente. E isso basicamente armazenará todos os objetos de ambiente que queremos. Em seguida, clique com o botão direito novamente e clique em Criar vazio. E podemos ver que, porque escrevemos com o botão direito do mouse sobre o objeto, Ele criará um objeto filho embaixo dele. Podemos chamar esse fluxo. Então podemos ver se movemos o ambiente, o fluxo se move com ele porque é pai. Vamos definir o ambiente como 0. Vamos seguir em frente e arrastar o chão para baixo. Agora, o que precisamos fazer é adicionar um renderizador sprite. Abra os ativos do curso, arraste o quadrado. E voila, temos um andar muito quadrado. Não queremos um fluxo quadrado. Queremos mais andar, andar. Então, vamos conseguir isso arrastando o eixo y para baixo e o eixo x para garantir que a saída seja esticada horizontalmente em toda a nossa. Veja. Se formos para a visualização do jogo, podemos ver que ele está, de fato cobrindo toda a metade inferior da nossa tela. Então, a próxima coisa que queremos fazer é adicionar um fundo ou um céu, se quiser. Vou ir para o ambiente, clicar com o botão direito do mouse e criar movimento vazio e chamar esse plano de fundo. Mais uma vez em um renderizador sprite, arraste o quadrado e amplie-o. O problema com isso, no entanto, é que isso vai ficar na frente de todos os outros objetos que temos em nossa cena. Para evitar isso, o que vamos fazer é alterar essa ordem no atributo de camada que está anexado ao renderizador sprite. Se definirmos isso para algo como menos dez, podemos ver que tanto nosso jogador quanto nosso andar pularam à frente do objeto. Obviamente, o fluxo é branco como é isso. Você não pode realmente ver isso, mas confie em mim, eles têm se eu mover isso e torná-lo cinza, podemos ver os pisos na verdade na frente. Então, vou fazer o fundo talvez azul escuro. E nós vamos. A última coisa é fazer nosso chão outra cor, então vou deixar a gripe verde. Podemos ver que há um esquema de cores de jogo móvel muito questionável. E criamos um ambiente muito básico, mas não vamos parar por aí. Queremos adicionar mais alguns objetos. Agora, podemos continuar criando objetos como eu tenho feito esse tempo todo, tudo o que podemos simplificar um pouco o processo. Podemos realmente pegar esses ativos e simplesmente arrastá-los para a nossa cena. E eles criarão um objeto com um renderizador sprite para nós automaticamente. O problema é que esse objeto não está na pasta Environment que criamos anteriormente, então vou ter que arrastá-lo e colocá-lo lá. E você pode ver que ele se move para escrever exatamente o que deve ser. Então eu só vou reduzir isso, talvez torná-lo 0,7 por 0,7 tenha certeza de manter a escala x e y iguais se você não quiser esticar as coisas e isso não é grande o suficiente. Então deixe-me torná-lo não menor que 0,40,4. Então vou movê-lo para baixo e podemos ver voila, temos um pico. Vamos fazer esse pico ser lido. Agora este é um pico muito pequeno e eu não quero uma vez mais cinco, eu quero três. Então, o que vou fazer, vou selecionar esse objeto. Vou clicar em Control C. Vou pressionar Control V, e ele fará uma cópia exata do objeto na mesma posição. Então vemos, não podemos ver agora, mas se arrastarmos para fora, voila, há nosso segundo pico e podemos realmente fazer isso duas vezes e fazer três picos, o que parece muito melhor. Agora, o que vamos fazer é seguir em frente e clicar em nossa visualização do jogo para que possamos ver como ela se parece. Não parece ruim. Acho que o que vou fazer é ir em frente e selecionar o fluxo, selecionar esta ferramenta retângulo e arrastá-la para baixo para que ela esteja cobrindo toda a metade inferior da tela, que parece um pouco melhor na minha opinião. A última coisa que vamos fazer é adicionar algumas moedas. Então, vamos usar esse método mais rápido que descobrimos arrastando para dentro. Só vou reduzi-lo usando a ferramenta retângulo. E vou colocar isso lá. Acho que as cores das minhas moedas devem ser douradas. Isso é laranja. Vai funcionar. Estranho. Ouro, laranja vai ser minha cor. Vou fazer exatamente a mesma coisa que fiz com os triângulos e apenas copiá-lo e fazer três moedas. Então eu vou selecionar todos esses três círculos mantendo pressionada tecla Shift e colocando isso dentro do ambiente novamente. Agora podemos ver que nosso ambiente está armazenado neste objeto. Então, quando movemos o objeto, todo o ambiente e se move conosco. Isso poderia ser útil se quiséssemos fazer um jogo estranho onde o ambiente se mova , mas não o jogador. Mas para o nosso caso, este será um objeto bastante estático, é usado apenas para armazenar todos esses objetos de ambiente diferentes. Agora, a última coisa que acho que devemos acrescentar é talvez um pouco de detalhes. Então, a primeira coisa que vou fazer é deixar isso um pouco mais leve, porque eu não gosto exatamente de como parece agora. Obviamente, vou querer apenas ajustá-los segurando o Shift pressionado e apenas movendo-os lentamente para cima assim. Faça o mesmo com as moedas para que elas pareçam um pouco melhores. Estamos, e vou colocar o jogador no chão, então, na verdade, parece um jogo. Agora nosso ambiente está muito melhor agora, mas eu queria mover cada coisa, incluindo o jogador um pouco para a direita. Mas em vez de fazer isso, acho que vou mover minha câmera para a esquerda. A câmera será o que está capturando cada objeto na cena. Podemos ver que, se eu movê-lo, podemos ver que a visualização no canto inferior direito está mudando. Então, se eu quisesse fazer uma câmera seguir o script, obviamente mova isso e a câmera capturaria diferentes partes da tela. Vou mover isso ligeiramente para a esquerda, talvez lá. E tudo está olhando um pouco melhor. Na minha opinião. O ambiente é basicamente feito. Obviamente, vamos precisar adicionar um pouco de lógica a todos esses componentes em um pouco. Mas vamos chegar a isso mais tarde no curso. As moedas e as coisas não fazem nada. Agora, poderíamos jogar tudo vem apenas fica lá empilhando. Mas tomamos os primeiros passos para construir nosso ambiente usando o Unity. Bom trabalho, e te vejo no próximo vídeo. 6. Introdução à física: Ei lá e bem-vindo de volta à unidade na perda, na verdade, como tenho certeza que você se lembra, criamos este ambiente de aparência muito questionável para um jogo móvel. O que vamos fazer neste episódio, vamos realmente excluir algumas das partes do ambiente que tornamos um pouco complicadas demais para onde estamos neste curso. E vamos atribuir lógica aos que saíram. Vamos parecer que estamos nos movendo para trás, mas não estamos porque o ponto do último episódio não foi um ensiná-lo a fazer esse ambiente exato. Era para ensinar como fazer novos sprites, adicioná-los, jogar GO e encomendá-los usando esses objetos pais. Nós fomos lá, vamos em frente e excluímos todas as moedas e os picos em suas cenas. Você tem apenas o chão do plano de fundo e o jogador saiu. Então você pode querer seguir seu plano. Você vai movê-los para cima para que eles estejam suspensos no ar. Agora, este passo preemptivo, mas acredite em mim, eu tomei várias tomadas deste vídeo agora e toda vez que eu não faço isso, significa que você não pode DC uma das coisas que estou demonstrando, vá em frente e pegue o fundo e você vai querer deixar isso muito mais escuro. mesmo com o piso e o mesmo com o plano. Agora isso não parece ótimo. Sim, vou concordar. Mas isso é muito importante porque quero demonstrar algo com um novo componente. E esse componente, na verdade, da forma como você o vê tem um contorno verde ao redor do objeto. E não poderemos ver que, a menos que tenhamos cores mais escuras, há mais contraste. Porque obviamente temos biblioteca e biblioteca e amarelo claro, que é provavelmente as três piores cores a ter contra o verde claro em termos de contraste. Então vou em frente e vou para o meu jogador. Agora que eu deixei minha coisa um pouco mais escura, e quero adicionar um componente. E vou adicionar com cold box collider 2D. Agora, tenho certeza que, como você viu, havia duas bagunças aqui que podemos selecioná-lo do planador chefe e da nuvem de caixa 2D. Praticamente sempre que esse for o caso quando procuramos componentes, se houver uma opção 2D, vamos querer usá-la porque estamos fazendo um jogo 2D. A opção 3D não funcionará como mais tarde. Vamos adicionar corpo rígido de um quarto de objeto. Há também um corpo rígido 2D e vamos usar o corpo rígido 2D porque ele é construído para jogos 2D, assim como estamos fazendo. Quero ir em frente e escolher a caixa collider 2D e clicar nisso. E isso vai adicioná-lo ao nosso objeto. E aqui você pode ver aquele contorno verde que eu estava falando. Talvez você não consiga vê-lo neste vídeo, mas você deve poder vê-lo na tela. Deve haver um contorno verde em torno de sua planta. Agora, esse esboço é, na verdade, o colisor que acabamos de adicionar. Então aqui está o Box Glider 2D. Podemos ver que temos um material de colisor que será acionado usado pelo fato eles usados pelo tamanho do offset composto. Todas essas propriedades, isso basicamente muda a forma como o collider funciona e olha em nosso objeto. Alkali aqui é realmente perfeito para o nosso jogador. É exatamente ao redor do jogador. A razão pela qual isso ocorre é porque o jogador tem exatamente o mesmo tamanho que o sprite. Agora esse nem sempre é o caso. Obviamente, em outros ativos do curso, podemos ver que este quadrado está preenchendo exatamente o tamanho de seu contêiner. Mas se estivéssemos usando um círculo, por exemplo, e adicionássemos um colisor de caixa, podemos ver que ele vai do lado de fora lá. Essa linha verde do dia está agora do lado de fora da coisa porque esse é o tamanho do spread. Porque estamos usando um quadrado, não devemos ter esse problema. Mas isso é apenas algo para se notar mais tarde. Se quisermos adicionar um colisor de caixa e quisermos alterar as restrições dele, iremos para essa coisa que diz Edit Collider. Em seguida, podemos mudar e dimensionar o colisor da mesma achamos melhor para garantir que ele se encaixe na forma como queremos. Agora nossa nuvem de chefe aqui basicamente vai dizer a unidade que quando estamos colidindo com um objeto e eu arrasto isso para baixo e eu vou por cima do chão, isso vai desencadear o evento de colisão e a unidade vai reagir de acordo. Agora, porque este é um colisor de caixa normal, o que deve acontecer quando caímos, na verdade, vai parar porque é na verdade, vai parar porque um fosfito conhecido entrará em outro tipo de perda Claire mais tarde, que é gatilho quarto. Podemos realmente mudá-lo para acionar apenas tomando isso. Então não vai parar, mas vai acionar os mesmos eventos. Então, vamos usar isso obviamente. Se, por exemplo, você está fazendo algo como uma bala, como um projétil que passa pela anatomia. Você gostaria de fazer disso um gatilho porque então ele não vai parar quando atingir o inimigo. Vai passar, mas o inimigo ainda vai desencadear um evento, você pode dizer, ok, tomar tanto dano. Isso é um pouco alto agora, mas entraremos nisso mais tarde. Se executarmos o jogo, no entanto, podemos ver que vamos ficar suspensos no ar, sem colidir com nada. Então, não vamos ver o efeito do colisor deles. E se realmente movermos isso para baixo, podemos me ver passar por tudo. Agora, isso é por dois motivos principais. Um deles é porque o chão não tem um colisor preso. Dois. Nós realmente não traçamos com nada. Estamos apenas colidindo com nada porque é apenas um sprite, não é um provedor. Mas a segunda razão é que, na verdade , porque estamos nos movendo usando as colisões s2 não ocorrerão, mesmo que isso tenha sido construído para que uma colisão possa ocorrer, nós não a veríamos agora, o que não é ótimo, mas tudo bem porque vamos adicionar outro componente mais tarde que nos permite ver a colisão. Portanto, não se preocupe com isso agora. Eu só estava tentando demonstrar como isso não vai colidir porque você nunca conhece o Collider. No entanto, para corrigir isso, vamos voltar à nossa cena. Vamos clicar no chão. Vamos clicar, adicionar outro collider de caixa 2D. Deixe-me ver novamente, ele vai exatamente do lado de fora exatamente onde precisávamos, porque esta é a mesma prática de quadrados. Muito legal. Agora temos dois coliders. E se, por exemplo, estivermos jogando um jogo e este vai colidir aqui, ele iria parar. Mas como não temos nenhum movimento em nosso jogo, só temos que objetos estáticos com marcadores. Não vai fazer nada como eu disse anteriormente, se mudarmos para cá, isso ignora as leis da física porque basicamente estou movendo usando uma mesma coisa, mesmo que eu esteja no modo de jogo. Para realmente demonstrar essa colite, vamos adicionar outro componente e vamos introduzir esse componente será chamado de corpo rígido 2D. corpo rígido 2D basicamente é um todo embutido. Adicione física a esse componente de objeto e veja se passamos o mouse sobre diferentes aspectos de uma física. Tem o tipo de corpo, o material, o automático, a massa normal, o arrasto linear, a escala de gravidade, praticamente qualquer coisa relacionada à física ou pelo menos a primeira parte da física, Newton's Laws está neste corpo rígido 2D, não temos aceleração, temos gravidade, temos tudo, praticamente tudo o que precisamos em termos de física vai ser coberto por este corpo rígido. Agora, obviamente, isso também pode nos ajudar se quiséssemos fazer algo ligado, então faça alguém colidir e depois fazer outra coisa. Ainda não vamos entrar nessa direita porque não vamos entrar no jogo de queda. Primeiro de tudo, não queremos sprites saltitantes. E o Second Bull, isso é um pouco mais complexo, qual podemos entrar mais tarde quando tivermos colisões. Mas, por enquanto, tudo o que vamos usar esse corpo rígido para fazer é testar se esse personagem vai cair e parar porque adicionamos os dois colliders. Se eu for em frente e bater o jogo, podemos ver que ele realmente faz exatamente o que queríamos. Agora adicionamos física a esse objeto. Podemos realmente mover isso. E podemos ver que a física é, obviamente, é um pouco estranho quando eu subo porque não é assim que você deveria estar testando coisas como eu posso mover isso para cima e colocá-lo de volta e então podemos veja o que quero dizer. Então, na verdade, passei pela reprodução porque estou movendo-a tão rápido. Esta é uma maneira estranha de a unidade ver essas condições tipo de letra. Obviamente, não é assim que alguém realmente estará jogando o jogo. Estou me mudando para o editor. Mas sim, se fosse, seria legal demonstrar como a física realmente funcionou. Esse corpo rígido que adicionamos ao jogo é basicamente todas as configurações padrão aqui são praticamente tudo o que precisamos. Nós realmente não precisamos mudar muitos desses, mas vou mudar alguns só para torná-lo um pouco mais agradável. A primeira coisa que vou fazer é tornar a detecção de colisão contínua. E isso não é necessário. Isso basicamente faz com que você possa garantir que você viu quando eu estava movendo para cima e para baixo 1, ele passou pelo jogador. E se eu tiver isso, se eu tiver uma detecção contínua de colisão, essa chance de isso acontecer é minimizada porque está continuamente verificando se colidiu lá. Acho que os ganhadores que passaram por lá porque eu estava novamente me mudando na cena. Mas eu acho que em um jogo real, a qualquer momento se mover sobre ele enviaria a colisão. Isso é apenas uma boa prática. Geralmente coloco isso em meus corpos rígidos, mas não é necessário. Arrasto angular. Também vou fazer 0 e vou fazer a escala de gravidade também. Eu sempre acho que provavelmente escalas de um ou um pouco flutuante você flui jogos Para deve ser um ponto ideal assim. Você pode ver que é uma gravidade um pouco mais normal como uma vez que fizemos tudo isso, só há mais uma coisa que precisamos fazer para garantir que nosso jogo para nosso personagem tenha introduzido física corretamente. E isso vai ser congelado essa rotação. Agora você pode não saber o que isso faz. Vou demonstrar aqui se eu mover isso para que ele vá pousar naquele canto, naquele vértice, você pode ver que o jogador vai cair. Então, assim como a vida real, suaviza o papel na queda. Isso é muito realista e é muito legal. Mas para o nosso jogo, se deixarmos isso marcado, isso só causa problemas mais tarde quando você pensa se estamos nos movendo e atingirmos algo que não mostramos para girar no meio, se você pegar um traço de geometria, por exemplo, você pode ver que, enquanto o cubo gira quando salta o quadrado em vez disso, ele nunca mudou a rotação quando ele salta. As coisas são falsas ou coisas. Isso é uma boa prática para jogos móveis, porque imagine que estamos tentando jogar nosso jogo e depois caímos assim. E temos que continuar jogando nosso jogo como uma espécie de quadrados laterais. Não é ideal. Vamos seguir em frente e clicar em rotação de congelamento z. Então, se voltarmos a esse exemplo, mova-o para lá e cairmos. Podemos ver que não caímos mais. Nós ficamos no limite e podemos realmente ficar no limite até que nada esteja mais colidindo, caso em que caímos. Essa é a beleza dessa colite e é isso que o congelamento da nossa rotação faz. Depois de termos feito isso, fizemos praticamente tudo o que precisamos nesta lição para cobrir o básico de uma introdução à física, também podemos adicionar um corpo rígido a este andar, mas como tenho certeza que você adivinhou, então o fluxo cairá exatamente como o jogador e isso não seria o ideal. E realmente não adianta adicionar nossa escala de gravidade de 0 a este objeto de chão porque é um pouco tedioso. Não precisamos disso para o nosso jogo. Então, por enquanto, praticamente fizemos tudo o que pudemos e introduzimos o jogo físico inteiro. Podemos ver agora que temos um Q caindo, o que é muito legal. Isso nos permitirá interromper a próxima lição, que na verdade adicionará nosso primeiro script C-sharp. E vamos fazer com que o nosso jogador possa se movimentar. 7. Nosso primeiro script: Ei lá e bem-vindo de volta à unidade. O último episódio, como tenho certeza que você se lembra, adicionamos um corpo rígido e um colisor de caixa, eu tocarei nosso objeto para fazê-los afetados pela gravidade e colidirem com o chão, que também adicionamos uma caixa collider 2D. Agora isso é legal e tudo mais, mas chega um certo ponto em nossa jornada de desenvolvimento de jogos para dispositivos móveis. Bem, precisamos realmente começar a escrever nosso próprio código se quisermos que os objetos sejam muito bem o que queremos. Nesse caso, quero criar um script de movimento para meu jogador parar de fazer este jogo novamente, porque atualmente tudo o que realmente é é um quadrado que cai no chão, não super emocionante. Agora, faça isso, vou precisar começar a escrever meu próprio código. Isso pode ser uma coisa um pouco intimidante de se fazer quando você está começando. Mas, felizmente, criei um arquivo de código de folha de truques dentro da pasta de ativos do curso, que você esperamos ter instalado anteriormente. Se você não o fez, você não precisa, mas eu recomendo que você o instale porque pode ser bastante útil. Se seguirmos em frente e abrirmos isso. Tenho aqui uma lista de todos os conceitos básicos de codificação, que com exemplos. E embora a maioria dessas coisas ainda não faça nada , isso pode ser útil, especialmente mais tarde no curso, quando aprendemos sobre elas para você voltar e verificar se talvez algo não seja trabalhando que você tem a sintaxe certa, bem no topo, temos variáveis e tenho certeza que você se lembra do nosso vídeo introdutório, as variáveis são basicamente apenas espaços de armazenamento para diferentes tipos de dados. Essa variável x armazena um número inteiro ou um número. Essa variável y armazena string ou texto. Esta variável booleana Z armazena ou booleana ou verdadeira ou falso. E este corpo rígido RB armazena um componente de corpo rígido, que é o componente exato adicionamos ao nosso jogador anteriormente. Fazer variáveis como essa nos permitirá realmente referenciá-las em nossos códigos para possamos ir em frente e atribuir esse corpo rígido específico a essa variável que fizemos chamada RB, e depois alterar a variável RB, que por sua vez alterará esse volume rígido. Por exemplo, se eu quisesse alterar a escala de gravidade, poderia escrever um código que disse que RBD não altera a escala de gravidade. E então RB onde quer que esteja ligado, o que seria um corpo rígido, que neste caso seria este particular rigidamente ligado ao jogador é que a escala de gravidade seria alterada. Agora, por baixo disso, temos matrizes e eu nunca passei por cima da corrida antes. Mas vamos entrar nisso mais tarde no curso. Não vamos precisar deles agora, mas parece uma coisa decente apenas pelo menos passar por cima das ações. Agora, quais matrizes são basicamente como variáveis, mas em uma lista. Então você pode ver aqui em cima, parece exatamente como int x público, exceto que é inteiro público, e então ele tem dois colchetes depois. O que esses colchetes basicamente significam é que eu não vou armazenar uma variável aqui. Vou empatar muitas variáveis. E então esta matriz pública int x basicamente irá armazenar uma lista de variáveis chamadas x array, diferentes que você pode dizer: Ok, a primeira variável e raio-X, você pode atribuir um valor lá, então você pode atribuir um segundo valor, o terceiro valor nesta seção, realmente útil se, por exemplo, se você pensar, quisermos talvez armazenar todas as pontuações da tabela de classificação. Não queremos fazer uma variável diferente para cada escola será melhor se fizermos uma matriz inteira pública, eu chamo de pontuações e depois atribuo a pontuação de cada jogador a uma posição nesta matriz. O mesmo aqui com uma string que você pode talvez ele usar para armazenar diálogo ou texto ou algo assim. Se isso realmente não faz muito sentido para você agora. Não te culpo porque vai fazer muito mais sentido quando o fizermos. Mas não se preocupe, eu só queria cobrir o básico do que são matrizes. Por baixo disso, temos procedimentos, que passamos em nosso vídeo anterior. Basicamente, os procedimentos são apenas áreas do nosso código que chamamos em determinados momentos para realizar determinadas tarefas. Este início nulo, este procedimento é realmente gerado automaticamente pela unidade, e isso é com o procedimento com chamadas Unity sempre que esse código é executado pela primeira vez, esse procedimento de atualização é muito semelhante, exceto este procedimento Unity chama todos os quadros. Vamos entrar neles um pouco mais tarde quando escrevermos nosso roteiro de movimentos. Mas saiba que esses procedimentos são exatamente como falamos, exceto que as unidades que os chamavam não foram chamadas de joelhos. baixo disso, temos outro exemplo de procedimento. Esse procedimento é chamado de baú aberto , obviamente não faz isso, mas eu só queria demonstrar que você poderia realmente escrever seus próprios procedimentos. Por baixo disso, temos nosso novo conceito chamado variáveis locais. E variáveis locais que podemos basicamente escrever na sintaxe. sintaxe é esse formato de texto. Precisamos escrever coisas em codificação para garantir que ele funcione. Podemos escrever isso com a sintaxe int x é igual a três. O que isso basicamente vai fazer é que isso fará uma variável chamada x definida como três, mas essa variável só será referenciada dentro desse método. Quando esse método se esgota, a variável é efetivamente destruída. Se eu chamar isso de algo como gar local. E então eu vou em frente e tento referenciar var local. E aqui podemos ver que não há nada legal. Se eu digitá-lo, ele diz que o nome var local não existe no contexto atual. Se eu movê-lo para dentro desse procedimento, no entanto, podemos ver que ele sabe exatamente o que fazer. E não diz que não existe porque está bem ali. Decidimos certo. Por baixo disso, temos nossas declarações if e essas são condições. Este é praticamente o fundamental, um dos aspectos mais fundamentais das condições de codificação. Se declarações, if else, declarações, if else, if, et cetera, novamente, para todas essas agora, basicamente todas essas afirmações fazem é verificar a lógica. Por exemplo, se estivermos fazendo roteiro de salto agora e queremos saber se os jogadores desembarcaram verificarão que usar uma declaração if não será exatamente um ultrapassado porque não é ótimo para desempenho. Mas se você pudesse, teoricamente, verificar cada quadro, se o jogador for aterrado e se ele é, então diga, pode pular por exemplo, aqui estamos dizendo que se x é maior que cinco ou x, x é igual a três. Um bom exemplo de declarações if é se estivéssemos tentando calcular se o jogador marcou o ensino médio. Então, se ele fez, você poderia dizer, se o ensino médio, se a pontuação maior do que o ensino médio, se a sua pontuação for igual à nova escola secundária, ou se a pontuação é menor do que a nossa escola atual, então execute código que basicamente diz: Ok, esta é uma nova escola secundária. Esta instrução else só será executada se essa instrução não for executada. O que esse código real está dizendo é que se minha variável x receber o valor três, execute esse código. Se for atribuído a qualquer outra coisa, execute esse código. Podemos realmente expandir essas declarações um pouco indo se x for três, faça isso. Caso contrário, se x for igual a cinco para quatro, faça isso. Ou se x for igual a cinco, desculpe, coloquei um sinal de igual em vez de dois, x é igual a cinco. Faça isso, senão, faça isso. Esse código é um pouco mais complicado. Vai dizer, ok, se for três, faça isso, se estiver cheio, faça isso, se for cinco para isso, qualquer outra coisa faça isso. E esse tipo de código não é ótimo porque você pode ver que o computador precisa passar por isso. Mas então, então, depois do nosso primeiro jogo para celular, se pudéssemos algumas coisas assim para torná-lo um pouco mais fácil de entender, está completamente bem como parte do processo. Por baixo disso está o conceito final que eu queria ensinar. Loops frios. E os loops são efetivamente formas de executar o mesmo código repetidas vezes. Este for-loop, que você pode ter ouvido antes, basicamente executa um certo período de tempo. O que este for-loop faz é dizer que full x é igual a 0 no início, enquanto x é maior que três, aumente x no início ou no final do loop. O que isso está basicamente dizendo é que temos quatro, mas aqui estamos dizendo, ok, eu quero usar a variável x. E no início desse loop, quero ter certeza de que é 0. Depois disso, tenho uma condição que deve ser atendida para que o loop continue funcionando. Portanto, neste caso, desde que x seja maior que três, mantenha o loop em execução. Na última coisa, tenho código que é executado no final de cada ciclo de loop único. Então, basicamente, dizendo sempre que o final de cada ciclo de loop, X plus plus, que é basicamente código para x aumentado em um. Você pode fazer um x mais três x mais cinco. Nesse caso, tenho x plus plus, o que significa aumentar x em um no final de cada loop. O que esse loop está dizendo é conjunto completo x a 0, enquanto x é maior que três, execute o loop e aumente x todas as vezes. Esse loop na verdade não vai funcionar, vamos ter que mudar isso para menos de três. Isso fará muito mais sentido. Isso é basicamente dizer: Ok, bem, defina x para 0 no início, enquanto x é menor que três. Continue fazendo com o loop e aumente x sempre. Se tivéssemos que escrever algo aqui que Newport executa duas ou três vezes, porque você pode ver as corridas pela primeira vez em 0, então ele aumenta. É um, ainda é menos de três. Então, ele vai novamente para armazenar ouça porque novamente, três, não menos que três. Então o loop termina. Por baixo disso, temos loops while. Enquanto o loop basicamente faz a mesma coisa que for-loops, exceto a condição de um loop while só precisa ser executado, só precisa ser verdadeiro e o loop while será executado continuamente para sempre. Então, se nunca mudarmos x, esse loop será executado do infinito porque se definirmos x para V2 vai ficar bem, X menos de três, ok, X menos de três. Agora isso vai mudar. O loop for executará um determinado número de vezes, mas um loop while e corre para o infinito, o que os torna um pouco mais problemáticos às vezes quando cometemos erros. Porque se tivermos um ar do curso este luterano para o infinito , quase sempre causa um acidente. E isso não é ótimo para o nosso computador ou nosso código. Não é ruim, não quebra nada, mas apenas em termos de nossa paz de espírito, às vezes faz com que toda a unidade tenha que fechar e então talvez não tenhamos salvo algo. Eu recomendaria não usar loops while até que você tenha uma cruz completa com eles. Eu não prevejo que precisemos enquanto laços ao longo de toda a sua força. E, de um modo geral, enquanto os loops estão livres de uma coisa de nicho que você nem sempre precisa de codificação, mas às vezes você precisa apenas ter certeza de que quando você usa um loop while, você o usa, certo? E para que ele tenha uma condição de encerramento porque, caso contrário você pode causar um acidente em dez anos. E agora vamos tentar fazer nosso primeiro roteiro a partir do zero. Faremos isso na pasta de ativos. Vá para Ativos e vamos clicar com o botão direito do mouse, vamos criar, vamos criar uma pasta e chamá-la de script. Isso não é necessário, mas basicamente significa que podemos colocar todo o nosso código aqui, então é tudo bom e organizado. Você não precisa fazer isso. É assim que eu gosto de organizar meus ativos. E clique com o botão direito do mouse novamente e vamos criar um script C-sharp. Vou chamar isso de um movimento. Agora, se eu clicar duas vezes, o script de movimento irá abri-lo no Visual Studio como eu queria. E podemos ver aqui em nosso script que temos três linhas no topo, todas usando coleções de sistema e mecanismo Unity. Em seguida, uma classe chamada procedimento armazenado de movimento e um procedimento de atualização. Agora, eu não sei se eu abordei isso no roteiro anterior, mas basicamente quais são essas letras verdes, quais são essas letras verdes, nossos comentários. E essa é basicamente a maneira de dizer, ok, eu não quero que esse código seja executado, mas eu quero tê-lo como texto. Se eu quisesse escrever algo por baixo. Este programa é legal. Obviamente, se eu escrever isso sem comentários, a unidade vai ser muito computadores pode ser como o que ele tentou dizer aqui? Não há erro de sintaxe de token. O nome cool não existe. O nome que isso não pôde ser encontrado dizendo o que é isso? Qual é o programa eu enquanto você usa a palavra código IS aqui, o que é legal, tem sido muito confuso. O que essas duas barras para frente fazem é dizer a unidade, eu não quero que isso funcione. Estou apenas escrevendo textos simples para poder comunicar algo a alguém que lê meu código. Por exemplo, quando você faz esse arquivo, unidade gera automaticamente dois comentários aqui para você. Eles dizem a você com que frequência os procedimentos da loja estão frios e com que frequência atualizar o código de procedimentos eles dizem que início é chamado antes da primeira atualização do quadro, atualização é chamada uma vez por quadro. os desenvolvedores do Unity dizendo o que esses dois procedimentos fazem para que você saiba, você também pode passar o mouse sobre eles e isso lhe dirá exatamente a mesma coisa. Então, basicamente, isso diz é que unidade faz esses procedimentos e eles os chamam por conta própria. Não precisamos chamar esses procedimentos. Podemos usar esses procedimentos que o Unity chama para construir o resto do nosso código. Podemos excluir esses dois comentários. Podemos começar a criar nosso primeiro script de movimento usando esses dois procedimentos. A primeira coisa que vou fazer é fazer algumas variáveis. A primeira variável que eu quero é um corpo rígido público 2D RB. E isso vai ser criar uma referência ao corpo rígido armazenado no jogador para que eu possa fazê-los se mover. Vou criar outra variável, um número inteiro público, e vou chamá-la de velocidade. Isso vai ser uma velocidade que o jogador se move para cima. Vou criar outra variável de qualidade, saltar falso. Essa será a velocidade com que o jogador salta do chão. Vou criar outra variável e vou chamá-la de chão. E isso basicamente vai nos dizer, o jogador está de castigo ou não? Obviamente, só podemos pular no chão. Agora, como aviso, vou escrever todo esse código usando comandos do teclado. Eu vou dizer que se o espaço for pressionado ou se isso for pressionado, você pode estar pensando por que estamos fazendo um jogo para celular e isso é verdade. Mas se eu quiser testar meu jogo no editor Unity, posso realmente escrever comandos de teclado, mesmo que eu seja Bowden para Android e Unity seja como, ok, basta usar a barra de espaço. E então, quando eu construo o jogo para Android, obviamente esses comandos e nunca serão executados. Então, se eu escrever aqui atualize, se eu disser que se a pessoa passa pela barra de espaço, pule, então quando eu criar meu Android deu não há como você conseguir pular porque há a barra de espaço. Mas quando estou testando uma anuidade, é o que vou usar para garantir que tudo funcione. Na verdade, é assim que vamos fazer este curso? Vamos construir todo esse curso testado para computador e depois escrever o final. Vou mostrar como alterar todos os seus comandos de entrada para que eles funcionem para dispositivos móveis, é realmente muito fácil porque não teremos tantos controles. Só vamos dar um salto. Aquele salto que vamos acionar tocando. Mas, por enquanto, vamos fazer isso através da barra de espaço para tornar as coisas muito mais fáceis de testar. Vou digitar entrada, tenho a tecla fgetc para baixo. E vou abrir o colchete e ficar espaço dos pontos do código chave. Então, por baixo disso, vou abrir colchetes encaracolados, que nós, sempre que usamos uma instrução ou procedimento if, digitamos o suporte encaracolado aberto e, em seguida, pressionamos Enter e, acima de tudo, bem para nós. Vou aqui, deixe-me deletá-los. Vou dizer comentário em salto. Obviamente, esse comentário, como fomos , não vai ser executado, é apenas texto. Mas basicamente o que isso vai fazer é usar isso para armazenar código que ainda não escrevi. Então eu sei o que devo colocar isso. Agora, cada quadro, se eu baixar a tecla Space, vou querer pular. Agora. Eu não quero pular toda vez para nós para a tecla Space. Eu quero pular somente quando estou castigo dentro dessa declaração if. Vou colocar outra declaração if lá embaixo. Se estiver aterrado. Vou abrir a pele desses suportes. Agora, isso não é o que é conhecido como instruções if aninhadas em uma instrução if, dentro de uma instrução if, eu poderia realmente escrever isso como uma declaração if. Mas, por razões de simplicidade, é muito mais fácil ler na minha opinião, se você fizer isso. E podemos aprender sobre esses compostos se declarações mais tarde, não vamos cobrir isso agora. Agora, se Grounded, vamos querer pular, então não vamos querer pular se não estivermos de castigo. Agora, na verdade, precisamos escrever um pouco de código para garantir que possamos realmente pular. Vou até aqui e vou fazer meu próprio procedimento. Vou escrever vazio público e vou chamá-lo de pular, colocar parênteses e, em seguida, abrir o colchete encaracolado e pressionar Enter e dentro por salto, vou escrever código para dar o salto. Então eu tenho essa referência ao corpo rígido e aos corpos rígidos, o que vamos usar para pular, vou digitar RV, e isso basicamente recupera o corpo rígido. Agora posso fazer ponto e posso mudar certo? Velocidade. Isso basicamente significa que vou alterar a velocidade do corpo rígido. Essa é a velocidade linear. Então, é para cima e para baixo e para a esquerda e para a direita. Posso fazer essa velocidade onde eu quiser. Eu posso ir igual. E então, porque estou colocando dois valores, um valor x de velocidade x e valor y para a velocidade y. Vou digitar o novo vetor dois e, em seguida, abrir parênteses e fechar parênteses e , em seguida, ponto e vírgula. Sempre colocamos um ponto e vírgula no final do nosso código. O que isso basicamente vai fazer. Vai dizer, ok. Defina a velocidade RB para onde eu quiser. Se eu for 55, a velocidade RB quando eu pular vai assim. E se eu defini-lo para menos 55 vai ser assim. Menos cinco e menos cinco como este, vai embora, grito. E se eu defini-lo para, por exemplo, 05, ele vai ficar grito. Você pode estar pensando, Oh, isso é o que queremos porque queremos que ele salte. Mas se este for o caso, ganho basicamente seria assim. Você pula e o eucarya e movendo o salto, nós não queremos isso. Queremos pular com o mesmo impulso que você carregou o tempo todo. Então, em outras palavras, queremos manter a velocidade de qualquer que o corpo rígido esteja em sua direção x. Então, se você está se movendo para trás ou para frente ou parado, queremos manter isso e só queremos mudar o y. Eu vou fazer essa força de salto de valor Y. Essa é a variável que fizemos aqui. Portanto, atualmente, o inteiro é definido como 0 porque não atribuímos um valor a ele. Mas podemos entrar no editor Unity e podemos mudar a força de salto para onde quisermos. E essa é a velocidade com que você pula. E então, em vez de colocar 0 aqui, vou digitar velocidade do ponto do RV ponto x, o que basicamente diz: Ok, faça a velocidade, a velocidade x. Portanto, não altere a velocidade x, mas faça com que a velocidade y seja qual for o valor armazenado na força de salto, que será um número que vamos atribuir o que quisermos. Isso é praticamente tudo o que nosso código de salto precisa ser, vamos pular para cima e cair de volta. Isso realmente deve funcionar se entrarmos na Unity. Se simplesmente removermos o comentário e colocarmos parênteses depois, estamos chamando esse método porque digitamos parênteses de salto, estamos chamando esse método. Se eu tivesse outro método chamado pulado, eu poderia digitar parênteses saltados e isso iria puxar esse procedimento de salto para cima porque eu não acho, não encontra nada porque eu tenho este procedimento de salto no entanto. Estou me chamando de procedimento de salto, desde que eu pressione a barra de espaço e esteja de castigo. Agora, vou pular para cima e pousar de volta para baixo. Obviamente, ainda não terminamos o código, mas se entrarmos no Unity, isso deve realmente funcionar exatamente como eu quero. A única coisa que vou precisar fazer, no entanto, antes de tudo, é que vou precisar de um sinal de alguns desses valores. Então, a primeira coisa que eu quero fazer, se você ainda não arrastou obviamente um script de movimento para o jogador assim. Depois de fazer isso, pegue seu corpo rígido e arraste-o para essa variável RB. Então, temos um link para eles. Então você pode definir a velocidade o que quiser. Vou definir cinco, obviamente, estou codificado isso ainda, então não vou fazer nada e farei meu salto falso cinco também. Então eu vou marcar esse terreno de variável porque podemos ver em nosso código, só posso pular quando estou de castigo. E porque ainda não codifiquei a lógica fundamentada, nunca serei arredondado. Ele vai automaticamente definir como false e eu não vou pular. Mas se eu disser o terreno verdadeiro, deve funcionar. Agora, se eu estiver jogando, pressiono salto. Você pode ver que eu pulo para cima, o que é muito legal. Não codificamos um pequeno salto muito patético. E a razão pela qual usamos variáveis é porque tenho certeza que todos podemos concordar que o salto não está nem perto de alto o suficiente. Então eu vou mudar essa força de salto e torná-la dez. Veja, isso é um pouco melhor. Acho que isso é quase bom o suficiente. Vou dar o meu salto para algo como 12. Temos um bom grande salto para o nosso jogo para celular. Agora, como abordamos o primeiro episódio, se fizermos alterações durante o modo de reprodução e clicarmos fora, elas não salvam. Mas eu posso apenas lembrar o valor que eu tinha, colocar isso de volta e então não terei que realmente entrar no meu código e alterar essa variável cinco ou 1270. Posso simplesmente mudar a variável e, em seguida, posso alterar o que está armazenado nisso, o que é muito legal. Agora temos nosso salto funcionando. Queremos ter certeza de que só podemos pular toda vez que batemos no chão. Vamos seguir em frente e fazer dois novos procedimentos, e ambos são gerados automaticamente pela unidade. O primeiro será em colisão entre 2D. Vou dizer que castigado é igual a frutas. O segundo será nulo na saída de colisão 2D, e vamos deixar o chão como falso. Basicamente, o que isso vai fazer é que isso vai dizer, toda vez que colidirmos com algo, tornamos verdadeiros. Toda vez que colidimos com algo ou não estamos mais em contato com ele, defina o terreno para falso. E se isso funcionar corretamente, devemos levar a falsa. E no início, podemos ir até aqui e podemos ver que o aterramento é falso. E assim que eu conseguir conceder um conjunto extra para verdadeiro. E se eu pular de novo, granitos falsos e depois verdadeiros novamente. E esse é basicamente todo o script que precisamos para criar nosso código de salto. Podemos pressionar Espaço muito tempo como quisermos. Só podemos pular toda vez que não, o que é muito legal. Agora, isso funcionaria. Mas o problema é que esta é uma situação um pouco pegajosa, porque se eu deixar o código exatamente como ele é, e então eu posso viver com uma moeda. Estou tecnicamente iluminando com alguma coisa. Union vai ser como, oh, ele está colidindo. Ele pode pular de novo, mas eu só quero ficar de castigo enquanto eu estiver tocando esse material do chão. Então eu preciso fazer uma maneira de diferenciar essa falha em todos os outros colliders. Vou fazer isso com tags. Vou até aqui até o chão, clique no chão. Vou clicar em tag e, em seguida, adicionar uma tag. E vou adicionar uma etiqueta de terra. Então podemos ir até aqui de volta ao chão e podemos atribuir essa etiqueta de terra aqui. Você pode adicionar gravata algo como eu adicionei tag e, em seguida, digitar o nome. E então temos um imposto terrestre. E agora temos uma maneira de diferenciar se o que estamos atingindo é um terreno ou qualquer outra coisa. Voltando a este código, vou passar por aqui e vou digitar colisão de colisão, tag de comparação de pontos, colchetes abertos, aspas ao redor. Então vou abrir colchetes encaracolados. Digamos que o castigo é verdade. Obviamente, eu poderia digitar igual verdadeiro no final aqui, mas isso realmente vai fazer isso automaticamente por mim porque eu fiz. É igual a verdade aqui. Mas, como fazer isso automaticamente por mim, porque não estou colocando nada, ele automaticamente envia para true da mesma maneira. Eu posso realmente digitar isso se estiver aterrado, isso significa que se aterrado for igual a verdadeiro. Mas em vez de escrever se crônica é verdade, estou apenas escrevendo, se estiver fundamentado, é uma maneira mais simples de fazê-lo. Por aqui. Vou dizer que estou castigo, desde que eu esteja colidindo com o chão, vou copiar esse código exato e colocá-lo sob minha coisa de saída, exceto mudar isso de volta para false. Agora, o que isso vai fazer é basicamente não mudar nada. Mas se tivéssemos outra cor com a qual vivemos, não vou ficar de castigo a menos que seja o chão. Minha equipe, como uma coisa estranha de se fazer agora porque nosso código está funcionando bem. Mas acredite em mim, isso salvará uma dor de cabeça, nos salvará uma dor de cabeça a longo prazo. A última coisa que precisamos fazer é garantir que estamos continuamente nos movendo para a direita porque precisamos passar para o nosso jogo assim como o Azure dash, que possamos interagir com obstáculos e salte sobre as coisas. Vamos fazer isso usando a variável de velocidade. Agora vamos atualizar é chamado todos os quadros como já cobrimos antes, mas não queremos que essa atualização seja chamada de cada quadro. Queremos que fique frio a cada intervalo fixo para que não mude se executarmos a mesma inclinação fóssil que você pode usar o quadro de atualização fixo vazio. Agora, a atualização fixa é exatamente como a atualização exceto em vez de cada quadro, é cada intervalo. Então eu acho que é 0,01 segundos ou 0,15. Você pode configurá-lo em seu código. Mas sim, isso é basicamente o que isso vai fazer. Vou seguir em frente e digitar RB. Não tenha velocidade como eu fiz antes, é igual ao novo vetor dois. Exceto desta vez, não quero alterar a velocidade y, só quero alterar a velocidade x. Na verdade, podemos copiar esse código exato de um aqui e trocá-lo por aí. Então, ao invés de dizer velocidade de ponto RB ou x aqui, vou digitar velocidade de ponto RB ponto y na coisa y. E então, para o x, vou configurá-lo para acelerar o que isso vai fazer é cada quadro fixo. Então, cada integral, quero ter certeza de que minha velocidade é igual à velocidade que quero viajar e manter a velocidade de y. E toda vez que pulo, quero manter essa velocidade x e pular. Se voltarmos ao nosso código e definirmos nossa velocidade para algo lento como. Nós executamos nosso jogo. Podemos realmente ver isso em ação e vê-lo aqui. Estamos nos movendo lentamente e se saltarmos, saltamos mantendo o ímpeto. E esse basicamente será nosso roteiro de movimentos para o início do nosso jogo móvel. Este é o primeiro passo que demos para criar um jogo móvel como um jogo realmente emocionante. Se você seguiu, bom trabalho. Se algumas coisas soaram um pouco avassaladoras, entendo completamente e vinculei meu código original na seção de recursos deste vídeo para que, se o seu não funcionasse, você pode consertá-lo e garantir que tudo esteja perfeito. Você incorre com o curso porque eu quero que você fique preso neste vídeo. Espero, no entanto, que este vídeo tenha explicado isso, esses conceitos muito bem. E se você copiou meu código exatamente como eu gosto disso, você deve ter exatamente trabalho no programa de sódio. Role sobre ele para que você possa pausar o vídeo e ver se há algo diferente. Mas tudo deve funcionar bem. Basta verificar se você não escreveu mal nada como colisão ou colisor. E há alguns conceitos aqui, como comparar tag e velocidade, que abordamos rapidamente. Mas isso é só porque eles não são super importantes no momento. Eles são usados apenas para mover o movimento, para fazer o movimento do nosso personagem. Sempre vamos repeti-los. Vai se tornar muito mais familiar. Mas se você chegou a um ponto em que seu personagem pode se mover e pular, ótimo trabalho. Você deu um passo enorme e seguirá na jornada de desenvolvimento de jogos. Vejo você no próximo vídeo. 8. Seguida da câmera: Ei lá e bem-vindo de volta à unidade. Em nosso último episódio bastante longo, criamos nosso primeiro roteiro C-sharp e nos integramos ao Unity Editor, o que permitiu que nosso jogador se movesse pela cena e pulasse. Isso é ótimo. É um grande passo para tornar nosso jogo móvel uma realidade. E podemos realmente vê-lo em ação aqui, assim como fizemos da última vez. Para que possamos avançar e pular. E, obviamente, só podemos pular quando estamos no chão, o que é muito legal. O problema com isso é que, uma vez que chegamos ao fim, notamos o que acontece com o jogador porque estamos vendo esse meio para nós, como os desenvolvedores sabem, jogadores atualmente tramando para sua morte e o editor para o abismo. Mas os jogadores terão notado isso acontecendo. Então, para minimizar esse problema, o que vamos fazer é criar uma câmera seguindo o script. E vamos garantir que a câmera esteja sempre seguindo o jogador para garantir que sempre saibamos onde estamos como jogadores. Agora, atualmente estamos um pouco perdidos um editor. Então vou te ensinar outro truque rápido da Unity. Você pode clicar duas vezes na câmera principal e ela o levará de volta para onde você deseja. Você pode fazer a mesma coisa com o player ou o ambiente. Basicamente amplia. Se perdemos outra pessoa, eles eram como, Oh, onde estou? Clique duas vezes na câmera principal e você está de volta. Agora. Vamos entrar em scripts e fazer com que nossa câmera siga o script. Clique com o botão direito do mouse, crie um script C-sharp e vamos chamar essa câmera de acompanhamento. Certifique-se de não nomear sua câmera de script porque essa é uma palavra reservada. E eu fiz um tempo atrás e corri para problemas da Sony e não sei o que estava causando isso, mas felizmente, você não precisa cometer o mesmo erro que eu cometi antigamente. Então, agora vá para a câmera principal e certifique-se de que o script seguinte da câmera esteja assinado com sua câmera. Além disso, como uma nota geral, ao nomear scripts, certifique-se de não incluir espaços, pois isso tornará a unidade incapaz de ler o script porque esse nome aqui, a classe tem que se correlacionar com o nome do arquivo. E, obviamente, essa classe chamada meio que tem um espaço porque então o código não saberá quais as classes e se o comportamento do modelo começa e está uma bagunça. Então, certifique-se de que seja uma palavra. Agora, abra sua câmera segue o script e vamos começar criando uma variável como fizemos da última vez, exceto desta vez em vez de nos referir a um corpo rígido ou uma string, vamos nos referir a um objeto de jogo. E isso é basicamente apenas uma maneira extravagante de dizer que vamos fazer uma variável que armazena um objeto como abordamos logo no início do curso. Objetos ou qualquer coisa em nosso jogo aos quais podemos atribuir lógica. O player é um objeto, câmeras e objeto este ambientes até mesmo um objeto, o chão e o fundo de ambos os objetos. E sim, praticamente qualquer coisa que possa ter lógica atribuída a ele é um objeto. Então, vamos criar um jogador público de objetos de jogo. E isso realmente nos permitirá escolher um desses objetos e atribuí-lo ao nosso script. Então, se formos para nossa câmera principal, podemos realmente garantir que o script de acompanhamento da câmera esteja atribuído. O meu é. Mas se não acontecer, remova-o e apenas arraste-o para dentro. E podemos arrastar o jogador para essa coisa do jogador e criar um link para nossos objetos. Então, a variável player agora está vinculada ao objeto player, que é muito legal porque isso nos permite acessar todas as informações sobre esse objeto, incluindo sua posição atual, que é realmente, muito legal porque enquanto jogamos um jogo, tenho certeza que você pode ver a posição do jogador. Está em constante movimento e é por isso que nossa câmera não consegue rastreá-la. Se pudermos mover nossa câmera de acordo com a posição do jogador, será muito, muito bom para nossos jogadores fazerem isso. Vamos seguir em frente e excluir o método start. Não vamos precisar dele para este roteiro. E vamos para a Atualização que, como abordamos da última vez é o procedimento que Unity chama cada quadro. Obviamente, como estamos construindo uma câmera segue o roteiro, queremos garantir que a câmera e o local posicionem ou afundem cada quadro. Agora, para fazer isso, vamos aqui e vamos digitar transformada com um t minúsculo Isso é basicamente uma maneira de dizer qualquer objeto que esteja atualmente esse script anexado a ele, acesso a essa transformação, a transformação anexada a este objeto de jogo e ver se passamos o mouse sobre esse objeto de jogo, neste caso é a câmera porque é isso que os scripts anexaram a ela. Agora mova um ponto, podemos ver todas as diferentes partes de um transplante que eles podem fazer, transformá-lo oposição, transformar, escala local, transformar a rotação de pontos. Se alguma coisa que possamos pensar, vamos precisar de oposição ao transplante agora. Então, vamos transformar a posição dos pontos. Nós iríamos iguais. Então. Aqui é onde vem o Koopa. Porque fizemos um link para o nosso jogador. Podemos digitar a posição do ponto de transformação de ponto do jogador. Então, se apertarmos Enter assim, este é basicamente todo o código que precisamos para garantir que nossa transformação, nossa posição esteja sempre definida para a posição do jogador. Se executarmos nosso jogo, isso realmente se parece com isso. Agora você pode estar um pouco confuso. Só estou vendo uma tela azul. Sim, você pediu para introduzir a tela e a razão para isso é porque o componente z da câmera sempre tem que ser menor que o resto da cena. Caso contrário, exatamente o mesmo plano e não está capturando nada. Isso pode ser um pouco confuso porque é um jogo 2D, afinal, por que o componente z de alguma coisa importa? E geralmente não acontece. Mas só para garantir que, como regra geral, todos os seus componentes z de todo o resto estejam sempre definidos como 0 e a câmera é sempre menor que 0. Se for menos um, tudo bem. Se for menos 100, tudo bem. Mas menos dez é um bom ponto ideal. Agora, não queremos exatamente que a câmera sempre seja exatamente a mesma posição que o jogador por motivos óbvios. Em vez disso, o que vamos fazer é atribuir apenas especificamente a posição x da câmera ao player. E você pensaria que ele geralmente transformou oposição de x igual a jogador, essa sessão conceito ponto x. mas por alguma razão Unity não torna isso tão simples, o que é um pouco irritante, mas é tudo bem, porque na verdade é muito simples fazê-lo. Tudo o que precisamos fazer é usar essas ferramentas vetoriais 3s ou vetoriais que falamos sobre o último episódio. Para uma oposição transformada é igual a mu. Vamos digitar o vetor dois. Podemos ver que não é preenchimento automático porque eu tenho posição de transferência teta no caminho. Então vou em frente e excluirei isso e apenas tocá-lo novamente. Veja o vetor 2D, vetor três, desculpe. Em seguida, abriremos colchetes e vamos digitar transformação de pontos do jogador, ponto de posição de ponto x. E isso basicamente significa cada quadro, certifique-se de que minha exposição seja a mesma que os jogadores . Agora, essa é a única posição que queremos alterar. Não queremos mudar o y, não mudamos o z. em vez de trocar a placa ou a transposição do y e z, vamos apenas fazê-lo definido para a oposição transformada, ponto y e o oposição transformada faz Z. O que isso basicamente vai fazer é que isso vai fazer que a nossa posição esteja sempre definida para o PlayStation x, oposição no y e oposição no z. Agora, na verdade, existe uma maneira mais simples de fazer isso porque, como estamos usando apenas a qualidade de transformação do nosso objeto de jogo de jogador, podemos realmente usar um Transform. Basicamente diz: Ok, eu quero a posição, a rotação e a escala desse objeto. Não quero mais nada, o que é ótimo porque isso é tudo o que precisamos. Em seguida, podemos tirar todas essas palavras-chave de transformação. Na verdade, é só aquele porque estes estão se referindo a nós. E agora vamos jogar oposição não x. isso pode parecer um pouco inútil, mas armazenar um transformador é obviamente um pouco menos do que armazenar um objeto de jogo inteiro. Então, será uma boa prática de codificação. Podemos vê-lo aqui. Ele diz incompatibilidade de tipo e isso porque estava armazenando no GameObject. E agora ele está armazenando uma transformação e não sabe o que fazer consigo mesmo. Então, basta redesenhar esse jogador e ele se resolverá. Agora, se seguirmos em frente e clicarmos em Reproduzir, podemos ver que nossa câmera , de fato, estará seguindo nosso player da mesma forma que queríamos reproduzir como sempre no centro da tela. E quando saltamos e voltamos ao abismo, podemos ver exatamente por que isso acontece. Agora, isso pode parecer legal e pode funcionar bem, mas na verdade não queremos que o jogador esteja sempre no centro da tela. Queremos que isso seja um ligeiro deslocamento. Ouvi dizer que jogar meus jogos são os jogadores como eles estão compartilhando a maioria dos jogos, você descobrirá que é o caso. Vamos seguir em frente e criar uma variável de deslocamento. Vamos chamá-lo de flutuador público. Esta é a primeira vez que estamos usando carros alegóricos, eles podem parecer complicados e são apenas decimais. Isso é tudo o que eles estão lá. 0,50.20,45. Qualquer coisa que não seja um número inteiro é um flutuador em qualquer número real praticamente é flutuar? Vamos seguir em frente e digitar offset. Isso basicamente nos permitirá adicionar esse valor de deslocamento aos jogadores, a oposição transformada de x, que basicamente compensará a transformação. Então, se você pensar sobre isso, se o jogador for uma posição 0, nós executamos isso. Vamos para a posição 0 mais cinco. Então o jogador estará lá. Digamos que os jogadores lá, o ponto e vírgula estará aqui. Ou se dissemos que dois menos cinco estarão lá. Podemos alterar isso no modo de jogo, assim como temos feito com todo o resto, não faz tipo de vezes se começarmos nosso jogo, podemos ver na frente do pagador, mas eu quero mudar fora do jogo para estar lá. E podemos realmente salvar esse valor, 5,78, sair do modo de reprodução, digitá-lo diretamente. Então, quando começamos nosso jogo pela segunda vez, podemos ver que o jogador está exatamente onde deveria estar, bem ali. Na verdade, vou fazer seis porque acho que a peça ainda está muito longe para a direita. Sim, isso deve fazer o truque. Pode ser um pouco demais para a esquerda agora, mas nos depararemos com essa ponte quando nos depararmos com ela, você pode realmente preferir ter seu jogador do outro lado lá, que é bom se você fazer. Podemos alterar esse valor à medida que avançamos em nossa jornada de desenvolvimento de jogos. Essa é a melhor coisa sobre as variáveis. Mas, por enquanto, criamos um script muito básico que permite que a câmera siga o plano, o trabalho, e eu te vejo no próximo vídeo. 9. Estados de personalidade: Ei lá, e bem-vindo de volta à unidade. Agora, nos últimos episódios, criamos nosso primeiro roteiro C-sharp, permitindo que o jogador se mova ao longo da cena. E até adicionamos um script de seguimento da câmera para que sempre acompanhamos onde o jogador está. Como resultado, nosso jogo atualmente se parece com isso. Está em uma semi função de estado e podemos pular apenas um errado no chão que podemos pular, o que é muito legal, até chegarmos ao fim e depois seguimos. Semi funcional pode ser um pouco esticado. Mas, independentemente disso, neste episódio, vamos começar criando estados de jogadores. Este será o primeiro passo que vamos dar para criar um grande loop. Agora, se você não quer um loop de jogo é basicamente o fato de que você pode jogar, morrer de novo e morrer jogar quando, etc, você pode continuar jogando ou loop. E os estados nos permitirão determinar em que estado as jogam. Se ele está morto, se estiver vivo, se ele está esperando para ver se ele pode responder depois de um anúncio, se ele está pulando ou caindo. Obviamente, muitos daqueles que não vamos usar, não vamos codificar, saltar e seguir estados. Mas se não estivéssemos usando um mecanismo de jogo, pode ser algo que teríamos que fazer. Felizmente, porque a Unity tem esse grande componente Rigidbody que cuida de toda a gravidade para nós. Os únicos estados que trabalham com foco neste episódio, eu vou ser se o jogador está jogando ou se autorizado a se mover ou morrer, não autorizado a se mover. Comece entrando na pasta de scripts, clique com o botão direito do mouse, crie um script C-sharp. Vou chamar o meu Gerente Estadual. Depois que isso for criado, Google para o player e arraste seu script do Gerenciador de Estado para ele, assim. Agora vamos procurá-lo. Vou definir o escopo do gerenciamento e vamos começar exatamente como costumamos fazer criando uma variável. E essa variável será chamada de estado e será uma variável de string, pública. Assim, podemos vê-lo no estado da string do editor Unity. Agora, essa variável de estado nos permitirá verificar em que estado o jogador está atualmente. Vamos fazer isso. Vou fazer referência ao estado em outros scripts, como nosso script de movimento. Obviamente, no momento do script de movimento, é o que realmente diz ao jogador para mover cada quadro. Esta linha aqui diz ao jogador para mover cada quadro. Mas se a peça estiver morta, não queremos que ele mova cada quadro. Queremos que ele pare de se mover. Faremos isso fazendo referência a este roteiro. Agora, se você não tem certeza de como fazer isso, eu não o culpo porque isso demorou um bom tempo para aprender, mas na verdade é bastante simples. Se você já adivinhou, tudo o que precisamos fazer é criar uma variável que vincule ao script, assim como criamos uma variável que vincula corpos rígidos, inteiros, até outras transformações e GameObject, podemos fazer o mesmo aqui. Então, vamos digitar público. Em seguida, vamos digitar o nome Bosco State Manager. Vamos chamar essa declaração. Então, uma vez que fizermos isso, vamos voltar para o Unity Editor. Vamos selecionar nosso objeto de jogador. Vamos arrastar nosso script do gerenciador de estado para nossa variável de gerenciador de palco, o que nos permitirá acessar esse script a partir desse script, o que é realmente, realmente útil porque então o que podemos fazer, podemos ir aqui para corrigir a atualização e podemos digitar. Se você quiser fazer isso somente sob certas condições. Vamos chamar o estado de gerenciar George State. E podemos realmente acessar variáveis nesse script gerenciado por estado simplesmente digitando ponto e, em seguida, o nome da variável. Vou digitar dois sinais iguais. E então vamos dizer brincando com um P. maiúsculo por baixo disso. Vamos colocar nosso código aqui, o que significa que cada quadro, somente se estivermos no estado de reprodução, vamos definir a velocidade do ponto RB para isso. Caso contrário, não estamos. Isso pode ser muito legal porque quando entramos em Unity e batemos Play, podemos ver que realmente não nos movemos. E se eu entrar jogando no estado, começarei a me mover. Mas no minuto em que mudei algo de estoque, o que é realmente muito, muito legal , isso nos permitirá, como tenho certeza que você pode descobrir, fazer estados diferentes para o nosso jogador. O jeito que vou fazer isso é ir até o depoimento que acabei de escrever. E agora a última coisa que preciso fazer é garantir que esse estado seja atribuído com base no que eu quero que o estado seja. Quando eu começar, sempre vou querer que o estado seja igual a jogar. Começamos a nos mover. Mas quando eu colidir com algo, vou querer morrer. Quando eu colidir com um obstáculo, vou querer desencadear o estado de morte. Este estado de morte será exatamente o que parece. Vai tornar esse estado em data e , obviamente, não vamos mais nos mover. E o que é legal nisso é, na verdade, mais tarde, quando adicionamos efeitos de morte e todos os tipos de coisas assim, podemos usar a máquina de estado para simplificar esse processo. Vou excluir minha atualização porque não vou precisar aqui. E vou criar um novo evento de gatilho. Agora, se você se lembra do último episódio ou dois episódios atrás, tivemos nossos próprios eventos de colisão. E isso é basicamente dizer quando eu colido, faço isso e este código, obviamente, à medida que passamos, quando eu colido com o chão, quero definir a verdade. Vamos criar algo muito parecido aqui. Vamos anular em Trigger, Enter 2D na entidade acionada d é exatamente o mesmo que no collider em 2D. É só que o colisor é um gatilho. Então, porque nosso jogador vai usar um colisor normal, você pode estar, por que estamos usando um gatilho? Mas a razão é, na verdade, porque os obstáculos que vamos adicionar em um segundo, vamos usar gatilhos para que evento de gatilho seja ativado quando um colisor acerta um gatilho, mas ele não ativa quando colidiu de cabeça para colisor. Vamos entrar aqui e em nosso evento de gatilho. Agora, essa será uma longa linha de código e usará alguns conceitos. Ainda não fomos lá. E a razão pela qual eu não fui por cima deles é porque eles não são incrivelmente fundamentais neste momento do curso. Mas unidade, uma vez que usá-los por algum motivo. Podemos ir até aqui. Se formos aqui, podemos ver que acabamos de dizer colisor de pontos de colisão ativando onde quer que ele esteja no escuro em comparação com a nossa verificação de que a etiqueta está moída. Mas quando usamos trigger, temos que digitar uma linha de código muito mais longa que seja assim. Se a colisão cair, sim, componente, parafuso aberto, suportes abertos. E vamos dizer que o colisor de polígono 2D comer é esse o tipo de planador que usaremos para nossos inimigos. Então vamos colocar parênteses, George, comparar tag, outro colchetes abertos, e depois obstáculo. Agora você pode estar indo, o que no mundo e nós apenas escrevemos, e eu não o culpo porque isso está usando todos os tipos de conceitos que eu não queria ensinar neste momento do curso. Na verdade, não sei por que Unity nos faz usar todos esses conceitos para uma linha de código tão simples. Na minha opinião, não entendo por que o ponto de colisão inconsciente Colorado teve apenas porque geralmente o gatilho, mas por qualquer motivo geralmente uma vez assim e eu tentei em um anterior tópico deste vídeo, faça-o do outro lado e causa todos os tipos de problemas. Então, basta copiar o código exatamente como eu. E não se preocupe se for um pouco confuso. Componente fgetc de ponto de colisão de Buda aberto ou menor que sinal, então colisor de polígono 2D maior que sinal, suporte aberto, etiqueta de comparação de pontos de colchete fechado, suporte aberto, aspas, aspas de obstáculos fechar o suporte, suporte fechado. E então vamos escrever em nossa declaração if, estado é igual a verdade. Agora, a primeira coisa que vamos fazer para verificar se isso funciona é que vamos fazer isso para que nossa colisão, vamos fazer um novo colisor, um novo objeto. Estou chamando de obstáculo e vejo se paramos de nos mover quando o atingimos. Então, vamos até aqui para a pasta de ativos do curso. E vamos clicar no triângulo e arrastá-lo para nossa cena. Assim. Agora, a primeira coisa que vamos fazer é escalar esse triângulo para baixo. Mova para lá. E vou fazer o meu vermelho. É uma cor decente. Vermelho mais escuro. Mestre como a cena. Lá vamos nós. Agora, o que precisamos fazer é ter certeza de que quando colidiremos com esse obstáculo, tratamos o estado morto. Mas, obviamente, esse obstáculo não tem a etiqueta do obstáculo. Então, para mudar isso, precisamos ir aqui, você tem tag de adição como fizemos da última vez e digitar obstáculo. Exatamente como eu escrevi, capital O. Então vamos aqui. Vamos clicar, desculpe, não no jogador, no triângulo em que vamos clicar aqui. E quando você clica em obstáculo, agora, ele tem uma etiqueta de obstáculo, mas ainda não temos um colisor anexado a esse triângulo. Vamos precisar fazer esse tipo add component, o colisor de polígono do colisor de polígono 2D anterior. E certifique-se de que seja um gatilho. Podemos ver que isso está perfeitamente em torno do nosso triângulo. Se clicarmos em jogar, devemos recarregar nossos conjuntos de scripts e, em seguida, devemos mover, mover, mover, mover, pegar nosso jogador. Perfeito. Assim que colidirmos, o estado morto é acionado. Isso realmente vai ser o início de um outro grande pau e eu vou a jornada de desenvolvimento de jogos. Acabamos de criar uma espécie de mini máquina de estado. Esta mini máquina de estado nos permite rastrear quando o jogador está morto ou vivo. E vou mostrar como é fácil expandir isso no próximo episódio. Mas se o seu código é funcionado como o meu, ótimo trabalho como sempre, desvincule meu código original nos ativos dos recursos do vídeo. Se o seu não funcionasse, mas bom trabalho. Todos deveriam estar trabalhando, aparentemente bem. E te vejo no próximo vídeo. 10. Nosso loop de jogos: Ei lá e bem-vindo de volta à unidade. No último episódio, criamos nossa primeira máquina de estado, que nos permitiu, ao jogar o jogo, ter o jogador em dois estados diferentes, ou seja, jogar quando não atinge o obstáculo e a dívida assim que pois atingiu o obstáculo. E isso pode não parecer uma cadeia muito grande. Isso é realmente muito, muito bom e é um grande passo na nossa jornada de desenvolvimento de jogos, porque vai fazer muito do trabalho que precisamos para fazer um loop de jogo funcionando. E um loop de jogo em termos simples, é basicamente qualquer coisa que nos permite jogar um jogo ou vencer e perder e tentar explicar novamente de outra forma, você pode pensar em um loop de jogo como um processo a fazer certeza de que o jogador não precisa reiniciar o aplicativo toda vez que quiser interromper o jogo, obviamente em nosso jogo. Agora, se você jogar nosso jogo e perder, e Emily, se você acertar o obstáculo, a maneira mais cedo de continuar jogando obviamente é reiniciar o jogo. Queremos mudar isso. A primeira coisa que vamos fazer é entrar no script do Gerente Estadual. E, na verdade, ao longo de todo o seu absoluto, estaremos apenas editando os manuscritos estaduais. Vou fazer o upload de uma versão atualizada do manuscrito estadual no final. Mas vamos editar o que tivemos da última vez. Então clique duas vezes no State Manager. Quando isso for carregado, você começará criando um novo procedimento. Então você vai aqui e vai digitar público, vazio morrer. Esse nome muito horrível para um procedimento será basicamente o código que executamos quando o jogador estiver morto ou tiver um estado morto. Você pode vê-lo aqui onde os alunos podemos viver um obstáculo ou morrer. Acabamos de definir nosso estado em dívida, mas realmente queremos chamar esse procedimento morto e, em seguida, fazer toda essa configuração dentro deste procedimento por várias razões. O principal é que, dessa forma, podemos adicionar efeitos de profundidade ou adicionar um temporizador para responder, o que faremos neste episódio. Também coisas. Vamos fazer com que ele corte esse código e cole aqui. E eu realmente vou mudar isso para um D maiúsculo porque acho que parece melhor se for P maiúsculo e um D. Em seguida, aqui, sob estado DI frio, parênteses e ponto-e-vírgula, agora começou a morrer procedimento. Agora, quando atingirmos um obstáculo, vamos chamar esse procedimento. Vou definir meu estado morto. E tudo deve funcionar mesma forma que está faltando o tempo todo. Você deve ter um programa em funcionamento que faça o seguinte. Deve correr, correr, correr, ir junto como da última vez. Assim que atingirmos que devemos parar mover assim como tínhamos antes. Então, o que é realmente legal nisso é agora podemos a partir deste procedimento, inscrever ou responder procedimento se formos aqui e formos a público, nulo e vamos ligar para isso com o telefone. Coloque parênteses abertos. E eu responderei. O procedimento vai nos colocar volta à posição que queremos estar no início. Queremos ter certeza de que voltamos à nossa posição inicial 0 gerada. E então eu vou definir essa posição forte para ser onde eu quero começar o lugar. Vou me mover para jogar aqui embaixo. E eu vou dizer, ok, esta é uma boa posição forte. É menos 8,52 e menos 1,69. Vá até aqui e vamos fazer forma da França, como lembrar o código de script da câmera, nos referimos a transformar sendo o objeto do jogo anexado ao script. Exatamente a mesma coisa aqui estamos nos referindo à transformação de um jogador. posição do ponto é igual. Mais uma vez, vamos usar um vetor três, novo vetor três, suporte enrolado aberto, desculpe, colchetes normais. E vamos digitar menos 8.521,69. E, claro, 0. Agora, tudo isso deve funcionar perfeitamente, mas podemos vê-lo aqui. Ele diz que não pode converter de fluido duplicado. Isso é basicamente porque não dissemos à unidade que o que armazenamos aqui são decimais. Acabamos de dizer. Estes são apenas dois números que colocamos. Pontos em. Unity vai automaticamente ficar confuso quanto ao que eles são. Eles vão pensar que foi um duplo é um flutuador. Então, para minimizar isso, vamos simplesmente colocar a letra F, f minúscula depois de ambos os anos, você saberá que estes são dois carros alegóricos e estamos prontos para ir. Agora, antes de voltar para o Unity, eu realmente tenho que me certificar de que chamo esse código de resposta do código de tinta. Deixe-me ir aqui. Vou resposta fria, o que significa que assim que eu morrer, coloquei meu estado morto. E então eu respondo, bem, isso realmente vai fazer é que me faça responder, mas eu ainda vou estar no estado morto. E isso vai parecer um pouco assim. Um ir viajar, viajar com problemas com problemas, morrer, e depois voltar aqui e ainda estar no estado morto. Você pode ver que eu não estou me movendo porque estou no estado morto, mas na verdade não queremos que isso aconteça. Queremos continuar em movimento. Então, vamos transformar Sarah, e então vamos definir nosso estado volta igual a reivindicação. Esta é a nossa primeira instância do que é um loop de jogo, porque agora podemos ver se atingimos o jogo, podemos avançar, seguir em frente. Se morrermos, responderemos volta para onde estávamos e podemos jogar o jogo. Na verdade, se saltarmos sobre isso, o que sou justo fazer isso, não vou fazer. Nem sei se isso é possível porque estou viajando meia milha por hora, mas sim, não é. Mas se fizéssemos nossa velocidade de jogo aqui, se fizéssemos meu discurso e minha vida antes, e então eu pulei no momento certo. Eu posso realmente passar por cima disso e eu poderia continuar jogando. Obviamente, agora vou ter problemas porque não terminamos de construir o mapa. Esse é o básico de um loop de jogo. E, na verdade, a última coisa que vamos fazer neste episódio é que vamos mudar a velocidade para três porque dois são apenas um pouco lentos, mesmo para fins de teste. Se você tem tudo funcionando como eu, você fez seu primeiro tema. Agora, a única coisa que precisamos fazer no próximo episódio, vamos adicionar um pequeno temporizador para que não respondemos imediatamente, morremos e depois respondemos. E é aí que nossa máquina de estado virá ainda mais útil, mas contra isso na próxima etapa. Então, o que você deve ter agora é um script de resposta normal. E se estiver funcionando perfeitamente bom trabalho. 11. Timers: Ei lá, e bem-vindo de volta à Unity. Agora, em nosso último episódio, criamos nosso grupo de jogos, que é outro grande passo para que nosso jogo móvel seja concluído. E se clicarmos em Jogar, podemos realmente vê-lo em ação aqui no que fizemos da última vez. Vamos avançar e no minuto em que morrermos, voltamos ao início, o que é muito, muito legal. Agora, há alguns problemas com isso, no entanto, antes de tudo, não há tempo no dia porque geramos praticamente assim que morremos, o que não é o ideal. E em segundo lugar, estamos gerando um pouco mais alto do que eu originalmente pretendia. Quando eu estava assistindo vídeo de volta, percebi que inseri o valor errado. Entrei em 1,69 em vez de menos 1,69. A primeira coisa que vamos fazer neste curso é que vamos seguir em frente neste episódio, irmão é que vamos seguir em frente e consertar isso. Então, vou voltar ao meu roteiro que fiz da última vez e adicionar um menos. Agora isso deve parecer um pouco melhor. Mas nosso problema antes de desova assim que morremos ainda é aquele que precisa ser resolvido. Se apertarmos Play aqui, veremos que estamos viajando, viajando. Nós derramamos agora mais baixo, mas ainda colhermos assim que morremos, o que não é ótimo. Então, para corrigir esse problema, vou apresentar um temporizador que nos dá um pouco de tempo de um T2 de meados dos anos 90 e responda novamente. Então, podemos realmente ver nossa máquina de estado em ação. Deixe-me ir em frente, ainda abra o script do State Manager. E eu vou fazer é um processo bem simples, mas vai estar usando um termo muito desconhecido e procedimento um numerador IEE mais frio. Agora, eu enumerei aqui, anote isso. Funciona de forma semelhante a um procedimento. Vou chamá-lo de atraso. Coloque parênteses e, em seguida, coloque colchetes. Agora, para ser totalmente honesto, usei, enumera por muito tempo sem saber o que eles fizeram assim como comandos de atraso de tempo ou comandos de espera. E isso está perfeitamente bem. Eu enumeradores são um pouco mais complicados do que isso. Eles precisam retornar um valor. Como você pode ver, é um pouco desconhecido para nós neste momento do curso. Mas, por enquanto, tudo o que você precisa saber sobre eles é que eles são os dois que vamos usar para atrasar. E vamos escrever código que diz rendimento, retorno, novo. Espere, um segundo, colchetes abertos, um ponto e vírgula. Então vamos chamar o procedimento de resposta. Agora, a última coisa que precisamos fazer é, em vez de ligar para responder diretamente aqui, vamos chamar start co-rotina, parênteses abertas, atraso, parênteses e, em seguida, um ponto-e-vírgula. Você pode estar pensando O que o **** nós acabamos de programar? E eu não o culpo porque acabamos de adicionar uma coisa completamente desconhecida e depois um comando completamente desconhecido. Mas eu realmente não quero entrar em cada uso dessa coisa porque isso não é realmente tão importante em nosso curso. Na verdade, você pode fazer jogos para dispositivos móveis usando esses jogos como meses. E para meus primeiros jogos para celular, tudo o que fiz. Tudo o que estou fazendo aqui. Você pode pensar nisso como se eu estivesse apenas chamando um procedimento e o procedimento está chamando agora o procedimento. A única razão pela qual o procedimento parece diferente é porque ele tem que ser usado para esperar um pouco. E eu não quero entrar em toda a logística que agora porque vai ficar bastante complicado e não é muito útil. Basta pensar nisso como iniciar a corrotina, que basicamente é apenas uma palavra extravagante para o procedimento de loja que pode esperar, depois metade de um procedimento que pode esperar e, em seguida, iniciar meu novo procedimento. Esse código pode parecer um pouco desconhecido como eu disse antes, não se preocupe com isso. Se você anotá-lo como eu fiz, ele deve funcionar perfeitamente bem. E não vamos ter muito mais em que eu enumerei porque é um pouco mais complicado do que precisamos voltar ao meu jogo agora. E clico em Jogar. Podemos ver que devo seguir em frente , seguir em frente, morrer. E depois de uma segunda resposta, o que é muito melhor do que o que tínhamos antes, o que é ótimo. Se você tem esse bom trabalho. Isso fazia parte de um pequeno episódio porque eu só queria apresentar o assunto dos horários. Mas, como eu disse, pode ser um pouco desconhecido. Não se preocupe com isso. Apenas certifique-se de que seu código esteja funcionando como o meu. Obviamente vou fazer o upload do meu código como tenho feito esse tempo todo. Então você pode baixá-lo se tiver um problema. Mas se estiver funcionando um bom trabalho e eu te vejo no próximo vídeo. 12. Gerando nosso mapa: Ei lá e bem-vindo de volta à unidade. Agora, nos últimos vídeos, criamos um jogo móvel semi funcional onde você pode avançar. Se você morrer, você responderia e pode pular sobre isso e continuar. Mas o problema que surge se você pular sobre o triângulo, você não pode fazer nada para parar inevitavelmente cair no abismo. E isso porque o mapa termina está lá. Neste episódio. O que queremos fazer, queremos criar um mapa que continue para sempre. Agora, existem duas maneiras de fazer isso. Primeiro, poderíamos apenas fazer essa parte do mapa se mover com o jogador. Nós meio que sempre como família é que nem todos fazem o mesmo e nunca ficamos sem matemática, mas isso é muito chato. O que vamos fazer é criar um sistema que gera partes do nosso mapa para nós. Quando chegarmos a certos pontos, se eu chegar lá, criarei uma nova parte do nosso mapa para nós, o que é muito, muito legal. A razão pela qual isso é tão legal é porque nos permite ter um mapa infinito variado que possamos mudar a altura que eles vão, podemos mudar o comprimento se quisermos. Obviamente adicionará tudo isso mais tarde quando aprovarmos todos os jogos para celular. Mas, por enquanto, vamos conseguir. Então todos falaram na nossa frente para que possamos ter um mapa realmente funcionando. Agora, a primeira coisa que vamos precisar fazer é que vamos precisar tornar esses segmentos de mapa menores, porque acho que segmentos de mapas devem ser tão grandes. Vamos fazê-lo para que o triângulo se coloque. E então a segunda coisa que precisamos fazer é realmente transformar esse segmento de mapa em um pré-fabricado. Em nosso pré-fabricado, você pode pensar nisso como um selo. Quero copiar tudo neste objeto, transformá-lo em um arquivo que eu possa colocar no meu jogo. Eu faço isso. Na verdade, é só pegar este andar e eu arrastá-lo para a pasta de ativos e solto. Ele cria um arquivo prefab para mim. E então eu posso arrastar esse arquivo pré-fabricado para minha cena e gerá-lo como eu queria. E vamos fazer isso com código. Mas isso é muito legal porque então, se eu for em frente e eu mudar algo sobre isso, por exemplo, fazendo essa cor amarela clara e estranha. Ele muda todo o prefab para que eu possa atualizar isso como eu quiser, e tudo será atualizado com ele, o que é muito, muito legal. Obviamente, precisamos fazer o código que realmente os gera. Mas antes de fazermos isso, primeiro vamos adicionar outro colisor. Agora essa parte é muito importante. Vamos entrar no nosso pré-fabricado e já temos um colisor de caixa, mas queremos adicionar um colisor de gatilho. Vamos ir em frente e adicionar um colisor de borda desta vez, isso vai ser edge collider 2D. E vai ver uma linha verde. É assim que o controle deslizante Edge. Em seguida, vamos clicar neste botão aqui que diz Editar Collider. E vamos clicar nele e vamos arrastar isso, deste lado aqui onde a caixa aparece até lá. Eu diria que, desde que seja cerca de dois terços do comprimento acima, tudo bem. Então vamos seguir em frente e desmarcar este menu de pontos e vamos copiar, vamos mudar isso para um para que fique mais fácil de armazenar. E então vamos copiar o elemento um, a mesma posição em que ambos estão armazenados ali. E então a última coisa que vou fazer é mover um pouco para cima. Certifique-se de que este seja um aço. O que eu basicamente fiz foi que movi a exposição governamental de um ponto desse ponto, desmarcando este menu de pontos. Então simplesmente tomei isso e curso cognitivo e, em seguida, fez os valores y para que eles pareçam uma parede que você não pode passar, que é exatamente o que queremos. E, obviamente, se eu jogasse agora, eu iria lá e pararia , não conseguiria passar. Então, se eu fizer isso um gatilho, poderei passar perfeitamente. Mas isso realmente cria alguns problemas para nós. Lembro-me mais cedo quando estava editando um dos nossos scripts anteriores, acredito que foi esse gerente estadual aqui. Podemos ver que temos um evento de gatilho desconhecido. E se você se lembra de mim dizendo, lembro-me de dizer que essa era uma maneira muito, muito complicada de chegar onde a etiqueta do objeto. E eu estava certo, é muito estúpido. E não era realmente o que precisamos fazer. Unity não exige que escrevamos toda essa linha de código. Podemos realmente tirar tudo aqui e substituí-lo por ponto GameObject, tag de comparação de pontos. E isso fará exatamente a mesma coisa para nós. E a razão pela qual isso é tão útil é porque aquela maneira anterior era pegar o colisor e, em seguida, obter o objeto do jogo, que foi um pouco tedioso. Desta forma, é muito mais simples , porque então podemos apenas obter o GameObject. Quero que você vá em frente e faça manuscrito estatal e mude isso para objetos escuros do jogo. Então, tudo funciona perfeitamente. Você poderia ter deixado como está, mas acredite em mim, você terá problemas mais tarde. Não vale a pena apenas mudar para o objeto D2L e tudo deve funcionar bem. Então vamos encontrar um novo roteiro. Vamos fazer algo muito parecido. Mas primeiro vamos testar isso funciona. Se isso acontecer, devemos ser capazes de morrer assim como fomos. E responda. E você pode ver que funciona perfeitamente. Então vá em frente e certifique-se de mudar isso para colisão de objetos do jogo. A razão pela qual eu senti que era o método mais complicado estava causando uma tomada anterior. Eu tinha escrito de forma semelhante a isso e unidade me disse que era obsoleto e antigo. Então eu presumo que essa era a única maneira de fazer isso, mas acho que havia outra maneira mais simples. Então minhas desculpas por isso, mas apenas certifique-se de corrigi-lo tag de comparação de pontos GameObject ponto de colisão. Isso é muito mais simples. Então, podemos realmente ir em frente e criar nossos novos scripts. Vamos clicar com o botão direito do mouse aqui. Vou criar um script C-sharp. Vamos chamar esse criador de mapas. Na verdade, vamos adicionar esse script ao jogador. A razão pela qual podemos adicioná-lo aos jogadores porque queremos gerar o mapa em relação à posição do lugar. Então, se eu for em frente e arrastar isso para um jogador assim, podemos ver que tenho meus mapas, hash o jogador. Agora, quando eu chegar a pontos no meu código onde eu quero gerar uma peça de mapa para jogar passará por ele e ele vai dividi-las na frente da peça, o que ele fez exatamente o que eu quero. Então, a maneira como vamos verificar onde estamos fazendo isso é com esse colisor que adicionamos, obviamente temos um planador de gatilho. Então, vamos dizer sempre que o par passar por cima gatilho Collider cria uma nova peça do mapa, o que é perfeito. Na verdade, vou entrar no meu código aqui onde eu tinha, vou para a declaração do código. Vou copiar isso para o gatilho de ventilação exatamente como é. Copie. Então eu vou abrir meu novo script, o script gerador de mapas. Vou excluir estes e o que colocá-lo lá. Anular na entidade trig. A única coisa que vou fazer aqui é mudar essa etiqueta de obstáculo para terra. Você vai se lembrar que foi a etiqueta fizemos para o chão mais cedo. E vou excluir esse procedimento e substituí-lo pelo meu procedimento de instanciação, que vou fazer um segundo. Agora que vou evitar que prefabs sejam brevemente, vou te mostrar como colher por curvas. O que vamos fazer, vamos para o nosso roteiro aqui, e vamos criar uma nova variável, pública, e vamos criar uma referência a um objeto de jogo. Agora lembre-se, fizemos isso antes com nosso script de seguimento de câmera, onde primeiro criamos um objeto de jogo e depois mudamos para uma transformação porque percebemos que não precisávamos de um objeto de jogo. O melhor dos objetos do jogo é que podemos realmente armazenar todas as entidades em cenas Unity, bem como outros arquivos de ativos que são objetos como prefabs. Podemos armazenar prefabs em objetos do jogo e , em seguida, estragá-los via código vai ser objeto de jogo público agora chamado chão. Vá até aqui e eu mudo este código e eu faço dele um espaço de objeto de jogo G maiúsculo e depois colocá-lo onde eu quiser chamá-lo de uma peça de fluxo de mina de carvão que vou colocar um sinal de igual. Então vou escrever a palavra instanciar. Vou abrir parênteses. Vou digitar o fluxo a variável desta vez. Então vou escrever como e, novamente, um objeto de jogo G maiúsculo. Agora você pode estar um pouco confuso sobre o que exatamente estamos fazendo aqui. Mas basicamente o que esta linha de código está dizendo é dizer, ok, temos essa variável aqui, que vamos vincular ao fluxo. Vá aqui, role para baixo e arraste o fluxo para dentro. Agora há um link entre eles. Então, a saída é esse objeto que vamos colocar agora estão dizendo: Ok, quando colidirmos com um gatilho que tem o rótulo terra, em outras palavras, quando passarmos esse ponto, eu quero instanciar, o que significa criar fluxo como um objeto de jogo e armazená-lo nessa variável local. Lembro-me de que fomos às variáveis locais há muito, muito tempo, em nossa introdução ao vídeo C-sharp. Mas, basicamente, elas são apenas variáveis que você pode referenciar apenas neste método porque vamos fazer todo o objeto nesse método. Isso é perfeito para nós. Basicamente, o que essa linha de código vai fazer vai colocá-la em algum lugar, mas queremos controlar pastas de trabalho. Então, sob a cena, vou transformar a peça de fluxo. Lembre-se de que é sua posição, rotação e escala. posição do ponto é igual ao novo vetor três. E então vou andar nas três posições onde quero que a nossa transformação esteja. Obviamente, eu sei que quero que meu z seja 0, quase 0 por enquanto. Eu quero que meu z seja 0 e eu quero que meu y seja algo na parte inferior da tela, mas meu x, obviamente, sempre vou querer ser diferente porque se eu estiver me movendo, movendo-se, movendo-se ao longo, então eu quero gastar alguém, se eu sempre inseri dizer esse valor menos quatro e seguir em frente, ele estava seguindo exatamente o mesmo lugar. Ou se eu, mesmo se eu terminasse o valor aqui, menos três quando cheguei àquele, aquele prefab que teria esse gatilho. Bem, eu quero apenas avisar a terceira peça. Ele o colocaria no mesmo lugar, o que não é ótimo. Na verdade, quero gerá-lo em relação à posição do lugar. Não faria isso. Vamos encontrar o deslocamento assim como fazemos com nossa câmera segue o script com variáveis. Mais uma vez. Vou voltar aqui e vou digitar public int offset. Na verdade, vou seguir em frente e digitar um valor y semelhante a este. Então todos falaram com o mesmo valor y. Se eu fizer isso menos 4.6417, vou colocar isso no meu valor Y. Então aqui, eu vou dizer, não se esqueça de colocar seu FM para que ele saiba que é um flutuador. Então, aqui, vou dizer transformar, minúsculas t, significando a transformação ali. Isso é anexado, neste caso, ao jogador que é perfeito, posição x mais deslocamento. Isso vai fazer isso. Essas duas linhas de código basicamente vão dizer, ok, quando eu colido com alguma coisa, quando aciono meu evento, isso significa que quero gerar um novo pedaço de terra. Vou criar uma nova variável, variável local, e vou chamá-la de peça de fluxo. E essa variável realmente vai criar um novo objeto para mim e colocá-lo na cena. E então esse objeto, vou colocar em uma posição menos 4,6 para y, que é em torno de van. Eu vi zeros. E então, onde quer que eu esteja mais um certo valor, podemos realmente ver isso em ação se eu simplesmente for em frente e simplesmente aqui, e eu coloquei o valor cinco para o deslocamento. Não sei se isso vai funcionar. Pode estar um pouco perto demais, talvez um pouco longe demais. É por isso que usamos variáveis. Mas vou experimentá-lo. Se eu for aqui, desça aqui. Podemos ver que, na verdade, está muito perto. Podemos ver que esses dois estão realmente sobrepondo-os aqui um pouco, mas estamos criando um mapa como queríamos. Então vou seguir em frente e mudar isso para algo mais como dez. Vamos ver o que isso parece. Se eu carregar meu jogo novamente, podemos ver que estou criando uma peça de mapa quase perfeitamente logo depois, o que é bem legal. Mas eu realmente quero tornar o jogador um pouco mais rápido e quero fazer essas peças de matemática também um pouco mais distantes. Vou mudar isso para 12 e vou mudar a velocidade do meu lugar para cinco. O que deveria acontecer agora é que tenho um mapa no qual posso pular. Muito mais fácil, vou ser muito mais rápido agora você pode ver que tenho que pular e acertá-lo para que eu pouse em cada novo segmento de mapa, que é muito legal porque o mapa será criado à medida que avançarmos, o que é muito, muito legal e podemos realmente começar a torná-lo mais interessante. Mas antes de fazermos tudo isso, precisamos criar um pouco mais de código para garantir que não estamos desordenando nosso inspetor de objetos, se formos até aqui e formos aqui, desculpe, Vou hierarquia, podemos ver as plantas baixas estão sendo criadas lá. Esses clones de fluxo são os prefabs que estão em estatuto no jogo shell. Podemos ver que eles estão apenas se enchendo e não estão sendo destruídos. E eu não preciso mais disso porque não uso mais. Então, o que vou fazer é fazer um novo roteiro. E eu vou dizer, quando minha posição, significando a posição, vou anexar o script a essa peça de fluxo ao pré-fabricado. Vou dizer qual é a minha posição menor que a do jogador mais uma certa quantia. Então, quando eu estiver muito mais longe da câmera, me destrua. E isso vai ser um roteiro muito simples. E vou clicar com o botão direito do mouse em criar um script C-sharp, e vou chamar esse fluxo. Então vou simplesmente ir em frente e abrir o fluxo. E vou dizer nas regras de atualização, primeira coisa que preciso fazer antes de fazer que ela é que preciso criar novas variáveis. Sei quais são os transportes públicos com jogadores. Transformação pública, assim como usamos para a saia de contra-fluxo, vou chamar esse jogador. Então eu vou seguir em frente aqui e vou dizer que jogador transforma ponto ponto posição ponto x. e essa será minha única coisa nesta ferramenta aqui. Só estou dizendo que minha posição de transformação ponto x. Agora, vou dizer se minha localização atual no plano x é menor que a conversa local e explique. Quero ir em frente e me destruir. E o jeito que vou fazer isso é que vou digitar destruir assim. Abra colchetes e, em seguida, objeto de jogo minúsculo. Isso está basicamente dizendo destruir-me porque o objeto minúsculo do jogo está se referindo a qualquer objeto de jogo ao qual este script está anexado, caso em que estamos falando sobre o chão. Este prefabricado, bem, isso vai fazer é quando minha posição for menor que a de um jogador, me destruir. Mas tenho certeza de que você pode descobrir que a exposição dessas peças de fluxo será menor do que o jogador quando eles estiverem por aí. Mas ainda não queremos desenhar porque ainda precisamos deste andar. Onde realmente vamos fazer é dizer qual é a minha posição menor do que expedição para o jogador menos e, em seguida, outro valor de deslocamento. E vamos fazer isso menos dez porque não precisa ser exato. Só tem que ser um pouco mais de margem de manobra para que saibamos que não a destruímos. Assim que o pausarmos. Se isso funcionar ou deve acontecer, é que cada quadro devemos verificar se estamos muito longe e, se estamos, devemos nos destruir. Vamos apenas economizar desempenho a longo alcance é muito bom. Vou em frente e vou para o meu andar prefabricado aqui. Vou clicar em Adicionar componente e vou escrever o nome do script que acabei de criar. E podemos ver que na verdade está aqui. Podemos somar dívidas e então eu só preciso adicionar a transformação do jogador. Mas não é tão simples porque isso não é um pré-fabricado. E, novamente, não podemos simplesmente arrastar e eu vou interpretar uma mulher trans como fizemos antes. Na verdade, precisamos atribuir isso via código também. Voltaremos aqui. Vamos digitar estoque vazio que excluímos anteriormente, mas podemos simplesmente voltar fazendo isso. Então diremos que o jogador é igual. Isso vai ser executado assim que formos instanciados. Assim que criamos, iremos o G GameObject dot phi maiúsculo , o que significa pesquisar editor, suporte aberto. E então vamos colocar aspas e frio como jogador. Porque podemos ver que nosso jogador é chamado de jogador. Na verdade, vamos pesquisar a integridade agora. Transformação de pontos. Isso vai dizer, ok, quando eu gerar, procurar um jogador, encontrar pontos GameObject, o que significa procurar a posição do jogador e, significa procurar a posição do jogador em seguida, não se posicionará exatamente, mas essa é uma maneira simples de dizer posição e, em seguida, coloque-a nessa variável. Agora, se isso funcionou, o que deveria acontecer? Devemos começar nosso jogo. Podemos ver que assim que criarmos uma peça de fluxo, podemos pausar o jogo e podemos olhar aqui. Esta peça de fluxo realmente atribuiu a transformação do jogador aos seus codificadores R estavam perfeitamente em cima disso se criarmos um novo fluxo, porque podemos realmente ver a antiga peça cheia é destruída bastante muito exatamente quando terminamos nossa tela, o que é perfeito porque significa que, se você olhar na tela, não poderá ver nenhum problema com ela. Está funcionando perfeitamente. Mas como estamos fazendo um fora da tela, as peças do chão realmente estão sendo destruídas, o que é muito, muito legal. A última coisa que vamos adicionar é porque esses focos estão sendo criados bem na nossa frente. Isso parece um pouco não ótimo. Não parece, não parece muito legal. E o que queremos fazer é queremos fazê-lo para que eles estejam instalados dois à nossa frente. Então, queremos pegar este pedacinho e queremos dizer mova isso para a cabeça. Do jeito que vou fazer isso, vou para a fábrica. Não mudei esse deslocamento para algo como 30. Então será bastante 24, na verdade, isso é exatamente dobrado. Assim que definirmos esse valor, vamos fazer mais uma coisa. Vamos para cá. E em vez de ter um, vamos colocar dois no início do jogo, pois tenho certeza que você está pensando, se colocarmos um lá, vai para a escola muito longe para nós saltarmos para , o que não vai funcionar. Agora, se jogarmos o jogo, devemos ser capazes de encontrar um ponto ideal para onde queremos que esta colher sem ter que pular para cair. Acertamos Play. Você pode ver que ele é gerado perfeitamente onde queríamos e sempre está mapeado para saltar. Nunca há nenhuma lacuna um pouco maior às vezes, e uma lacuna ligeiramente menor às vezes, que é nossa própria visão inovadora e criativa neste jogo. A razão pela qual essas lacunas estão acontecendo é por causa de nossas duas coisas iniciais não estarem exatamente com 24 unidades de distância. Então, obviamente, se você quiser, você pode mover isso até obter menos lacunas ou mais lacunas onde quiser. Vou deixar meus fenômenos, colocar o meu sobre isso porque acho que as lacunas realmente adicionam um pouco de personagem ao nosso jogo. Se continuarmos aqui, podemos ver uma lacuna um pouco maior e uma grande lacuna. Minimizei um pouco o problema. Todos eles parecem bastante semelhantes, como se você quiser usar minhas coordenadas, você pode. Eles são menos 4.89888.38, o que é muito bom em termos de não obter uma lacuna. Mas o que é realmente ótimo é que nós realmente demos um grande passo novamente em direção ao nosso jogo móvel sendo feito. Agora temos um loop de jogo e um mapa infinito, o que significa que tudo o que resta a fazer é fazer algum tipo de obstáculo que gera em todos estes, obviamente com um pouco de variedade, que seremos fazendo na próxima etapa. E temos um jogo para celular que está praticamente feito, o que é realmente, muito bom. Agora eu entendo que isso foi um episódio um pouco complicado. Tenho certeza que muitos dos conceitos que passamos aqui foram um pouco confusos, especialmente com esses negócios prefabricados instanciadores. Se você precisar assistir novamente, eu entendo completamente. Se você não quiser assistir novamente, isso também é bom porque obviamente vamos cobrir esses conceitos um pouco no futuro quando nós, especialmente no próximo episódio em que estamos vai instanciar triângulos, fazê-los também, e também colocá-los nessas peças do chão do bloco, assim como precisamos. Mas vamos entrar nisso um pouco mais tarde. Se você passou por episódio e seu funciona perfeitamente bem. Ótimo trabalho. Se você precisar baixar meu código, tudo bem também. Apenas certifique-se de copiá-lo exatamente e você deve ficar bem em ter um jogo de trabalho. Ótimo trabalho, todos. E te vejo no próximo vídeo. 13. Melhorando nosso mapa: Ei lá, e bem-vindo de volta à unidade. Agora, em nosso último episódio bastante longo, fizemos nosso sistema de geração de mapas, o que é muito, muito legal. É outro passo enorme para torná-lo no jogo móvel uma realidade, porque agora temos um mapa infinito que podemos percorrer quando jogamos o jogo. Se seguirmos em frente e carregá-lo, podemos vê-lo em ação, assim como fizemos no último episódio. O mapa é gerado à nossa frente e acho que podemos cair OK. nós realmente conseguimos atravessar. Podemos realmente ver esse mapa em ação aqui, fazendo nossos novos segmentos e destruindo os antigos, que é muito, muito legal. Agora, neste episódio, vamos querer melhorar isso um pouco porque, bem, este é um sistema de geração de mapas muito, muito bom. O mapa que estamos gerando não é a coisa mais interessante do mundo porque não temos nenhum obstáculo de triângulos, só temos peças de fluxo verde sendo geradas únicas umas às outras. E isso não é ideal porque não nos dá um jogo para jogar, apenas meio que nos dá peças ScreenFlow para saltar. E como provamos que não temos que pular. Vamos começar este episódio adicionando pontos de desova em ambos os lados das peças de fluxo verde. E então vamos criar um sistema onde colhermos triângulos em um ou outro ou em ambos. Então, temos alguma variedade em nosso mapa. Então, uma vez que criamos nosso sistema de triângulo gerado em qualquer um com pontos nascidos nos EUA, vamos começar com alguns problemas que surgirão como resultado de nós adicionarmos triângulos, porque tenho certeza que você está pensando se adicionarmos triângulos e perdermos, vamos responder, então não haverá fluxo para saltar também, porque destruímos a regra. Vamos criar um sistema em que criamos um piso e vamos realmente gerar as peças do chão debaixo de um objeto pai. E depois que morrermos, vamos ter certeza de limpar esse objeto pai para garantir que não temos duplicatas. Floor estava sendo criado após o outro. Além disso, finalmente vamos fazer o sistema semelhante com os triângulos porque queremos que nossos triângulos também sejam objetos infantis no chão. Vamos adicionar isso de forma estranha. E a partir daí, poderemos ter triângulos e pisos para não excluímos as peças do chão sem triângulos. E poderemos reiniciar o jogo enquanto limpamos tudo. Comece com os triângulos primeiro, se clicarmos duas vezes ou fluímos pré-fabricados, lembre-se que isso é o que estamos estragando. Este é o nosso selo. E vamos até aqui no topo, podemos realmente criar um objeto filho como fizemos com o ambiente há muito tempo, quando criamos esse objeto de ambiente e adicionamos um monte de criança Armitage para ele. Isso é o que vamos fazer aqui. Se formos clicar com o botão direito do mouse e formos Criar vazio e chamarmos essa pausa para a posição um. Podemos fazer um objeto que colocamos neste andar. E então, não importa onde fluímos, esse objeto sempre permanece o mesmo em relação a essa posição. O que é muito, muito legal porque isso nos permitirá fazer pontos de esperma para o triângulo. Então eu vou colocar um aqui cerca de talvez um terço do caminho, depois outro, aqui, talvez cerca de três quartos do caminho. Assim, podemos ver que há dois pontos de desova. Talvez eu tenha que ajustá-los à medida que vou, mas eles estão bem por enquanto. Esses pontos de desova vão ser onde eu vou colocar meu triângulo. Então eu vou fazer um roteiro agora que diz que quando eu fizer este andar, vou criar, gerar um número aleatório e ele vai dizer que coloque um lá ou ali, ou um lá e outro lá. O que é muito legal. Se eu for em frente para scripts com o botão direito do mouse e eu vou criar um script C-sharp e chamar esse ângulo reto gerado. E eu vou em frente e vou para o meu andar e arrastar meu roteiro de criadores de triângulo para o meu andar, assim. Agora meu roteiro gerado pelo triângulo está obviamente vazio, então eu vou abrir isso. Vou seguir em frente e excluir o método de atualização, mas manter o método start porque na verdade vamos fazer toda a nossa codificação no método estrela. Agora, esse será um script bastante simples, porque nós realmente lidamos instanciação antes e tudo nesse grupo que realmente fizemos antes também. Então, se eu for, vou começar primeiro fazendo meu público transformar a posição um. Então eu vou fazer outro. Eu poderia digitar exatamente a mesma linha novamente, como esta posição de transformação pública dois. Mas simplesmente uma maneira de fazer isso é apenas colocar uma vírgula e depois escrever a posição dois. E esse é basicamente o trecho. Qualquer palavra a dizer em confiança pública que eu quero que uma composição 11 coopetição volte ao meu Unity Editor. E abro meu script de fluxo ou objeto de fluxo. Em vez disso, posso ver que a posição um para a posição dois está aqui e eles não foram atribuídos. Agora, você vai se lembrar que não conseguimos simplesmente arrastar o plano porque o jogador é um objeto e isso é um prefab, então não é tão simples assim. Tivemos que escrever código para colocar o jogador em nosso último episódio. Mas com o chão porque estamos atribuindo prefab parado, podemos arrastá-lo como não, na verdade, vai renomear isso da posição 11 para a posição dois, só para que seja um pouco melhor. Mas podemos realmente arrastar aqueles escritos que não poderíamos fazer da última vez. O que é muito, muito legal. Porque agora o que podemos fazer, podemos ir em frente e criar um roteiro de geradores para triângulos. Obviamente, vamos precisar usar um prefab como estamos fazendo esse tempo todo. Então eu quero ir a público, objeto de jogo, chamá-lo de triângulo. Então vamos escrever um código muito semelhante ao que fizemos aqui. Há objeto de jogo, peça de fluxo é objeto de jogo de pisos instanciado e a posição de transferência. Na verdade, esse será o código exato que vamos escrever aqui. Mas esse código vai ser algumas condições quanto a quantos e onde os geramos. Se pensarmos nisso logicamente, existem quatro combinações que podemos dividir. Isso significa para um triângulo de um lado, um do outro, um em ambos ou um ou nenhum. E poderíamos fazer isso escrevendo para declarações if e , obviamente, fazendo uma condição para cada um. Mas, na verdade, vamos simplificar isso apenas fazendo duas declarações if. A maneira como vamos fazer isso é criar uma variável aleatória que define x como um ou dois. Vou ir int x. Então, é uma variável local igual ao intervalo de queda aleatório. Quadrado aberto, abram suportes normais. E vou inserir um valor neste caso, um, outro valor neste caso três. Isso realmente vai me dar um número aleatório de um ou dois, sem incluir fluidos. Então, um ou dois. Se, por exemplo, eu coloquei um F aqui, ele vai me dar um flutuador aleatório. Então, ou será 101.101.21.3. Mas, obviamente, isso vai me dar alguns problemas aqui porque estou armazenando qualquer SIG. Não vou fazer isso desta vez. Vou armazenar um inteiro em execução de um com um máximo de três. Isso vai ser um ou dois. Se eu fizer essa atualização nula, isso acontece a cada quadro e, em seguida, vou imprimir x. Posso realmente demonstrar esse processo porque isso vai imprimir minha variável x a cada único quadro de um a três. Podemos realmente testar se essas são fato as variáveis aleatórias que queremos, porque isso será executado toda vez esse código estiver em equipe ou toda vez que um fluxo for instanciado. Se formos aqui, veremos desde o início que temos um monte de dois e dois e três porque isso pode ser um pouco confuso no início, eu não sei por que é exatamente assim, mas por algum motivo em Nova Jersey, quando você diz 123, significa que esse é o mínimo e este é o máximo, não incluindo o máximo, então um ou dois. Agora, essa ou duas variáveis, na verdade, vamos definir aleatoriamente duas vezes. A primeira vez que vamos fazer no topo onde o atribuímos, dizemos que integer x é um intervalo aleatório. E, em seguida, algumas linhas abaixo e fazem exatamente a mesma coisa para que tenhamos outra variável aleatória. E então aqui teremos nossa primeira declaração if, se x for igual a uma e fazer isso. E isso será se x for uma colher por um Prefab, então vamos reatribuir x e faremos exatamente a mesma coisa se x for igual a uma e fazer isso novamente. A maneira como isso basicamente funciona é que escolhe um valor válido de variável aleatória para x de um a dois. Então, se for um, faça isso em um, faça de novo e se for um de novo, gere o outro. Assim, podemos ver com isso podemos ter um triângulo ou nenhum triângulo, ou dois triângulos, ou um triângulo e a outra posição. Existem quatro combinações diferentes que podem ocorrer com isso, o que é muito legal. Então a última coisa que precisamos fazer é simplesmente criar o código para desova neste triângulo. E como eu disse, esse código será muito parecido com esse código. Na verdade, podemos copiar esse código e colocá-lo ali. A privacidade nos dará alguns problemas de nomenclatura. É como o que é o chão quando mudar esse andar? Triângulo. E, obviamente, também não temos uma variável de deslocamento. E este vetor três Transform não é realmente o que queremos nossa transformação em E. Vá em frente e remova essa parte do código. Agora temos uma peça de fluxo de objeto de jogo, triângulos instanciados, objeto de jogo. Não faz muito sentido, então vamos mudar isso para triângulo. Então, vamos ter que digitá-lo aqui também. Agora temos o triângulo GameObject O, vimos um erro de nomenclatura. Agora, a razão pela qual isso ocorre é porque estamos nomeando esse triângulo da mesma forma que o nome desse triângulo, que não é uma boa lógica de codificação. Vamos ir em frente e fazer disso um T maiúsculo e um T. maiúsculo E agora podemos ver que o ar realmente desaparece. Isso é uma coisa boa para ilustrar, e C-sharp. C-sharp é uma linguagem sensível a maiúsculas e minúsculas e também mostramos dois tipos de lá. Um que você pode mudar o caso e é uma coisa completamente diferente, como vimos com jogo maiúsculo como objeto de jogo minúsculo. E também que você pode encontrar áreas de nomenclatura em C-sharp. Agora, aqui, minha deposição de transformação de pontos triangulares, eu vou querer definir para posicionar uma ou posicionar tropas aqui, tenho certeza de posição um porque essa é a primeira vez que eu crio. Mas a posição um não é, na verdade, uma posição. É uma transformação, então essa é uma transformação dessa posição e uma escala e rotação, todos os tipos de coisas. Estou feliz em digitar posição de pontos aqui. Isso vai me dar uma enfermeira. Em seguida, copie esse código exato e coloque-o aqui, exceto desta vez, basta mudar isso para a posição dois depoimentos. Agora essa é uma maneira um pouco tediosa de escrever esse código, mas achei que seria melhor ilustrar a lógica do que estamos fazendo. Pode haver algumas maneiras simplificar isso se você mostrar isso a um profissional C-sharp sobre eles podem ser oh, mudados que você pode fazê-lo em três noves, mas por enquanto ele realmente vai funcionar completamente bem. Agora poderíamos voltar ao Unity e testar esse código, mas podemos realmente perceber que esquecemos de mudar isso de volta para começar. Estávamos tentando ilustrar algo antes com a atualização, mas se executarmos esse código agora, cada quadro vai estragar mais triângulos, que não será o que nós quer ter certeza de que você altere isso de volta para o início. Eu não sei se você mudou para atualizar quando eu fiz, mas se não o fez, isso é ótimo, pois deve ser interrompido. Agora, vá aqui de volta para Unity e vamos para o pré-fabricado de saída, e queremos atribuir um triângulo para surgir, mas na verdade não temos um pré-fabricado de triângulo aqui. Felizmente, assim como fizemos o piso pré-fabricado, fazer um pré-fabricado é muito fácil. Você acabou de voltar para sua cena, ir para o triângulo e arrastá-lo para dentro assim. Isso fará um pré-fabricado para nós. Então. Afrente e exclua esse triângulo porque eu não quero mais na minha cena. Acho um pouco estranho ter um no primeiro e nenhum dos outros. Obviamente, eles vão estragar isso à medida que vamos, mas tudo bem por enquanto. E então vou em frente e abrir meu prefabricado do chão. E vou querer arrastar um triângulo aqui. Agora. O que eu quero fazer é ter certeza de que posso jogar meu jogo e gerar triângulos como quiser. Mas o único problema com nosso código de desova não será nosso código, mas sim estragando o sistema no momento é que temos que gripar objetos. Um deles estará executando o script do triângulo, bem como o outro. Na verdade, todos os livros de chão serão o que aconteceu neste. Vamos começar o código e pode ser pequeno triângulo aqui, o que não será ótimo para nós. Mas se fizermos alterações neste porque é um prefab, ele fará alterações em todo esse prefab que não queremos fazer. Vamos fazer o que é chamado de desembalar a prova. E isso pode parecer um pouco confuso, mas basicamente, tudo o que isso está fazendo é dizer, eu não quero fazer referência a essa saída de animais pré-fabricados desempacotamento. Basicamente, isso significa que agora posso fazer alterações nesse prefab e não afetar o prefab geral. Bem, isso não é realmente uma toupeira pré-fader. Nós o transformamos de volta em um objeto. Então vá em frente e remova o script de geração do triângulo do seu primeiro bloco. E depois de ter feito isso, você deve ser bom para ir porque não queríamos mais gerar triângulos no primeiro. Mas tudo o resto deve funcionar perfeitamente se nosso código estiver funcionando corretamente. Então, vamos em frente e aperte o play e ver se isso acontece. Podemos ver que temos um triângulo surgindo ali lá e outro lá, que é perfeito exatamente o que queríamos. Esses triângulos são um pouco rígidos. Não sei se você pode dizer. E podemos pintar e começar de novo. Você pode estar se deparando com alguns problemas aqui porque na verdade não terminamos o loop de jogo, mas chegaremos a isso no resto na próxima metade deste episódio. Agora, antes de entrarmos nisso, quero primeiro ter certeza de que nossas posições dos triângulos sejam um pouco melhores. Então, vamos aqui e vamos arrastar um triângulo. Podemos testá-lo. Vamos para a posição um e vamos copiar o triângulo de posição e ir colar a posição. Você pode ver que ele foi baixado, então vamos mover isso para cima, encontrar o novo valor y. Queremos um 4,07 e vamos realmente adicionar isso à minha posição 1,074 e posição de 4,5 a sete. Agora, você não precisa fazer esse procedimento com uma cópia e eu estava apenas fazendo alguns testes, mas sim, se o executarmos agora, ele deve funcionar perfeitamente bem. Ela nasceu em triângulo é exatamente onde queremos que eles façam. É que podemos ver onde existem alguns, não aqueles no início, mas de agora em diante Rios aponta o triângulo exatamente o que queríamos e morremos. Esse é o mesmo problema de antes. Agora, a razão pela qual esse problema está realmente ocorrendo é porque se você pensar nisso com fluidos de desova o tempo todo, mas quando voltarmos ao início, que essas desova flui, mas não há nada para nós pousarmos. E é por isso que não acabei com o primeiro roteiro. Eu preciso realmente remover esse script também do chão porque eu nunca quero destruir o primeiro andar. Quero destruí-lo cai disso e o mesmo com o segundo andar. Agora, no segundo andar, posso manter este prompt de script de criador de triângulo porque eu queria ter certeza de que posso gerar triângulos daqui. Vou remover esse script completo. Mas antes de fazer isso, vou me certificar desempacote este pré-fabricado também. Porque, de outra forma, vou ter exatamente o mesmo problema que tive com o primeiro. Então, ele removeu esse script completo e passou aqui e mova o mesmo script completo. Agora, se atingirmos o jogo, deveríamos estar funcionando muito bem. Se morrermos, podemos desovar de volta para onde começamos e continuar a colher e as coisas. Obviamente, há alguns aqui que já estão lá esse tipo de desova sobre os outros, mas a essência está lá. A última coisa que precisamos fazer é realmente garantir que esses antigos sejam limpos para que saibamos que estamos limpando todos os antigos para que não tenhamos duplicado um esporo e em cima de cada outro. E a maneira como vamos fazer isso é ordenando-os. Então, vamos criar um novo objeto e vamos chamar isso de brilhos gerados. Então eu vou seguir em frente e me certificar de que eu tenho o objeto de fluxo de colher. E então eu vou querer adicionar isso como uma referência ao meu script de gerador de mapas no meu player para que eu possa ter certeza de armazenar todas as minhas falhas dentro desse script de fluxo ósseo no Hoegaarden fazer isso 000 assim como fizemos com o meio ambiente, com o nosso piso e nossa formação no nosso andar. Vou fazer a mesma coisa com colherada. Que uma vez que eu morrer, posso limpar esses fluxos de pontos e garantir que todas as regras antigas sejam excluídas. Vou fazer isso abrindo meu roteiro de geradores de mapas. E aqui, estou definindo a transferência e a oposição, mas também quero definir o objeto pai, que significa que quero definir o objeto, esse objeto que estou dividindo agora é um filho também. Isso pode não parecer importante, mas como acabei de dizer antes, vamos usá-lo como espaço de armazenamento. Não é assim que ele acompanha a localização ou qualquer coisa assim. Então vá até aqui e estabeleça fluxo, paz. Transformação de pontos, pais conjuntos de pontos. E você poderia apenas dizer transformação de pontos, mas os pais são iguais a coisa, mas ela parece pensar que essa é uma maneira antiga de fazer isso. Então, essa é a melhor maneira que eles não conhecem o suporte aberto. E agora precisamos definir algo aqui, mas não temos uma referência à coisa que queremos armazenar esses ativos. Vamos aqui. Público. Os elétrons formam este único armazenamento. Então vamos aqui e digitar armazenamento lá. E não precisamos dizer ponto pai ou essa posição ou qualquer coisa assim. Isso sabe exatamente o que queremos fazer. Então, temos nossa variável de armazenamento de transformação e estamos fazendo o conjunto de pontos pai, o que é basicamente uma maneira extravagante de dizer colocar tudo lá dentro. A última coisa que precisamos fazer agora é que precisamos ir em frente e arrastar isso para o armazenamento. E se o fizermos, agora devemos ver que toda vez que instanciamos um fluxo, ele é colocado dentro dessa coisa de fluxo de colher. O que é muito, muito legal, porque se morrermos, bem, quero dizer que não há coisas acontecendo agora, o que não é um ponto extra sobre se morrermos, o que podemos fazer se puxarmos no jogo agora, podemos entrar fluxos de colher e podemos excluir todos esses fluxos antigos que não precisamos , o que é muito legal. Obviamente, ainda não organizamos os triângulos, então vamos nos certificar de fazer isso mais tarde em um segundo, usar exatamente o mesmo método. Mas agora, se você for assim, podemos ver que os pisos são gerados exatamente da mesma forma que um fluxo duplicado normal é armazenado, o que é super legal. Agora, tenho certeza que você notou os triângulos que estamos vendo por conta própria. Então, vamos realmente consertar isso rapidamente. Se entrarmos em ativos e entrarmos em nosso fluxo, podemos ver que os triângulos nascem desses scripts de geração de triângulos. Então, vamos roteiros triângulos nascidos e depois fazer exatamente a mesma linha de código que acabamos de fazer aqui. transformação de início de disquete define Terran, exceto que desta vez queremos defini-la para nós mesmos. Vamos aqui e vamos digitar triângulo, listas telefônicas da França configuram pai. E então vou digitar transformada com a equipe minúscula, ou seja, a transformação ou onde quer que seja executado este script porque esse será o chão. Copie isso e coloque-o aqui. Perfeito, isso deve funcionar perfeitamente bem se eu executar meu jogo agora, podemos ver que todos os triângulos estão realmente surgindo dentro dos fluxos aqui. Posição um, posição dois. E se formos aqui, triângulos baixos estão dentro deles, que é exatamente o que eu quero. última parte deste código de limpeza que eu quero fazer é ter certeza de que meus triângulos e todo o resto são excluídos quando eu morrer. Isso vai ser um pouco mais complicado. Então eu vou até aqui para o meu script do State Manager e podemos ver que temos esse procedimento de corante, mas eu queria precisar dele daqui porque isso vai ser um pouco confuso. Então, em vez disso, quero ir ao meu script de gerador de mapas e fazê-lo a partir daí. Isso faz com que seja um pouco mais sentido como qual gravação de script de nós poderíamos fazer. Não faz diferença porque a declaração do script está no jogador, assim como os mapas Warner. Mas só por interesse, acho que será mais fácil se eu fizer isso daqui, então é menos confuso no futuro. A primeira coisa que vou fazer é fazer um novo procedimento e depois chamaremos de vazio público. E vou chamá-lo de armazenamento claro. Então, o sexual mais fácil porque posso ir para armazenamento ou aqui eu tenho meu armazenamento parecia nenhum armazenamento. Posso limpar cada criança do armazenamento. E do jeito que vou fazer isso, vou pontilhar, pegar filho. Então eu vou querer levar a criança para primeiro, segundo, terceiro, quarto, ou quinto. Se eu digitar 0, pego o primeiro filho, primeiro a ter um segundo filho, mas quero pegar cada um. E vamos fazer isso usando um loop for. Então eu vou, então vou querer chamar uma nova variável. E ainda não tenho uma variável, então vamos fazer uma variável local int x. Então vou dizer completo. E se você se lembrar da sintaxe for loop, isso deve fazer sentido. Vou rever isso porque tenho certeza que muitos de vocês esqueceram porque estava acima em 15 episódios atrás. Eu não sei. Quatro x é igual a 0. Isso significa que eu quero pegar o primeiro filho e vou x menos do que agora. Eu quero fazer isso para tantas crianças quanto o armazenamento tem armazenamento jacarés, contagem de crianças de pontos. Isso vai me dar números se for um, esse código sempre será executado uma vez porque é 0, é menor que a contagem de crianças porque vai ser executado uma vez e então será um porque vou aumentá-lo no final. Vou obter x plus plus. Agora lembre-se com loops for-e o erro que muitas pessoas cometem é separar os parâmetros usando vírgulas. Então eles dizem x menos de 0 vírgula x plus, mas na verdade usamos ponto-e-vírgula. Portanto, certifique-se de ter x igual 0 espaço de ponto e vírgula do que x menor que o espaço vírgula da contagem de filhos X mais. E lembre-se disso porque isso é um erro que muitas pessoas cometem. Isso é, na verdade, tudo o que precisamos para destruir cada um desses objetos filhos porque podemos por x menos do que o aumento da contagem de armazenamento X. Então, se tivermos dois filhos, será 0 aumento em 11. E então, porque também é comparavelmente menor que os atalhos. Então, essencialmente, no trabalho que coloquei x aqui, ponto de armazenamento fica filho x. e vamos ir em frente e destruir isso. Vamos digitar o objeto filho do ponto de armazenamento do suporte aberto de palha . E se tudo funcionar, sempre que chamamos esse estado, devemos limpar cada um dos objetos. Vamos realmente querer chamar isso assim que respondermos. Porque se pensarmos em quando chamamos se morrermos, vamos cair pelo chão. Então, aqui no reframe, a última coisa que temos que fazer é criar um link para os formulários de correspondência. Então, vamos nascer mapas da República, chamá-lo de matemática. E vamos entrar aqui para responder e vamos dar responder e vamos ponto matemático Clear Storage. Agora, antes de voltarmos ao Unity, primeiro temos que nos certificar de que estamos destruindo o objeto do jogo, não a transformação porque podemos ver esse código aqui. Ele diz que o ponto de armazenamento fica filho, mas isso nos devolverá uma transformação. Para corrigir isso, simplesmente vamos dar um ponto infantil GameObject. E isso vai realmente se referir ao objeto do jogo, não ao componente de transformação. Só saiba que se dissermos cão ficar filho, isso retorna o tipo errado de coisa, que retorna uma criança transferida. Ele não retorna a criança real. Aqui estamos recebendo o objeto do jogo, que é o objeto filho real. Queremos destruir a comunidade de back-end. Só tenho que arrastar esse mapa a variável de mapa armazenada no player para garantir que eles estejam vinculados. E então, se eu for em frente e bater em Play, verei que esta colher flui está lentamente sendo povoada por diferentes andares. Veja que há dois e se eu morrer, todos eles devem ser limpos, o que é realmente ótimo porque significa que isso está funcionando exatamente como nós queríamos. Não há mais fluxos duplicados, o que é muito legal. Se você notou algumas pequenas áreas, novo jogo, por exemplo, notei que às vezes não consigo pular no terceiro andar ou depois disso. Está tudo bem. Vamos abordar esses no próximo episódio, todos os episódios seguintes. Por exemplo, nunca controlamos se podemos ou não pular quando obviamente não queremos que isso seja verdade porque não era uma parte super importante do nosso jogo no momento. Obviamente, vamos consertar todos esses mais tarde. Quando você concluir este curso, você terá um jogo completamente livre de bugs. Se o seu novo jogo de teste agora e poucas coisas forem um pouco duvidosas, não se preocupe, todas elas serão resolvidas. E se você tem um script de geração de fluxo, você se saiu muito bem. Agora, se você acompanhar e seu código estiver funcionando exatamente como o meu, a última coisa que precisamos fazer é adicionar um pouco de variedade ao nosso mapa, e vamos fazê-lo mais tarde no curso. Obviamente, como eu disse, existem algumas áreas que ainda precisamos resolver. Algumas coisas podem melhorar, mas nosso loop básico de jogo foi criado. Há também algumas alterações de balanceamento que eu quero abordar. Tipo, eu não acho que seja sempre possível saltar de ambos. Então, vamos mais tarde em episódios talvez aumentar a gravidade e aumentar o salto falso e coisas assim para aqueles que são jogos. Mas se tudo estiver funcionando e você tiver um jogo semi-funcional que você pode gerar e repetir muitas vezes você quer um ótimo trabalho. Você fez incrivelmente, e eu te vejo no próximo vídeo. Vou mover nosso jogo será feito mais cedo do que você pensa. Bom iogurte por aí. 14. Melhorias menores: Ei lá, e bem-vindo de volta à unidade. Agora, ao longo dos últimos dez ou muitos episódios criamos este bastante nu, mas realmente um jogo móvel bastante impressionante com este, o primeiro ou um dos primeiros jogos para celular que você fez ótimo trabalho. Na verdade, é loucura pensar quanto você conseguiu. Você fez um jogo para celular do zero usando seu próprio código e pode gerar um mapa. Você pode pular sobre obstáculos, você pode responder, você pode pular, se mover. É muito, muito bom, bom trabalho, todos, vocês estão fazendo incrível. Dito isso, há alguns problemas com nosso jogo móvel em seu estado atual. E você pode ter notado eles quando você joga o teste em sua própria compilação. E há apenas alguns bugs. E a maioria desses bugs são, na verdade erros de lógica que aconteceram. Fizemos algo de repente e depois mudamos e então ele criou um pouco de erro de lógica. E eles não são os bugs mais fáceis de perceber. Mas se você puder entender o está fazendo constantemente uma vez que eu os explique, eles farão muito sentido, então eu mergulho direto nisso. O primeiro bug que você deve ter notado, se você for em frente e apertar Play, se eu estiver deslizando, você não precisa pressionar pular para deslizar, mas se você fizer isso, você não pode pular para espaço presente. Não estou pulando. Isso não é um problema com minha barra de espaço. Não é problema com nada de ruim. Na verdade, é um problema com essa variável aterrada. Você pode ver aqui, se eu estiver jogando, verei que o chão está definido como verdadeiro. E quando eu deixar falsa e fui junto novamente, et cetera, verdade por dy eu vou arriscar amplo. Agora, se eu for assim, ele realmente define o falso e então não podemos pular. E a razão para isso é porque nosso terreno a variável é baseada se estamos entrando ou saindo de uma colisão. Então, se você pensar em deslizar, estamos indo junto, indo junto, indo junto, entramos em uma nova colisão aqui, e depois saímos de uma. Mas porque saímos depois, isso vai anular e dizer, ok, estamos no animal do chão. Isso é uma coisa muito, muito simples de consertar. Tudo o que precisamos fazer é mudar um pouco nome dos nossos procedimentos para que não tenhamos feito isso sempre que entrarmos em uma colisão, queremos ter certeza de que estamos de castigo. Quando estivermos sempre em uma colisão, faremos isso com muita facilidade. Vamos abrir o movimento, você vai roteiro de movimento. E você vai querer mudar isso na colisão entre dois em colisão, continue. estado de colisão é praticamente a mesma coisa. É tão frio. Cada quadro que estamos no terreno, cada quadro é almoço ao redor do chão vai garantir que estamos dizendo ao jogo que estamos de castigo, isso é só AY. E basta substituir enter por estadia. Então, por diante, a colisão fique 2D. Perfeito. Agora, se seguirmos em frente e clicarmos em Jogar novamente, veremos que tudo deve estar funcionando bem. Agora podemos pular, o que é ótimo. Agora, a segunda coisa que eu quero abordar é UCI que estou fazendo agora, mas acho que às vezes, quando há picos, é muito difícil pular sobre ambos. E isso tem a ver com a escala suja e a velocidade pagará. Isso não é um bug, isso é apenas um problema de equilíbrio. Então, vou seguir em frente e consertar isso agora. Vou ao meu jogador. Na verdade, vou fazer a escala de gravidade três, então é um pouco mais fácil de controlar. Então, para compensar que vou aumentar minha força de salto, mas não automatizar muito meu salto 13. Na verdade, testei isso e descobri que a maneira mais eficiente de consertar essa área. Você pode ver agora, é muito mais fácil de controlar quando eu quero pular porque estou fazendo isso com mais frequência. E isso não torna o jogo um pouco mais difícil às vezes, mas também é muito mais fácil de controlar, o que na minha mente é uma coisa muito boa. Eu recomendaria que você faça isso porque achei muito melhor para a jogabilidade. Depois de fazer isso, você pode ver que estou pulando com isso com absoluta facilidade agora, o que é realmente ótimo. Agora, a outra coisa que eu queria ter certeza de que fazemos é que eu não quero ser capaz de pular todos continuando em movimento enquanto estivermos mortos. Isso também é muito fácil de ler, graças à nossa máquina de estado. Se eu for em frente e eu abrir meu Gerente de Estado, você verá que, enquanto eu morrer, meu estado está morto. A razão pela qual parei de me mover é porque eu tenho um script de movimento aqui que diz se o estado do ponto do gerente de estado é igual ao movimento simples, mas senão eu não disse mais nada. O que está acontecendo se eu acertar aquela coisa, eu não vou mais sobrescrever a velocidade rígida do meu corpo. Então eu meio que deslize. Eu continuo por causa do ímpeto ou da inércia, mas eu continuo. Na verdade, estou escrevendo outra declaração. E, desde que eu não esteja jogando, quero ter certeza de que minha velocidade seja sempre 0. Rb. Não a velocidade é igual, e eu poderia digitar novos vetores dois zeros, mas na verdade vou digitar o vetor dois pontos 0, e isso é exatamente a mesma coisa. Esta é apenas uma maneira mais fácil de dizer isso. A teoria vacuolar é basicamente para garantir que, desde que eu não esteja jogando, eu sou banquinho morto. E isso é realmente ótimo porque isso significa que na verdade vamos substituir nosso código de movimento para substituir nosso código de movimento que cada quadro em que estamos mortos, não vamos apenas seguir em frente, vamos parar mortos no lugar no eixo x. E vamos definir nossa velocidade y para 0. Então podemos ver aqui paramos, o que é realmente ótimo. O problema é porque estamos sentados na velocidade y 0, cada quadro que realmente não vai conseguir até que não movamos tudo para fora. A gravidade da unidade ainda deslizará lentamente assim. Você pode ver lá, eu ainda estou me movendo para baixo. Isso é um problema. Mas posso corrigir isso com muita facilidade apenas dizendo que a escala de gravidade de pontos RB é igual a 0. Você pode pensar que isso é tudo vendido. Mas você tem que se lembrar de redefinir isso para o que queríamos assim que você estiver jogando novamente. Vamos fazer isso indo aqui para reivindicar e definir nossa escala de gravidade para três. Contanto que eles estejam jogando muito escalas, ou são três? E quando não estamos, nossa escala de gravidade está sempre definida como 0. Eu vou em frente e abro meu jogo mais uma vez. Podemos ver que estou bem. E se eu morrer, como Senhor, parei e volto à minha balança de condução, o que é muito, muito legal porque vou ilustrar como isso parece quando morremos muito melhor na minha opinião. Agora, a terceira e última coisa ou comentário se for para este ponto. Mas outra coisa que eu queria abordar neste absoluto, quero que você faça isso um pouco mais curtos porque acho que são um pouco longos demais. Então, vou fazer esses 2.8. Eu só vou mudar ambos individualmente porque eu os descompactei do pré-fabricado, então eles não estão mais vinculados a esse pré-fabricado. Basta entrar no pré-fabricado e digitar 2.8 aqui. E isso deve realmente consertar todo o resto para você, o que é muito legal. Agora temos um pouco mais de um salto e temos que pular sobre eles, o que é muito melhor. É como se fossem pequenas ilhas. Agora isso nos leva à segunda última coisa que quero mudar neste episódio, e isso é atrito. Você vai ver se eu for assim e eu cair, não sei se vou ser muito pesado, mas sim, perfeito. Vou ficar aqui. E isso não é ótimo. E a razão pela qual isso está acontecendo é por causa do meu atrito. Agora vou colocar o atrito está definido para a configuração de atrito padrão. Como ele está definido para a configuração de atrito padrão, basicamente continuo a mover-se para a direita. Estou tentando saber, mas estou com os lados de pelúcia. Então, como resultado, estou meio que ficando no lugar. Então, para corrigir isso, vou fazer um novo material físico. Vou fazer isso clicando com o botão direito em criar em 2D e depois material físico hoje. E vou chamar essa camada. E tudo o que vou fazer é definir esse atrito dois zeros. Então vou ao meu jogador e arrastarei isso para o meu corpo rígido. Você pode ver o que acontece agora é que estou me movendo, eu não deveria mais ficar lá. Eu deveria deslizar a anotação, o que é perfeito. Isso é exatamente o que eu queria que acontecesse. Agora mudamos algumas coisas, mas há uma última coisa que eu quero ter certeza de que abordamos neste episódio, na verdade, será uma maneira mais otimizada de consertar uma coisa. Anteriormente. Anteriormente, aqui mudamos nossa escala de gravidade RV TO, mas fizemos isso em todos os quadros. Isso realmente não é ótimo porque isso significa que estamos substituindo alguém já está acontecendo. Não é bom para o desempenho. Em vez disso, o que eu quero fazer é fazer um procedimento que vai fazer isso por mim. E vou fazer isso com um novo conceito chamado parâmetros. Vou entrar aqui e vou criar vazio público, chamá-lo de redefinir gravidade. Vou até aqui. Vou colocar a escala de gravidade do cão RB aqui. Exclua esse ali. Agora, vou querer chamar isso toda vez que eu mudar de estado. Então, se eu for ao meu gerente estadual, eu sabia exatamente quando meu estado está morto e onde meu estado está jogando. A primeira coisa que vou fazer é fazer um link da declaração I GO TO movement. Já tenho um link para o outro lado, mas quero fazer um link dessa forma é o Movimento Público de Algoma, e vou chamá-lo de movimento. Então, o que vou querer fazer, vou querer chamar esse procedimento tanto quando eu morrer quanto mover a gravidade de redefinição. E aqui, mova a gravidade de redefinição de pontos. Mas eu vou querer defini-lo para duas coisas diferentes, aqui eu quero configurá-lo para 0, e aqui eu quero configurá-lo para três. E do jeito que vamos fazer isso, você poderia escrever dois procedimentos, mas uma maneira muito melhor de fazer isso é apenas usando parâmetros. Então eu vou aqui para minha gravidade recente e vou entrar nesses dois colchetes e vou digitar int x. Bem, isso realmente vai fazer é que vai dizer, ok, quando Fui chamar esse procedimento, inseri um valor para esse parâmetro. É como um valor de entrada. Você pode ver aqui em cima, diz que não há nenhum argumento dê os correspondentes ao formal exigido orgulhoso de x. se eu clicar duas vezes nisso, posso ver onde está o ar. Está aqui. Não estou dizendo o que eu queria colocar x aqui, insira o valor de 0 aqui e o valor três lá. Está tudo bem. Agora chamei esse procedimento aqui e entreguei a valores diferentes aqui, eu defini para 0 e aqui eu disse os três. Então tudo o que preciso fazer é voltar ao movimento. E na minha gravidade de redefinição eu precisava dita escala de gravidade albedo igual a x. Agora conseguimos duas coisas completamente diferentes com o mesmo procedimento usando parâmetros. Agora este é um tópico completamente novo, mas eu queria abordá-lo em algum momento neste episódio porque achei que seria útil mais tarde, caso precisássemos basicamente, é como valor de entrada. Então, recebi dizer o que fazer e dar-lhe um pouco de informação para fazer isso. E isso nos permite criar uma maneira muito melhor de redefinir a gravidade. Agora, todos esses atributos preciso para reabrir o Unity. Bom, meu jogador garante que eu arrastei meu movimento para cá. E se eu for em frente e apertar Play, podemos ver agora que alcançamos exatamente o mesmo resultado com uma maneira muito melhor de fazê-lo. Podemos ver que paramos como tivemos, e começamos de novo, o que é ótimo. Então, isso pode ter parecido um episódio um pouco estranho, mas eu só queria usá-lo para ensinar os parâmetros constantes e corrigir todos os pequenos problemas. E eu acho que você vai descobrir esse episódio, você vai jogar é muito mais agradável de jogar. Parabéns, você terminou o módulo base deste curso, criando um jogo para celular. Fizemos um jogo para celular onde você pode jogá-lo. Tenha um loop de jogo. Você pode, quando você pode perder. Mas há muito mais vindo e agora entramos nas coisas divertidas. Tenho certeza que você notou que nem fizemos nosso plano de fundo se mover com nosso jogador ainda. Essa é uma mudança muito simples. Obviamente, não vou fazer isso agora. Professor forte, o final deste episódio. Mas no próximo episódio e episódios a seguir, vamos começar a nos preparar com todas as coisas realmente divertidas que vamos adicionar em nosso sistema escolar. Vamos adicionar melhorias visuais, áudio, música, tudo o que realmente faz um jogo móvel pop está chegando na segunda metade deste curso. Mas no final deste episódio, você deveria ter terminado a parte básica do seu jogo, o que é muito, muito legal. Ótimo trabalho para todos. Incrível. E se você é jogos móveis trabalhando como o meu é um trabalho incrível como sempre, claro, vincularei todos os meus scripts na descrição ou os recursos, para que você possa vinculá-los. E bom trabalho. Depois de terminar este episódio, você está praticamente no meio do caminho. A parte difícil deste curso é, na verdade, agora postura e estamos entrando nas coisas divertidas. Ótimo trabalho para todos. Vejo você no próximo vídeo. 15. PontuAÇÃO: Ei lá e seja bem-vindo de volta à Unity. Nosso último episódio, dissemos que nosso jogo ou os principais conceitos estão praticamente feitos e isso é verdade. Mas existem algumas maneiras de melhorar nosso jogo para torná-lo ainda melhor. Obviamente, ainda não é um jogo para celular porque não o puxamos para subir. Mas vamos mudar todas essas partes legais e divertidas do desenvolvimento de jogos para dispositivos móveis. Obviamente, as partes anteriores foram divertidas, mas essas a minha opinião, todas as melhores partes do desenvolvimento de jogos para dispositivos móveis. É o material realmente criativo que você pode adicionar no design de som, melhorar seu jogo, como você quer, todas as coisas realmente divertidas. Então, tudo isso vai ser na segunda metade deste curso. E isso vai começar hoje com nosso sistema escolar. Antes de adicionarmos nosso sistema escolar, primeiro quero ter certeza de que nosso jogo, podemos fazer algumas pequenas melhorias. Começando, vou arrastar o fundo para baixo da câmera principal para que eu o tenha como objeto filho. E o que isso pode fazer é garantir que nossa câmera principal seja sempre seguida por um objeto filho. Se formos ao nosso jogo aqui e clicarmos em Jogar, podemos ver isso em ação. Agora somos seguidos pelo plano de fundo, que é uma maneira muito legal, muito simples de consertá-lo. Agora, a segunda mudança que eu quero fazer é que eu quero ir para o meu plano de fundo. E eu quero ir em frente e vou adicionar componente Edge collider 2D. E então eu posso ver minha nuvem de borda aqui. Na verdade, é quase Oi, eu queria, eu só quero arrastá-lo para baixo. Então eu vou deslocar, arrastá-lo para o fundo em cerca de menos 1,9 ou menos dois, se você quiser. Isso basicamente funcionará como um muro da morte para que se um jogador cair por essas lacunas, ele morra. Eles não caem apenas no abismo. Vou marcar isso como um obstáculo e vou me certificar acionar e vou ficar a máquina vai realmente cuidar de todos os restaurantes. Se apertarmos Play. Podemos ver agora, se eu cair por aqui e um telefone para o Gap, eu de fato morro e volto ao começo, o que é muito legal. Agora essas são algumas coisas menores que eu queria fazer. Mas, obviamente, o ponto principal deste episódio será adicionar um sistema de pontuação. Então, vamos direto para isso. Antes de fazer isso, precisamos criar componentes de UI de unidade. Então você obviamente nunca fez isso antes. Então, iremos para o Gerenciador de Pacotes de Janelas. Precisamos de bom aqui para este menu Unity Registry se você pode estar lá por padrão. Então clique aqui e, em seguida, vá para o texto Mesh Pro e clique em Instalar. Agora isso é basicamente a solução Unity dois objetos de texto. É uma ferramenta muito poderosa e fácil de usar como esta aqui. E, na verdade, é praticamente o padrão que eles querem que você use. Se você não estiver usando isso, então é o que é considerado um legado ou como uma versão mais antiga. Então, vamos querer usar isso. Em seguida, vamos clicar com o botão direito do mouse aqui, podemos ir texto da interface do usuário, texto Mesh Pro. Isso vai criar isso e ele vai abrir essa janela. Clique em Importar, essentials TMP. Você não precisa adicionar os extras. E então, se rolarmos para cima, poderemos ver nosso texto ali. Agora, eu não gostei dessa tela. Essa tela funciona basicamente como um espaço de armazenamento para todos os nossos componentes de interface do usuário. E este é o texto. Se o tirarmos da tela, não poderemos mais vê-lo. Portanto, certifique-se de mantê-lo lá dentro. Renomeie sua tela para UI isso, o que eu gosto de você, você não precisa. E vamos renomear nossos textos para marcar. Então vamos para a nossa interface do usuário e vamos mudar esse modo aleatório de sobreposição de espaço na tela para câmera de espaço na tela e, em seguida, arrastar nosso Cameron, Este é o meu modo aleatório preferido. Você pode mantê-lo se quiser, mas eu recomendo que você o altere. E então vamos avançar e mover nossa pontuação para lá. Agora isso parece bom, mas às vezes a unidade tem alguns bugs onde, se você sair e voltar a entrar, na verdade é movido para garantir que você faça isso e depois movê-lo. Esta é a posição realmente correta. Agora vou provar que essa tampa em uma mudança para o tamanho da fonte 75 é um pouco maior. Quero torná-lo ousado, e vou ir em frente e torná-lo muito maior para que possamos guardá-lo lá. E eu vou arrastá-lo todo o caminho até lá. Isso vai funcionar como nossa pontuação. Se eu digitar loja e entrar em uma escola imaginária, podemos ver aqui como isso parece em um jogo. Acho que parece muito bom. Podemos movê-lo um pouco para a direita, e isso é perfeitamente bom. Agora precisamos começar a codificar a lógica real sobre como isso vai funcionar. Então, vamos criar um novo objeto e vamos chamar esse lucro de pontuação. Então vou entrar no roteiro. Vou clicar com o botão direito do mouse em criar um script C-sharp. Nanocoulomb é uma escola. Agora, esse script basicamente vai dizer a esse texto o que exibir. E vamos descobrir a pontuação do jogador com base em quão longe eles estão da faixa escolar que você vê lá. Mova-se, mas na verdade não é isso. Mas se adicionarmos beleza do guache, esse rastreador de pontuação queremos posicionar nos pontos de partida do local. Vou aqui e vou colocar menos 8,52 isso na próxima coisa e depois movê-lo para baixo. O valor y realmente não importa. Este é basicamente um ato como nosso caminhão e veja até onde o jogador se mudou dele ou até onde a fase moveu nossa distância, que é nossa escola. Então vá em frente e certifique-se de que seja menos 8,52 ou onde quer que você seja colocado na base vegetal, certifique-se de copiar isso. Em seguida, vá até aqui e arraste seu script de pontuação para lá e, em seguida, abra-o. Agora, uma vez que isso for aberto, vá para o topo e vamos importar algumas coisas. Vamos usar outras coisas além coleções de sistema e digitação genérica e de motores murais usando a UI de ponto do mecanismo Unity, primeiro lugar, e depois também digitar usando o produto TM, que é texto Mac Pro. Isso nos permitirá escrever o script como queremos sem nos confundir. Em seguida, vamos criar uma transformação pública. E vamos chamar isso de um jogador. Por baixo disso, vamos criar um int público e puxar essa escola e uma prova de malha de texto público. Vamos chamar esse texto ou, em vez disso, texto completo não é melhor nome. Em seguida, vamos entrar em nosso procedimento de atualização e vamos digitar pontuação igual. E agora vamos querer subtrair a transformação e a transformação do lugar, mas isso vai nos dar um flutuador. Então, antes de escrevermos, vamos escrever matemática F ponto em torno de int. E isso basicamente vai garantir que possamos arredondar qualquer que seja o valor flutuante para uma polegada. E então vamos apenas ir. ponto do jogador transformou a oposição de X menos nossa proposta de transformação que x. E isso vai dar certo a nossa pontuação a cada quadro, quadro para nós, o que é muito legal. Então vou descer aqui e vou rolar o texto. Agora eu quero armazenar qualquer que seja essa pontuação nessa coisa. Então eu vou para a escola texto ponto txt igual, e agora vou colocar o valor da minha escola, mas eu não quero normalmente eu queria falar com força, que significa que estou convertendo-o de um inteiro para uma string. Essa pequena quantidade de código nos dará uma escola, mas queremos adicionar um pouco mais. Queremos ter certeza de que adicionamos pontuação entre aspas. Certifique-se de colocá-lo entre aspas, dois pontos e, em seguida, um espaço, e que vamos colocar uma vantagem. Então, aspas pontuam espaço com um códon plus e depois a escola. E isso vai fazer com que pareça muito melhor. Não vai apenas nos dar um número, vai nos dar uma pontuação e dois pontos, assim como temos aqui e editá-lo. Agora, antes de voltarmos para Unity, percebi que estamos usando a única coisa aqui, mulheres para usar um texto Mesh Pro, sua GUI. Apenas certifique-se de mudar isso. Isso é apenas uma coisa pequena que eu esqueci de adicionar e que fará nota emitida. Qualquer outra coisa que apenas causará um problema no seu código. Em seguida, abra o Unity e você deve ver a trilha da sua escola aqui. Certifique-se de arrastar seu jogo para a transformação e sua pontuação para a equipe de malha de texto. Você bóia. E ali você pode ver esse estágio de falha clicar novamente, ele será redefinido. Agora, se atingirmos a corrida, isso deve realmente fazer tudo por nós. Podemos ver como a escola começa em 0 e na verdade está aumentando assim como 12 se morrermos. Então, está de volta para 0. E isso é muito, muito legal. Agora, a última coisa que precisamos fazer é ter certeza de que temos um ensino médio. A maneira como vamos fazer isso é que vamos fazer mais uma variável. Vamos fazer o colegial público. Então, vamos ter um novo procedimento. Chamamos isso de vazio público deles. Vamos dizer, se a pontuação for maior do que o ensino médio, então o ensino médio, desculpe por isso. Então o ensino médio é igual a pontuação. Isso basicamente vai garantir que assim que morrermos, verificamos se nossas escolas melhor do que nosso ensino médio atual e se está dentro de uma busca no novo ensino médio, nós sempre precisa chamar isso de nossas máquinas estaduais. Vamos ao State Manager e criar uma referência a esse gerente de escola pública para o que acabamos de pegar nossa escola, mas é um gerente da escola. E então aqui no dado, vamos dizer que depois dessa gravidade de redefinição, vamos dizer Score dot n. Isso basicamente vai executar esse procedimento. Assim que morremos, verificamos nossas pontuações maiores do que uma escola secundária. Obviamente, um ensino médio será definido como 0 no início. Então, se voltarmos para u e d, só precisamos atribuir um valor à nossa referência aqui. Então, se formos ao nosso jogador, podemos ver que nossa máquina estatal não é uma ciência que garante arrastar seu caminhão escolar para lá. Para que possamos armazenar nossa coisa. E se você clicar em Jogar, nós deveríamos ter um sistema de ensino médio totalmente funcional. Se você for aqui para o rastreador escolar, veja como o ensino médio 0 e nossa pontuação são 14. Se morrermos nosso ensino médio, et cetera, 18. E então, se morrermos antes de chegarmos aos 18, ele não será reiniciado, o que é muito legal. Agora, a última coisa que vamos fazer é fazer uma cópia do texto da pontuação para arrastá-lo para baixo. E vamos chamar isso de colegial. Clique aqui. Certifique-se de alterar isso para pontuação alta. Então vamos ter isso logo embaixo. Quero torná-lo um pouco menor, por isso é menos proeminente. Acho que isso parece bom para mim. E então talvez caia um pouco. E então aqui, se for maior, vamos nos certificar de que definimos nossa nova sonda Mesh de texto público. Você come. Vamos fazer um chamado High School como calor. Vamos apenas colocar um comentário como fizemos última vez, texto do ensino médio. Então, aqui vamos dizer que ponto de texto do ensino médio é igual a ponto do ensino médio a string e, em seguida, parênteses. Isso é basicamente para garantir que exibamos o que é nosso ensino médio toda vez que devemos nos certificar de que atribuímos esse ensino médio. Então, uma vez que ele carrega novamente, coloque o ensino médio, eu vou renomear o meu colegial demais, então eu sei exatamente o que é. Isso deve funcionar perfeitamente bem. Temos essa falha de novo, mas tudo bem. Volte para o nosso jogo. E podemos ver que nosso ensino médio é 453 no momento porque não estamos sobrepondo. Se falharmos, então ele está definido como 18. E se formos mais do que isso, podemos ver que agora é 27, o que é muito legal. A última coisa que precisamos fazer é adicionar os mesmos textos que tínhamos aqui. Certifique-se de copiar isso. Então, temos pontuação mais o ensino médio e depois mudaremos isso para o ensino médio. Então tudo deve estar funcionando perfeitamente bem. Este pequeno código aqui, na verdade, faremos todo o nosso ensino médio por nós. E com essa pequena chamada de método do State Manager, que vinculamos, tudo funcionará perfeitamente bem. Basta ir em frente e abri-lo. E se corrermos, podemos ver nossas escolas secundárias Carney para três porque é isso que entidade que se você fizer esse ensino médio 18, continue. Vamos tentar passar dos 18 desta vez. Somente aos 29. Se eu morrer, é 37 e é salvo se eu for para 18 e fumar vai sobrescrever, o que é muito, muito legal. Então, outro grande passo em direção à direção certa para um jogo móvel. Ótimo trabalho, todos, e eu os verei no próximo vídeo, onde vamos cobrir as economias para que nossa escola seja salva mesmo com o fechamento e recarga do jogo. Vejo você no próximo passo. 16. Salvando: Ei lá e seja bem-vindo de volta à unidade ou, neste caso, Visual Studio. Agora, neste episódio bastante curto, vamos rever um sistema de salvamento rápido para o nosso jogo para começar a abrir o roteiro escolar que você criou, assim como eu tenho agora. Agora, aqui em cima, podemos ver que a pontuação é matemática, final da rodada do ponto F, transformação de pontos do jogador que nos leva à escola e podemos ter nosso Texto de Pontuação atribuído aqui. Também criamos essa variável do ensino médio, que basicamente vai verificar se temos uma pontuação alta ou não, o que é muito, muito legal. É muito, muito simples ter certeza de que podemos economizar como escola secundária quando cozinhamos o jogo e podemos recuperá-lo assim que o carregarmos. E isso está usando algo chamado prefs do jogador. Agora, uma unidade que ele tem esse sistema embutido para salvar e podemos usá-lo para jogos móveis porque enquanto ele armazena localmente no dispositivo, ninguém vai ser capaz de codificar isso porque ele vai estar ligado um telefone, por isso é ótimo. Então, aqui temos um sistema para ver se nossa pontuação é maior do que um ensino médio. Por baixo disso, somos basicamente um liceu de saída. E isso é basicamente dizer: Ok, você tem uma nova escola secundária. E se tivermos um novo ensino médio, vamos querer salvar isso. Então, vamos digitar P maiúsculo, prefs do jogador, ponto e, em seguida, definir int. Agora podemos basicamente colocar o que quisermos chamar um número inteiro dentro desses colchetes. Então, vou nomear o meu. pontuação colocará uma vírgula e, em seguida, colocamos o valor que queremos colocar dentro das escolas. Vou digitar no ensino médio. Se pudermos ver, estamos salvando nosso ensino médio no jogo da escola aproximado. Então, aqui no topo, vamos dizer estrela vazia sob a equipe quando começarmos o jogo. Em outras palavras, quando pararmos de jogar novamente, vamos nos certificar de que obtemos essa variável inteira e definimos a pontuação mais alta para que saibamos qual é o nosso ensino médio. Por aqui. Vamos dizer prefs do jogador, ponto e getint, pontuação de colchetes abertos. Isso basicamente vai retornar o que colocarmos dentro da pontuação. E vou seguir em frente e definir o ensino médio igual a isso. Isso vai ser muito legal. Mas ele está agora no início de cada jogo que dissemos no ensino médio para onde quer que o salvamos, como toda vez que você tem uma escola secundária. Por baixo disso, posso simplesmente dizer texto do ensino médio. Na verdade, podemos simplesmente copiar essa linha. Na verdade, arraste-o aqui, texto do ensino médio. E agora estamos colocando o ensino médio na estrela. Estamos mostrando o que é com essas simples o quê, três linhas de código. Obviamente, também podemos adicionar argila ou talvez salvar pontos no final. Na verdade, não faz muito. Na minha experiência, descobri que isso o salva sem isso, mas se você quiser, você pode fazer isso. Eu não sei. Talvez seja algo que eu não tenha me deparado que ele salva. Então, talvez apenas coloque-o lá para uma boa medida, mas na verdade não é essencial na minha experiência. Então, com essas quatro linhas de código, saímos, ela criou nosso próprio sistema de poupança. Temos nosso ensino médio economizando toda vez que recebemos um novo e lê-lo de volta toda vez que começamos o jogo, isso realmente funcionará perfeitamente. Agora, no próximo episódio, vamos fazer todas as melhorias visuais. E depois disso, entraremos em todos os tipos de outras coisas agora novamente, mas é muito bom ter esse sistema de salvamento crucial definido em um jogo com uma maneira tão simplista. Espero que você tenha gostado desse episódio muito curto, e eu te vejo no próximo. 17. Melhorando recursos visuais: Ei lá, e bem-vindo de volta à unidade. Agora, neste episódio, essa será uma das coisas mais legais que vamos adicionar ao nosso jogo para celular. Vamos melhorar o visual dez vezes ainda mais do que isso. Quero dizer, se você fez isso de novo agora , não parece ruim, mas não parece muito bom. O problema com o nosso jogo agora é que ele tem amarelo em azul e verde, e temos vermelho. Não é um ótimo esquema de cores. Vou manter isso como amarelo porque acho que as plaquetas são boas, mas quero mudar algumas coisas. Posso mudar o tempo das coisas. Então, para começar, vou deixar o fundo preto porque acho que ficará bem legal. Então vou seguir em frente e arrastar isso da direita para baixo. Agora temos um fundo preto. Agora, a segunda coisa que vou fazer é ir ao jogador e vou deixá-los um pouco mais brilhantes assim. Acho que está bonito. Então eu vou para essas peças de fluxo e vou mudar essa cor para azul. Então eu vou até aqui, deixe-me abrir o chão e ver essas mudanças entrarem em vigor. Vou torná-lo como um belo azul claro por lá. Acho que isso é muito bom. Vou copiar esse hexadecimal. Posso colocá-lo no outro para ir ao chão de decolagem do ambiente e, em seguida, colocar isso. Acho que isso parece muito melhor. Agora, a última vez que alguém vai ao triângulo e deixá-lo um pouco mais vermelho. Então lá vamos nós, isso parece bom. Agora declare jogo, acho que essa é uma melhoria visual muito grande que podemos ver. Agora parece muito melhor. Parece mais um jogo de arcade real, como um jogo arcade antigo do que o que tínhamos antes, o esquema de cores estranho. Mas podemos realmente tornar isso muito melhor com o uso de pós-processamento. Se você não ouviu falar disso antes. pós-processamento é basicamente esses efeitos que podemos adicionar visualmente ao nosso jogo para torná-lo melhor. Eu fui em frente e criei este objeto vazio de post, ainda não adicionei nada a ele. Apenas certifique-se de que, se você ainda não fez isso, só posso excluir o meu, mostrar. Vou criar vazio, e vou chamá-lo de pós-processamento. Isso é realmente muito melhor. Então vamos centralizá-lo no meio. Certifique-se de que tudo esteja definido como 0. Então vou entrar no meu Gerenciador de Pacotes de Janelas. E, na verdade, vou adicionar esse pacote de pós-processamento e isso permitirá isso para você. Tudo o que eu quero fazer é clicar em Instalar. E isso só vai demorar algum tempo. Depois de concluir a compilação de scripts em tudo, você poderá começar a postar adicionando o jogo CIO pós-processamento. Então lá vamos nós, muito rápido e eu vou clicar no meu objeto de pós-processamento. E vou seguir em frente e vou clicar em um volume de pós-processamento. Então digite o volume pós-processo. Agora é aqui que vamos realmente criar nossos efeitos de pós-processamento. Mas antes de fazermos isso, precisamos adicionar uma camada à câmera, o que basicamente a habilita para que possamos ter pós-processamento. Então eu vou fazer gametas pós-processamento aqui, camada pós-processada. E isso vai ser a coisa legal. Vamos até aqui e temos nosso gatilho. Agora, a lista pode ser definida como nada. Então isso é basicamente dizer, ok, nós meio que pós-processamento. Se definirmos aqui, definimos o que queremos ser capazes de adicionar pós-processamento. Então, eu realmente vou definir para a camada de água, não por qualquer outro motivo, além de não usarmos a camada de água. Então isso é como uma camada sobressalente. Temos que fazer água e deixar todo o resto da mesma forma. Então vou para o meu pós-processamento. Vou mudar essa camada aqui para água, o que é muito legal. Agora vou marcar essa caixa global. E vou para o perfil e clicaremos em novo. Isso vai fazer um perfil de pós-processamento para nós. E se vamos ganhar, será capaz de ver isso em ação. Vou aqui fora efeito imunidade. E clico em glúten. E esse será nosso primeiro efeito pós-processamento. Se eu aumentar a intensidade aqui, você pode ver o que ela faz. Obviamente, isso é um pouco demais, mas esse é o efeito geral da floração. Ele adiciona este belo azul. Você pode ver que isso vai fazer maravilhas para nossos jogos. Vou fazer minha Bloom. Talvez algo como eu link cinco seja provavelmente um bom, temos uma boa coisa de néon acontecendo, então ela se encaixa. Vou deixar minha garganta em um porque acho que está bem. E todas as outras coisas que vou deixar como o boi, acho que está parecendo muito bom. Eu poderia ter, quero mudar a cor para algo como vermelho, obviamente. E então eu tenho uma garota vermelha, amarela se uma das barras amarelas e tudo o que parece bem legal, mas também adiciono talvez um verde ou um azul se o azul, mas vou deixá-lo como branco. E agora posso adicioná-lo aos dados azuis porque, mas vou ver, acho que o branco parece bom financiamento para desmarcar essa cor. Agora vou adicionar meu segundo dos meus três efeitos e vou adicionar um efeito líquido vago sobre se eu estiver pronunciando isso direito, vou aqui para a intensidade. Vou aumentar a intensidade para cerca de. Você pode ver o que está fazendo que é o efeito líquido natural. Vou fazer o meu algo como 0,3. Então, é um pouco sutil, mas você pode vê-lo nas bordas. Se eu fizer 0,5, isso será um pouco demais, pelo menos 0,3. Acho que é um bom ponto médio. Então, o último fator que vou adicionar será a gradação de cores. Isso pode ser bastante complicado, mas não se preocupe, não vamos usar tudo isso. Vamos clicar no modo aqui e mudar isso para Faixa de baixa definição. E então aqui nossa temperatura não deixaria de fora a tonalidade. Podemos sair, mas na verdade vamos nos certificar que a temperatura está definida para 0, ou seja, então vamos aqui para esses três fundos e esses são os que mudam muito saturação, brilho e contraste. Eu vou realmente mudar isso para dez, brilho de dez também. E certifique-se de que meu contraste esteja cheio. Eu também tenho dez anos, mas acho que isso faz com que pareça um pouco menos legal. Então, vamos torná-lo completo e ser melhor. E podemos ver agora que temos o que eu acho que é um jogo milhão de vezes mais bonito. Se eu for em frente e apertar Play, posso ver que esse jogo, na minha opinião, parece dez vezes melhor do que o que fez. Agora parece um jogo real. Isso realmente se parece muito com um dos primeiros jogos que já fiz chamado de raiz quadrada. Sim, é meio que estou baseando este curso, mas sim, você pode ver como o jogo parece muito melhor agora temos os efeitos de brilho de luz, e temos todos eles bons visuais que adicionamos. Temos as melhores cores. Acho que está muito bonito. Agora, a última coisa que eu queria fazer é adicionar um efeito de morte e vamos fazer isso com um sistema de partículas. Agora isso fará com que nosso jogo pareça milhões de vezes melhor. Confie em mim, haverá um bom efeito quando estamos me pedindo para explorá-lo e depois vamos responder, isso vai ficar ótimo. Mas antes de fazermos isso, vou querer ir em frente e ter certeza de que desativamos e habilitamos meu lugar quando eu morrer porque esse é, na verdade, o primeiro passo desse processo. Vou aqui para o meu script do State Manager. Vou abrir isso e criar um renderizador de sprite público e chamo de spread. Então, aqui sob meu vazio, vou simplesmente sublinhar e dizer que ponto sprite habilitado é igual a false. E isso basicamente significa ir para qualquer sprites anexado a você, que será o renderizador sprite deste Player. Vá aqui e desative-o assim. Portanto, não estará ativo. Tudo o resto é sempre trabalho C21. Mas a segunda coisa que vou copiar esse código e responder, vou definir que isso seja verdade no final. Basicamente, como se estivéssemos fazendo com muitas coisas como nossa gravidade e tudo mais. Estamos apenas configurando para ser outra coisa fora do estado fora mudou, o que é muito legal. Agora eu só preciso ir ao jogador e ter certeza de que atribuí meu renderizador sprite aqui. Então, vou para o topo. E se eu tentar arrastar isso para baixo, não vai me deixar. Em vez disso, vou apenas ir até aqui e vou clicar lá e selecionar o jogador. E isso vai me dar o certo, que é exatamente a mesma coisa que o arrastou para baixo. Certo. Não pude porque havia tanta coisa no caminho. Agora esqueci e joguei meu jogo. Eu posso realmente ver que isso em ação é se eu for e eu jogando e eu arredondar para um pico, meu sprite desapareceria e então eu responderei, mas isso não parece muito bom. Queremos adicionar um efeito e faremos isso com um sistema de partículas. Vou adicionar componente. Vou digitar o sistema de partículas. Assim que você adicionar seu sistema de produtos, clique no player e clique em Shift H, que basicamente o coloca em isolamento, usa apenas a coisa que você pode ver, o que é realmente, realmente útil para nós. Então vamos seguir em frente e vamos começar a adicionar um sistema de partículas. Um sistema de partículas é, tenho certeza que você pode adivinhar que é um efeito de partícula. E atualmente essas são todas as configurações padrão, mas não queremos essas. Então vamos mudar foi a primeira coisa que vamos fazer é ir para a animação da folha de textura. Vou passar por cada passo porque este é um componente bastante complicado. Levei muito tempo para pegar o jeito, mas eu tenho um parcial maior mas agora o suficiente para fazer um bom efeito de partícula para nossa profundidade. Vamos para Texture Sheet Animation, verificá-lo e clicar nele e, em seguida, alterar esse modo de grade para sprites. Em seguida, entre em ativos do curso e arraste seu quadrado para lá. E agora deveríamos estar quase usando R-square, que precisa ir para o renderizador e selecionar o material como Sprites Padrão. E então estamos usando quadrados normais, certo? Agora, volte aqui e podemos ver que é um efeito de loop, mas obviamente não queremos que ele fique em loop porque não os teremos uma vez para desmarcar o loop. E se clicarmos em Reiniciar, podemos ver que esse efeito continua por cinco segundos e depois pára. E podemos ver isso acontecendo, mas não queremos de qualquer maneira, e queremos que seja como 0,2 segundos. Essa será a exclusão da lei judaica. E também queremos que haja muito mais rápido. Então, não vamos, vou começar a vida para ser algo menos como 0,8. E podemos ver todos os nossos produtos irem e depois desaparecerem. Então isso seria perfeito e depois responderá. Agora também queremos que a velocidade seja muito mais. Então, vamos mudar isso para dez e, em seguida, o produto será muito mais rápido, o que é bom. E queremos que o tamanho seja um pouco maior. Então, vou fazer isso 1.5. E nós temos essas partículas maiores, o que é legal. Então aqui na emissão, é aqui que vamos mudar um monte de coisas. Vamos fazer essa taxa ao longo do tempo um 100. Podemos ver agora que é um pouco melhor, mas na verdade não é suficiente. Então, vou fazer isso 250. Lá vamos nós. É uma boa quantidade de partículas. Podemos até fazer o lançamento 300. Mas você não precisa perguntar a ele. Agora, vou ao Shape e, na verdade, minha forma como um cone, o que é perfeito para esse fato. Então deixe tudo lá dentro. Agora vou mudar duas coisas. Primeiro de tudo, quero mudar minha velocidade ao longo da vida. Então marque essa caixa e, em seguida, abra-a. Clique no tamanho, você só vai clicar neste gráfico gerado automaticamente aqui, então podemos ver a velocidade da vida útil, eles ficarão menores à medida que vão. Você também pode escolher esse, se quiser. É bem parecido, mas acho que, para explosões, este funciona um pouco melhor. Isso é legal. Então você pode ir em frente e ir para a cor ao longo da vida. Verifique, clique em Cor. E então você vai querer ir em frente e clicar no final aqui, este top e fazer isso 0. E isso basicamente vai lhe dar um bom efeito de desvanecimento assim. Agora, a última coisa que precisamos fazer é realmente garantir que a cor delas seja a mesma que a cor que estamos usando. Então clique na cor, clique nesta multa para ir em frente e escolher um lugar no seu quadrado. Você pode ver agora que vai parecer bem parecido , o que é bom. Agora, há algumas mudanças que podemos achar que precisamos fazer, mas vamos testar isso por enquanto porque pode funcionar perfeitamente. Para fazer isso. Obviamente, precisamos codificar para dizer quando queremos fazer as partículas. Então pressione Shift H novamente, de volta ao nosso jogo. Podemos ver se jogamos agora está na frente do fundo, o que é bom porque nosso fundo é menos dez. Se não fosse, poderíamos mudar um fator aqui que o faria ir na frente, mas é, então tudo bem. Então vamos entrar em nosso roteiro. Aqui. Ainda é o gerente estadual. Vamos criar um sistema público de partículas como esse em nossa mina de carvão PS. Então, aqui sob minha dieta, vou dizer logo embaixo da minha aranha que quase diziam ps, ponto, brincadeira. Então parênteses e ponto-e-vírgula. Bem, isso vai fazer é, na verdade, vai me deixar jogar esse efeito , desde que eu assine. Então, vou aqui para o meu script e arrastarei meu sistema de produtos para lá. Vou minimizar isso para que você possa vê-lo. Agora, antes de testá-lo, vamos seguir em frente e nos certificar de que temos um plano descontrolado acordado porque outra forma, ele vai jogar assim que começarmos. Vamos clicar nele. Então começamos, está tudo bem. Se morrermos, deve funcionar. Podemos ver que sou muito legal. efeito de explosão de partículas desaparece, o que eu acho que é muito bom no momento. Existem poucas mudanças que podemos fazer. Por exemplo, acho que precisamos ter a cor um pouco menos no início. Então, vamos tornar esse alfa para 150 na cor ao longo da vida. Então a última coisa que eu quero fazer, eu quero realmente adicionar a maioria, eu sou como se fosse 500. E também vou deixar esse tamanho um pouco menor. Então vou fazer isso 1.2. Isso vai estar em novo efeito de partícula. Também podemos torná-lo um pouco mais rápido, na minha opinião, eles fazem 15, deixe-me ir. Isso deve ser melhor. Se agora pararmos. Devemos ver nosso efeito de partícula em ação. No minuto em que morremos, podemos até puxar aqui e vê-lo. E lá vamos nós. Acho isso muito bom. Oh, ela foi cortada na tela. Então deixe-me mostrar como se parece em um triângulo normal. Por aqui. Aí estamos nós. Acho que isso parece muito bom. Obviamente, poderia ser melhorado. Talvez tente brincar com ele. Veja que você pode fazer com que o seu pareça melhor que o meu. Mas acho que, por enquanto, é exatamente o que eu preciso. A grande notícia é por causa de todo o nosso trabalho anterior e no presente movido se cairmos e morrermos, como estou tentando ilustrar agora, apenas faça o bem no nosso jogo. Então ele não se move, o que é muito, muito legal. Espero que depois de fazer isso, você tenha feito algumas atualizações visuais drásticas. viga de aço e a sua está olhando muito melhor. Basta dar uma olhada na aparência nosso jogo logo no início e olhe para ele agora, acho que parece um milhão de vezes melhor. Então, você já, acho que essas melhorias de visão feitas em nosso jogo parecem muito mais profissionais. E estamos mais uma vez, cada vez mais, cada vez mais perto do nosso jogo sendo terminado, tão maior se todos, eu te vejo no próximo vídeo. 18. Projeto de som: Ei lá e bem-vindo de volta à unidade. Agora, como tenho certeza que você se lembra em nosso último episódio, atualizamos fortemente nosso componente visual de jogos. Mas há um aspecto do desenvolvimento de jogos que negligenciamos esse tempo todo, e esse é o nosso componente de áudio ou design de som de jogos. Agora, obviamente, isso se divide em duas categorias principais de jogos, música e efeitos sonoros. Neste curso, ou melhor, neste episódio, vamos adicionar essas duas coisas. Agora, eu só vou ser um efeito sonoro para o salto e para a animação da morte e apenas uma faixa de música. Mas se você quiser oxidar este vídeo, você pode ir presunto adicionando quantas novas estruturas quiser ou efeitos sonoros extras porque você vai usar exatamente o mesmo processo que eu vou usar. Então, será fácil de expandir. Agora, para começar isso, primeiro vou fazer um gerenciador de música. Então vou clicar com o botão direito aqui, Criar vazio, e vou nomear esse gerenciador de música. Então vou obviamente centrado como sempre faço. E então vou querer adicionar meu script gerenciado por música a isso. Então eu vou criar um novo script C-sharp e vou chamar essa música, gerenciá-lo. Isso realmente vai ser um gerenciador de som. Você pode comer o que quiser me entender , meu gerente de música. Então vou em frente e abri-la. A razão pela qual estou nomeando gerenciador de música é porque essa é obviamente a primeira coisa que vamos adicionar, adicionando o som ainda. Então vou criar uma referência, e isso é o que chamamos de fonte de áudio. Esta é basicamente uma maneira de dizer um MP3 ou web player. Então, vou ser uma fonte de áudio pública, e vou nomear o meu AS maiúsculas a. Caso contrário, é a palavra que obviamente é restrita. Então, AS, vou seguir em frente e criar um vazio público. E vou chamá-lo de leigo. Claro que não o filtro automático na conexão ou desconexão do player. E eu vou como argila escura. Agora, isso basicamente garante como podemos vincular fontes de áudio. Eu vou aqui, garoto, parei. Então, aqui vou chamar esse vazio de argila. Então, na verdade, eu estou dizendo como jogo no começo, obviamente esta é uma maneira bastante tediosa de chegar lá, o que você pode ter notado, mas eu estou apenas tentando ilustrar algo, então fique comigo. Então, aqui, precisamos criar uma fonte de áudio. Então, vamos em frente para o gerenciador de música, porque obviamente vamos adicionar a música. Eles vão para os ativos do curso e nós vamos arrastar o arquivo de música para lá. Agora, este arquivo de música é uma música isenta de royalties da Internet, mas você pode usar o que quiser. Apenas certifique-se de que você não está usando música Cohen que seja violada pelos direitos autorais de alguém. Se percebermos que isso é isento de royalties, vá em frente e marque esta caixa. E então você vai querer continuar desmarcando o jogo acordado porque estamos fazendo isso manualmente aqui. Obviamente, poderíamos clicar em Play on awake, mas como eu disse, estou tentando ilustrar algo. Em seguida, defina o volume como 0,5 e o tom também, penso em 0,9. Isso basicamente está diminuindo a música feita. Acho que soa melhor assim, mas você não precisa. Você pode mudar o tom para onde quiser, realmente vai até três e dois menos três mudarão esse 0.5. Eu não recomendaria fazer isso, desculpe, 0,9, eu não recomendaria fazer nada menos que 0,4, caso contrário, fica um pouco lento demais. E então vamos entrar em nossos gerentes de música ainda, vou adicionar nosso script de gerenciador de som ou chamá-lo de gerenciador de música. Vou arrastar nossa fonte de áudio e podemos ver se desmarcamos o plano acordado, mas assim que clicarmos em Jogar, nosso jogo vai parar de tocar música. Muito, muito legal. Agora temos nosso roteiro musical e você obviamente pode brincar com isso pelo tempo que quiser. Eu cortei isso especificamente, então ele deve fazer um loop, mas se você quiser fazê-lo para que você desapareça ou desapareça, usamos faixas diferentes. Você pode, obviamente, mudar tudo isso. Acabei de mudar o arquivo de áudio que você está fazendo. Tudo isso está fazendo é reproduzir um arquivo em loop. Se você alterar a música, certifique-se de reajustar o tom. Caso contrário, pode ser apenas uma sensação lenta, gosto, mas agora tudo está funcionando perfeitamente bem. Agora, a segunda coisa que precisamos adicionar são efeitos sonoros, e vamos fazer aqueles usando fontes de áudio. Mas o problema com o uso de fontes de áudio é que, se você tiver várias fontes de áudio em um objeto, fica um pouco difícil diferenciar entre elas. Então, na verdade, vou armazenar fontes de áudio para o player, um player e um em outro objeto. Não importa o que eu uso. Eu poderia usar o sistema de eventos se quisesse segurar um objeto de pisos de desova, o que obviamente é um espaço de armazenamento, isso realmente não importa. Vou colocar o meu no ambiente porque esse é um dos objetos mais inúteis. Mas mesmo que este não se mova, ele ainda vai reproduzir o áudio. Não é como se o áudio fosse afetado pelo quão longe vamos avançar e adicionar uma fonte de áudio. E veremos que arrastamos na última vez. Essa é apenas uma maneira rápida de fazer isso. E vou adicionar o efeito de corante dessa fonte de áudio. Então vamos nos certificar de desmarcar o jogo em acordado. E eu quero fazer o volume também cerca de 0,5. Talvez tenhamos que ajustá-los mais tarde. Veremos que vou para o meu player e vou rolar para meu player e vou rolar parte inferior e adicionar outra fonte de áudio e adicionar o efeito de salto, mais uma vez, alterando o volume para 0,5 e alterando o Paraguai para falso. Certifique-se de que ambos os play on awake e loop estejam definidos como falso para este. Então tudo o que preciso fazer é entrar no meu roteiro e criar um novo vazio público para jogar outros museus, vou público vazio e puxar este, jogar salto. Por baixo do nosso vazio público. Lei di. Estas serão basicamente as outras duas fontes de áudio que vou aqui e vou criar como salto como dy. E vou renomear isso como música para que eu possa diferenciar entre ele. E, claro, vai reajustar isso lá. E então eu vou copiar esse código exato, obviamente apenas alterando qual áudio. Então, algumas coisas aqui, eu vou como pular o jogo de pontos. Aqui. Vou como dy dt. Agora, se você está percebendo alguma coisa, esses procedimentos são bastante semelhantes. Então, poderíamos realmente, se quiséssemos usar parâmetros e, em seguida, basta chamar um procedimento. Mas muitas vezes descobri que o uso de parâmetros pode fornecer alguns problemas no Unity Editor. E por isso, pelo bem da simplicidade, não vamos fazer isso. O que quero dizer com h no editor Unity é porque esses scripts estão sendo resfriados por código, não haveria nenhum problema. Mas se quisermos chamar o script por meio de objetos, você deseja clicar em um botão e em vazio específico do Coolidge. E tínhamos muitos parâmetros. Às vezes, não nos permite referenciá-lo corretamente. Portanto, não se preocupe com isso por enquanto. Não vai ser um problema. Nós vamos correr também, mas podemos realmente reescrever isso como um procedimento. Só estou escolhendo não fazer isso porque dessa forma é um pouco mais fácil de ler. Mas se você perceber esse ótimo trabalho, e agora só precisamos entrar em nosso gerente de palco. Precisamos ter certeza de que chamamos o fretboard. Então vá para o nosso gerente de palco e vamos criar um gerente de música pública, procurar música de acompanhamento. Então vamos até este tabuleiro de mergulho e desprovidos. E vamos nos certificar de que chamamos isso assim que morrermos. Então, depois do sistema de partículas, vou à música. Jogue morrer. Perfeito. E então aqui vou copiar esse código exato. E também vamos querer jogar isso sempre que pularmos. Mas, obviamente, isso não está ligado ao Gerente Estadual que vai se movimentar. Então, vamos fazer exatamente o mesmo processo. Vou a público, gerente de música ou música. Então aqui no salto vazio, vamos tocar dados de música dot play. Neste momento. Vamos querer criar saltos. Então, salto cinza escuro. Um pouco de atribuição que precisamos fazer antes que isso funcione. Mas uma vez que fizermos isso, tudo deve funcionar perfeitamente LC. Alteramos o script de movimento, o script do State Manager e o gerenciador de música. Então, vamos verificar se todos eles têm tudo atribuído que deveriam. Primeiro, começaremos com o script de movimento. Ele não tem um gerenciador de música certifique-se de arrastar isso para dentro. O Gerente do Estado também não. Então, sob o gerenciador de música, precisamos ter certeza de que realmente temos as fontes de áudio corretas. Então arraste como música para lá, porque mudamos o nome, ele será redefinido para garantir que você faça isso. Arraste o jogador tem o salto e o ambiente tem o corante vazio. E então vou ir em frente e jogar o jogo e você pode ver como isso soa. Tudo bem, isso foi legal. ver nesse curto período de tempo criamos um sistema de áudio totalmente funcional com música e som. E o melhor de fazer isso, obviamente podemos ver aqui que temos algum livro de códigos bastante inútil chamando jogo de um procedimento de loja que está fazendo isso por conta própria, o que é não é muito ideal. Mas a razão pela qual eu queria fazer isso é porque agora temos um link para nosso áudio e música. E mais tarde, quando criarmos nosso sistema de menus, criaremos funcionalidades para silenciar todas essas fontes de áudio. E isso vai nos deixar fazer isso, o que é muito, muito legal. Fique atento para esse Bom trabalho a todos. Espero que tudo funcione e eu obviamente vou meu código e recursos, se você quiser, você pode alterar essas coisas de áudio para estar onde quiser. Basta arrastar seu novo arquivo para lá e ele atualizará tudo. E ótimo trabalho. Vejo você no próximo vídeo. 19. Sistema do menu: Ei lá, e bem-vindo de volta à Unity. E, obviamente, no último episódio, adicionamos som e música alvo várias vezes, fazendo com que pareça muito mais responsivo. Podemos ver isso aqui assim como fizemos na última linha. Tão super legal. Agora, embora isso seja incrivelmente legal, algumas pessoas podem realmente não querer áudio e som como nós. Espero que você faça pelo menos porque você teve que ouvi-lo para o episódio passado pela metade. Vamos adicionar um sistema de menus que nos permite selecionar se deseja reproduzir som ou silenciado e também jogar o jogo. E isso nos levará de volta quando morrermos. Isso realmente vai ser bem simples. Será provavelmente uma das coisas mais complicadas que vamos fazer, provavelmente a coisa mais complicada que resta fazer neste curso. Talvez você possa achar adicionar, acrescenta um pouco confuso. Mas, além disso, esse sistema de menus, é preciso apenas um pouco para se acostumar, mas depois disso você deve ficar bem. Então, para começar, vamos primeiro começar fazendo um script de menu. Vou chamar nosso menu de scripts. Então vou seguir em frente e clicar duas vezes nisso. Agora, antes mesmo de começar a fazer meu cardápio, tenho certeza que você pode pensar que não iria querer estados diferentes. Vamos querer um estado em que estamos jogando. Estamos mostrando o texto da escola e do ensino médio. E vamos afirmar onde não estamos mostrando os textos da escola e do ensino médio, que é exatamente o que vamos consertar. Aqui. Nós, vamos ter um vazio público e chamá-lo de menu. Logo abaixo disso, vamos ter outro vazio público e chamá-lo de menu alto. Então, o que vamos precisar fazer, vamos precisar criar um sistema onde possamos ocultar, garantir botões específicos e outros elementos de interface do usuário com base no que queremos. Então, vou ir em frente e fazer isso agora. Primeiro de tudo, preciso realmente começar a projetar meu menu. Vou aqui para minha interface do usuário, e vou me certificar de desmarcar a escola e o ensino médio. Então, uma vez que isso carrega e depois clique neles, assim, clique em verificar para que não possamos mais vê-lo. E depois vou parar de curvar meu cardápio. Então, vou clicar com o botão direito do mouse na interface do usuário. E vou criar um botão com sonda de malha de texto. Agora isso vai seguir em frente e preenchimento automático. Também não podemos ver porque nossas camadas de pós-processamento um pouco no caminho. Mas se eu for em frente e escalar isso, devemos ser capazes de ver, mas isso adiciona acordes brilhantes do nosso pós-processamento. Na verdade, eu vejo com essa nova maneira e há um refrigerador que você pode esconder aparelhos. Se você for aqui no canto superior direito, você pode tirar todos os aparelhos da cena, o que é bastante útil no momento. Vou prosseguir e renomear meu botão. Então eu vou aqui para os EUA, mas eu tenho um ativo de curso e você verá aqui que você tem um jogo. Garante que todos esses assim como nos estabelecemos a primeira rua, estamos chegando a 1000 pixels. Você vai se certificar de que faz o mesmo aqui. Caso contrário, eles vão ser muito grandes. E então vá aqui para jogar depois de fazer isso e arrastá-lo para dentro e poder, podemos ver um botão Play bastante desfigurado. Então vou para o texto e excluirei. Então vou aqui e definirei o tamanho nativo. E aqui temos nosso botão de reprodução, o que é muito legal. Obviamente, pode ser um pouco menor do que uma escala que sobe um pouco. E então eu vou definir sua posição no x e no y para 0. Agora você pode achar que essas coordenadas de posição são muito maiores. Se movermos isso para 60, ele só moverá slides para isso. Mas se mudarmos nosso jogador para a posição 60, você pode ver que eles completam sua exibição. E a razão para isso é porque existem coordenadas diferentes. Estas são coordenadas de interface do usuário e a outra coordenadas do mundo. Então, não fique confuso lá. Se eu definir isso para 601960, não será a mesma coisa. Há um código que você pode convertê-los, mas não precisaremos fazer isso neste episódio. Tanta sorte para nós. Então vou seguir em frente e recontá-lo nos meus aparelhos. Posso vê-los novamente. E vou me certificar de definir isso para 0 e movê-lo um pouco para baixo. Acho que quero que meu botão Play seja da mesma cor do chão, então vou seguir em frente e fazer isso. Acho que isso parece muito legal. Então, vou querer adicionar minhas opções de reprodução e som. Vou fazer muito parecido. Vou clicar com o botão direito do mouse aqui e ir para a mensagem de texto do botão UI Pro, e chamar esse som. Por aqui, vou escrever u1 e música de qualidade, desculpe minha música e botões de som. E então vou aqui e excluirei os dois objetos de texto anexados a eles. Mova os dois aqui para o canto superior direito. Não se preocupe com essas flechas. Isso é apenas Unity descobrir como os botões funcionam. E vou mover a música para lá. E então eu vou aqui e vou arrastar música para a música como fiz com um som de reprodução e o som e clique em Definir tamanho nativo para ambos, assim como eu fiz. Então eu sempre vou escalar esses baixos. Vou fazer isso cerca de 0.4.4. Isso parece bom para mim. E o mesmo telefone de som completo, que é legal agora, na verdade, certifique-se de que eles sejam exatamente a mesma exposição então eles estão bem embaixo um do outro. Acho que parece muito bom. Agora temos nosso jogo com um sistema de menus no canto superior direito. Podemos ir em frente e mudar isso para o que eu acho que vou mudar essas cores. Vou ver como parece amarelo. Não é ótimo. Acho que vou torná-los todos azuis, mas você pode realmente fazer o que quiser se for enorme, encontrar a parte. Sim, isso parece bonito ou qualquer outra cor que funcione perfeitamente. Então a última coisa que precisamos fazer é obviamente, criar um jogo de bola de título. Então, vou clicar com o botão direito do mouse em uma interface do usuário, enviar mensagens de texto para Mac Pro e renomear isso para título. Então vou mover isso para cima. Também vou querer escalar esse **** muito maior. Eu gostaria disso. Torne talvez não tão grande, mas grande o suficiente a instituição para mover o y para baixo. Então eu vou mudar alguma essência aqui. Então, antes de tudo, vou definir o alinhamento com o centro e o centro, então está bem no meio. Então vou renomear. Vou me certificar de que tenho antes de renomear ação e garantir que o tamanho da minha fonte seja bem grande. Então eu acho que talvez cento e cinquenta milhões, duzentos, isso provavelmente é bom. Eu não diria novo texto ali. Vou ir em frente e, na verdade, mover ambos um pouco para baixo novamente. Certifique-se de que o título e o som da reprodução se moveram para baixo e podemos ver que parece um pouco melhor na minha opinião, então sempre precisamos torná-lo da mesma cor para que ele se encaixe. Também poderíamos alterar a fonte se quiséssemos. Ioc não instalou pacotes de fontes. Não vou conseguir, mas vou deixar a minha como flecha por enquanto. Vou nomear o meu. Quem? Quadrado? Agora, se você não pode criar nome tão brilhante quanto o quadrado resfriado, eu não joguei comigo. Você pode nomear o uso onde quiser. Esfriado ao quadrado é claramente o melhor nome, mas se você não conseguiu vir com algo que eles não se sentem mal. Nem todos nós somos gênios criativos como eu. E depois de termos feito isso, nosso sistema de menus está realmente bem completo, o que é bem legal. Agora tudo o que precisamos fazer é realmente programar logicamente grafias. Porque se nós apertarmos Play pois você precisa colocá-los ativos novamente, porque foi assim que cheguei ao meu avião que batemos em jogo. Não queremos esses botões de certa forma por motivos óbvios. Então eu vou entrar, queremos seguir em frente e programar a lógica para eles. Então, vou ao meu sistema de menus aqui. Vou criar uma referência a cada uma. Agora, antes de começar, certifique-se de ir para o topo e para a direita usando UI do ponto do mecanismo Unity e usando o protocolo de mensagem de texto, assim como fizemos da última vez. Então eu vou querer criar alguns ODS e ir ao texto público Mesh. Você cria. E vamos chamar isso porque esse será o nosso título. E então vamos querer criar um botão público. E vamos chamar essa peça, chamada “The next one music”. Vamos chamar o próximo som. Então precisamos ir aqui para a interface do usuário. Na verdade, vou colocar meu manuscrito em UIs para apenas dirigir isso lá. Então certifique-se de que eu assinei minha coisa. Então eu toco o botão para tocar meu botão de som para som, meu botão de música para música e meu título lá. E estamos quase acabando. A última coisa que precisamos fazer é criar uma referência à pontuação, à pontuação alta. Vamos apenas adicionar algumas vírgulas e depois colocá-las ali quando elas carregarem. Mas a pontuação lá e o ensino médio lá. Agora, o que preciso fazer é que preciso criar lógica para quando eu quero mostrar qual delas. Então, obviamente, quando estou mostrando o cardápio, eu queria ter certeza de que tudo, exceto o título e a escola estão mostrando desculpas, a escola e o ensino médio. E quando estou contratando o menu para ter certeza exatamente o oposto. E vou fazer isso com parâmetros porque sei que mencionei no episódio anterior que às vezes Unity tem coisas estranhas com parâmetros. Mas muitas vezes descobri que isso é apenas quando você está usando mais de um parâmetro. Então eu vou chamar isso do código, então vai ficar bem, na verdade, mas vou ir em frente e ir aqui. E isso, na verdade, pode ser uma maneira muito melhor de fazer isso. Vou anular público, mudar o banco. E então vamos ter um booleano e eu vou chamá-lo de x. Agora, a partir disso, podemos realmente definir cada um porque obviamente vamos querer configurá-los para serem completamente contrastante. Quer dizer todos esses análogos ou ambos e nem os outros. Então vou até aqui, título ponto GameObject. Sou referenciado o conjunto de objetos do jogo ativo, depois abro colchetes e, obviamente, posso inserir X aqui. Então, dependendo de onde inserimos para x, eu definiria o título ativo para isso. E eu basicamente vou me certificar de que eu fiz isso a cada um deles. Então Tyler Rhodes Family, vou querer ser o mesmo para o crânio, o mesmo recorde total. E podemos chamar as linhas de código pressionando Control D. Isso é bastante útil para a mesma música de reprodução completa. E para som. Obviamente, isso pode defini-los todos ou nada e não queremos fazer isso. Queremos definir a escola e o ensino médio para serem diferentes. Vou colocar um ponto de exclamação bem na frente disso. E isso basicamente vai dizer que não X. código de espera funciona é que estou dizendo que estou inserindo um booleano x sim ou não, verdadeiro ou falso. E eu vou chamar esse ponto se quiséssemos esconder tudo, exceto a escola, eu trouxe o menu de mudança falso e então vai dizer ok, então no título falso, a escola não é falsa ou verdadeira, o ensino médio não é falso ou verdadeiro, e tudo o mais falso. E, obviamente, se eu fizer o oposto, isso vai definir isso verdadeiro, verdadeiro, verdadeiro e esses dois falsos, o que é muito, muito legal, é uma maneira realmente simplificada de fazer isso. Então tudo o que preciso fazer é criar uma referência a este menu a partir da minha máquina de estado. Vou ao menu público. Eu não quero chamá-lo de menu, então eu tenho um link. E então vou até aqui para meu painel, onde estou esfriando todo o resto. E, na verdade, vou dizer menu, menu de mudança de pontos. E eu, claro, entraria aqui para que tudo esteja centrado em verdade exceto a escola e o ensino médio. E então, sob o vazio de resposta, vou fazer uma coisa muito semelhante. Vou subir aqui embaixo minha coisa e definir o menu como falso. Agora, o que isso basicamente vai fazer é garantir que, quando morrermos, o menu mostre e depois volte. Isso não é inteiramente o que queremos. Vou te mostrar como isso parece agora. Se formos em frente e apertarmos o jogo, primeiro antes de você jogar, na verdade, temos que atribuir leituras. Então, vamos para nossa máquina de estado e certifique-se de que definimos nosso menu para Menu e, em seguida, clique em Reproduzir. Na verdade, vou silenciar o áudio porque posso falar sobre isso para poder falar conosco. Vou ao meu gerente de música e vou ir em frente e bater mudo na música e já sou o mesmo com o player. Vou apenas ir aqui e clicar em Silenciar. E o mesmo com o meio ambiente. Então, não vou ter nenhum antes. Se você não fizer isso, tudo bem. Estou só para poder falar sobre isso e não ser destruído pelo subtrato muito legal novamente. Então, se eu for em frente e apertar Play, isso está bem próximo do que eu quero. Podemos ver que tudo está aparecendo de uma só vez. Se eu morrer apenas o menu é exibido e então isso aparece. Mas, obviamente, o menu não é muito útil para esse funcionário clica aqui. Ele realmente não faz nada que não seja o ideal. Então, vou mudar essa lógica de código um pouco. Em vez de dizer, tenha um atraso e responda automaticamente, vou chamar essa resposta de nulo no menu, e mostrarei como isso funciona se eu for em frente e comentar isso para que tudo o que está fazendo é esperar e, em seguida, nada acontece. Claro, isso é tipo de usar esse código, mas vamos usá-lo mais tarde, então não o exclua. Então vou até aqui ao meu jogo e desabotoar, clicar e clicar aqui. E vou arrastar meu jogador. Deixe-me ir. Sem função. Vou até aqui até o State Manager e eu vou clicar em responder. E o que isso realmente vai fazer é parecer bem legal. Vamos ver, obviamente tudo está bem ali quando começarmos, que é exatamente como queríamos. Mas se morrermos, não responderemos. E então, se quisermos clicar nisso, respondemos. E isso é muito próximo como queremos que nosso sistema de menus funcione, o que é novamente, muito, muito legal. Agora, há alguns problemas. Primeiro de tudo, eu queria ter certeza de que esses dois estão desativados quando eu começo porque não era assim que eu queria ir. A segunda coisa que eu quero ter certeza de que tenho é que quero ter certeza o jogador não está realmente em um estado em movimento no início do jogo. Vou ficar no gerente estadual e vou deixar meu estado ocioso. Começo, não importa o que você coloca aqui porque estamos apenas verificando se está jogando. Então você pode até colocar morto, isso realmente não importa. E então a outra coisa que vou fazer é definir minha gravidade obviamente em minha mudança para 0. Começamos por ser suspensos no ar, o que é muito semelhante ao dia da mesa sem efeitos alelos. Vamos voltar para Unity. E podemos ver como isso parece aqui. Se eu começar, estarei suspenso e assim que clico em Jogar eu gero, o que é muito legal. Se eu morrer, vou ter isso novo e aparecer e tudo está funcionando perfeitamente, o que é muito, muito legal. Agora, as poucas mudanças são desfeitas. Primeiro de tudo, quero fazê-lo para que você volte ao início e responda mesmo antes de ter todos os outros efeitos. Então, na verdade, precisamos voltar a essa co-rotina. Vamos colocar essa resposta nula aqui. Mas em vez de torná-lo um Boyd, vamos mudar para dois. Então, vou ser vazio público. Vou chamar isso de um ponto. Mais uma vez. Sinto falta de lidar com toda a outra lógica exceto definir a posição e definir o passar por aqui, vamos mudar isso. E agora vai fazer é quando morrermos, vamos voltar ao começo, mas não vamos definir mais nada. Então vamos mudar nosso botão para chamar esse vazio em vez disso. Vá aqui para o meu botão, UI, até o botão de reprodução. E vou ir em frente e mudar isso para o jogo de ações do State Manager. Isso é muito legal. Agora, se eu for em frente e jogar meu jogo, posso clicar, iniciar o jogo. Eu poderia morrer. E depois há um atraso e eu volto. Mas eu não preciso mostrar ainda. Então, vamos voltar ao nosso código. Vamos mudar essa lógica do menu. Em vez de mudar o menu assim que morrermos, vou defini-lo quando respondermos, o que é bonito, muito legal. Agora você verá como isso funciona no jogo. De volta ao meu jogo. Clique aqui. Podemos ver que começamos com o menu clique em Jogar. Podemos jogar ao longo de uma alta velocidade, obviamente salvo como fizemos há algum tempo. E nós respondemos como estamos recebendo, o que é muito, muito legal. A última coisa que precisamos mudar, precisamos ter certeza de que esses botões realmente também são web. Isso também vai ser bem simples. Vamos entrar em nosso manuscrito novamente. E vamos fazer uma nova voz e vamos chamá-la mudança de público, vazio público. E vamos chamar isso de áudio de mudança. O único vai ser alterado de áudio. O outro vai ficar frio. Mude a música. Isso basicamente vai dizer se queremos mudar a música. Não vamos fazer isso em carros alegóricos, a música brilhante pública. E 48. Então tudo o que vai fazer aqui é que vamos configurá-los, mudá-los para aprender música igual a não música. Isso basicamente significa apenas se for verdade, ele o torna falso, é falso, torna verdade. Obviamente, quero colocar isso lá. Vou colocar o mesmo aqui para áudio igual a não auditor. Então, por fim, precisamos fazer é ter acesso aos nossos sistemas que podem realmente tocar a magia da música. Vou apenas ir em frente e criar um gerente de música pública. Chame isso de gerenciamento de música. Então eu vou gerenciar o ponto de música, e então vamos encontrar a fonte de áudio que eu quero. Então, se formos aqui, podemos ver que foi chamado terrível como pular na música. Quando, na verdade, para áudio, vou definir como Guy como pular o mutante para ser o que quer que seja o áudio. Algo, Dr. Newton é igual a áudio. E eu vou copiar esse código exato e colocá-lo aqui, exceto desta vez como salto. Então vou fazer coisas muito parecidas lá. Vou descer aqui e, em seguida, um ponto de música definido como a música é igual e depois mudá-lo para música ali. Essas menos cinco linhas de código vão nos fazer ter um sistema muito legal que pode alternar entre áudio silenciado e não silenciado. Vamos voltar aqui. Você precisa fazer um pouco de atribuição primeiro. Então, vamos e certifique-se de que sou gerenciador de música está vinculado lá. E vá para o nosso som e certifique-se de que ele tenha um evento onclick. Arrastando a interface do usuário, clique no menu de clique sem função e selecione aquele aqui que diz Alterar áudio. Vá aqui e faça exatamente o mesmo com a música, arrastando o menu da interface do usuário e, desta vez, mude a música. Agora, antes de jogar, vou seguir em frente e me certificar de que eu não silenciei todas as coisas que silenciei antes para poder mostrar para você, porque eu não tenho que estar mexendo com o nosso jogo um um pouco. Então, vamos em frente e silenciar tudo. E vou mostrar exatamente como isso funciona. Podemos ver que podemos silenciar o áudio com facilidade e continuar sem cliques. Nós apenas fazemos o mesmo com nossos sons. Se eu for aqui, posso ver que meu toque um som foi realmente silenciado. Se eu desclicar que ele não tem. Então eu posso tocar apenas com som e música. Muito, muito legal. Agora, este é obviamente o básico do nosso sistema de menus. Eu acho que demos alguns grandes saltos em nosso jogo, e é a última grande coisa que precisamos para adicionar o próximo episódio podemos fazer monetização e seguida, está consertado agora jogo de bola e estamos realmente pronto para colocá-lo no celular. Tão ótimo trabalho para todos. Espero que você goste do absoluto e te vejo no próximo. 20. Monetizing nosso jogo: Ei lá, e bem-vindo de volta à unidade. Agora, essa é a principal característica perdida. Vamos adicionar dois novamente, este é o último passo. Então, o que vou falar sobre o recurso completamente novo estamos adicionando e isso é monetização. Depois disso, o jogo móvel está praticamente feito. Nós só precisamos obviamente colocá-lo no celular e construí-lo. E podemos ver que tudo funcionará perfeitamente bem, o que é realmente, realmente ótimos mutantes, você percorreu um longo caminho em sua jornada de desenvolvimento de jogos para dispositivos móveis. Tão ótimo trabalho que você fez incrivelmente. Agora, os jogos para celular sempre usam anúncios para rentabilizar. Isso é um pouco exagerado, mas praticamente todos os jogos móveis por aí usam anúncios de algum tipo porque é uma ótima maneira de rentabilizar seus jogos. E adicioná-los não é super fácil, mas na verdade não é tão difícil quanto você imagina graças ao pacote add do Unity. Agora, vamos passar por esse processo passo a passo. Certifique-se de seguir tudo o que faço porque fazer pequenas mudanças pode resultar em pequenas coisas estranhas que você precisa fazer. Então, certifique-se de seguir tudo exatamente. Pare, vá para scripts e você vai querer importar esse script do Ad Manager. Agora, se você acessar os recursos deste vídeo, descobrirá que há um script do Ad Manager lá. E você pode ir em frente e baixar isso e isso lhe dará o script do Gerenciador de anúncios. A razão pela qual eu não o incluí nos ativos do curso é porque ele vai dar erros assim que você baixá-lo. Vai dizer que o anúncio não existe. Está tudo bem. Isso é só porque ainda não ativamos anúncios em nosso jogo depois de instalá-lo e você provavelmente tiver suas duas horas lá, vá para Janela, selecione Geral e selecione serviços. Depois de fazer isso, você deve ver essa coisa. Levará um tempo para carregar e, em seguida, você receberá essas listas de serviços. Todos eles devem estar desligados por enquanto. Então vá para anúncios e você pode não ser levado para esta tela imediatamente. Agora, a razão pela qual fui levado a isso é porque obviamente já estou conectado ao Unity porque já usei o Unity antes. Mas se esta foi a primeira UTI, Portugal, você fez todo este jogo para celular, talvez você não tenha assinado, então ele pedirá que você assine sua conta unitária. Agora, presumo que você tenha uma conta Unity porque instalou o Unity Hub e acredito que você precisa ter uma conta Unity para criar uma. Mas se você não o fez, basta ir em frente e criar um, haverá um processo muito simples. Obviamente, você pode fazer isso no unity.com e apenas criar uma conta. Depois de criar sua conta Unity ou seu Unity Hub ou conta, o que você precisar, vá em frente e ele pedirá que você crie um videogame. Então você vai ter apenas escolher uma organização. Você pode estar se perguntando o que é isso. Se você subir aqui para o painel, clique aqui. Isso levará você ao seu painel Unity. E isso realmente vai ser onde você pode controlar todo tipo de coisas assim. Obviamente, ainda não fiz login, mas se eu atribuir, ele me levará a uma página onde eu sou capaz criar organizações e assim. Então vá em frente e faça uma organização, se você ainda não o fez, e então você terá que reiniciar para você recarregar o dever e a organização estará lá como um dos menus suspensos opções se você tiver que escolher isso para selecionar seu jogo. Se você não se deparou com nenhum desses problemas, não se preocupe. Só estou dizendo caso alguém o faça. E, por último, você tem que dizer se você vai ter como alvo pessoas menores de 13 anos ou mais, e é assim que você está em conformidade com a Coppa? Vá em frente e clique em Sim, apenas para uma boa medida. Obviamente, ainda não sabemos o suficiente sobre direitos autorais para estarmos fazendo essa suposição. Se você está planejando lançar um jogo para celular, recomendo que você faça alguma pesquisa sobre isso, porque essa é uma lei muito importante que você precisa seguir ao fazer jogos para celular. Então, obviamente, a Lei de Proteção de Privacidade Online das Crianças . Mas se você não estiver, se você está apenas tentando terminar este curso e contra isso mais tarde, basta ir em frente e clicar em sim ou não. Não importa, não está lançando ou jogando no momento. E então você será levado para esta tela. Agora, antes de tudo, clique nos anúncios e isso vai demorar um pouco para carregar e ele vai congelar. Talvez ele carregue seus pacotes resolvidos, compile scripts C-sharp e, depois algum tempo, ele deve habilitar tudo. Então o ADS está ativado. Aí está você. Agora podemos ver que temos anúncios, diz a versão atual 3.7.5. Agora, isso realmente instalado automaticamente no Unity. Não sei por que o meu foi instalado automaticamente, mas uma vez anterior estava fazendo isso. Não aconteceu, então não tenho certeza de como funciona. Vou mostrar-lhe como instalá-lo caso o seu não tenha. Mas se ele sempre instalou a conversão e há uma versão posterior disponível, certifique-se de baixar a versão recomendada, não necessariamente a versão mais recente porque encontrei o mais recente versão às vezes me dá problemas. Então, se eu quiser deixar meu jogo pronto para anúncios, preciso baixar este pacote aqui. Como eu disse, já consegui. Mas vá até aqui para o Window Package Manager se você não fizer isso, está bem ali. E então encontre esse anúncio um. E se você não o instalou, clique em Instalar obviamente no alto, então não vou removê-lo. E você também verá que minhas flechas desapareceram, o que significa que meus anúncios estão funcionando perfeitamente. A última coisa que quero fazer é clicar aqui nos anúncios e vou ativar o modo de teste porque quero ter certeza de que não estou usando anúncios reais se você estiver testando seu jogo ou seu, a única coisa que você não permissão para usar anúncios reais, você tem que usar anúncios de teste, que é exatamente o que estou fazendo. Então vou em frente e vou abrir o gerenciador de anúncios. E podemos ver que todas essas áreas devem realmente desaparecer assim que elas forem atualizadas, se não o fizerem, às vezes a Unity tem problemas com isso, como por exemplo, pode não estar desaparecendo. Se eu fechá-lo e eu reiniciar, eles podem ir embora. Eles podem não usar esses pouco estranhos. E espero que, quando você estiver usando o Unity, eles tenham corrigido isso. Você pode ver agora minhas flechas parecem ter desaparecido. Ok, agora isso aconteceu. Eu vou aqui e, na verdade, vou apenas ir para inquilino AD muitas vezes em diante. Agora, é importante ter em mente que essas flechas não são resultado de nada que você está fazendo de errado. Isso é unidade e eles têm essa falha realmente irritante. Então, leve comigo aqui. Se isso acontecer com você, faça o que estou fazendo, desligue e ligue. Veremos se isso funciona. Podemos ver de mim que, de fato, tem trabalho. Então agora funcionou só porque eu desliguei e liguei. Você pode ver, obviamente, eu não fiz nada de errado. Não há nada de errado com o roteiro. Apenas as unidades problemas se isso não funcionar para você, você também pode tentar desinstalar e reinstalar no pacote acessando o Package Manager, depois indo lá e removendo-o e instalando-o. Então, sim. Espero que agora você esteja em um ponto em que seu jogo tenha o script e não tenha mais erros se você tiver, ótimo. Agora, a última coisa que vamos fazer é mostrar um anúncio toda vez que morrermos. E isso é realmente muito fácil de fazer. Agora, antes de mudar isso, acabei de perceber que nome da minha classe não é o mesmo que o nome do meu arquivo, que é uma área sobre a qual falamos anteriormente. Então, vamos seguir em frente e corrigir isso. Caso contrário, isso nos dará áreas no futuro. Certifique-se de que isso seja o mesmo, ambos fizeram o upload deste curso, você deve ser atualizado, então não se preocupe, mas se não for, apenas certifique-se de que você tem isso e é isso que cada script eu vou usar para permanecer gerente e vamos criar qualquer novo gerenciador de anúncios públicos. Vamos chamá-lo de add. Então, aqui, quando morrermos em cima de todas essas coisas, vamos chamar nossa resposta de nulo. E assim que respondermos por baixo desta resposta vazia dentro da corrotina, você vai adicionar pontos, mostrar adicionar parênteses. Isso significa basicamente que toda vez que morrermos, veremos um anúncio curto. Agora vamos ver se esse era o nosso jogo móvel real. Isso seria um pouco chato e não acho justo ter todos os usuários assistindo um a cada vez. Então, em vez disso, vamos criar uma variável inteira. Vamos ir a público e chamá-lo de adicionar peso. Em vez de dizer show ad, vamos dizer que adicionar peso é igual a peso mais um. E isso é basicamente uma maneira de dizer, Ok, aumentado em um. Também poderíamos escrever isso como adicionar peso mais igual a um. Isso significa exatamente a mesma coisa. E então vamos dizer que adicionar peso é maior ou igual a três. Então eu quero redefinir o adequado para que seja 0. E eu quero ir em frente e mostrar meu anúncio. Não ia fazer isso significa que toda vez que morrermos, vamos aumentar com base em aplicativos. Então, a cada terceiro jogo vamos mostrar um irlandês um pouco mais agradável. Se formos em frente e abrirmos o Unity, vamos vincular isso e vamos testar se funciona. O Google aqui para o jogador encontrará nosso Gerente Estadual lá. Certifique-se de clicar de volta para inspecioná-lo, mas na verdade não adicionamos nossos anúncios em nosso jogo. Também precisamos criar um novo objeto. Vamos criar objeto, chamar o gerenciador de anúncios. Gerenciador de música, apenas centrado arrastando sua vantagem para lá e depois vá para o reprodutor de áudio e certifique-se de arrastar isso para o manuscrito de estado assim. Se tudo funcionar, devemos ser capazes de rastrear o peso adicional aqui. Se seguirmos em frente e apertarmos Play, podemos ver apenas silenciar isso por enquanto. E então ali, se eu for em frente e bater o jogo, eu morro. Eu poderia adicionar peso está bem agora um. Vá em frente e morra novamente. Meu agregado é igual a dois. E se eu fizer isso pela terceira vez, o que deveria acontecer é que estou realmente mostrando aqui vamos nós, perfeito. Isso é que as unidades estavam nos dizendo que nossos anúncios estão funcionando. Se agora criássemos este jogo e executá-lo, teríamos anúncios de trabalho, o que é realmente, muito bom, ótimo trabalho, o que significa que a adição final ao nosso jogo está realmente concluída. Este é o nosso jogo móvel acabado. É incrivelmente impressionante o quanto conseguimos fazer em um período tão curto de tempo e ótimo, ótimo trabalho. Isso é incrível. E você fez incrivelmente neste curso, bem feito para todos. E depois de completar o vídeo final após isso, você terá criado seu primeiro jogo para celular em Unity e C sharp. Trabalho tão incrível. 21. Finalização: Ei lá e bem-vindo de volta à unidade pela última vez. Agora você merece uma salva de palmas porque criou um incrível jogo para celular. E se for o seu primeiro jogo para celular ou um dos seus primeiros jogos, você fez um trabalho incrível, ótimo trabalho. Estamos quase acabando com um jogo para celular. E há algumas coisas que significam mudar antes de construí-lo. E então vou mostrar como construí-lo e testá-lo em um emulador. Ou se você tiver um telefone Android ou um telefone Android, raiz cubo do IRS, você pode testar em um de seus telefones. Tenho um telefone iOS, mas vou mostrar como construir com um emulador. Mas antes de entrarmos nisso, eu realmente preciso mudar uma coisa que escrevemos para eles entrando no curso. Se você abrir seu script de movimento, você se lembra de que estávamos usando teclados. E a razão pela qual estávamos usando atalhos de teclado para nosso movimento, ou teclas do teclado era porque queríamos testar e todo o computador. Então agora vamos seguir em frente e mudar isso porque queremos construí-lo. Portanto, exclua isso e digite contagem de toque de pontos de entrada maior que 0. E isso vai verificar cada quadro que você estava segurando. Se eu estiver de aterramento, se você tiver saltos para poder segurar e continuar o trabalho, o que é muito legal. Agora, obviamente, não seremos capazes de testar isso porque não podemos pular. Não podemos tocar em nosso monitor porque estamos em um computador. E, obviamente, nossos elementos de interface realmente funcionam automaticamente com a unidade. Em seguida, vá para o topo aqui, clique em Configurações de compilação e certifique-se de ter sua plataforma correta. Vou construir para APKs. Não vou verificar isso. E há algumas configurações aqui. Você pode definir todos os tipos de coisas. Você pode definir sua resolução o que deseja ter paisagem, direita ou esquerda, todos os tipos de coisas. Vou deixá-los agora. Na verdade, vou me certificar de que só posso ir à paisagem porque não quero que no jogo seja retrato. A imagem inicial que você pode adicionar, se quiser. Isso é como uma imagem no início. Outras configurações que vou deixar agora existem algumas configurações de publicação, mas isso podemos realmente deixar. Só precisamos ir aqui, precisamos clicar em Construir e precisamos seguir em frente. É aqui que meu projeto está armazenado no meu computador. Vou ir em frente e salvar e isso vai parar de construir. Agora esse é um processo bastante demorado. Então dê um minuto. Depois de terminar a construção, seu jogo será exportado. Se você tiver algum erro ao tentar construir seu jogo, às vezes o Unity tem erros que podem não ser sua culpa, talvez com o módulo que você instalou ou qualquer coisa assim, basta digitá-los diretamente no Google. E eu prometo a você que provavelmente haverá alguém lá que teve exatamente o mesmo problema você tem e corrigiu, a menos que inúmeras vezes e na maioria das vezes tenha funcionado. Então, apenas experimente isso que deve corrigir qualquer problema que você tenha que eu não tenha encontrado. Quando terminar a construção, você estará pronto para testar seu jogo para celular. Eu os dois Androids, estou testando no emulador Android não player. É claro que você pode usar um telefone Android ou iOS se não o fez, e se você votar no IRS, acredito que você pode baixar uma extensão para Mac em um MacBook para instalar e testar jogos móveis a partir daí. Agora, antes de testarmos, há algumas coisas que você precisa observar. Primeiro de tudo, dependendo de qual plataforma você usa, se você quiser testar seu jogo como eu sou, você tem que ter certeza de que definiu seu ID do jogo para o mesmo que você ganhará foi registrado como, o que eu sou vai mostrar a você como fazer agora, todos os anúncios não funcionaram. Então, obviamente, depois de colocar seu jogo antes de ganhar, preferência vá até aqui para serviços, clique em anúncios e certifique-se de que você definiu qualquer plataforma, Android ou iOS, esse ID, certifique-se de defini-lo aqui para o ID do jogo de string no Add Magic, abra o gerenciador de anúncios e certifique-se de que você o configurou para que sua string seja essa cadeia de números. Depois de fazer isso, o anúncio deve funcionar perfeitamente em seu jogo. A segunda coisa a ser observada com resoluções, agora, você ganhará pode funcionar perfeitamente para o seu dispositivo, mas pode haver algumas coisas que estão ligeiramente fora da sua resolução. Se for esse o caso, basta alterar a resolução da tela no Unity Editor e mover algumas coisas. Quando eu estava testando este item do jogo move algumas coisas para a direita, mas no geral tudo funcionou perfeitamente e minha resolução estava muito boa. Vá em frente e arraste isso para o player NOX. Você pode ver que ele vai instalar meu jogo para mim. Aprendendo. E diz Instalar concluído. Eu posso então carregar meu jogo. Volumes estão aqui uma coisa. Podemos ver que está funcionando bem, isso é ótimo. Se eu for em frente e apertar Play, posso pular como estive. E eu posso segurar, saltar para dentro, e continuarei pulando, o que é realmente, muito legal efeito morrer. Tem essa profundidade com a qual comecei. Posso contar a música se quisesse desligar o som e continuar em movimento. Eu sempre falo e continuo. E se eu morrer três vezes, vou mostrar em um segundo, verei uma Lei de teste de unidade, que é muito, muito legal. Posso ir em frente e pular isso uma vez feito e fechá-lo e podemos ver que estou de volta ao meu jogo, o que é muito, muito legal. Isso nos leva ao final deste curso. Você criou seu primeiro jogo para celular usando Unity e C-sharp. Você fez um trabalho incrível e deu a si mesmo um tapinha nas costas e chegando até o final do curso, você aprendeu habilidades inestimáveis de unidade e C-sharp, e espero que você tenha adquirido conhecimento suficiente para começar a fazer seus próprios jogos para celular agora ou até mesmo melhorar o que fizemos. Sou conhecido por um. Podemos usá-lo em um ícone para que você possa simplesmente entrar nas configurações do jogo aqui, Configurações compilação de arquivos, ir para as configurações do jogador. E aqui você pode selecionar um novo ícone que você não era. Obviamente, existem diferentes, ícones adaptativos Legacy Round, você pode escolher aqueles lá. Mas, obviamente, o editor Unity agora está parecendo muito mais familiar. E o mundo do desenvolvimento de jogos agora é sua ostra, especialmente o desenvolvimento de jogos para dispositivos móveis. Ótimo trabalho para todos. Quero agradecer muito por fazer meu curso. Foi um prazer ensinar o desenvolvimento de jogos para dispositivos móveis. E espero que você tenha se divertido e aprendido muito. Você, é claro, tem permissão para usar qualquer um dos recursos deste curso e qualquer coisa que construímos para moldar em seu próprio jogo móvel. Se você quiser melhorar isso e lançar como seu próprio jogo para celular, você pode fazer exatamente isso. Tão ótimo trabalho para todos. Foi uma experiência incrível e espero que tenha sido para você também. Obrigado novamente por se inscrever.