Guia completo de programação C# e Unity 2D — Crie um jogo de RPG (Role Playing Game) | Michael Murr | Skillshare

Velocidade de reprodução


1.0x


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

Guia completo de programação C# e Unity 2D — Crie um jogo de RPG (Role Playing Game)

teacher avatar Michael Murr, Software Engineer | Coding Instructor | Game Dev

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.

      Por que você deve assistir a esse curso

      7:20

    • 2.

      Seção 1: como usar esse curso

      14:28

    • 3.

      Baixe Unity & Visual Studio passo a passo

      7:09

    • 4.

      Unity & VS 101

      9:23

    • 5.

      Seu primeiro código

      12:17

    • 6.

      Versão Control 101

      18:37

    • 7.

      Legendas do design de jogos de conquista

      13:26

    • 8.

      Seção 2: Configurando a folha de sprite

      10:17

    • 9.

      Camadas de classificação

      6:10

    • 10.

      Colliders & RigidBody

      7:28

    • 11.

      Scripts e variáveis 101

      11:00

    • 12.

      Inputs & RigidBody Velocity

      13:29

    • 13.

      Animador e animação

      10:11

    • 14.

      Transição e mistura

      17:29

    • 15.

      Misture as animações de árvores na unidade

      8:17

    • 16.

      Enfrentar a direção certa

      13:07

    • 17.

      Colidir com objetos

      9:29

    • 18.

      Seção 3: alternando da cena para a cena

      10:40

    • 19.

      Gerente de cena e Prefabs

      11:33

    • 20.

      Padrão de singleton

      4:34

    • 21.

      Área Enter

      12:38

    • 22.

      Ordem de execução de script

      5:21

    • 23.

      Seção 4: Cinemachine 101

      9:00

    • 24.

      Extensão de cinemachine Confiner

      15:06

    • 25.

      Azulejos na unidade

      6:50

    • 26.

      Criando um mapa de azulejos

      12:10

    • 27.

      Manter o jogador dentro do mapa

      12:54

    • 28.

      Criando um segundo nível

      4:05

    • 29.

      Gerente de nível

      10:45

    • 30.

      Canvas in Unity

      8:16

    • 31.

      Coroutines 101

      12:00

    • 32.

      Seção 5: criando uma interface de diálogo

      14:39

    • 33.

      Controlador de diálogo (armários)

      10:53

    • 34.

      Propriedades da matriz

      9:42

    • 35.

      Ativando o diálogo na área

      9:06

    • 36.

      Manipulador de diálogo

      12:24

    • 37.

      Movimento de segurando o jogador

      6:58

    • 38.

      Mostrando nomes de personagens

      6:55

    • 39.

      Seção 6: Estatísticas do jogador

      6:07

    • 40.

      Para Loops na unidade

      10:17

    • 41.

      Distribuição de experiência

      7:04

    • 42.

      Nivelamento de testes

      6:16

    • 43.

      Nivelando as estatísticas

      6:21

    • 44.

      Gerenciador de jogos

      6:15

    • 45.

      Seção 7: UI do menu

      6:32

    • 46.

      Informação do personagem

      15:31

    • 47.

      Gerente de menu

      5:13

    • 48.

      Pare o movimento do jogador (novamente)

      6:42

    • 49.

      Configurando o stat

      13:44

    • 50.

      Atualizando as estatísticas

      13:34

    • 51.

      Usando os botões

      9:53

    • 52.

      Configurando a interface do estado da Widow UI

      15:43

    • 53.

      Exibindo informações da Widow do estado

      12:49

    • 54.

      Seção 8: criação de itens

      15:42

    • 55.

      Janela de itens

      13:26

    • 56.

      Listas em C#

      6:45

    • 57.

      Colhendo itens

      7:20

    • 58.

      Atualizando itens no inventário

      7:02

    • 59.

      Exibindo itens de coleta

      13:25

    • 60.

      Itens empilháveis

      14:01

    • 61.

      Selecionando itens

      8:05

    • 62.

      Descarte itens

      9:29

    • 63.

      Usando itens

      8:50

    • 64.

      Adicionar a escolha do personagem

      12:03

    • 65.

      Escolher um personagem

      6:25

    • 66.

      Usando armas e armadura

      14:55

    • 67.

      Seção 9: Loja de telhas

      6:57

    • 68.

      Configuração de loja

      20:51

    • 69.

      Configurando a loja Keeper

      8:39

    • 70.

      Itens para comprar e vender

      8:59

    • 71.

      Comprar itens

      14:22

    • 72.

      Fazendo trabalho de compra e venda de botões

      10:27

    • 73.

      Seção 10: criação de missões

      7:34

    • 74.

      Quests de marcação

      10:28

    • 75.

      Objetos de missão

      9:19

    • 76.

      Finalizando missões

      5:18

    • 77.

      Ativando missões

      11:16

    • 78.

      Ativando missões após o diálogo

      9:51

    • 79.

      Seção 11: PlayerPrefs

      9:27

    • 80.

      Carregando dados

      10:33

    • 81.

      Definir e obter o Float

      7:52

    • 82.

      Salvar e carregar as estatísticas do jogador

      10:42

    • 83.

      Salvar listas de itens usando itens ativos

      19:58

    • 84.

      Seção 12: áudio na unidade

      12:03

    • 85.

      Como tocar música

      6:04

    • 86.

      Reprodução de áudio a partir do código

      12:57

    • 87.

      Seção 13: Main Menu UI

      8:21

    • 88.

      Gerente de menu principal

      7:12

    • 89.

      Continuar o jogo

      12:24

    • 90.

      Seção 14: criando uma Arena de batalha

      4:58

    • 91.

      UI da cena de batalha

      17:11

    • 92.

      Personagens de batalha

      12:37

    • 93.

      Começar uma batalha

      13:25

    • 94.

      Adicionar jogadores

      16:51

    • 95.

      Adicionar inimigos

      10:32

    • 96.

      Colocar a versão do sistema de combate à base de giro

      12:13

    • 97.

      Tomar Turns

      9:08

    • 98.

      Atacar com inimigos

      9:49

    • 99.

      Efeitos de ataque

      16:08

    • 100.

      Selecionando ataques

      17:01

    • 101.

      Seção 15: quantidade de danos

      17:44

    • 102.

      Qual inimigo está atacando

      13:26

    • 103.

      Visualizando a quantidade de danos

      17:48

    • 104.

      Estatísticas de batalha

      12:32

    • 105.

      Tratando Batalhões Mortos

      8:19

    • 106.

      Seção 16: Atacar o jogador

      12:18

    • 107.

      Escolher metas

      19:10

    • 108.

      Configurando uma interface mágica

      12:58

    • 109.

      Usando a magia

      15:38

    • 110.

      Mostrando não o suficiente mágica

      10:48

    • 111.

      Correndo fora

      4:47

    • 112.

      Usando itens durante a batalha

      14:40

    • 113.

      Selecionando o jogador para usar o item

      16:56

    • 114.

      Seção 17: lidar com jogadores mortos

      13:25

    • 115.

      Tratar com inimigos mortos

      12:02

    • 116.

      Vitória na batalha

      12:33

    • 117.

      Criando um jogo sobre a tela

      9:27

    • 118.

      Carregando pela última vez Salvar no jogo

      9:32

    • 119.

      Recompensas de batalha

      17:29

    • 120.

      Dando recompensas de batalha

      10:12

    • 121.

      Criando zonas de batalha

      10:01

    • 122.

      Começando batalhas aleatórias

      13:14

    • 123.

      Batalha do chefe

      14:40

    • 124.

      Concluindo missões de batalha do chefe

      6:10

  • --
  • 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.

1.752

Estudantes

4

Projetos

Sobre este curso

Este curso é feito com o conteúdo mais recente e as técnicas mais recentes usadas no desenvolvimento de jogos modernos (Unity 2022)

Baixe o projeto concluído para orientação aqui: https://drive.google.com/file/d/1zJzPQ3tAPoQBYmlHqfvSYZ-xRO6WqsoK/view?usp=sharing

A melhor maneira de aprender qualquer coisa é fazer isso de uma maneira muito divertida e é aí que esse curso vem. Se você quer aprender como todos esses jogos incríveis que você vê são feitos não há melhor lugar para começar do que esse curso. Nós garantimos que esse curso tenha tudo o que você precisa para levar você a partir de um iniciante (mesmo com experiência zero de codificação) e levamos você lentamente a nível intermediário

Eu escolhi o projeto principal neste curso para ser um RPG 2D, porque não só tem uma vasta biblioteca de conceitos de desenvolvimento de jogos que podemos implementar e aprender, mas também porque é muito simples (especialmente se você for um iniciante) de se aprofundar e começar sua jornada de desenvolvimento de jogos.

Tudo neste curso foi meticulosamente critico, revise e recrafted para lhe proporcionar a melhor experiência possível e maximizar sua aprendizagem o máximo possível. Portanto, você não só terá um ótimo momento em que você também vai ter o MAIS BANG PARA SEU BUCK se afastar desse curso com muitas ferramentas no seu arsenal para continuar você a jornada no oeste selvagem do desenvolvimento de jogos.

Seção 1: Introdução

Vamos começar baixando o estúdio Unity e Visual. Instalá-los e garantir que funcionem. Em seguida, vamos criar nosso primeiro código em C# e nos acostumar com a interface Unity. Finalmente vamos falar sobre o design de jogo do nosso jogo e o que é preciso para começar a criar um jogo do zero

Seção 2: Configurando o jogador

Nesta seção, vamos começar a aprender o que são folhas de sprite e como configurá-las. Vamos aprender quais camadas de classificação são na Unidade. Vamos ver os colidentes e RigidBodies e adicioná-los aos nossos objetos de jogo e ver como isso começa a ser afetado pela física. Vamos aprender a animar nossos sprites. Vamos até entender o que mesclar árvores que vão nos ajudar a reduzir a dificuldade de animar

Seção 3: Gestão de cenas

Nesta seção, vamos aprender sobre o gerente de cena da Unity que nos permitirá criar vários níveis em nosso jogo e fazer a transição entre eles. Além disso, aprenderemos uma maneira muito complicada de garantir que chegamos sempre na posição certa ao se mover através de nossos mundos

Seção 4: Tilemaps e Cinemachine

Essa seção é a evolução do anterior. Onde nos mudamos de apenas adicionar mapas como imagens para pintá-los usando conjuntos de azulejos que você pode baixar e personalizar. Também aprendemos sobre a Cinemachine, que é uma ferramenta muito poderosa e moderna na Unity

Seção 5: Diálogo no jogo

O jogo não tem um sistema de diálogo. É aí que adicionamos um novo NPC ao nosso jogo. Crie UI aprenda sobre as matrizes e adicione mais vida ao nosso jogo introduzindo uma maneira de interagir com o mundo ao nosso redor que criamos na seção anterior

Seção 6: Estatísticas do jogador

Novamente que jogo, especialmente um RPG não tem estatísticas para cada personagem? Temos força, Mana, saúde etc., e introduzimos um sistema de nivelamento e XP. Aprendemos sobre loops em C#, que é uma ferramenta muito poderosa na linguagem de programação e vai realmente construir suas bases

Seção 7: Sistema de menu

Essa seção está cheia de criação artística, o que significa que você tem a liberdade completa de criar a sua. Isso é que não criamos nada NOVO, mas colocamos todas as informações que levamos em conta até agora na frente do nosso jogador e garantir que ele possa acessar essas informações facilmente

Seção 8: Sistema de inventário

Essa também é uma seção que poderia ter sido chamada de ADVANCED C# porque levamos nossa codificação para um próximo nível. Aprendemos sobre as listas outra ferramenta poderosa em C#. Aprendemos a pegar itens. Adicione eles ao nosso inventário usando as ferramentas avançadas de C# e certifique-se de que tudo isso funcione suavemente, especialmente quando também descartamos esses itens. Finalmente usamos esses itens em nossos personagens

Seção 9: Sistemas de compras e dinheiro

Agora que nós pegamos itens, queremos vendê-los... para o DINHEIRO! quem não gosta de dinheiro? vamos introduzir um sistema monetário de modo que basicamente crie uma economia. Criamos uma loja com um detentor de loja dentro e seremos capazes de fazer transações com ele usando o dinheiro que temos que comprar e os itens que temos que vender

Seção 10: sistema de classificação

Essa é minha parte favorita do jogo. Porque começamos a adicionar missões. E isso transforma nosso jogo de um jogo normal para e RPG. Podemos obter missões, completá-las, receber recompensas com itens. Alguns objetos só aparecerão depois de completar algum tipo de busca. Esse é realmente divertido

Seção 11: Salvar e carregar

É imperativo que não perca nosso progresso em um RPG que é por isso que apresentamos um sistema de Salvar e Carregar. Vamos manter o controle da posição do nosso jogador e do mundo em que ele estava. Vamos acompanhar os itens que temos de uma maneira muito sofisticada. E cada outra coisa também precisa ser salva e carregada

Seção 12: Música e SFX

Hora de dar vida a um pouco de vida nesse jogo adicionando efeitos sonoros e música. Agora nosso jogo vai de estática à dinâmica. Vamos adicionar música de fundo e SFX. Para cada nível e cada interação respectivamente

Seção 13: Menu principal

Cada jogo TEM de ter um menu principal. Mas também precisa de um menu principal dinâmico. Criamos um menu simples com um fundo. Mas a parte de saída disso é a maneira como damos a capacidade de nosso jogador de continuar com sua última salva, ou começar um novo jogo

Seção 14: configurando o sistema de batalha

Até esse ponto, tivemos um jogo bastante decente que eu diria. Mas agora é hora do verdadeiro negócio. Não estamos mais andando e conversando com o NPC é hora de GUERRA. Estamos criando um sistema de batalha. Esse é o primeiro passo de um dos maiores roteiros que você e eu jamais criaremos Por isso, prenda suas capas de pensamento e segure seus assentos que vai ser uma viagem emocionante

Seção 15: Sistema de ataque inimigo

Agora que começamos uma batalha com os inimigos. Hora de lhes dar a capacidade de atacar. Nós escolheremos qual inimigo está atacando. Quanto dano ele está dando e até vamos exibi-lo na tela e ver o que acontece quando nossos jogadores não têm nenhuma saúde

Seção 16: Sistema de ataque do jogador

Agora é que nossos jogadores se voltam para se defender. Vamos dar a capacidade de lutar de volta. E também a capacidade de fugir da batalha. Usaremos vários ataques como o corte normal, usando diferentes tipos de magia e além disso usando itens durante a batalha

Seção 17: Terminação do sistema de batalha

É aí que nossa jornada acaba infelizmente meus colegas de desenvolvedores de jogos. Nós tratamos dos jogadores mortos. Nós lidamos com os combates mortos. Criamos uma tela de vitória. Um jogo sobre a tela. Nós damos as nossas recompensas. E terminamos essa seção e esse curso com uma BANG!! criando uma luta BOSS

O que você vai aprender neste curso:

  1. Use o Visual Studio com a unidade de uma maneira simples

  2. Como definir um bom ambiente de desenvolvimento de jogos

  3. O Unity Engine está de uma maneira simples e abrangente

  4. Os conceitos básicos do C# das maneiras mais divertidas possível criando um jogo

  5. Use a entrada do jogador para controlar o comportamento do nosso jogo

  6. Adicione um componente diferente aos objetos de jogo

  7. Adicione gravidade e outras forças aos objetos de jogo

  8. Faça com que os objetos de jogo interajam uns com os outros no nosso jogo

  9. Adicione folhas de sprite e fatie-as

  10. Crie ativos de telha

  11. Como criar níveis a partir de nossos ativos de azulejos

  12. Torne-se um ninja solucionador de problemas e aprenda passo a passo para resolver qualquer problema no desenvolvimento de jogos e na codificação

  13. Crie animações

Conheça seu professor

Teacher Profile Image

Michael Murr

Software Engineer | Coding Instructor | Game Dev

Professor

Hi there, my name is Michael Murr. I'm a software engineer from one of the most highly esteemed universities in the Middle East and the founder of 2M Dev. 

I started coding when I was about 11 years old, when my dad taught me my first lines of HTML, and I have never looked back.

I am a software engineer with more than 10 years of experience. I am the founder of 2M GameDev, a leading game development software company in the Middle East.

Over the years, I've helped hundreds of students create real-world games, learn how to code, and set their lives up for opportunities in many fields that require a software programming skillset. And I will help you do the same.Visualizar o perfil completo

Level: Beginner

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. Por que você deve assistir este curso: Então você aprendeu como adicionar um corpo rígido como um componente a um objeto de jogo, você pode até ter verificado o que é um corpo rígido na documentação do Unity. E agora você conhece todas as propriedades e métodos. Isso é fofo. Mas você pode adicionar um corpo rígido a um objeto de jogo, começar a movê-lo, adicionar animações para fazer sprites andar em um mundo que construímos usando um conjunto de blocos. Permita que ele interaja com o mundo e passe de uma cena para a outra. Oh, e também tem um script que é 600 mais linhas de código para lidar nosso sistema de batalha com seis outros scripts de batalha todos trabalhando juntos sistemas como os itens. Meu nome é Michael Moore, fundador da WM game dev, e meu objetivo é torná-lo o melhor desenvolvedor de jogos da maneira mais divertida possível e desenvolveu uma estratégia que tem ajudado milhares de aspirantes jogo desenvolvedores alcançaram seus objetivos de criar os jogos do mundo real. E eu quero fazer o mesmo por você. O que eu aprendi é que pode ser muito difícil saber por onde começar e quais os passos a tomar para ir do iniciante ao intermediário ao profissional. Não só no desenvolvimento de jogos, mas na programação e na aprendizagem de código. E é aí que entra a estratégia. Eu a chamo de pirâmide inversa, onde começamos aprendendo os conceitos muito fundamentais e programação C-Sharp, motor Unity e design de jogo usando slides e documentação de unidade, então usamos imediatamente o que aprendemos para aprimorar nosso jogo. Mas não paramos por aí. Continuamos usando o que aprendemos de maneiras mais complexas e divertidas. Mergulhamos mais fundo do que qualquer outro curso. E ao motor Unity, programação C-Sharp e design de jogos. E a parte mais incrível é que estamos fazendo tudo isso. Mas a versão mais recente do Unity foi as mais recentes técnicas e conteúdo e desenvolvimento de jogos modernos. E eu posso dizer com pontuação absoluta de confiança torna mais fácil para qualquer iniciante com 0 experiência de codificação entrar e começar a aprender a criar jogos incríveis. Ajudei milhares de pessoas a criar jogos do mundo real e quero que sejas uma dessas pessoas. Então, como vamos fazer isso? Agora? Temos muitas seções. Eu acredito que há umas 15 seções, então eu vou olhar sobre elas muito, muito rápido. Então, temos a Seção 1, que é a introdução e configuração, baixará o Unity, baixará o Visual Studio, falará sobre a interface, criará nosso primeiro programa e entenderá como usar este curso, que é a crítica que você está assistindo agora. Temos a Seção 2, que é o jogador. Nós vamos em frente e adicionar uma camada, adicionar animações para aprender algumas coisas fundamentais como corpos rígidos em colisores e assim por diante em unidade. Em seguida, começamos a olhar para cenas vai criar vários níveis. Então o primeiro nível onde nosso jogador vai residir vai ser em uma cidade. Então acredito que nos mudamos para algum tipo de montanhas ou algo assim. Também entenderemos o gerenciamento visto e como o Scene Manager pode fazer transição de uma cena para a próxima usando os colisores que aprendemos anteriormente. E então vamos aprender sobre mapas e máquina central. Então vamos usar conjuntos de mosaicos para criar nossos próprios mapas. E você vai criar seus próprios mapas. Você vai adicionar seu próprio trabalho para o jogo. E vamos usar uma das mais recentes técnicas e unidade, que é máquinas Cinna para nos permitir seguir o jogador enquanto ele se move ao redor do NADPH. Então vamos adicionar Doyle do orgânico porque que tipo de RPG não tem um diálogo. Assim, podemos interagir com diferentes ênfases e assim por diante. Mas, em seguida, olhar para as estatísticas do jogador. Então, como você sabe, em cada RPG teria a força, defende o mono saudável e assim por diante e assim por diante. Você entenderá como podemos criar tudo isso e isso é muito importante. Esta seção aqui também, onde mergulhamos profundamente em C Sharp e as coisas começam a ficar um pouco complexas, mas não se preocupe com isso. Vou levá-los através de cada passo muito facilmente, para que você não tenha que se confundir. Em seguida, temos a Seção 7, que é o sistema de menus, porque obviamente precisamos de algum tipo de menu onde podemos ir para os itens, para as estatísticas de caracteres para talvez nós queremos apenas salvar e carregar e assim por diante. Então temos o sistema de inventário, obviamente porque à medida que nos movemos pelo mundo vai aprender como criar itens, como pegar itens, como adicionar a cada item que todas as estatísticas e adicioná-los ao inventário que temos criado no sistema de menus irá adicionar um sistema de dinheiro. E pelo meu sistema, quero dizer, vamos prever um pouco consistente se você não estiver familiarizado, não se preocupe, vamos falar sobre isso também. E nós obviamente teremos lojas onde podemos comprar certos ícones em vez de apenas pegá-los e selvagens, e eles também podem vendê-los. Vamos falar sobre questing porque obviamente cada papel RPG VIP em RPG, RPG jogo de RPG, RPG é obviamente onde você tem missões para completar. Nós vamos ter o salvar e carga vai aprender como o jogo de armadilhas funciona em detalhes. E aprenderemos a economizar carga e todas essas coisas boas. E a poupança e a carga serão aplicadas ao inventário, aos itens, ao dinheiro, às estatísticas do jogador e tudo isso. Isto é o que eu quis dizer quando eu falo sobre a pirâmide inversa. Então aprendemos o básico que criamos. Digamos que aprendemos um pouco de C-sharp. - Ele. Então aprendemos a criar dinheiro e inventário e tudo mais. E então usamos a ordem prefs do jogador para combinar tudo isso juntos. Então isto é o que eu quis dizer com pirâmide. Você começa com o básico e então nós continuamos construindo em cima de tudo isso. Então também adicionamos música e prática sonora, porque obviamente quais jogos ele não tem usado, ele realmente carece de sabor e caráter se não há música e efeitos sonoros. E finalmente, as últimas quatro seções são pessoalmente minhas favoritas porque vamos construir um sistema de batalha. Começaremos com o sistema regular de combate, onde vamos colocar tudo para fora e começar certas batalhas e carregar inimigos e jogadores até essa batalha. Então vamos ver como o inimigo pode atacar e estar na seção 4, intangível, ver como o jogador pode atacar. E finalmente, estamos vindo para ver como podemos matar inimigos, matar camadas, e os Bethel dar recompensa, prêmios, e assim por diante e assim por diante. Então, o que você deve esperar até o final dos resultados? Você se tornará um mestre solucionador de problemas. Você entenderá os fundamentos da codificação e aprenderá a programar jogos, assim como os que você está vendo na tela agora. Você também terá a chance de flexionar seus músculos de desenvolvedor de jogos porque em cada vídeo há um mini desafio para a conclusão de loop. E mesmo que você possa descobrir como fazer o desafio, não se preocupe, eu estarei lá para ajudá-lo ético tentou e completar o desafio com. Tudo em nosso ganho será configurável. Então você pode ajustar, brincar e dar os jogos e sensação individual e especial sobre. Então você vai colocar sua própria criatividade nisso e realmente torná-la sua própria. Estou tão animada para começar e espero que você também esteja. Este é o momento perfeito para começar a aprender a codificar. Então mergulhe comigo e eu vou ajudá-lo em cada passo de sua jornada de desenvolvimento de jogos. E vejo-te no próximo vídeo. 2. Seção 1: como usar este curso: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. E este vídeo, na verdade, e não neste vídeo. Criei este vídeo para que possamos maximizar o potencial de aprender com este curso. Então eu quero você, eu quero guiá-lo através de alguns passos que podemos usar para espremer completamente toda a energia de aprendizagem do curso que você está fazendo atualmente porque você já, você já está gastando O seu tempo aqui. Então, por que não maximizar? Então, a primeira coisa que vamos entender é como as perguntas e respostas funcionam. Então, enquanto você está assistindo os vídeos, você está olhando através deles, talvez algo surja que não deve entender completamente. Então o que você pode fazer é ir em frente e deslizar para as discussões aqui mesmo. E você pode ver que você tem várias opções. Você pode iniciar uma conversa, fazer uma pergunta ou simplesmente compartilhar um projeto. Então aqui, você pode me fazer qualquer pergunta que quiser. Nenhuma pergunta é de limite. Mas há um pequeno passo que você precisa fazer antes de me fazer uma pergunta. E isto é, vá em frente e faça sua própria pesquisa. Por que te peço para fazeres isso? Bem, porque às vezes quando você se depara um problema e você vai em frente e procura por uma solução você mesmo, e então você encontra ou não. E quando você voltar e me perguntar, é muito mais fácil de entender. Por que é isso? Porque você já passou por algumas sugestões, talvez nenhuma delas fosse adequada. Mas à medida que você avança encontrando a solução para o seu problema, você ganhou muito conhecimento. E quando vieres ter comigo, quando perguntares ao Michael e passarmos juntos a encontrar a solução, vais perceber como tudo clica e, mais tarde, quando encontrares o mesmo problema ou talvez vires isto problema para outro aluno. Você pode ajudá-los e é muito mais fácil. E finalmente, sempre que encontrar uma solução para a sua pergunta na sua pergunta e adicionar um prefixo de sal a ela porque outros alunos podem ter o mesmo problema e eles encontrarão uma solução para o seu problema se virem o prefixo resolvido Atrás dela. E finalmente, antes de eu partir, você só quer dizer uma coisa que não há questão de limite. Não há perguntas estúpidas, não há perguntas estúpidas. Há apenas desenvolvedores de jogos não profissionais. Ninguém nasceu profissional. Todos nós temos que aprender através de tentativa e erro. Você não acreditaria como aspas, minhas perguntas eram estúpidas. Porque eu, o, eu sou, eu não nasci um profissional em unidade levou anos de prática, tentativa e erro ou fazer perguntas, pesquisar coisas no Google. Então, isto é um processo. Não se preocupe, não tenha medo, não fique inseguro sobre algumas das perguntas que você pode querer fazer. Seja corajoso o suficiente para procurar uma solução se você não encontrar uma, não se preocupar, apenas deixe uma pergunta. Eu sempre, sempre respondo a todos os meus alunos e sempre mergulhamos o mais fundo necessário para encontrar uma solução para qualquer problema. E agora vamos falar sobre o servidor da Discord. E é aqui que você pode aprofundar a comunidade que criamos aqui no desenvolvimento de jogos WMD. Então você pode ir para o link na descrição deste vídeo ou você pode visitar meu perfil e encontrar o link em algum lugar lá. E recomendo que se junte à discórdia. Por quê? Porque a maior parte do tempo pode levar algumas horas para responder com base em onde você é. Então talvez nós vivemos em diferentes fusos horários. Talvez quando me fizer a pergunta, seja meia-noite e precise de uma solução rápida. Posso estar dormindo, talvez não consiga chegar ao meu computador. Então, é muito benéfico para você se juntar ao canal da discórdia que criamos. E deixem-me mostrar-vos o canal de pontuação aqui. Este é o início do nosso canal de discórdia. Você pode ver que temos a comunidade geral. Nós temos o chat C-sharp, nós temos o chat de design do jogo, nós temos o show fora do seu jogo. Temos as questões gerais de desenvolvimento do jogo. E você pode ver que nós ainda não temos nada aqui porque é bem novo enquanto eu estou gravando isso. Mas mais tarde, quando você entrar aqui, você vai notar que há uma enorme comunidade de pessoas esperando para ajudá-lo e talvez pessoas esperando para obter ajuda de você. E é muito benéfico tentar resolver a questão dos outros. Você não acreditaria o quanto aprendi ajudando outras pessoas. E você pode ver aqui que temos vários cursos. Estes são todos os cursos que duplo jogo gama m para baixo tem ou eu criei. E podemos ver também podemos compartilhar memes e aqui temos discussões gerais sobre jogos, jogos AAA, eu não sei o que você gosta de jogar. Podemos discuti-los aqui e o canal social ou categoria e assim por diante. Então eu recomendo que você se junte ao nosso servidor da discórdia. É muito divertido. Vamos nos divertir muito lá. E é isso. Isso é tudo o que eu queria dizer sobre o servidor Discord. Agora, vamos passar para os slides do Desafio. Então, o que são slides desafiados? À medida que você se move através de cada vídeo, você vai notar que em algum momento, eu vou dizer-lhe para pausar o vídeo e começar o desafio. Então, quando você vir este slide, você vai esperar que eu termine todos os pontos e então você tem que pausar o vídeo. Por que estou enfatizando a palavra, ter um chefe? Porque é muito melhor aprender fazendo e não apenas assistindo muitos cursos que eu aprendi com que eu pessoalmente fiz onde eu senti falta no departamento de fazê-lo. Você fica sentado, assistindo alguém criado de novo. Está bem. Isso é muito bom. E agora acabou. Ok? E então você termina o curso. E depois de algumas semanas, você percebe que você realmente não sabe como fazer nada. Então os slides de desafio que eu criei é extremamente importante porque você neste momento começa a fazer em vez de assistir. E mesmo que você não consiga descobrir como fazer o desafio, não se preocupe com isso. Eu estarei lá para ajudá-lo depois que você tentar e ajudar a completar o desafio com você. Então você nunca é deixado sozinho. E além disso, assim como olhar através de respostas para suas perguntas antes de fazer perguntas nas perguntas e respostas, quando você faz um desafio, você tropeça em várias variáveis que você pode não ter considerado antes. E quando você ver como eu completar o desafio, você vai tê-lo enraizado muito melhor em sua cabeça quando você encontrou o mesmo problema quando você começar a criar seus próprios jogos. E agora vamos continuar e terminar com a estrutura do curso. Agora, nós temos um monte de seções. Eu acredito que há umas 15 seções, então eu vou olhar sobre elas muito, muito rápido. Temos a Seção 1, que é a introdução e configuração, baixará o Unity, baixará o Visual Studio, falará sobre a interface, criará nosso primeiro programa e entenderá como usar este curso, que é o vídeo que você está assistindo agora. Então temos a Seção 2, que é o jogador. Vamos em frente e adicionar um jogador em animações e apenas entender como tudo vai funcionar com aprender algumas coisas fundamentais como corpos rígidos, colisores e assim por diante e unidade. Em seguida, começamos a olhar para cenas vai criar vários níveis. Então o primeiro nível onde nosso jogador vai residir vai ser em uma cidade. Então acredito que nos mudamos para algum tipo de montanhas ou algo assim. E então assim por diante e assim por diante. Também entenderemos o gerenciamento visto e como um gerente de cena pode nos transferir de uma cena para a próxima usando os colisores que aprendemos anteriormente. Então vamos aprender sobre mapas e máquina de cinema. Então vamos usar conjuntos de mosaicos para criar nossos próprios mapas. E você vai criar seus próprios mapas. Você vai adicionar seu próprio sabor ao jogo. E vamos usar uma das mais recentes técnicas e unidade, que é a máquina Cinna para nos permitir seguir o jogador enquanto ele se move ao redor do mapa. Então vamos adicionar diálogo ou ganhar, porque que tipo de RPG não tem um diálogo? Sério, precisamos adicionar um sistema de diálogo ao nosso jogo para que possamos interagir com diferentes embaixadas e assim por diante. Bem, então olhe para as estatísticas do jogador. Então, como você sabe, em cada RPG temos a força, defesa, a saúde, o mana e assim por diante e assim por diante. Você entenderá como podemos criar tudo isso e isso é muito importante. Esta seção aqui também, onde mergulhamos profundamente em C-Sharp e as coisas começam a ficar um pouco complexas, mas não se preocupe com isso. Vou levá-los através de cada passo muito facilmente, então você quer ter que se confundir. Em seguida, temos a Seção 7, que é o sistema de menus. Porque obviamente precisamos de algum tipo de menu onde podemos ir para os itens, para as estatísticas de personagens para talvez nós queremos apenas salvar e carregar e assim por diante. Então temos o sistema de inventário, obviamente porque à medida que nos movemos pelo mundo vai aprender como criar itens, como pegar itens, como adicionar a cada item suas próprias estatísticas e adicioná-los ao inventário que nós criaram em um sistema manual. Vamos adicionar um sistema de dinheiro. E por sistema de dinheiro, quero dizer, vamos criar um sistema Bitcoin se você não estiver familiarizado, não se preocupe, vamos falar sobre isso também. E obviamente teremos lojas onde podemos comprar certos itens em vez de apenas pegá-los na natureza, e também podemos vendê-los. Vamos falar sobre questing porque, obviamente, cada RPG, o papel em RPG TR para role-playing game, RPG é obviamente onde você tem missões para completar. Vamos ter o salvar e carregar vai aprender como os prefs do jogador funcionam em detalhes. E aprenderemos a economizar carga e todas essas coisas boas. E a poupança e a carga serão aplicadas ao inventário, aos itens, ao dinheiro, às estatísticas do jogador e tudo isso. Isto é o que eu quis dizer quando eu falo sobre a pirâmide inversa. Então aprendemos o básico que criamos. Digamos que aprendemos um pouco de C afiado. Então aprendemos a criar dinheiro e inventário e tudo mais. E então usamos as prefs do jogador e ordem para combinar tudo isso juntos. Então isto é o que eu quis dizer com pirâmide. Começamos com o básico e depois continuamos construindo em cima de tudo isso. Então também vamos adicionar música e efeitos sonoros porque, obviamente, que jogo? E ele não tem uma música, ele realmente não tem sabor e o personagem se não há música e efeitos sonoros. E finalmente, as últimas quatro seções são pessoalmente minhas favoritas porque vamos construir um sistema de batalha. Vamos começar com o sistema de batalha regular, onde vamos colocar tudo para fora e começar certas batalhas e carregar inimigos e jogadores nessa batalha. Então veremos como o inimigo pode atacar. E o, na seção 14, então vamos ver como o jogador pode atacar. E finalmente, vamos ver como podemos matar inimigos, matar camadas, e a batalha, dar recompensa, recompensas e assim por diante. Então, com tudo isso dito, eu só quero dizer a vocês que a coisa mais importante em partituras é que vocês maximizem o máximo que puderem. Toda a informação que está aqui, você já teve tempo para começar os resultados. Então meu par de dicas que eu quero te dar. Primeiro de tudo, sempre que você encontrar um problema para sua própria pesquisa, se você não encontrar uma solução ou você não encontrar uma solução adequada para o seu problema, certifique-se de fazer uma pergunta. Não há questões de limite, nenhuma. Terceira dica é juntar-se ao servidor da Discord. É muito importante se juntar à comunidade para ter esse sentimento de que você não está sozinho na batalha, na batalha. E pense onde está a quarta dica que tenho é seguir até o fim. Então você vai começar aprendendo o básico. Talvez você já tenha um pouco de conhecimento e unidade. Se você fizer isso, talvez algumas das seções parecerão um pouco estagnadas porque eu passo por cada passo com muito, muito cuidado. Porque muitos, digamos, talvez você seja um deles. Talvez você não tenha ideia de como C-sharp funciona. Você não tem idéia de como funciona. Então você precisa desse cuidado extra e abrandar. Então, se você já está familiarizado com a Unidade, vai ver afiada. Alguns dos vídeos podem parecer um pouco lentos, mas entenda que é muito importante para outros alunos também no campo tentando aprender do zero. Então, com isso dito, não vamos perder mais tempo. E vamos passar para o próximo vídeo. 3. Baixe o Unity e Visual Studio para o Studio passo a passo: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos baixar a unidade e empatar bem e integrar com ele as ferramentas do Visual Studio que vamos precisar para as partituras. Então vamos começar. A primeira coisa que você precisa para entrar no Google e depois ir, basta digitar aqui, baixar Unity. É tão simples assim. Quando você digita, você receberá um monte de sugestões. Portanto, certifique-se de encontrar aquele com o Unity 3D.com e o get unity, é claro, e clique no download Unity, que abrirá esta página aqui. Então aqui você precisará baixar o Unity Hub se você nunca usou o Unity antes. Agora, o que é o Unity Hub? Unity Hub é como um lugar onde manteremos todas as nossas versões do Unity e também todos os projetos que fazemos. Agora, antes do Unity Hub, nosso projeto estará em todo o nosso computador, em algum lugar em diferentes diretórios e assim por diante. Assim, o Unity Hub realmente torna muito mais fácil passar por seu projeto e realmente ter, se realmente boa organização. Portanto, certifique-se de baixar Unity com base em qual sistema operacional você possui. Portanto, se você tiver o macOS, você precisa ter certeza de que baixou o Unity 40 macOS. E se você tiver um Windows 7, baixe-o para o Windows 7. Então, basta clicar em baixar Unity Hub. E quando você terminar de baixar, Q deve ter esta pasta de instalação bem aqui. Quando você clica duas vezes sobre ele, ele vai perguntar, você quer? Sim. Então, você continua, você clica em Concordo, você escolhe o destino onde deseja colocar seu Unity Hub. E então você inicia a instalação. Agora, como já tenho o Unity Hub instalado, não o instalarei novamente. Então certifique-se de instalar tudo e eu vou vê-lo daqui a pouco. Oh, ok, bem-vindo de volta. Então, se você instalou o Unity Hub corretamente, você deve receber uma mensagem ou uma janela aqui que se pareça com isso. Agora, não temos nenhum projeto ainda, mas é aqui que nossos projetos estarão presentes e podemos acessá-los em nosso lazer. Agora, antes de continuar, Unity terá que se certificar de que você tem uma conta. Então esta é a minha conta aqui. Usei meu Google Gmail para criar uma conta no Unity. Você pode criar uma nova conta ou também usar seu Gmail ou Facebook. Não sei se permitem isso. E depois de criar uma conta no Unity, você pode ir direto para as instalações. E é aqui que baixamos diferentes versões do Unity. Agora, para este curso, vou usar a última versão do Unity que temos atualmente. Agora, se você quiser instalar uma nova versão do Unity ou qualquer tipo de versão do Unity, basta ir direto para o anúncio. Clique em Adicionar. E aqui você pode ver que temos diferentes tipos de unidade que podemos instalar. Agora, em primeiro lugar, temos os lançamentos recomendados. Estes são os que já foram testados e completamente testados e funcionam perfeitamente. Mas você também pode ir e procurar os lançamentos oficiais. Agora, vamos usar esta versão aqui mesmo. E esta é uma versão muito boa. Você pode instalá-lo. E você também tem o pré-lançamento é agora comunicados de imprensa são fazer o mesmo que o lançamento oficial e os lançamentos recomendados, mas às vezes eles são um pouco buggy e você pode encontrar um par de bugs nos lançamentos oficiais. Também pode ser capaz de resolver problemas, mas eles não são tão evidentes como nas versões anteriores. Você pode não encontrar nenhum problema, mas eu recomendaria que você use o lançamento oficial porque eles são mais recentes do que os lançamentos recomendados e menos volumosos do que os pré-lançamentos. Então baixe a versão mais recente que você tem em seu computador. Ou atualmente talvez você seja do futuro e você tenha uma versão mais recente do que eu. Então baixe a versão mais recente. E não se preocupe, este curso funciona ou o projeto que vamos criar funcionará em qualquer versão do Unity e do futuro. Agora, vamos clicar em Próximo aqui. E esta é uma parte muito importante de baixar e instalar o Unity agora. E aqui temos módulos, e esses módulos são como complementos para nossa unidade que nos permitem criar jogos em diferentes plataformas. Então, por exemplo, aqui você pode ver que agora podemos carregar módulos para diferentes plataformas. Então, por exemplo, se você quiser criar um jogo no Android, você pode usar o módulo para Android. Ou se você quiser criar um jogo para o iOS ou ícones e assim por diante. Você também pode estar procurando criar jogos para Linux ou Mac OS ou o que. Então, com base no que você deseja criar, você pode escolher um desses módulos de modelo, ou você pode simplesmente esperar mais tarde, você pode baixá-los a qualquer momento. Você também tem as documentações que eu recomendo que você baixe. Estas documentações são a documentação da Unidade e são muito importantes. Talvez às vezes você queira procurar certas coisas. E finalmente você tem o pacote de idiomas. E talvez se você for chinês ou coreano, eu não tenho certeza do que isso é, honestamente, eu não tenho idéia. Talvez você possa usar um desses pacotes de idiomas. Mas a coisa mais importante, e você precisa ter certeza de que você tem o Microsoft Visual Studio Community 2019 ou mais recente instalado com sua unidade. Porque vamos usar o Visual Studio para codificar tudo, tudo e todos os comportamentos dos objetos que criamos imunidade. Agora, isso é tudo que você precisa fazer. Basta clicar em Avançar e você começará a instalação do seu Unity. Então, com isso dito, é hora do seu primeiro desafio. E seu desafio será baixar Unity e Visual Studio. Então baixe Unity Hub, assim como eu mostrei, certifique-se de que se você tem um Mac, você baixe a versão do Mac. Se você tiver um Windows, baixe a versão do Windows. Então você precisa baixar a versão mais recente. E, finalmente, certifique-se de que você também baixe o Visual Studio com Unity. Então, pause o vídeo agora mesmo e vá em frente e baixe o Unity com o Visual Studio. E no próximo vídeo, vamos simplesmente passar pela interface da unidade e Visual Studio que você acabou de ver podemos superar nossos medos iniciais. Então, vemo-nos na próxima. 4. Unity e VS 101: Ok, então bem-vindos de volta a outro vídeo. Vamos ver o que é unidade? Unity é um desenvolvimento de motores de jogos multiplataforma desenvolvido pela Unity Technologies. Usaremos o Unity para desenvolver o nosso jogo. Então, o que significa Cross-plataforma? Isso significa que podemos usá-lo em diferentes plataformas. E é um motor de jogo. E que motor de jogo é, é um ambiente para nós desenvolver jogos e adicionar física e adicionar coisas diferentes para criar o nosso jogo. Então vamos verificar como Unity realmente se parece e eu vou explicar algumas coisas sobre ele. Então, isto é a unidade. Primeiro de tudo, temos esta barra de ferramentas bem aqui acima de tudo. E isso fornece acesso aos recursos de trabalho mais essenciais. À esquerda, nós contém as ferramentas básicas para manipular a exibição da cena e os objetos do jogo dentro dela. No centro temos o jogo, pausa e o botão de controle stub. E os botões à direita dão acesso à conta Unity Collaborate, Unity Cloud Service e Unity, e não vai se dedicar muito a isso. No lado direito desses, temos o menu da unidade de visibilidade da camada. E nós temos o editor, que fornece alguns layouts alternativos para a janela do editor e permite que você salve seus próprios layouts personalizados. Então, se você não tem o mesmo layout que eu, você pode simplesmente clicar aqui no layout e você pode escolher o layout padrão. E este é o jogador padrão que temos. São os projetos aqui, inspetor e tudo mais. A próxima coisa que vamos falar sobre a janela da hierarquia aqui. É uma representação hierárquica de texto de cada objeto de jogo em nossa cena. Então, cada item na cena tem uma entrada na hierarquia. Assim, as duas janelas são inerentemente ligadas. A próxima hierarquia revela a estrutura de como objetos de jogo anexados uns aos outros. Então aqui temos a cena da amostra. E se clicarmos nisso, temos a câmera principal embaixo. E se adicionarmos outro objeto de jogo, ele também aparecerá aqui. E aqui está o inspetor, como você pode ver à direita. Este é o inspetor de janelas e ele dá, ele permite que você visualize e edite todas as propriedades do objeto de jogo selecionado atualmente. Portanto, se você não selecionar o objeto do jogo, não veremos nada. Quando clicamos em Câmera Principal, temos essas janelas diferentes aqui, e os layouts e conteúdo do contador da janela do inspetor são alterados cada vez que você seleciona objetos de jogo diferentes. Então agora não temos um objeto de jogo diferente, então vamos apenas resolver para a câmera. Próximo. Então temos esta vista de cena bem aqui. E a exibição de cena permite visualizar, navegar e editar sua cena. A exibição de cena pode mostrar uma perspectiva 3D ou uma perspectiva 2D dependendo do tipo de projeto que você está usando. Assim, em pontuações será usando a visão do projeto 2D, mas você também pode escrever aqui, clique no botão para o botão e ele vai 3D. Como você pode ver, temos essa visão 3D, mas não precisaremos, ela simplesmente entrará no modo 2D. E, finalmente, quero falar sobre a janela do projeto aqui, que exibe sua biblioteca e ativos que estão disponíveis para uso em seu projeto. Então, quando você importar ativos para o seu projeto, eles aparecerão aqui. Então, por exemplo, por enquanto não temos nenhum ativo, teria apenas a pasta de cenas. E dentro da pasta de cenas, temos esta pasta de exemplo. Então esta é uma rápida visão geral da unidade e do que todos esses painéis e gadgets são. Iremos, é claro, aprofundar-nos mais nelas à medida que passarmos pelo curso. Mas agora eu quero falar sobre o, algo muito importante e que é o Visual Studio. Então, o que é o Visual Studio? O Visual Studio é um Microsoft Visual Studio. Ele é bem usado, é desenvolvido pela Microsoft e é um IDE. E o IDE é um ambiente de desenvolvimento integrado. E o que ele faz, na verdade, se você me perguntar no Visual Studio, vai nos ajudar a escrever o código usado para manipular objetos de jogo na unidade e usando algo chamado scripts. Então, como usar o Unity com o Visual Studio? Então precisamos de uma maneira para a unidade e o Visual Studio para se comunicar. Mas eles não fazem isso simplesmente. Precisamos adicionar algo a ele chamado de arquivo CSS dot, e que são nossos scripts. E esses scripts são, nós realmente pegamos esses scripts, nós os anexamos a objetos de jogo, e usando esses scripts será capaz de adicionar um comportamento muito diferente. Tipos de objetos de jogo, e vamos ver que muito, muito em breve. Então, vamos ao Visual Studio e ver do que se trata. Este é o Visual Studio. E talvez a primeira vez que você abrir, você terá painéis diferentes aqui direita e as janelas da frente bem aqui à esquerda. Sinta-se livre para fechar todos eles. E não se preocupe com o que acontece a seguir. Claro, você não terá isso na primeira vez que iniciar o Visual Studio, mas verá isso em breve. E eu vou apresentá-los a algumas linhas de códigos bem aqui. Então vamos ampliar só um pouco. E aqui no topo você pode ver que estamos usando coleções de sistemas. Estamos usando coleções de selos genéricos coleção. E o mais importante, estamos usando o motor Unity. O que são todos esses? Bem, esses são chamados namespaces. E basicamente estas são bibliotecas que nos dão a oportunidade de usar diferentes tipos de casaco. Assim, por exemplo, Unity engine, que adicionamos aqui, nos permite usar para o método de início e o método de atualização e diferentes mecanismos para criar jogos e torná-lo muito mais fácil. E nós simplesmente escrevemos aqui usando o motor Unity. E isso nos poupa muito ouro e nos dá toda a biblioteca para usar. Em seguida, temos o nome da classe pública. E este é o, na verdade, o ClassName, que deve estar bem aqui. Será o script que falamos e será anexado a um objeto de jogo. E ele vai abranger todo o código que vai mudar o comportamento do nosso objeto de jogo e jogo de parede lateral e comportamento mono é uma classe base e é realmente estes dois significam que ele herda do comportamento mono, que lhe permite usar diferentes tipos de manipulações e motor e física e assim por diante e assim por diante. E a próxima coisa que temos é o começo e acima é algo chamado de comum. Então, sempre que você escrever código e adicionar essas duas linhas aqui, ele irá comentar as coisas e comentários realmente não são executados no GOP, o código, o código, o código e eles são perfeitamente seguros. Então ele começa, start é chamado antes da primeira atualização de quadro. Assim que o nosso jogo começa, o método de início, e isso é chamado de método que vamos começar a executar. A próxima coisa que temos a atualização, e a atualização é chamada uma vez por franco. Então, cada quadro que temos em nosso jogo, a atualização é chamada. Então start é normalmente usado para dar as propriedades iniciais ou configurações para determinados objetos. E a atualização é usada para objetos que estão se movendo ou alterando cada quadro. Então, se tivermos um carro, por exemplo, e começar, podemos dar-lhe a cor, o nome, a velocidade em que ele pode ir. Uma atualização estará movendo o carro, fará o salto, fará o carro ir mais rápido, talvez aumentar sua velocidade. Então você tem a idéia básica do Visual Studio e agora é hora do seu desafio. Seu desafio é ir fazer uma missa. Então abra o Unity, crie um projeto. E se você não sabe como criar um projeto, faremos isso no próximo vídeo. E quando terminar, depois de fazer massa de feno, vá para o próximo vídeo, faremos nosso primeiro código e começaremos. Vemo-nos no próximo vídeo. 5. Seu primeiro código: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos criar nosso primeiro código e nossos primeiros objetos de jogo. Então, como você pode ver aqui, temos um objeto de jogo chamado Hello World em nosso coração e nossa hierarquia. Está presente aqui na nossa cena, embora não a vejamos muito bem. E nós temos o roteiro bem aqui anexado a ele. Também criamos os critérios de script em nosso projeto. E na consola. Se clicarmos em Play, nós realmente recebemos uma mensagem que exibe Hello Michele, que sou eu. No seu caso, ele vai estar exibindo seu nome. Então eu estou muito animado para este vídeo porque é o nosso primeiro mergulho no mundo Unity. Espero que tenham gostado do vídeo e nos vemos daqui a pouco. Ok, então a primeira coisa que vamos fazer é abrir o Unity Hub. E atualmente você não tem nenhum projeto aqui, que vai mudar em apenas a primeira coisa que vamos fazer é clicar em Novo aqui. E precisaremos escolher um modelo para o nosso jogo. Então vamos criar um jogo 2D, não um 3D. E estas são opções diferentes também para tubos de projeto diferentes. Em seguida, vamos precisar adicionar um nome de projeto. Sinta-se livre para dar o nome que quiser. Vamos chamá-lo por agora, o Hello World, o projeto. E certifique-se de escolher um local para seus projetos do Unity. Então, vamos clicar neste aqui e vamos voltar e salvá-lo dentro dos projetos Unity. Então selecione a pasta e agora temos um local para o nosso jogo. Você precisa fazer. Tudo o que você precisa fazer agora é clicar no concreto. Então clique em Criar e Unity começará a criar seu projeto. E não vou aborrecê-lo com a espera aqui. Vou usar a magia da edição e simplesmente saltar para o projeto. Vejo-te daqui a pouco. Bem-vinda de volta. Então, espero que o seu projeto também tenha terminado a configuração. Então esta é a nossa cena. Se você não tem esse tipo de visto, como eu disse, você sempre pode ir para o layout e escolher o layout padrão. E teremos o mesmo layout, nós dois. Então, antes de começarmos, vamos primeiro em algo chamado console. E como podem ver, mesmo antes de começarmos qualquer coisa, temos esta janela do console bem aqui. E o que isso faz é nos mostrar as mensagens. E vamos usar essa janela do console para ver as coisas que serão impressas do nosso código. E se você não tiver, você pode simplesmente subir aqui na janela, clicar nele. E logo acima aqui, você pode ver no geral terá o console, então clique nele, uma janela deve aparecer e você pode encaixá-lo onde quiser. Vou encaixá-lo aqui em projetos. Em outra coisa que eu quero falar é no, onde você salvou seu projeto. Eu guardei em D, Unity Projects e Hello World. Como podem ver, temos pastas diferentes aqui. Temos os ativos, manter nossas cenas e tudo o que criamos e projetos. Você pode ver os ativos e ativos do projeto aqui. Temos também a biblioteca que cria automaticamente toda vez que entramos em um projeto, temos logs, temos pacotes, temos Configurações do Projeto, tudo embora todos esses sejam detalhes que não vão entrar em muito. E a pasta temporária, que discutiremos mais tarde no tubo mágico para o jogo. Então vamos voltar para a Unidade. E aqui vamos criar a nossa saia. Então vamos clicar com o botão direito aqui. E vamos entrar em Criar e criar. Nós podemos realmente criar várias coisas, como você pode ver, vamos fazer algumas delas em nosso projeto, mas por enquanto vamos simplesmente criar um script C-sharp. Então, clique nisso. E antes de fazer qualquer coisa, então agora não faça nada, deixe tudo. Você precisará se certificar de que sempre que você nomear um script que você faça isso com precisão porque ele causará um erro mais tarde se você quiser tentar renomear seu script. Portanto, certifique-se de nomeá-lo corretamente desde o início. Então vamos nomear este mundo hello sem quaisquer espaços e clique em Enter quando você tiver certeza de que você decidiu sobre o nome do script. Então clique em Enter e eu vou lhe dizer o porquê em apenas um pouco. Como podem ver, temos algo bem aqui no inspetor. E levou um pouco de tempo e é porque a unidade precisa compilar o código aqui. E você pode realmente ver o código no inspetor. E por que eu disse que é tão crucial ter certeza de que o nome do script aqui é definido antes de clicar em Enter como porque ele vai ser o nome da nossa classe. Então, se você mudar o nome do nosso script aqui, Tick Sobrenome não mudará. E haverá um erro em que a unidade ou o Visual Studio não será capaz de encontrar o script correto no projeto e isso causará erros. Então, para evitar isso, simplesmente se certifica de que você nomeia seu script corretamente e precisamente desde o início. Agora, o que devemos fazer a seguir? É muito simples. Você simplesmente clica duas vezes em Hello World e o Visual Studio deve abrir. E como você pode ver aqui, isso é o que descrevemos alguns talvez no vídeo anterior. Então, o que vamos fazer aqui? Vamos simplesmente imprimir algo para o nosso console e vamos fazer isso dentro do estoque. Então vamos em frente e imprimir. Então, como você pode ver imediatamente, Visual Studio, nosso grande amigo começa a nos ajudar e dá uma sugestão para o que queremos usar. Então escrevemos a impressão e ela nos dá a sugestão. E agora você pode simplesmente clicar em Tab e ele vai terminá-lo para você. E agora abrimos nossos colchetes e podemos ver que o Visual Studio nos ajuda novamente. E isso nos diz que precisamos adicionar uma mensagem de objeto dentro daqui. Essa mensagem de objeto vai ser uma string. Falaremos sobre cordas mais tarde. Mas por enquanto, string é uma cadeia de caracteres que colocamos dentro dessas duas aspas bem aqui. Então vamos em frente e adicionar essas duas citações um novamente. E agora escrevemos dentro dessas duas citações, Olá mundo. Então, isso é suficiente? Bem, na verdade, não, porque se você ver bem aqui, nós temos esta linha vermelha ondulada. E se passarmos por cima dele, diz-nos que espera um símbolo, que é este. E cada linha de código em C Sharp, você tem que adicionar este ponto-e-vírgula bem aqui. Então guarde isso. E agora, como colocamos dentro do início, assim que iniciarmos nosso jogo, essa mensagem deve ser impressa no console. Então vamos tentar isso. Voltamos para a Unidade e vamos para o console. Mas se clicarmos no jogo, como você pode ver, nada está sendo exibido em nossa tela. Por que é isso? Como não é suficiente apenas criar um script, você realmente precisa anexá-lo a um objeto. Então vamos criar um objeto. E da forma como fazemos isso, simplesmente entramos em nossa hierarquia. Clique com o botão direito aqui. Podemos criar um objeto de jogo vazio. Clique nisso, e agora temos um objeto de jogo. Vamos em frente. Podemos mudar o nome desse objeto de jogo. Vamos chamá-lo. Vamos chamá-lo de “Olá Mundo Object”. Clique em Enter, e abaixo você pode ver que temos a transformação. E esta transformação nos diz a posição do nosso objeto de jogo no mundo. E aqui em cima temos as ferramentas para manipular. Então, se você clicar no banco, ele pode realmente colocar o objeto para cima ou arrastar o objeto para baixo, levá-lo para a esquerda ou para a direita e colocá-lo em qualquer lugar que quisermos. E atualmente não podemos ver que não temos nada para representar ou objeto de jogo. Simplesmente temos suas ordenadas e sua transformação. Então vamos anexar o script deste objeto de jogo. Para fazer isso, basta clicar no script e arrastá-lo para a hierarquia e para os objetos hello world. Então, se você clicar no objeto Olá palavra aqui, você pode ver que ele tem um script logo abaixo da transformação anexada a ele. E agora, se clicarmos em jogar no console, podemos ver que temos Olá mundo. Parabéns, você acabou de escrever seu primeiro casaco e você acabou de usar seu primeiro objeto de jogo para exibir algo para o console. Vá classificar, e agora é hora do seu desafio. Seu desafio vai imprimir seu próprio banco. Então, em vez de Olá Mundo, você precisará imprimir seu próprio nome. Então mude Helloworld para Olá. E em vez desses três pontos, é claro que vai ser seu próprio nome. Vou te dar algumas dicas. Então adicione seu nome e tamanho dos pontos. Salve o Visual Studio. Lembre-se sempre de salvar Visual Studio, estamos usando o controle como ir para Unity e clique em jogar e verificar o seu console. Então, certifique-se de que funciona. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, como você se enganou com isso? Espero que tenha tentado o seu melhor e esse desafio. Vamos para o Visual Studio. E em vez do mundo, vou apagar isso e vou colocar o meu próprio nome, que é Michelle. Então, olá Michelle. E vamos apenas adicionar uma exclamação ou três pontos de exclamação para o efeito dramático. E para ter certeza de que você salvou seu projeto. Quero dizer, o teu guião. Quando você olha para cima bem aqui, você pode ver que ele tem um pequeno ataque asterix, tão rigoroso quanto drogas anexadas a ele. E para salvar que você clica, e isso significa que ele não foi salvo. Então, alguns segurar Controle, S, clique no controle. Como você pode ver que o asteriscado como trixie desaparece, e isso significa que o script foi salvo, volte para Unity. E você pode ver que há um asterix bem aqui, também ao lado da cena da amostra. Então guarde isso. E agora, se formos para o console, você pode ver aqui que temos este botão limpo. Ou se você clicar para baixo, você pode ver que podemos clicar em Play. Você pode remover isso. Sinta-se livre. Isso não importa. Vamos apenas removê-lo para ver as mudanças que acontecem agora se clicarmos em Jogar, teremos Olá Michelle, ou Olá, qualquer que seja o seu nome como meus colegas estudantes. E isso é 0. Tão claro que, que se esforçam novamente, clique no jogo e olá Michelle. Olá, Meus desenvolvedores de jogos favoritos. Espero que gostes do vídeo e vejo-te no próximo. 6. Controle de versão 101: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos aprender tudo sobre controle de versão, árvore de código-fonte e criação de repositórios de nossos projetos. Então, como você pode ver aqui, criamos um novo projeto e baixamos a árvore de código-fonte. Agora temos um par de commits aqui, e nós realmente revertemos algo. Criamos nosso commit inicial, adicionamos um cubo e o revertemos. Nós podemos realmente reverter este commit. Uma lata. Então, clique em Sim. Como você pode ver, podemos voltar para Unity recarregar e temos nosso cubo bem aqui. Estaremos aprendendo tudo em detalhes. Então, dê-me toda a sua concentração. Isto é muito importante. É um vídeo ou lição extremamente útil e ficaremos com você para sempre enquanto você estiver empenhado em se tornar um programador profissional ou desenvolvedor de jogos. Então não vamos perder mais tempo e vamos começar. Então controle a versão e coloque meu controle de versão laser. É difícil de aprender. É ainda mais difícil ensinar, mas vou tentar mantê-lo o mais simples possível. E quando você pegar o jeito, confie em mim, é muito simples e fácil de usar. Além disso, é uma habilidade indispensável que você precisa aprender se você está procurando se tornar um desenvolvedor de jogos profissional ou até mesmo um programa profissional. Então vamos começar com o que é. Em primeiro lugar, é um sistema que é responsável por gerenciar alterações em programas de computador. Então isso significa que sempre que criamos mudanças em nossos programas, podemos realmente salvar essas alterações em cada etapa do nosso projeto. Desta forma, podemos primeiro verificar o que fizemos. Podemos criar diferentes tipos de versões onde podemos voltar e mudar as coisas que criamos. Permite um melhor trabalho em equipe. Então, por exemplo, digamos que você tenha quatro ou cinco pessoas trabalhando no mesmo projeto, mas cada uma delas tem uma tarefa diferente que precisam criar. Então controle de versão é uma maneira muito boa de lidar com tudo isso. E por que precisamos dele? Bem, por que nós, nós realmente usamos isso? Bem, vamos usá-lo para lembrar a versão anterior do nosso jogo e ter mais flexibilidade para experimentar. Normalmente, o desenvolvimento de jogos é um ambiente onde você precisa de um monte de experimentos. Por exemplo, você deseja adicionar algum tipo de propriedade a algum tipo de objeto de jogo e talvez ele quebre todo o seu projeto. Então você quer sempre ter uma versão anterior do seu projeto antes de adicionar esta mecânica de quebra de jogo. Então você sempre pode voltar e começar de novo a partir daí. Portanto, isso é extremamente importante, especialmente para desenvolvedores de jogos que sempre precisam estar experimentando novas idéias e coisas em seus jogos e projetos. E como vamos usá-lo? Bem, vamos usar algo chamado árvore fonte, e isso é controle de versão. Ele nos permite criar diferentes versões. E em primeiro lugar, é de graça. É muito fácil para iniciantes, muito flexível, e tem uma interface muito simples que podemos usar como iniciantes. Então vamos em frente e baixar a árvore de código-fonte. Deixe-me mostrar-lhe onde podemos fazer isso. Se você abrir o Google Chrome ou qualquer navegador que você tenha, basta ir para o Google e aqui, baixar a árvore de origem. Você deve encontrar um link aqui, e deve ser a árvore de origem. Para cima. Quando você clica nele, você vai direto para o site deles. Se rolar para cima, poderá ver que tem a opção de transferir para o Windows. Mas se você estiver em um Mac, certifique-se de que você clique aqui e você baixar árvore de origem para Mac OS ou ele não vai funcionar para você. Então, se você tem um Mac, baixe a versão do Mac, se você tem um Windows, baixe a versão do Windows. Simples o suficiente. Agora, quando você terminar de baixar, você deve obter este arquivo bem aqui. E quando você clica duas vezes sobre ele, você deve iniciar a instalação. Agora, porque eu já tenho a árvore de origem, eu não vou instalá-la outra vez. Eu vou apenas levá-lo através do processo de instalação realmente. Ok, então esta é a primeira janela que vai aparecer para você. Primeiro de tudo, você precisa concordar com a licença, é claro. E talvez você possa desativar isso se você não quiser nenhum e-mail do seu jeito da árvore de origem e etc na aula. A próxima coisa que você precisa fazer é que você precisa criar uma conta de vez em quando, você pode ir para a lisina e colocar como a empresa-mãe da árvore fonte pode ir em frente e criar uma conta lá, ou você pode usar uma conta existente se você já ter um Gmail. Eu pessoalmente crio um usando o Gmail. É muito mais rápido, É muito mais fácil e eles não spam você com um monte de e-mails. A próxima coisa aqui, vamos conectá-lo a uma conta. Agora, isto é, é claro, nós não vamos fazer isso. Se você quiser hospedar seu código em alguns sites como GitHub ou Bitbucket. Nós não estaremos fazendo isso, então você pode simplesmente clicar aqui na configuração ignorada. Finalmente, ao instalar a árvore de origem irá dizer-lhe que não é possível localizar get. Então, a fim de completar isso, basta clicar em Download e versão incorporada do Git e continuar. E então também pode pedir-lhe algo chamado mercurial. Agora, Mercurial é um sistema diferente, assim como obter. Permite salvar diferentes versões do nosso projeto. Não usaremos o Mercurial, então você pode simplesmente clicar em, não quero baixar ou não quero usar o Mercurial. E isso deve ser quando você terminar de instalar. Você deveria ter isso aqui. E sua, bem, esta janela aqui quando você iniciar a árvore de código-fonte, se você não simplesmente clicar aqui em Criar e você deve obter esta janela. Agora, é aqui que nós realmente criamos nosso repositório. E aqui você pode ver que temos o caminho de destino, o nome e o tipo de controle de versão que queremos usar. Claro que usaremos o GER. Também temos a opção de criar uma conta, mas como já disse, estamos mantendo as coisas muito simples. É a nossa primeira vez, por isso não vamos criar nenhuma conta. Então aqui vamos escolher qual é o caminho de destino do nosso repositório. Então o que, qual é o projeto que estamos realmente vai ser criando um repositório para versões subsequentes do. Bem, vamos criar nosso primeiro projeto que vamos usar. Então aqui é abrir o Unity Hub. E como você pode ver, nós já temos Hello World que não temos em um vídeo anterior que é clicar em Novo. E vamos ter certeza de que é um projeto 3D. E este vai ser o nosso espião cibernético 2087. Vamos em frente e criar este projeto. Então, clique em Criar. E eu, é claro, sempre usando minha magia de edição para acelerar esse processo. Vejo-te do outro lado. Ok, bem-vindo de volta. Espero que tudo tenha corrido bem para você. Então agora temos um novo projeto que é ciberdespeito 2087. Então, agora que temos nosso projeto criado, podemos realmente ir em frente e começar com a criação de um repositório. Agora, se voltarmos para a nossa árvore fonte aqui, podemos clicar em Procurar e podemos realmente ir em frente para projetos do Unity. E vocês podem ver que temos um mundo de olá e temos um ciberespaço até 2087. Então, vamos selecionar esta pasta. Ele irá criar um repositório sob este nome. Se apertarmos Criar, ele vai pedir um problema. Não se preocupe com isso. Clique em Sim. E voilá, agora nós realmente começamos a criar um repositório. Você tem os arquivos encenados bem aqui. Você tem diferentes tipos de botões. Você não precisa se preocupar com nenhum deles por enquanto, apenas se concentre nos arquivos encenados, nos arquivos testados e confirme aqui. Agora, se nós rolarmos para baixo nesses arquivos no palco, você pode ver que a maioria deles são da biblioteca. Nós rolamos para baixo até o final, podemos ver alguns deles são Tampa 10 ou temporariamente. Podemos ver também que temos configurações do projeto e estes são todos os arquivos que nós para o nosso projeto. Nós também temos ativos aqui para a unidade nas cenas, por exemplo. Então este é um repositório que é uma versão do nosso projeto atual. Agora, o problema aqui é, como você pode ver, há uma tonelada de arquivos, e B não precisará de todos eles. Na verdade, não precisaremos de quase nenhum deles. Precisaremos apenas de um certo tipo de arquivos. Então queremos ignorar a biblioteca e os arquivos temporários. Por que é isso? Bem, deixe-me mostrar-lhe abrindo o diretório do nosso projeto. Oh, ok, então este é o Cyberspace por 2080 Sevens diretório dentro do Projeto Unity, como você pode ver aqui em cima. Então nós temos os ativos, os registros da biblioteca, pacotes , etc, e etc. Agora, o que é a pasta temporária e qual é a pasta da biblioteca e por que não precisamos deles? Portanto, temporário é apenas uma maneira de a unidade se abrir mais rápido sempre que iniciamos o projeto. E é sempre criado sempre que abrimos um projeto. Então, por exemplo, se eu entrar na Unidade aqui e eu realmente fechá-la, você verá que o arquivo temporário. Vai desaparecer. E mesmo que excluamos a biblioteca agora, então vamos em frente e excluir esta biblioteca completamente. Se voltarmos ao nosso Centro de Unidade e abrirmos o espião cibernético 287. Como você pode ver aqui, você viu que a biblioteca foi criada novamente e a pasta temporária também foi criada. Então, é claro, o projeto deve levar um pouco mais de tempo agora para se abrir. Mas isso é evidência de que uma biblioteca e as pastas temporárias não são necessárias para que sempre nos comprometemos e encenemos. E o que eu quero dizer com estágio? Então, sempre que preparamos nossas pastas, nós realmente criamos um commit deles, qualquer versão deles. E a biblioteca ocupa muito espaço. Como você pode ver, se nós rolarmos para baixo, ele ocupa a maior parte do espaço e nós não queremos nenhum deles em tudo. Então, como devemos proceder? Bem, nós podemos realmente ignorar todas as pastas que estão sob a biblioteca simplesmente indo e escolhendo qualquer uma das pastas que têm biblioteca sobre eles. Clique com o botão direito nele. E aqui você pode ver que temos a opção de ignorar um deles. Então clique em Ignorar. E aqui você tem a opção de ignorar esse nome de arquivo exato, ignorar todos os arquivos com essa extensão, ou você pode ignorar tudo abaixo de uma biblioteca, e isso é o que queremos. Então, clique em Ok. E como você pode ver, tudo na biblioteca agora foi ignorado, então não podemos prepará-lo, então não podemos salvá-lo em nossa versão mais recente. E se você rolar para cima, você deve ter notado que temos uma nova pasta aqui que é o ponto git ignore. E quando clicamos sobre ele à direita, você pode ver que ele tem a biblioteca. E, e se clicar duas vezes sobre ele, podemos realmente abri-lo em nosso bloco de notas e aqui podemos adicionar os diferentes arquivos que também queremos ignorar. Então, quais são os arquivos que queremos ignorar? Bem, há uma tonelada de arquivos, mas felizmente, alguém realmente passou por todos esses arquivos e criou uma lista de tudo que podemos ignorar ao criar controles de versão ou versões do nosso projeto. E para encontrar esse arquivo, você pode ir novamente e para o Google ou para a frente. Vá em frente e procure ponto git, ignore a unidade. E você deve ter esse link aqui para o github.com. E ele será hospedado no GitHub. Se você abrir este link, ele vai levá-lo aqui. Então este é o ponto gitignore e é o ponto de unidade git ignore. E estes são todos os arquivos que podemos ignorar ao criar versões do nosso projeto. Você pode clicar na linha aqui, e ele vai abrir esta janela ou guia. Vamos ir em frente e selecionar todos eles clicando no controle a. Nós vamos copiar tudo isso usando o controle C. E nós vamos colá-lo aqui em nosso bloco de notas dot gitignore. E agora temos o bloco de notas gitignore preenchido com todos os arquivos que não vamos usar para o nosso 3 positivo. Vamos salvar isso usando o Controle S. E agora de volta no Unity ou quero dizer de volta na árvore fonte, você pode ver que quando tivemos o git ignorar, tudo é ignorado. Vamos encenar tudo isso. E quando encenamos tudo isso, você pode ver que esses são os arquivos que serão comprometidos. E estes seriam o nosso compromisso inicial ou nossa versão inicial do repositório do projeto. E geralmente sempre que você cria seu commit inicial, chamamos isso de inicial. Você pode capitalizá-lo, o commit inicial, oops, inicial. E nós clicamos em Commit aqui. Então, agora, se você olhar para a esquerda, você pode ver que nós temos ramos aqui embaixo e nós temos o ramo mestre. Parabéns, criámos o nosso primeiro compromisso. Muito agradável. Agora, deixe-me mostrar a vocês como vamos avançar mais adiante, mesmo que este vídeo tenha sido longo o suficiente. Mas acho que precisamos de uma base adequada para a árvore de origem e controle de versão à medida que avançamos através do nosso projeto. Então, digamos que estamos em nosso projeto bem aqui. E vamos em frente e criar algum tipo de cubos. Objeto 3d. Clique com o botão direito na hierarquia. objeto 3d, criar um cubo, e agora temos um cubo. Vamos aumentar um pouco. Então escale-o no x, o y e o z. ótimo. Agora temos um cubo e nossa cena. E agora, se entrarmos na árvore fonte, vamos guardar isso antes de irmos. E precisa guardá-lo para uma certa cena. Então vamos entrar nas cenas. Esta será a nossa cena de amostra. - Claro. Cena de amostra, sim, substitua-a. Então temos essa cena de amostra de volta e árvore de origem. Aguarde um pouco, e você pode ver que temos alterações não confirmadas. Então, se clicarmos neles, você pode ver que os arquivos no palco são mudanças dentro das cenas, que é a cena de exemplo. E aqui você pode olhar em detalhes o que criamos agora. É um pouco estranho aqui, mas se você olhar de perto, você pode ver que criamos colisor de caixa. E basicamente isso representa o cubo que adicionamos à nossa cena. Então vamos em frente e encenar tudo isso. Podemos clicar em Commit aqui e nomear este adicionado um cubo. Clique no comentário. E agora em nosso ramo mestre, você pode ver que nós temos um commit inicial que não tinha nenhum cubo. E agora em nosso cubo adicionado, adicionamos um cubo. Então, parabéns. E como nota final, isso pode parecer um pouco complicado. Isto pode parecer um pouco estranho, mas não tenha medo que isto seja muito simples. E o mais importante, é extremamente importante para nós entendermos à medida que avançamos através do nosso projeto, criamos versões, versões dele. E se alguma vez cometermos um erro, podemos voltar atrás clicando com o botão direito do mouse aqui, invertendo o commit. E sim, podemos reverter o comprometimento se voltarmos e voltarmos para a unidade, ele nos pedirá uma recarga ao vivo. Nós escrevemos, recarregamos, e agora não temos o cubo ou qualquer mecânica de quebra de jogo que adicionamos ao longo do caminho. E agora é hora do seu desafio. Seu desafio será baixar e configurar a árvore de origem e o arquivo de ignorar. Então baixar árvore de origem e parar e configurar tudo. Crie seu projeto 3D no Unity Hub, configure um repositório para ele e árvore de código-fonte, nem os arquivos de biblioteca e obtenha o arquivo dot ignore e adicione-o ao seu repositório, crie seu primeiro commit e, em seguida, crie seu segunda submissão. Você pode até ir em frente e tentar talvez brincar com algumas coisas. Adicione um cubo, inverteu a confirmação, veja o que acontece. Fique confortável com a árvore de origem. E se você estiver tendo um pouco de problemas, você pode pausar o vídeo nesta lista de coisas que você precisa criar. E você também pode sempre voltar e assistir o vídeo e ver como eu fiz tudo e acompanhar comigo passo a passo. Então, vejo-te daqui a pouco. 7. Lendas do design de jogos de conquista: Ei, meus colegas desenvolvedores de jogos. Então, antes de aprofundar as pontuações e a forma como vamos criá-la. Eu pensei que seria uma idéia muito boa para falar sobre o design do jogo do nosso jogo. Então eu sempre recomendo que você faça isso. E a maneira como você começa construindo um jogo como apenas fazendo um conceito muito, muito, muito rudimentar e simples do seu jogo. Então eu decidi usar um daemon como um sprite. Vamos ver o que os sprites são daqui a pouco. E ele vai ser chamado. Acho que o chamei de Jimmy em alguns momentos. Então vamos ter o edema da academia. E eu desenhei uma estrada, a estrada em que vamos andar, teremos grama aqui, como a grama. Podemos ter cavernas para uma entrada. Podemos ter um penhasco e aqui, e este é o layout básico dos níveis que vamos ter. Teremos também um pouco de água. Agora vamos falar sobre os personagens e nosso jogo. Temos M0, que é o demônio. Temos um lojista. Talvez até criemos um lugar para o demônio Jimmy entrar em uma loja onde podemos comprar itens, vender itens, talvez até obter missões, ter um pouco de diálogo. Então temos doadores de missões ou apenas MPC que podemos conversar e encontrar missões onde podemos obtê-las. Para que possamos encontrar uma espécie de linda senhora ruiva onde ela nos diga que talvez seu filho esteja desaparecido. Então precisamos ir e encontrá-los. Então também temos esses monstros e aqui estão os bandidos. E eu desenhei-os. Talvez possamos encontrá-los dentro de cavernas ou masmorras ou em cima de colinas. E este quadrado azul na frente dele é onde realmente começamos a batalha. Então, se entrarmos na praça, iniciaremos imediatamente um combate baseado em turnos que falaremos daqui a pouco. Também podemos encontrar itens no chão, por exemplo, um Escudo Dourado. Ou podemos comprar esses itens depois de vencer uma batalha, ou podemos comprá-los na loja. Então tudo isso está disponível para nós. E podemos ver aqui que temos esses quadrados negros aqui e o que eles representam? Bem, eles são uma maneira de ir de uma cena para outra. Então vamos criar um mapa de mosaico. Vamos discutir o que é o mapa da pilha. Não se preocupe com isso. Onde vamos colocar tudo para fora. Mas, como sabem, não podemos colocar todo o jogo em um único mapa. Então o que vamos fazer é fazer a transição de nível para nível usando essas estradas e indo para fora e para frente. Vamos aprofundar um pouco mais. Então vamos falar sobre o combate por turnos e o que é. Eu vou olhar sobre apenas para mostrar-lhe um par de jogos que implementam isso, vamos aprofundar mais quando chegarmos a essa seção e nosso ganho. Você pode ver aqui, este primeiro foi o jogo Final Fantasy. Eu acredito. Este é um jogo muito novo. Eu acredito que não muito novo, mas nos últimos anos criados e é muito aclamado e realmente vendido muito. Então eu estou apenas mostrando os diferentes tipos de jogos modernos de combate baseados em turnos. Então você não sente como, Oh, isso pode ser chato na verdade, não, ele ainda é usado no desenvolvimento de jogos modernos. E vocês podem ver aqui, é assim que dissecamos um mapa de mosaico. Então você pode ver que cada um desses são telhas que usamos para o nosso jogo para desenhar todos eles. E isto é para coser cinco. Eu acredito que é um jogo bastante novo, tem muito alto aclamado e é um combate baseado em turnos onde cada jogador toma uma vez para atacar algum tipo de inimigo na frente deles. Vamos seguir em frente. Vamos falar sobre as lendas do design do jogo de conquista. Então, quais são as principais mecânicas do nosso ganho? Vai ser andar, interagir, e o combate por turnos. O que eu quero dizer com andar e interagir? Bem, andar é bastante simples. É compreensível. Interagir é interagir com outros NPCs, interagir com os lojistas e eu vou colocar tudo para fora. Então, interagir com lojistas, interagir com itens talvez escondidos, interagir com os doadores de missões, interagir com os inimigos e o combate por turnos também é uma mecânica central do jogo. Também falaremos sobre a jogabilidade principal. Então, a jogabilidade principal é tomar missões, derrotar monstros em cavernas, ganhar dinheiro e experiência. E também temos a melhorar o nosso jogador e as nossas armas. Então vamos criar um sistema onde temos estatísticas de jogadores e atualizá-los como o jogador ganha mais experiência e assim por diante. Então esta é uma pequena cena ao lado da água com um barco. E é só isso. Então vamos falar sobre a história do jogo. E você pode estar pensando, bem, por que eu deveria ter uma história de jogo enquanto você está trabalhando em um projeto? Se você não tem uma história de jogo, se você não tem. A imagem geral do seu jogo, você não saberá para onde está indo. Você vai encontrar-se sem motivação enquanto você se move através de seu curso. E você verá que é lenta, lenta, mas certamente deixando sua alma sem mais motivação. Então, qual é a história do nosso jogo? Você é um demônio da profundidade do inferno em busca do seu Cavaleiro das Trevas e irmão que foi capturado pelo Imperador. Sua missão é matar monstros em cavernas que assombram aldeias no império. E eu parei aqui, mas você pode expandir muito sobre isso. Então você pode pensar que você mata monstros nas aldeias para o império, porque você quer que o imperador mantenha seu amigo salvo. Talvez queira salvá-lo no final. Talvez o imperador se torne algum tipo de demônio ou algum tipo de arrastamento no final e você precisa derrotá-lo depois de salvar seu amigo do que ele era, o Cavaleiro das Trevas, nós realmente usamos um deles. Não é o Batman, uma noite escura para a qual encontramos um sprites. Então você pode ver, por exemplo, temos um sistema de diálogo onde falamos com o lojista. Ela nos diz que é uma curandeira. Ela nos diz: “Ei, eu sou um curandeiro.” E também temos diferentes tipos de ambientes. Então usamos vários sprites vendidos aqui. Isso talvez não seja um tipo de periferia onde você precisa encontrar algum tipo de busca, talvez encontrar algumas ervas para o curandeiro ou algo assim. Então vamos continuar longe. Finalmente ou não. Finalmente, eu vou saber Vamos falar sobre os requisitos técnicos. Então vamos ter um conjunto de azulejos para o fundo e os objetos sólidos. Vamos ter entradas do teclado controlando nosso ganho. Vamos ter uma câmera de acompanhamento. Eu só vou abrir tudo isso. Nós vamos ter onde nós seguimos cam que vai seguir o jogador usando algo muito, muito legal. E isso é adicionar uma oração através da nossa câmera, o que é muito estranho eu sei, mas isso nos permite usar a máquina Cinna. Então você pode ver que este é outro ambiente diferente onde temos lava e este monstro. E aqui teremos estatísticas claras. Então teremos destreza, defesa, HB, Manor, experiência, e assim por diante. Todos eles serão carimbados com um sistema de nivelamento. Teremos um sistema de diálogo, como você viu no slide anterior. Teremos um sistema de busca. Teremos um sistema de inventário, que vai ser uma parte muito divertida do curso porque vamos usar todo o nosso conhecimento em C-Sharp. Vai ser tão divertido, você vai aprender muito. E então nós temos a loja e o dinheiro, que também vai ser muito complexo, mas às vezes pegar duas idéias simples e combiná-las para trabalhar em conjunto, que é o sistema de inventário e um sistema de dinheiro que irá criar, para trabalhar em conjunto, para criar uma loja. Vai ser uma criação muito, digamos, desafiadora. E finalmente, temos o sistema de combate baseado em turnos que vamos aprofundar e aprender tanto. E então vamos falar sobre o futuro da jogabilidade. E eu vou abrir tudo para que possamos ver a foto no final. Então esta é uma foto que eu tentei tirar uma captura de tela do combate baseado em turnos. Então você pode ver que nós temos os nomes de nossos jogadores com suas barras de saúde. São barras menores. Você pode ver que temos opções para atacar, usar magia, usar itens, e fugir. E você pode ver que teremos vários tipos de jogadores. E esta é a noite escura de que eu estava falando. E isso é algum tipo de companheiro de viagem, um sombrio um esqueleto que você encontra ao longo seu caminho e ele concorda em ajudá-lo em suas batalhas. Então este é um mestre major que eu encontrei e este é um guerreiro. E todos estes são sprites que eu encontrei de graça em um site que eu vou estar falando e usando muito. Então, o que temos? Temos o movimento Conquistador. Estes são os recursos de jogabilidade que temos andando terá andando de várias maneiras. Então eu voltei para te mostrar. Então temos, por exemplo, o demônio virado para a frente. Mas aqui, por exemplo, temos o demônio virado para a esquerda e para a direita e para cima. Então isso é realmente um recurso ou um mecânico, se você quiser. Em nosso jogo, temos interagindo com MPC. Esta é também uma parte muito crucial do jogo. Então, quais são os interativos? Nós conversamos sobre como podemos nos mover através de níveis ou cena. Verá quais são as cenas quando chegarmos ao curso. Temos saídas na área. Então estas são as áreas onde podemos sair da N2, outras áreas, temos zonas de batalha. Aqui é onde eu falei sobre onde temos algum tipo de inimigo na nossa frente e entramos na zona de batalha e começamos a lutar contra eles. Temos itens no chão que podemos pegar. Temos MPC para missões ou para fazer compras. Temos um ponto de partida e de fim, o que é muito importante. Teremos um ponto de saída que o demônio atravessa para chegar a uma área para a próxima. Também tem os pickups, que são os itens no chão. Temos vários itens também, e você pode adicionar o seu próprio. Essa é a parte mais bonita de todas as pontuações que você pode adicionar seus próprios itens neste jogo. Atualmente usamos um ato de prata, um machado dourado, uma armadura de prata, uma armadura de ouro. Temos oceanos monopolos, temos porções de HP e assim por diante. Então, finalmente, eu vou emitir um desafio para vocês, e esse desafio vai criar seu próprio design de jogos. Então você precisará descobrir uma história para o seu jogo. Sei que pode estar pensando, sério. Só quero aprender a codificar. Só quero criar este jogo, por favor. Michael, deixa-me em paz. Não. Você precisa descobrir uma história para o seu jogo. Confie em mim, quando descobrir uma história, este curso será muito melhor. E não estou aqui para te ensinar a criar. Novamente, não estou aqui para te ensinar a codificar em C Sharp. Estou aqui para te ensinar como se tornar um desenvolvedor de jogos, A-Master, solucionador de problemas. Então a primeira coisa que você precisa descobrir é a história por trás do seu jogo. Então eu quero que você descubra a mecânica do jogo. Você quer. Talvez você queira adicionar salto, talvez você queira adicionar corrida. Coloque-os no site. Mesmo que você seja um iniciante, basta adicionar tudo o que você gostaria de ter em seu jogo. Talvez você não possa implementá-lo agora. Talvez não a implementemos no nosso jogo. Mas à medida que você progride através de sua jornada de desenvolvimento de jogos, você verá que até o final das pontuações terá todas as ferramentas para criar tudo o que você quer para o seu jogo. Em seguida, você precisará baixar seus próprios sprites e, por offsets, certifique-se de que você tem primeiro plano e plano de fundo. Se você quiser. Espere um pouco por este ponto aqui, quando eu mostrar o site, é arte de jogo aberto. Não é como um site secreto ou algo assim. É arte de jogo aberto. Vai encontrar os teus próprios espíritos. Vá encontrar seus próprios personagens, inimigos, monstros, NPCs, conjuntos de discagem, o que você quiser, vá encontrar o seu próprio. Eu realmente recomendo que você precise descobrir quais recursos você deseja adicionar. Talvez você queira ter algo diferente do que simplesmente itens no chão. Talvez você queira ter alguns itens escondidos. Talvez queira ter baús que se abram e encontrem os itens. Vá divertido louco seus próprios recursos. E acho que é isso. Estamos encerrando nossa seção. Então eu vou deixar esse desafio aqui na sua frente. Quero que tire um tempo para criar a história. Quero que dedique um tempo para anotar a mecânica que adoraria ter no seu jogo. Seja criativo, mesmo que você pense que não tem habilidade, faça isso, basta escrevê-los. Nós estaremos lidando com tudo neste curso. Então não vamos perder mais tempo. E vejo-te no próximo vídeo. 8. Seção 2: configurando a folha Sprite: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, como você pode ver, criamos um novo projeto chamado as lendas da conquista do RPG. Yay, tem muito emocionante. Esta é a melhor parte da criação de projetos. Em seguida, adicionamos esta imagem de fundo. Nós adicionamos nosso pequeno daemon aqui que vai ligar mais tarde. E também falamos sobre folhas de sprite e renderizações de sprite. Nós também falamos sobre um site muito emocionante, muito agradável onde você pode encontrar todos estes gratuitamente. Então não vamos perder mais tempo e vamos começar. Certo, então a primeira coisa que vamos fazer é criar um novo projeto. E aqui vamos nos certificar de que é um jogo 2D. E nós vamos chamar isso de lendas de conquista para o RPG. E certifique-se de encontrar o local adequado. Vou guardá-lo dentro dos projetos da Unity aqui mesmo. Então, clique em Selecionar pasta. Agora ele está salvo em projetos do Unity. Chama-se lendas da conquista do RPG. E nós vamos criar o projeto. E eu vou pular essa parte só porque eu não quero te incomodar com todo esse tempo inútil. Oh, ok, bem-vindos de volta a todos. Então, agora que nosso projeto foi criado, vamos começar a adicionar coisas a ele. Primeiro de tudo, vamos adicionar um tipo de fundo apenas para ter um lugar para nossos personagens entrarem. Então eu preparei algo chamado imagem de fundo, e você pode simplesmente arrastá-la aqui para os ativos. E agora podemos simplesmente arrastá-lo sobre o nosso C. Então, como você pode ver, é um pouco pequeno. Deixe-me apenas re-centralizar tudo aqui. Assim, a posição está no 0 no x, 0 no y e 0 no zed. E como você pode ver, se rodarmos o jogo agora, é um pouco pequeno demais. Agora o que podemos fazer, podemos aumentar a escala, mas um, outro truque muito bacana que podemos fazer, um clique de taxa aqui na imagem. Você pode ver que os pixels por unidade é 100. Basta fazer este 30 para bater aplicar. E como você pode ver, a imagem cresce. E explicarei mais tarde quais pixels por unidade. Agora a próxima coisa que vamos fazer é adicionar o nosso personagem. E para isso, vamos usar algo chamado sprite. Deixe-me explicar o que é um sprite. Então, o que é um sprite? Então este é um sprite do nosso personagem, aqueles que vamos usar. E isso também é um sprite do chão que vamos usar nosso jogo. Então, um sprite é um objeto 2D. Eles têm imagens gráficas sobre eles chamadas texturas, assim como você pode ver aqui, estas são texturas em um objeto 2D. E eles são usados adicionando um componente chamado renderizador de sprite a um objeto de jogo. Então deixe-me mostrar como isso funciona. Primeiro de tudo, vamos voltar para a Unidade. E vamos em frente e pegar nosso personagem bem aqui. Como você pode ver, temos muitas opções. Então eu vou escolher a baunilha caminhada bem aqui e adicionado em nossos ativos. Então vamos tocar em Enter. E antes de continuarmos com isso, nós apenas mudamos o layout aqui do padrão um para o dois por três. E isso nos ajudará muito melhor. Pegue o jogo e olhe ao redor como podemos ver a cena eo jogo abaixo dele. Porque este jogo vai ser muito focado em como tudo parece comparado da cena para o jogo. Ok, ótimo. Então, a próxima coisa que vamos fazer é clicar na baunilha de caminhada bem aqui. Se você pressionar a pequena flecha, você pode ver que todos os demônios estão amassados juntos. Então, se clicar duas vezes aqui, você pode ver que todos os demônios estão na mesma imagem, mas nós não queremos isso. Nós realmente queremos apenas esta imagem aqui, a fim de exibi-la. Porque se o adicionarmos agora mesmo à cena, podemos ver que é muito pequeno e estão todos juntos. Então deixe-me deletar isso. Então, a maneira como vamos fazer isso é antes de tudo, vamos clicar nesta imagem. Podemos olhar aqui e o inspetor, podemos primeiro fazer 32 ou mudar isso mais tarde. Vamos ficar com 100. Precisamos mudar esse modo privado para múltiplo. Será necessário alterar o modo de filtro para um ponto. Nenhum filtro aplicará tudo isso. E agora, quando clicamos no editor de sprite, como você pode ver, podemos começar a cortar nossos brotos. Se olharmos aqui para cima, temos a opção de cortar isso automaticamente. Mas se tentarmos cortar isso automaticamente, você verá que nem todos os quadrados são do mesmo tamanho. E isso será um grande problema mais tarde quando tentarmos animar, porque como você pode ver, esta é a animação ambulante. Temos várias tribos. Se eles não são do mesmo tamanho, vai ser um pouco difícil. Então o que vamos fazer é mudar de automática para grade por tamanho de célula. E se apertarmos essa chave de fatia agora, você pode ver que ela cria uma fatia muito limpa da nossa grande folha de sprite. Assim, você pode ver que cada entidade gráfica ou fatia da entidade gráfica tem o mesmo tamanho. E isso nos ajudará tremendamente elétrons. Então agora podemos acertar a fatia, podemos acertar a aplicação. E como você pode ver, cada fatia tem um nome específico. Agora você pode mudar o nome dos sprites para caminhar um direito, por exemplo, mas eu não acho que seja muito necessário. Você também pode ajustar o tamanho das fatias aqui, mas eu acho que isso é bom o suficiente. Então pressione Aplicar novamente. Vamos sair. Agora, se apertarmos a tecla de seta, você pode ver que temos os sprites individuais bem aqui. E podemos começar arrastando este, o principal, e colocá-lo em nosso mapa de azulejos ou nossa imagem de fundo, como você pode ver, aqui, não é visível. Onde está o nosso pequeno demónio? Bem, ele está aqui, mas se o movermos por trás da imagem de fundo, e você também pode ver que ele é muito, muito pequeno. E é aqui que podemos mudar o pixel por unidade. Digamos que 32 se candidataram, e agora ele tem o tamanho correto. Se o trouxermos de volta para cá, podem ver que podemos vê-lo no chão. Nós também podemos até torná-lo maior, talvez fazer este 16 hit Aplicar. E ele desapareceu de novo. Vamos movê-lo do fundo. Ok, lá vamos nós. Eu acho que 16 é um número bom o suficiente, mas ainda assim você pode ver que não podemos vê-lo por trás da camada. E este é um problema que podemos resolver isso agora, se olharmos na renderização sprite, este é um objeto de jogo que tem um renderizador sprite nele. Se, por exemplo, desligarmos o renderizador de sprite, você poderá ver que a imagem não será mais renderizada ou que a entidade gráfica não será mais renderizada. Podemos clicar aqui novamente e retornar o sprite. E podemos mudar a ordem da camada aqui, 21. E agora, se o movermos, podemos vê-lo na frente da nossa imagem. Porque a imagem de fundo, que também tem um renderizador de sprite que podemos desativar, tem uma camada de ordem de 0. Se colocarmos em dois, você pode ver que o demônio desaparece, mas esta não é uma solução muito boa. Vamos resolver isso no próximo vídeo onde vamos criar camadas de classificação. Mas antes de fazermos isso, tenho um desafio para ti. E seu desafio vai ser ir em frente e criar seu próprio jogador e trabalhou. Então explore um site chamado Open Game Art que eu mostrar a vocês. Então este é art.org jogo aberto e é um site incrível onde você pode encontrar um monte de ativos gratuitos para usar em seus jogos 2D, jogos 3D. E você também pode encontrar a música e efeitos sonoros e muito, muito mais. Então, por exemplo, esta folha de sprite aqui, isto, Vamos dizer conjunto de mosaicos. Peguei-a do autor Savini, a Nova Iorque. Eu não tenho certeza de como pronunciar isso, certifique-se de verificá-los. Eu também tenho meus demônios bem aqui de William Thompson como J, também em jogo aberto art.org. É um site incrível. Eu recomendo que você o explore e encontre seus próprios personagens. Certifique-se de que o personagem que você encontrar tem essas animações de caminhada nele. Então, de volta ao nosso desafio. Em seguida, você precisa encontrar alguns personagens e sprites que se adequam ao seu estilo. Talvez não queiras ter um demónio a perseguir uma aldeia. Admito que foi uma ideia desajeitada, mas queria tentar algo novo. Para mudar para o próximo vídeo, encontre seus próprios sprites, divirta-se, aproveite seu tempo. Isto é, como eu disse no primeiro vídeo, isso é tudo sobre criar seu próprio jogo e adicionar seu próprio sabor e estilo para o jogo. Não se trata apenas de copiar o que faço e o que acho bom para o jogo. Você precisa adicionar seu próprio sabor nele. Então tome o seu tempo, encontrar mercadorias sprites, explorar aberto E portões são th.org, talvez você vai encontrar outros sites e eu vou vê-lo no próximo. 9. Como classificar camadas: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, vamos aprender sobre a classificação de camadas. Então, agora, se clicarmos no fundo, você pode ver que a camada de classificação é o plano de fundo. O jogador tem sua própria camada de classificação, a camada de jogador. Então não vamos perder mais tempo e vamos começar. Oh, ok, então como já dissemos antes, nós podemos realmente usar a ordem na camada para alterar a ordem em que nossos sprites são renderizados. Mas neste vídeo, vou mostrar-lhe outra forma muito mais sofisticada de fazer as coisas. E em primeiro lugar, por que precisamos dessa maneira mais sofisticada? Você pode estar perguntando: “Bem, Michael, eu posso simplesmente adicionar outro objeto, colocá-lo em, digamos, três e depois quatro, e depois cinco e assim por diante. Mas o que acontece se, por exemplo, quisermos adicionar um item aqui e quisermos renderizar este item sobre os, digamos, os itens do coração e sobre os NPCs normais, você teria que voltar sempre e verificar qual ordem n camada é o MPC e o jogador e o fundo e assim por diante. Então, a fim de mudar isso, a fim de ter uma maneira mais dinâmica de escolher as camadas, podemos criar camadas de classificação. Então vamos em frente e criar nossa primeira camada de classificação. Para fazer isso, podemos subir aqui para as camadas e clicar em Editar camadas. Então, como você pode ver aqui, nós temos as tags, nós temos as camadas de classificação, e nós temos as camadas. Agora as camadas e tags serão mantidas para mais tarde. Por enquanto, vamos nos concentrar nas camadas de classificação. E é aqui que escolhemos qual Sprite ou imagem agredida na frente do outro. Agora, se você olhar para trás em nossa baunilha andar, isso mudou isso e chamar isso de monstro ou jogador, jogador demônio ou vamos apenas mantê-lo como jogador. Você pode ver que a camada de classificação que sua própria é a padrão. E isso é porque nós só temos uma camada padrão. Agora vamos em frente e adicionar uma nova camada clicando no pouco mais aqui. E vamos chamar isso de fundo. Então agora podemos ir para a imagem de fundo e podemos escolher a camada de classificação para ser o plano de fundo. Então, como você pode ver imediatamente, a camada de classificação, que é o plano de fundo, é renderizada na frente do jogador. E isso é porque o campo olha para trás para as camadas aqui. Você pode ver que a camada está na frente do padrão e você precisa ter certeza que eles estão classificados corretamente e estão em uma determinada ordem. Certo, ótimo, então certifique-se de que o fundo está na frente daqui. Agora vamos criar uma camada para o jogador, mas vai ser o seu desafio. Seu desafio será criar a camada de classificação. Então crie uma nova camada de classificação chamada jogador. Atribua o nosso jogador à camada e certifique-se de que o jogador é mostrado na frente do nosso plano de fundo. Portanto, certifique-se de que a ordem e as camadas de classificação estão corretas. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, hey, bem-vindo de volta. Como você se saiu com isso? Espero que tenha tentado. É muito fácil. Basta clicar na extremidade mais aqui. Criamos uma camada chamada jogador. Depois voltamos para o nosso jogador. E aqui em vez de padrão, nós simplesmente escolhemos o jogador e nós podemos até definir a ordem lá para 0. Isso não importa. Então agora o jogador está na camada de classificação do jogador. O plano de fundo está na camada de classificação de plano de fundo. Então, mesmo que mudemos a ordem e a camada 2, digamos 600, mesmo que o player esteja na camada de ordem 0 aqui, ainda renderizada na frente da imagem de fundo. Espero que tenha gostado. E antes de seguirmos em frente, esquecemos de fazer algo ou não fizemos no vídeo anterior. E isso é criar um repositório. Agora, eu não, eu não queria criar um repositório. E o primeiro vídeo porque eu pensei que talvez alguns de vocês gostariam de criar seus próprios sprites e, em seguida, criar um novo projeto. Então, a maneira como criamos um repositório, já cobrimos isso. Clicamos no Navegar, procuramos nossos projetos, vemos a lenda da conquista. Selecionamos esta pasta e vamos criar, certifique-se de que é um bom Nós vamos criar o positivo. Sim. E lá vamos nós. Precisamos nos certificar de que esquecemos a biblioteca ou ignoramos. Quero dizer, então ignore tudo abaixo da biblioteca. Nós criamos. Este é o nosso arquivo de ignorar. Então vamos pegar as cinco listas de ignorar. Então aqui, vá para os mestres. Lá vamos nós. Podemos escolher ir Rolar, Controlar um para selecionar tudo. De volta aqui. Onde está o ponto gitignore baseado tudo. Salve essa saída. E agora vamos ver. Sim, tudo parece estar bem. Encenar tudo. Vamos comprometer nosso trabalho e geralmente, como dissemos, recupera o commit inicial. E esta é a parte muito excitante. Então agora, e os nossos compromissos, onde estão os nossos compromissos? Lá? Aqui estamos nós, nós criamos nosso primeiro compromisso e nós realmente começamos nossos projetos. Então agora estamos realmente comprometidos. Não há como voltar atrás, meus amigos. Vamos continuar. 10. Colliders e RigidBody: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, vamos aprender como adicionar física ao nosso jogo e não ter mais apenas imagens e sprites. Na verdade, temos corpos e física no nosso jogo. Então adicionamos um colisor. Também aprendemos o que é um colisor. Adicionamos um corpo rígido. Também aprendemos o que é isso e aprendemos algo novo e um novo recurso para a informação, que é a documentação da Unidade. Então não vamos perder mais tempo e vamos começar. Então colisores e corpos ricos, são partes essenciais e componentes da unidade. Então por que precisamos adicionar essas duas coisas estranhas? Bem, porque atualmente, embora tenhamos um jogador e ele parece legal e nós temos um terreno para ficar. E temos Walters diferentes e assim por diante. Mas estas são apenas imagens, estas são apenas sprites. Então o player é apenas um sprite, a imagem de fundo é apenas um sprite e não podemos interagir com ele com nada, nem podemos nos mover. Então vamos começar por entender o que são os colisores. Então, o que é um colisor? Um colisor torna possível que objetos interajam e colidam uns com os outros. E vamos usá-lo para fazer com que nosso jogador atinja objetos e interaja com outros objetos físicos que também têm colisores neles. Agora, o que é um corpo rígido? Um corpo rígido faz algo ou um componente em Unity que nos permite controlar a posição de um objeto através da simulação física. Objeto corpo rígido seria puxado para baixo pela gravidade sem adicionar qualquer revestimento. E, finalmente, podemos também aplicar nossas próprias forças sobre eles ou sobre os corpos rígidos. Então, agora que temos um pouco de compreensão do que isso é, deixe-me apenas mostrar-lhe outra coisa muito legal que você precisa estar ciente, e que é a documentação da Unidade. Agora, você pode ver aqui, eu apenas digitei no Google corpo rígido 2D em Unity. E você pode ver o link aqui. É o Docs Dot Unity. E você pode ver o que é o corpo rígido. Agora você não precisa ler cada palavra aqui, mas eu recomendo que pelo menos passe algumas coisas aqui. Por exemplo, a física re-lançar o on colision enter. Essas são coisas que são boas de saber que pelo menos existem e você pode usar isso. Nunca me lembro de nada. Eu geralmente adoro saber que há algo útil em 2D corpo rígido que eu posso usar mais tarde. E também temos uma página para o estudo do colisor. E você pode ver que temos um colisor de círculo, um colisor de caixa, borda de polígono, cápsula, e assim por diante e assim por diante. Então, de volta ao Unity, vamos em frente e adicionar um colisor ao nosso jogador. Então vamos para o jogador, vai adicionar um componente e vai ser um colisor 2D. Você pode escolher qual colisor deseja. Acho que um colisor circular vai caber muito bem aqui. Como podem ver, há uma linha verde. É um pouco fino, mas se eu tentar mudá-lo, você pode ver que há uma linha verde e isso é com o que o jogador pode interagir. Então vamos torná-lo um pouco menor para que ele se encaixe apenas em torno do jogador. E você pode editar o colisor aqui tocando neste botão. Também podemos mudar o raio e mudar o deslocamento. Então eu vou movê-lo um pouco para cima e talvez apenas tentou torná-lo tão grande quanto deveria ser. Nunca faça mais do que deveria ser. Então, apenas sobre o tamanho, eu acho que é bom o suficiente. E aqui temos o gatilho e usado por um fator. Veremos o que são todos mais tarde, mas ótimo. Agora você viu como adicionamos um componente. Eu cliquei aqui no botão Adicionar Componente, eu escolhi um colisor circular. Eu poderia ter escolhido qualquer outra coisa. E você precisa escolher um colisor com base na forma do seu jogador ou personagem e do mundo. Agora, a próxima coisa que queremos fazer é adicionar um corpo rígido. Então isso vai fazer parte do seu desafio. Seu desafio vai ser dar, há física? Então vá para o objeto do jogo do jogador, verifique no inspetor, adicione um componente do corpo rígido e certifique-se de que é para D, porque temos dois tipos de corpos rígidos. Temos corpo rígido normal para o 3D, e temos um corpo rígido específico apenas para o 2D. E se você quiser, você também pode executar o código e ver o que acontece. Pause o vídeo agora mesmo e vá fazer a concha. Kay, bem-vinda de volta. Então aqui vamos entrar no objeto do jogo do jogador. Vamos verificar o inspetor. Ok, muito bom. E nós estamos indo para ir em frente e adicionar outro componente e ele vai ser um corpo rígido e vai ser um corpo rígido 2D. Então agora temos um corpo rígido aqui. E você pode ver que tem massa, tem arrasto linear, tem droga angular. Não vamos nos preocupar com isso por enquanto. Mas o que vamos nos preocupar com isso, a gravidade que é adicionada, porque como eu disse, temos gravidade automática em nosso corpo rígido. Então, quando batemos em Play, e agora você pode ver que o nosso pequeno daemon começou a cair e isso é porque as forças da gravidade estão agindo sobre ele. Então, o que podemos fazer sobre isso? Bem, se você tivesse tentado ler o corpo rígido 2D, você pode ver aqui que temos três tipos de corpos rígidos. Temos a dinâmica, a cinemática e a pilha. E você pode se sentir livre para ir em frente e ler sobre tudo isso. O que você precisa entender é que cinemática e dinâmica é sempre que a gravidade age ou forças externas agem em nosso corpo. Cinemática é quando apenas as forças que lhe damos, nossa atuação sobre o corpo e estática, isso significa que nenhuma força pode agir sobre o jogador. Então, se atingirmos a cinemática, agora executamos o código. E você pode ver que o nosso jogador já não cai tão bem que nenhum, Espero que você goste. Precisamos nos certificar de que cometemos nossas mudanças. Então aqui estão algumas mudanças. Preparar todos os commit. Adicionei um colisor e um corpo rígido ao meu jogador. Comprometa as mudanças, e te vejo na próxima. 11. Escritas e variáveis de variáveis: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, criamos um script de jogador e o adicionamos ao objeto de jogo do jogador. Também aprendemos sobre variáveis. Nós adicionamos um pouco de código e como você pode ver, temos este campo serializado. Muito assustador. Não, só estou brincando. É muito fácil. Preciso da sua concentração total. Não vamos perder mais tempo e começar. Agora é hora de começar a controlar nossos objetos no mundo. E a primeira coisa que queremos fazer é usar o corpo rígido que acabamos aplicar para começar a mover nosso pequeno jogador demoníaco. E acho que vamos chamar isso de Jimmy, então Jimmy, o demônio. Então a primeira coisa que vamos fazer é criar um script e adicionado ao nosso daemon aqui. Então, dentro de nossos ativos, vamos clicar com o botão direito do mouse e ir em frente e criar um script C-sharp. E nós vamos chamar isso de o jogador. Tudo o que você pode chamar isso de controlador jogador, gerente jogador. Eu acho que jogador, só para resumir, tudo é um bom nome. Portanto, certifique-se de que você chamá-lo corretamente usando o jogador, pressione Enter. Espere um pouco só para o script aqui para compilar. E você vai notar que sempre que ele faz essa coisinha aqui, agora podemos usá-la. Certifique-se de esperar que isso aconteça porque eu recebo um monte de perguntas enquanto não estou trabalhando. Por que nos ensinou algo errado? Não, você precisa esperar um pouco. Ter pacientes. Agora a próxima coisa que precisamos fazer é adicionar o script, o player. Então, vamos simplesmente arrastá-lo sobre e para o objeto do jogo do jogador. E você verá aqui mesmo no inspetor que nós temos aqui. Oh, deu muito bom. Em seguida, vamos em frente e abri-lo e Visual Studio. Então, para abrir o script, basta clicar duas vezes no player aqui. E o Visual Studio deve abrir. Oh, ok, correto. Agora, não se preocupe com tudo isso, vamos falar mais tarde sobre como Start funciona, como Update funciona, e tudo isso aqui, e comportamento mono e o jogador de classe e o público. Mas, por enquanto, vamos nos concentrar em fazer nossos movimentos de jogador. Para isso, precisaremos do corpo rígido. E para isso, a fim de acessar o corpo rígido, precisará de uma referência a ele. Então, como obtemos uma referência ao corpo rígido? Bem, precisamos criar uma variável do tipo corpo rígido. E você pode estar perguntando, bem, quais são as variáveis? Pergunta muito boa. Deixe-me explicar. Variáveis são como caixas. Digamos que temos uma caixa chamada “As Vidas”. E o que fazemos é colocar um três dentro desta caixa. Então agora temos uma variável do tipo inteiro porque tem um inteiro dentro dele, e é chamado de vidas. Então, uma variável tem um par de coisas que você precisa sempre saber. Então é assim que escrevemos uma variável em casaco ou como traduzimos esta caixa para código e nosso Visual Studio. Então, em primeiro lugar, temos a acessibilidade. Quem pode aceder a isto? Nós temos um público ou um privado e algo que eu vou te ensinar em apenas um pouco, que é chamado de campo serializado. Então, quem pode acessar isso como uma variável pública? Todos podem entrar. É uma variável privada? Somente o script em que estamos usando ele pode usar. Então temos o tipo, como eu disse, é um inteiro. Temos outros tipos que veremos mais tarde, como strings, float, e assim por diante. Então, uma string é uma cadeia de números. Veremos mais tarde quais são os diferentes tipos que temos. Temos o nome da variável e, finalmente, temos os dados armazenados dentro desta variável. Então temos diferentes tipos de variáveis. Então, por exemplo, digamos que vidas podem ser três. Então temos três vidas, mas a velocidade, por exemplo, pode ser 4,8 ou 10,6. Então, a fim de representar a velocidade e outras coisas como a temperatura, precisamos usar um flutuador, onde podemos usar um ponto flutuante para representar 4 a. Então temos o booleano. E booleano pode ser verdadeiro ou falso. Assim, por exemplo, o nosso jogador, podemos criar uma variável que é chamado está morto. Assim como o nosso jogador que pode ser três ou 4.8. Tem que ser verdadeiro ou falso. Tão verdadeiro e falso são os dois dados que podemos colocar no booleano. Booleans são muito importantes, como você verá enquanto avançamos através do nosso projeto. Então temos a corda. Então, uma string é uma string de caracteres. Então o personagem M, I, C, H, E, L. Então esta é uma cadeia de caracteres que representam, por exemplo, mineração, que é Michael ou Michelle. Pode me chamar do que preferir. E esta é uma sequência de caracteres. Juntos, a fim de representar a variável. Ok, então com isso feito, a próxima coisa que vamos fazer é criar uma variável que é do tipo corpo rígido, a fim de obter uma referência a ela. Então aqui vamos criar um público. Tão público como você pode ver, o IDE já nos ajuda muito. Público. Corpo rígido 2D, e vamos chamar este jogador profundo corpo rígido 2D. E outra coisa que sempre precisamos ter em mente é a forma como nomeamos nossas variáveis. Como você pode ver, a primeira palavra não foi maiúscula. A segunda palavra é maiúscula. E também palavras seqüentes que você tem dentro do nome da sua variável são maiúsculas. E eu vou te mostrar o porquê aqui. E nós podemos realmente remover o 2D. Não precisamos disso. E aqui, guarde isso de volta em nossa unidade. Podemos olhar para a direita e você pode ver que temos aqui uma variável de corpo rígido e uma referência a ela. Então agora podemos adicionar este corpo rígido, simplesmente arrastá-lo para este slot vazio. E agora temos referenciado o corpo rígido dos jogadores e agora podemos usá-lo em nosso script. E como eu disse, toda vez que capitalizamos uma palavra, você pode ver que nós adicionamos um pequeno espaço aqui para o nome. Por exemplo, se eu fizer isso um pequeno b, salvo que de volta na Unidade, corpo rígido deve ser conectado. E lá vai você, ele está. Então é por isso que adicionamos o B. E você pode pressionar Control Zed, e podemos voltar e desfazer nossas mudanças. Tão bom agora que você aprendeu sobre variáveis e como podemos criá-las que apenas colocaram isso de volta aqui. E agora é hora de um pequeno desafio. E seu desafio será criar uma variável privada ou não criar talvez alterado para I variável privada. Então mudou variável de público para privado. Volte para Unity e verifique a variável no inspetor. Pause o vídeo agora, altere a variável de público para privado e veja se ele ainda está lá no Inspetor. Oh, bem-vindo de volta. Então aqui vamos mudar isso para um privado. Certifique-se de salvar sempre o script e você sabe que o script não está salvo. Se você pode ver o pequeno asterisco como estrita de seu controle S, salve nosso script de volta em Unity. E agora podemos ver que não temos mais a variável aqui. Então agora, como podemos fazer referência ao nosso corpo rígido? Bem, podemos usar algo chamado campo serializado. E deixe-me mostrar o que é um campo serializado. E também explicarei por que às vezes precisamos usar um campo público, privado e supervisionado. Então, qual é a diferença? Portanto, uma variável privada não está disponível a partir de outras classes. Não é visível no inspetor. Então, por que às vezes precisamos de uma variável privada? Digamos, por exemplo, que temos a velocidade do nosso jogador e não queremos, por exemplo, ser capazes de acessar a velocidade do nosso jogador por acidente a partir, digamos, do item do escudo. Então, tornamos isto privado. Assim, ele só pode ser acessado a partir do script do player. Então a velocidade que é privada ou a velocidade do jogador é privada. E ele só pode ser acessado a partir do script do player, não do escudo, do script, por exemplo. Então este é o poder de usar variáveis privadas. Agora, objetos de valor públicos estão disponíveis de outras classes, são visíveis no Inspetor e eles, é claro, não visíveis no Inspetor. Você pode realmente vê-los mais coluna que eu acho que é inútil. Mas, de qualquer forma, e o campo serializado, as juntas forçam o público e o privado, porque os campos serializados não estão disponíveis a partir de outras classes, mas você ainda pode vê-los no inspetor. E esta é uma ferramenta muito, muito útil no Unity. Então vamos em frente e fazer do nosso corpo rígido um campo serializado. Então, em vez de privado, vamos torná-lo um campo serializado e certifique-se de sempre adicionar esses dois colchetes em torno deles. Então salvamos nosso roteiro. Voltamos à Unidade, e agora temos a opção de adicionar o corpo rígido e você pode ver que ele já está lá. Então vamos guardar isso. E no próximo vídeo começaremos a usar nosso corpo rígido para mover nosso player. Como sempre, não se esqueça de cometer nossas mudanças. Eu vou parar de fazer isso, mas eu vou sempre fazer com, no final de cada vídeo, porque leva um pouco de tempo de qualquer maneira. Bem que não, espero que goste e te vejo no próximo. 12. Inputs e rigido: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós realmente vamos aprender sobre entradas e vamos usar nosso corpo rígido para algo útil. Então agora o nosso Jimmy, o demónio, não fica ali parado. Ele pode realmente mover para cima, mover para a esquerda, mover para baixo, mover para a direita. E ele pode realmente se mover não apenas horizontalmente e verticalmente, ele também pode se mover. Então não vamos perder mais tempo e vamos começar a usar nosso demônio . Então vamos primeiro abrir nosso roteiro e explicar algumas coisas aqui. Então, primeiro de tudo, nós temos essas três linhas aqui que começa com o uso, e esta é uma coleção de bibliotecas. Então, por exemplo, quando escrevemos usando o mecanismo Unity, isso significa que acessamos um código enorme, enorme que nos permite usar, por exemplo, o início, a atualização, o comportamento mono e assim por diante. E isso é o mesmo para as coleções de sistema e coleções de sistema. Genéricos, são bibliotecas enormes. E em vez de escrever todo o código para, por exemplo, para o início e assim por diante, simplesmente adicionamos o uso aqui e podemos usar qualquer código que quisermos. Veremos muito mais disso mais tarde, onde estaremos adicionando nossas próprias bibliotecas e usando diferentes aqui em cima. Agora, a próxima coisa, temos um jogador de classe pública. Assim como temos as variáveis que podem ser públicas ou privadas, também podemos ter classes, e essas classes podem ter dentro delas métodos e variáveis. Você pode pensar nisso como uma coleção de pequenos códigos dentro da classe. Então temos o nome da classe que é jogador. E sob nenhuma circunstância você muda o nome e aqui, porque se você mudar o nome aqui, mas você não muda o nome do script aqui. Você terá um erro enorme e é muito difícil mudar mais tarde. A próxima coisa que temos, esses dois pequenos pontos aqui e comportamento mono. E eu não vou falar muito sobre como a herança funciona. Mas isso significa que o jogador inerência de comportamento mono e comportamento moral é uma classe base. E o que é uma classe base? É onde temos o início e a atualização. Então, basicamente, quando digitamos isso aqui, isso significa que podemos anexar o jogador a um determinado objeto de jogo e podemos usar o início e a atualização. Agora, o nosso início e atualização, temos um comentário aqui. Assim, o comentário é sempre precedido por essas duas barras. E start é chamado antes da primeira atualização de quadro. Então, sempre que iniciamos nosso jogo, sempre que o jogador objeto começa, o método start realmente executa e podemos adicionar um monte de coisas aqui que queremos executar sempre que o objeto do jogo do jogador aparece ou começa ou o que quer que seja ou vem vida. Então temos a atualização e atualização chamada uma vez por quadro. Então eu acho que porque você está tentando criar jogos, você está familiarizado com quadros por segundo. Bem, atualização é chamada de cada quadro por segundo. Este é o lugar onde podemos realmente mover o nosso jogador e fazer várias coisas. Verifique o ambiente, veja o que acontece e como o jogador interage com o mundo. Então, se você quiser começar como para inicialização e atualização é para um movimento e fazer certas coisas. Então vamos começar a aplicar tudo isso. E vamos aplicar em primeiro lugar, o movimento dos nossos jogadores. Então temos o nosso corpo rígido. Agora, o que queremos fazer é que realmente queremos começar a nos mover. Então o que podemos fazer é usar a velocidade do ponto do corpo do jogador. E vocês podem ver aqui, se passarmos por cima dele, um corpo rígido, velocidade de ponto 2D, velocidade linear do corpo rígido em unidades por segundo. Então, como você pode ver, é do tipo vetor 2. E todos sabemos o que é um vetor. Vector é apenas um componente em matemática que permite que você use o eixo x e o y e merecido. Mas porque estamos usando o vetor 2, isso significa que estamos usando apenas o x e y. Isso é porque estamos em 2D, não importa se usamos o conjunto ou não. De qualquer forma, de volta ao nosso código. Então velocidade, eu sempre gosto de usar as sugestões de ID e novo vetor dois. E vamos dar um por um. Então este código aqui será chamado cada quadro. Assim, a velocidade do corpo rígido dos jogadores virá o novo vetor 2, 1 f, 1, f, que são as coordenadas. Então ele deve começar a se mover na direção superior direita quando começarmos nosso jogo. Então vamos salvar o script. Vamos voltar ao nosso jogo e vamos testar isto. Então, quando batermos no jogo, você vai ver, Lá vamos nós. Então nosso pequeno Jimmy Daemon começa a se mover para cima e você pode ver que isso acontece em cada quadro. E também podemos testar o início mais tarde. Ok, ótimo. Agora temos um pouco de movimento. A próxima coisa que queremos fazer é que realmente queremos usar o movimento somente quando entramos de nossos Keats antes de mergulharmos. Eu só quero deixar algo claro sobre os resultados. Não estou aqui para mostrar como tudo é feito. Estou aqui para te ensinar como se faz. Então meu objetivo não é só você ficar sentado e me ver digitando algum código. Meu objetivo é fazer de você um grande problema resolver. E a maneira como fazemos isso é começando a pensar como um desenvolvedor de jogos. Então, digamos, por exemplo, que me deparei com esse problema. Quero ter entradas para o meu ganho. Então, o que eu faço? Bem, eu entro no Google e digamos como entrar no Unity. Certo, então podemos ver aqui que temos algo chamado gerenciador de entrada. Então vamos para as entradas. Então nós olhamos aqui, ok, e colocamos muito bom. Temos acesso, muito bom. Podemos rolar para baixo e Whoa, temos as propriedades estáticas. Então nós rolamos para baixo, lemos um pouco, e então vemos aqui os métodos estáticos. E podemos ver que ele retorna o valor do eixo virtual e isso retorna o valor como nome, sem suavização. Está bem, Legal. Então eu acho que o eixo GET rho é algo que podemos usar. Agora, é claro, o processo quando você faz isso por muito mais tempo, mas estou apenas mostrando como resolvemos problemas à medida que progredimos em nossa jornada. E aí vamos nós, o ponto de entrada, temos acesso. Rob, que conveniente. Digamos que não faço ideia de como usar isto. Posso ver a descrição. Eu posso ler como o valor muda, e eu também posso ver que nós usá-lo dentro da atualização. Quão conveniente? Então aqui você pode ver que é do tipo flutuador. Nós damos uma velocidade, obtemos uma entrada e multiplicamos por time.DeltaTatime, o que explicaremos mais tarde. E então nós podemos realmente adicioná-lo em algum lugar. Muito bom, tão ótimo. Mas o que significa esta horizontal aqui? Bem, quão conveniente nós realmente temos a janela de entrada Editar configurações. Certo, vamos tentar isso. Então, em unidade, vamos para a edição, vamos para as configurações do projeto. E onde está a nossa entrada? Gerenciador de entrada? Nós clicamos no eixo e whoa, olha quantos eixo temos. Então talvez eu esteja parecendo um pouco brega, mas é assim que às vezes descobrimos as coisas enquanto estamos criando jogos e fazendo projetos. Tão grande. Temos a horizontal, clicamos nele, vemos que seu nome é horizontal e o botão negativo é o esquerdo, o botão positivo como o direito. Muito agradável. Vamos em frente e implementado em nosso código. Então, de volta aqui, vamos bater em um Enter. E como eles nos disseram para recriar um carro alegórico, vamos chamá-lo de movimento horizontal. E vai ser igual a ponto de entrada, obter linha de acesso. E aqui eles nos disseram que precisamos adicionar uma dica horizontal e muito importante. E isso vai poupar muitas, muitas horas. Confie em mim, sempre que você tem uma referência de string, isso significa que sempre que temos algo que precisamos colocar entre duas aspas, como aqui, por exemplo, esta é uma referência de string se você digitar horizontal incorretamente aqui, este código não funcionará. E não só isso, você não receberá um erro. Então, sempre que você tiver uma referência de string, é sempre melhor copiá-la e colá-la aqui. Ok, ótimo. Agora temos a entrada usando a linha de acesso get na horizontal. E estamos colocando dentro de uma variável do tipo flutuador chamado movimento horizontal. E agora podemos definir isso como 0. E em vez de dar-lhe algum número arbitrário 1 f, podemos realmente dar-lhe o movimento horizontal. Vamos guardar isso. Voltaremos para a Unidade. E deixe-me escurecer isso bem aqui ao lado do, o inspetor. Acertamos o Play. E agora se clicarmos no A ou no D, você pode ver que nosso jogador começa a se mover. Mas se tentarmos acertar, podemos usar também o A e D, ou a esquerda e a direita, as setas. Mas se tentarmos bater para cima e para baixo, não temos nenhum movimento. E se tentarmos atingir o W e S, também não temos movimento. Então é hora de aplicar a velocidade vertical. E não me apetece fazer isso. Então eu vou dar a você como um desafio. Então obtenha entrada vertical e um gráfico. Então obtenha a entrada para o movimento vertical. Aplique-o à velocidade do corpo rígido e teste-o no seu jogo. Então pausar o vídeo agora mesmo e ir fazer desafio de ensinar. Ok, bem-vindo de volta. Então deixe-me apenas olhar para nossas configurações de projeto novamente. Torná-lo um pouco maior. Então, o que queremos? Queremos a vertical. Então eu vou abrir a vertical, ok, então botão negativo para baixo, acima como W e é chamado vertical. Então vamos copiar vertical. Podemos fechar isto. Vamos voltar aqui. Vamos duplicar esta linha e a forma como a duplicamos irá simplesmente colocar o cursor no final e pressionar Control D. Então agora mudamos isso de horizontal para vertical e colamos a palavra vertical e aqui. Então, como regra de toco, lembre-se sempre, sempre que você tiver uma referência de string, você sempre vai e copie-a. E agora adicionamos o movimento vertical ao vetor 2. Então, agora, o que estamos fazendo aqui? Estamos tomando o movimento horizontal. Estamos tomando o movimento vertical. Então estamos tomando a velocidade do nosso corpo rígido jogador. E estamos definindo-o como um novo vetor para que é criado a partir do movimento horizontal e do movimento vertical. Ok, ótimo. Com isso feito, vamos nos certificar de que salvamos o roteiro em Unity. Apertamos Play e agora devemos ser capazes de mover para a esquerda, direita, e para cima, para baixo. Oh, taxa de crescimento. Quão legal é isso? Nosso jogo começa a ganhar vida. Então eu espero que você deu o seu melhor e certifique-se de cometer nossas mudanças, como você pode ver, cometeu a última mudança em que eu criei um script de jogador e adicionei uma referência ao corpo rígido. Então eu vou te ver no próximo onde vamos começar a animar nosso jogador e torná-lo um pouco mais rápido. Então, vemo-nos lá. 13. Animador e animação: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, vamos começar a animar nosso Jimmy Dean. Então, quando tocamos , não precisamos tocar no play. Nós realmente vamos para as animações. Podemos andar para a esquerda, podemos andar para a direita. Podemos descer. E, claro, podemos estar andando. Então não vamos perder mais tempo e vamos começar a aprender sobre animações em unidade. Ok, então animações e animadores em Unity, muito divertido. E vamos começar em primeiro lugar, entendendo as animações. Primeiro de tudo, temos algo chamado controlador animador. E isso nos permite, ou permite que você organize e mantenha um conjunto de clipes de animação. E você verá como isso fica dentro da Unidade daqui a pouco. Em seguida, temos o componente animador e ele é usado para atribuir animações a um objeto de jogo em sua cena. Então, se o objeto do jogo tiver um animador, unidade sabe que isso pode ser animado. Em seguida, temos uma animação. E o que é uma animação? É vários sprites são renderizados um após o outro, e parece um vídeo. Então, o que é um vídeo quando você assiste um vídeo ou um filme, uma série, ou várias imagens ao lado do outro que se movem ou vão de um para o outro lado que você sente ou você tem a ilusão como se eles fossem todos contínuos? E, finalmente, temos o renderizador de sprite. Nós já conversamos sobre isso, mas eu vou terminar aqui para lembrá-lo novamente que ele torna uma queda sprite para os gráficos. Então vamos em frente e criar nossa primeira animação. Então, de volta à Unidade aqui, como vamos fazer isso? Bem, vamos usar nossas imagens contínuas do demônio Jimmy movendo-se para a direita, esquerda, para cima e para baixo. Então, se clicarmos duas vezes no sprite, você pode ver que temos um movimento para frente, um movimento para cima ou para cima, para baixo, você quiser chamá-lo, depois para a direita e para a esquerda. Então vamos começar a criar. Primeiro de tudo, vamos para o jogador, vai clicar na janela aparecer, vai descer e clicar em animação. Então agora temos a animação e aqui vamos encaixar ao lado do jogo. E certifique-se de que o verdadeiro clique no jogador. Aqui você pode ver para começar animando jogador criar um animador e clipe de animação. Então, no inspetor, eu vou apenas fazer estes um pouco menores e vamos clicar em Criar. Então, onde isso nos dá a opção de onde queremos salvar essas animações. Então eu acho que em ativos, nas lendas da conquista e dos bens, eu vou apenas clicar com o botão direito do mouse aqui, criar uma nova pasta. Chamaremos isso de animações. Vamos clicar duas vezes aqui. Vamos criar uma pasta para o jogador. E dentro desta pasta irá criar o caminho direito, ou para a direita ou o que você quer chamar sua animação. Então vamos bater em salvar. E lá vai você. Temos uma linha do tempo aqui. Temos a peça, temos o recorde, e temos de ter a certeza de que estamos a trabalhar no caminho certo? Animação. Então, como vamos aceitar esse preço da caminhada, certo? Que são estes, e coloque-o, coloque-os aqui. Muito simples. Simplesmente clicamos no primeiro. Mantemos a tecla Shift pressionada, clicamos no último, e arrastamos até aqui para a linha do tempo. Então, como você pode ver agora, quando batemos no play, eles são extremamente rápidos. Então podemos separá-los. Então podemos colocá-los dez quadros separados um do outro. Então, agora, quando batemos em corrida, você pode ver que nós meio que andamos. Você percebe que há definitivamente algo errado, não funcionando corretamente. Por que é isso? Bem, porque se pararmos com isso por um segundo, começamos com o primeiro quadro. Caminhamos a perna direita, então ficamos em linha reta, depois caminhamos pela esquerda, e imediatamente começamos de novo aqui. Então o que queremos é tentar suavizar esse processo. Então vamos escolher o primeiro quadro. Vamos copiá-lo. E então vamos mover dez quadros para a direita porque, como sabemos aqui, são separados por dez quadros. Uma peça baseada aqui. Vamos jogar. E lá vai você. Você pode ver que temos uma espécie de animação normal trabalhando para nós. E se você quiser, você pode ajustá-lo. Digamos que talvez os separemos um pouco mais. Então, agora, quando andarmos, certo? Eu acho que isso, mas para sim, eu acho que esta é uma boa velocidade. Você precisa escolher sua própria velocidade e ver como você quer que seu jogador para olhar como enquanto o seu, sua caminhada. Ok, ótimo. Então agora temos a caminhada certa. Vamos em frente e criar a caminhada para baixo. Então vamos criar uma nova animação aqui. Então, da maneira que eu fiz isso, eu me submeto a criar primeiro um novo clipe aqui quando clicamos em novo clipe, e vamos chamar isso de caminhada para baixo. Então, descendo, guarde isso. Agora temos uma nova animação. E se você quiser, este mini desafio de criar esta animação, você realmente terá um desafio mais tarde. Então deixe-me falar com você de novo. Vamos aos sprites. Escolhemos os nossos “sprites”. Então esta é a caminhada para baixo, como você pode ver, nós os movemos para cá. Vamos separá-los. Digamos que por 10. Mais uma vez, vamos pegar o último quadro, vamos copiá-lo. Então, Controle C, vamos para o quadro onde queremos colocá-lo, que está no 50, e vamos colá-lo aqui. E eu não acho que isso esteja correto. Então, 10, em seguida, no 2030 e este é no 40. Então, quando batemos em Play, podemos ver que nosso demônio está funcionando corretamente da maneira que queremos. Ok, certo? Então vamos parar com isso agora. Finalmente, temos a caminhada para cima e a caminhada esquerda. Então este será o seu desafio. Seu desafio é terminar as animações. Então, primeiro de tudo, crie mais duas animações, 140 jogadores andando para a esquerda, e uma para o jogador subindo. Não sei por que são esses sublinhados? Você pode nomear suas animações como quiser. Depende de você. Talvez quando eu criei esse desafio, você está pensando em chamá-los assim? Não se preocupe com isso. Chame o que quiser. Pause o vídeo agora mesmo e vá fazer o desafio. Ó K. Bem-vindo de volta. Espero que tenha tentado fazer o seu melhor. Uma coisa que não mencionamos é o animador aqui no jogador. Então, como você pode ver, temos um animador no inspetor do jogador, e veremos mais tarde no controlador do animador, você já pode vê-lo aqui. Se clicar duas vezes sobre o jogador, Este é o controlador animador, Mas vamos nos preocupar com isso no próximo ou os próximos vídeos. Agora vamos terminar nossos novos clipes. Então vamos criar uma caminhada para cima. Então, subindo e vamos para onde estão os nossos bens, enquanto caminhando para cima. Então estes são os nossos sprites, segure o assentamento de Shift aqui e separe-os. Copie o primeiro. Coloque no último, aperte Play. Sim. Bom o suficiente. E então vamos criar um novo clipe e vamos criar à esquerda, pressione Salvar. E enquanto a nossa esquerda caminhando, vamos escolher estes quatro, colocá-los aqui, separá-los por 30, vamos copiar o primeiro, colocá-lo como o último. E agora, quando batemos no jogo, vamos para a esquerda. Então agora temos a caminhada para baixo. Nosso monstro desce. Deixe-me diminuir um pouco e talvez ir ao jogo. E não, que quem não trabalha, precisamos escolher o jogador. E talvez se o pusermos aqui em cima. Então, agora, quando andamos direto no jogo, então estamos caminhando direito? Nós tivemos a caminhada até a brincadeira. Estamos subindo. Estamos caminhando e caminhando pela esquerda. Está bem, Excelente. Então, com isso feito, espero que goste. Espero que tenha criado suas próprias animações. Eu acho que nossos sprites vão precisar de um pouco de ajustes quando começarmos a somar tudo, mas não se preocupe. E o próximo vídeo vamos estar usando essas animações em nosso controlador animador ou a máquina de estado, você quiser chamá-lo. E nós vamos configurá-los ou começar esses estados diferentes do nosso código para que nenhum, eu espero que você goste e eu vou vê-lo no próximo. Não se esqueça de completar seu trabalho. 14. Transição e mistura: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós vamos estar aprendendo tudo sobre transições e as árvores de mistura e y neste caso e nosso caso particular, queremos estar usando uma mistura de árvores em vez de transições. Então, quando batemos no play, você pode ver que temos todas essas coisas legais aqui acontecendo. E se movermos o cursor para a esquerda ou Jimmy Daemon começará a mover-se para a esquerda, para baixo. Ele se move para baixo, para cima e para cima, escrevendo movimentos certo? E não só isso, o vídeo é um pouco longo porque nós realmente tentamos ajustar e melhorar a forma como cortamos nossos sprites. Então não vamos perder mais tempo. Este é um vídeo muito longo e vamos começar. A primeira coisa que precisamos fazer é criar animações para ambas as posições. Então é quando o jogador está realmente em pé e não andando. Então, para fazer isso, vamos criar um novo clipe. Vai ser qualquer link para baixo. Se guardarmos isso, vamos simplesmente arrastar, onde está? Uma moldura? Então esta é uma animação de um quadro. Quando jogamos, nada muda. Basta colocar este quadro e isso será importante mais tarde. Você vai ver como. Então, novamente, vamos criar o ocioso para cima, salvar isso. Vary, vá, jogue. Ok, ótimo. Criar novo. E lá vai você. O EIDL, à esquerda. Ótima. Então agora temos a marcha lenta e caminhamos. A próxima coisa que vamos fazer é criar transições entre tudo. Então vamos em frente ao nosso animador. Se você não tiver seu animador, você pode clicar duas vezes aqui no inspetor do player. Ou você pode ir para a animação do Windows, o animador com quem falei bem aqui ao lado da cena. Então, como você pode ver agora, temos todas as animações aqui. Andando para a direita, andando para baixo, andando para cima, andando para a esquerda, indo para baixo. E o que mais temos? A marcha lenta até a ilha, direita, e a esquerda ociosa. Então isso é um pouco pequeno demais. Apenas desencaixe em algum lugar aqui e abra a tela completamente para que possamos ampliar e nos divertir. Então, o que vamos realmente fazer aqui? Deixe-me fazer isso assim, porque quando clicamos em uma dessas animações, queremos ver o inspetor. Então, o que vamos fazer? Primeiro de tudo, temos a entrada e temos a animação padrão. Então, atualmente é a caminhada, certo? Queremos mudar isso. Digamos, por exemplo, as animações normais que queremos ou a animação padrão que queremos é o ocioso, certo? Então, vamos clicar com o botão direito do mouse no ocioso direito, e definir isso como o estado padrão. Assim que entrarmos, estamos ociosos, certo? Ok, ótimo. Agora, como vamos fazer a transição para andar de verdade, certo? Bem, podemos colocar a animação aqui. Podemos ir em frente e clicar com o botão direito do mouse em Fazer e fazer transição e colocá-lo na caminhada, certo? E como podem ver, em primeiro lugar, temos uma transição para entrar direto da marcha lenta, certo? E se clicarmos na transição que está representada aqui, você pode ver que temos tempo de saída. Podemos desligar isto. Podemos ter a duração da transição. Então, quanto tempo leva para ir de uma animação para a próxima, o tempo de saída. Então, depois de terminar a animação ou depois de um certo tempo de terminar a animação, podemos sair dela, e assim por diante e assim por diante. Há muitas coisas que podemos ter aqui, e também podemos adicionar uma condição para a transição da direita em marcha lenta para a direita andando? E como podemos fazer isso? Bem, podemos fazer isso, por exemplo, vamos dizer que vamos para o parâmetro. Podemos criar um parâmetro. Pode ser um booleano inteiro float ou pode ser um gatilho. Então, podemos criar um, por exemplo, digamos que queremos começar a andar depois que nossa camada se move a uma certa velocidade. Então criamos um flutuador. Nós o chamamos, digamos, por exemplo, movimento y. Então é o movimento no eixo y. E agora, se formos para a transição, adicionamos um plus. E aqui você pode ver que automaticamente temos movimento y e podemos definir o maior. Então, por exemplo, se o movimento y é maior que, digamos dois ou três ou o que seja, nós fazemos a transição de simplesmente em marcha lenta, também, caminhando. E é assim que normalmente configuramos animações. Mas você pode ver que isso pode ser muito complicado. Por quê? Porque digamos, por exemplo, que estamos caminhando direito? E então queremos começar imediatamente a andar para a esquerda. Bem, vamos criar uma transição. Você me diz. Ok, ótimo. Mas digamos, por exemplo, andar direito? De repente começamos a andar, então fazemos uma transição para subir. Mas, em seguida, uma transição de caminhar para a esquerda. Uma transição de caminhar para andar direito? E você pode ver que isso se torna muito complicado e ainda não descobrimos como vamos adicionar o ocioso. Então é aqui que vamos usar algo um pouco diferente e é um pouco avançado. Mas isso é o que precisamos para realmente usar todas as nossas animações e estado. E é chamado de árvore de mistura. Deixe-me mostrar-lhe uma unidade, cães o que são blanches. Você pode ir em frente e passar por eles, ver como eles são criados. Isso é muito bom, eles são muito documentados e eu recomendo que você vá e leia sobre todos estes vão estar usando todos eles. E quero que se concentre aqui, e falamos sobre transições. E você pode ver que as transições são usadas para fazer a transição suave de um estado de animação para outro durante um determinado período de tempo ou determinada condição. Mas as árvores de mistura são usadas para permitir que várias animações sejam misturadas suavemente, incorporando-as parte de graus variados. Então, como você pode ver, porque estamos olhando para incorporar várias animações para serem misturadas. Usar uma mistura de árvores é uma maneira muito melhor. Então vamos em frente e criar nossas árvores misturadas. Então de volta ao Unity aqui, nós podemos realmente ver e os cães bem aqui, a forma como criamos. Então selecione, Criar estado ou clique com o botão direito do mouse no espaço vazio no controlador animador. E nós vamos selecionar criar e de novo caso almoço. Então, de volta ao Unity, deixe-me fazer isso um pouco maior. Excluímos todas as nossas transições, e agora vamos clicar com o botão direito do mouse. E nós vamos para Criar estado e de uma nova árvore de mistura. Então vamos chamar isso de mistura ambulante. Agora, o andar que, o andar sem graça. E vamos apenas ir em frente e apagar tudo isso daqui. E também apagar a marcha lenta, certo? E como você pode ver imediatamente, porque não há outra animação acima de 90 caminhada mistura, ela vai se tornar a camada padrão. Certo, ótimo, então agora se clicarmos na mistura de caminhada, você pode ver que não estamos mais na camada base. Estamos na caminhada de uma camada de mistura. E se clicarmos aqui, podemos ver que temos muitas coisas que podemos mudar. E um deles será o tipo de glândula. Nós não estamos trabalhando em 1D, vamos estar trabalhando em 2D, direcional simples. Então agora temos o movimento no y e o movimento no Y. É por isso que precisamos criar um, outro movimento que vai para com o movimento no x. E agora os parâmetros podem ser o movimento x e o movimento. Por quê? A próxima coisa que vamos fazer é fazer isso um pouco menor e vamos adicionar moções ao nosso plano. Então a primeira coisa que vamos fazer é adicionar uma moção para subir e andar, certo? Ou vamos em frente e adicionar o movimento para andar, certo? Então deixe-me fazer isso um pouco. Vamos procurar, ou podemos clicar neste pequeno círculo aqui. Se clicarmos, podemos ir procurar pela direita. Clique duas vezes sobre isso. Então agora temos esta primeira moção e vamos colocá-la em um certo círculo. Então, se primeiro cruzarmos 0, 1, manteremos isso em 0. E vamos em frente e adicionar uma segunda moção. Você vai ver que nós temos uma posição aqui e este ponto vermelho quando ele se move, ele vai para uma das posições. Deixe-me mostrar-lhe o que isso significa criando um segundo, que vai ser a caminhada para cima. Então nós clicamos aqui. Nós vamos andar para cima. E nós vamos definir a posição aqui no x para ser 0 e o um para ser 0.1. Então, como podem ver, agora, se estamos indo em direção a um desses, a animação vai mudar. E você vai ver como nós vamos estar manipulando movimento x e movimento. Por quê? A fim de começar a mudar estes? Agora você pode ver que temos este círculo bem aqui. A próxima coisa que vamos fazer, e você pode ver isso literalmente, eu estava tentando mover meu botão de leitura e lá vai você. Se precisarmos movê-los entre essas duas linhas. Ou você pode ver aqui simples direcional, em seguida, deve ter movimento com direção inferior a 180 graus de distância. Então, se nos aproximarmos deste, nos movemos para a direita, nos aproximamos deste, começamos a subir, mas não é isso que queremos. Queremos também ser capazes de descer e subir. Então isso vai fazer parte do seu desafio. Seu desafio é terminar as outras posições. Então crie mais dois movimentos, um para caminhar para a direita e 14 para a esquerda. Certifique-se de definir a posição x e a posição y corretamente. E finalmente, brinque com o círculo vermelho e veja como todas essas emoções realmente se misturam. Ok, bem-vindo de volta. Então vamos adicionar mais duas moções. Um deles vai descer e um deles vai andar à esquerda. E como você pode ver, estes são misturados nesta árvore e é baseado no movimento. De qualquer forma, vamos continuar aqui. Então, andando para baixo, onde deve ser a caminhada para baixo? A caminhada para baixo deve ser, eu acredito menos 0,10. Menos 0.1 deve estar aqui, e este tiro deve ser 0. E depois temos, onde está? É a caminhada esquerda na posição x. Deve ser menos 0,10. Tão grande. Agora, antes de irmos para a esquerda, vamos para a esquerda. Você pode ver até mesmo o pequeno azul aqui. É meio azul que nos movemos para a direita. Então estamos nos movendo para a direita, estamos nos movendo para baixo. Você pode ver que está ficando um pouco mais azul. E isso é o que queremos dizer por mistura. Então estamos misturando as animações usando o movimento x e o movimento. Por quê? Correto. Então agora podemos ir em frente e arrastar isso para algum lugar, talvez na cena do crime. Então agora, quando executamos nosso jogo, então vamos para a direita, você pode ver que ele está se movendo para a direita. Quando nos movermos para a esquerda, vamos para a esquerda. Quando descermos, estamos caminhando para baixo. E quando subimos, estamos bem subindo. Mas como podem ver, há algo que não está certo, como se nosso demônio estivesse pulando de um lugar para outro e isso é por causa dos sprites, a maneira como os cortamos. Então, se voltarmos para nossos ativos e vamos em frente e criar uma pasta aqui. Vamos chamá-lo de scripts, e vamos colocar o script do player lá dentro. E novamente, criaremos uma nova pasta e chamaremos isso de sprites. Talvez criemos subpastas e lado. Então, os sprites aqui, se clicarmos no editor de sprite, você pode ver como eles são cortados. E isso não é bem o que queremos. Queremos ter sempre as nossas fatias, ou o nosso jogador para estar sempre no meio das nossas fatias. Então, como vamos fazer isso? Ok, bem-vindo de volta. Então, depois de um pouco de conserto e aqui, finalmente decidi como vou fazer meu demônio. Então, se em seus sprites ou aqueles que você escolheu de arte de jogo aberto ou alinhados corretamente. Ótimo, estou muito feliz por vocês, por aqueles que não o têm alinhado corretamente como eu, aqueles de vocês que estão usando o dragão. E aqui, aqui estão algumas regras que você precisa seguir para alinhar todos os seus sprites. Primeiro de tudo, você precisa ter certeza de que cada corte que o demônio está no meio, ou que o personagem que você está usando está terminando no meio da fatia. Então você não pode simplesmente cortar tudo automaticamente. Basta cortar grade por tamanho pode ser 64 por 64, e então você precisará continuar à mão. Então, primeiro de tudo, você vai notar que todos esses quadrados aqui têm a mesma largura e a mesma altura. Então, como você vê, 64506450. Portanto, isso é importante para todos aqueles que estão voltados para a frente ou para trás, dependendo de como você quiser. Assim, as duas primeiras linhas devem ser as mesmas. Mas para aqueles que estão se movendo horizontalmente, deve haver um tamanho diferente porque o demônio não está alinhado corretamente. Mas há uma maneira muito bacana. Então eu escolhi fazer 45 por 45. Então a largura é 45 para todos os recortes. E 45 e altura. Descobri que este é um número muito bom. Então a próxima coisa é como vamos posicioná-los? Não queremos apenas improvisar. Então aqui você pode ver a posição dos cortes. Ou se eu mudar para o X, você pode ver isso mais. E no y ele faz isso também. Então o 75 é arbitrário. Só tentei fazê-lo no meio o máximo que pude. E então a posição só aumentará em 64, Y 64, bem, porque a largura do dragão e aqui é 64 e eu acho que o sprite é dissecado ou colocado por esse motivo. Então você pode ver que este primeiro está na posição 0, segundo está em 64, 128, 192. Mas que tal este? Então é 1983, 174, e também todos eles precisam estar no mesmo y. então isso é importante. Em seguida, temos o dragão aqui. Então você pode ver que está na posição 211 porque nós colocamos para a direita tanto quanto podemos, e então nós simplesmente removemos 64 dele. Então 147, 83 e 19. Tão bom, mas isso feito, vamos em frente e aplicar tudo isso. E você verá que agora nossas animações devem ser mais suaves sem que nós realmente alteremos os sprites de animação no player. Porque sempre que fazemos modificações nesses sprites, eles são alterados em todo o nosso jogo. Então, agora, quando entramos no jogo, vamos para o animador. Você pode ver que, por padrão, ele está andando imediatamente para a direita? Se clicarmos na árvore Blend, começamos a movê-lo para a esquerda. Ele começa a andar para a esquerda. Você pode ver que é muito pequeno. É na mesma altura e você pode sentir que ele está se movendo no mesmo lugar e não apenas pulando. E depois para baixo, e depois para cima, para a esquerda, para baixo, para a esquerda. E você pode ver que é muito natural. Talvez precise de um pouco de ajustes, mas isso é para você se tiver um pouco de TOC. Tão bom com isso feito, espero que você goste. Vamos em frente e cometer nossas mudanças. E no próximo vídeo, vamos usar código para realmente acionar essas animações. Então, vemo-nos na próxima. 15. Mistura animações em árvores na Unity: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos neste vídeo, quando apertamos o botão Play, não só andar sem jogador, mas podemos realmente mudar a direção que ele está andando usando as teclas WASD, e é baseado nos jogadores velocidade. Mas o problema é que não temos um estado ocioso na mistura. Então criamos uma outra árvore de mistura apenas para o ocioso do nosso jogador. Agora não vamos implementá-lo totalmente neste vídeo, mas vamos no próximo. Ok, então não vamos perder mais tempo e vamos começar. Oh, ok, então atualmente, quando executamos o jogo, você pode ver que nosso jogador está andando para a direita, mas mesmo que estejamos movendo para cima e para baixo, não há nenhuma mudança em sua animação. Então o que queremos fazer é anexar o movimento x e o movimento y ao animador do jogador. Então vamos começar. Primeiro, vamos em frente e abrir o script do jogador aqui. Então, enquanto o script do player clica duas vezes, e vamos abrir o Visual Studio. Então aqui, a primeira coisa que queremos fazer para começar a controlar o movimento x e y, queremos obter uma referência do animador. Então vamos criar um campo serializado, e aqui ele vai ser do tipo animador. Então Annie May fala, e vamos chamá-lo de animador jogador. Certo, então lembramos de capitalizar cada palavra, exceto a primeira. Vamos voltar para a Unidade. Isso é esperar o script para compilar. E vamos em frente e arrastar o animador do inspetor para o inspetor e colocá-lo aqui. Ótimo, então agora temos uma referência ao animador. Vamos abrir a janela do Animator. E vamos em frente e abrir a caminhada da planta. Agora o que queremos? Queremos o movimento x e o movimento. Por quê? Porque estas são as variáveis que controlam a forma como o nosso jogador anda. Então vamos em frente e usar uma função que é chamada de animator dot set float. E deixa-me mostrar-te o que é isso. Então, se entrarmos aqui, você pode ver que digitamos AnimatorSet float, e vamos abri-lo e documentos de unidade. Então aqui você pode ver que temos o float set e podemos ver como podemos declará-lo. Então você pode ver a primeira coisa que dissemos o nome da string, e esse é o nome do parâmetro que queremos alterar. Você pode vê-lo bem aqui. Então, qual é o nome, o nome, o nome do parâmetro e, em seguida, o valor que é o novo valor do parâmetro. Então, como vamos anexar isso? Bem, e aqui estamos indo para passar a velocidade dos jogadores para o animador set float, e isso vai mudar o movimento e movimento. Por quê? Deixa-me mostrar-te o que quero dizer. Então vamos pegar o animador do jogador. Vamos pôr o carro alegórico. E porque esta é uma referência de string, é claro que vamos conseguir, voltar para a Unidade, copiar os atos de movimento. Abra. Visual Studio, cola-o aqui. E qual será o valor? Bem, vai ser o jogador corpo rígido ponto velocidade ponto x. e então nós vamos duplicá-lo. E como eu disse, nós duplicamos isso usando o Controle D. E em vez do movimento x, isso vai ser o movimento Y. E em vez de velocidade de x vai ser a velocidade ponto y. ok, ótimo. Agora, se voltarmos e unirmos, assegure-se de salvar tudo isso na Unidade. Tínhamos brincado. Então, agora, se começarmos a subir, você pode ver que nosso demônio Jimmy está subindo. E se nos movermos para a esquerda, para baixo, para a direita, para cima, para baixo. E você pode ver como o movimento está mudando bem aqui no inimigo. Então, quando estamos caminhando pela esquerda, você pode ver que o movimento age como menos 1 enquanto o movimento y é 0, nós caminhamos para baixo movimento e este menos um, e assim por diante e assim por diante. Tão bom, isso é incrível. Mas o problema é que, como podem ver, quando soltamos as chaves, os demônios ainda caminham para a frente e precisamos consertá-los. E como consertamos isso? Bem, vamos usar as animações ociosas que criamos para configurá-las no final ou quando paramos de nos mover. Então, para fazer isso, vou te dar um desafio. Então configure o resto dos estados ociosos. Então você precisará criar as animações ociosas de três jogadores para qualquer um dos jogadores. Acho que já criamos tudo isso. Você precisará criar uma nova mistura. Isso não é algo que nós criamos e chamá-lo de o jogador ocioso sem graça, ou o que você acha que se adapte às suas necessidades. Você precisará criar dois parâmetros, o último x e o último y. e esta será a direção da qual enfrentamos pela última vez. E você precisará definir as quatro direções ociosas, assim como fizemos na caminhada. Então pausar o vídeo agora mesmo. Se você não se lembra de como fizemos tudo isso, você pode assistir o vídeo anteriormente ou você pode tentar e fazer o seu melhor, certificar-se de que você tenta a sua mão neste desafio. Então pare o vídeo agora e vá fazer a coceira. Ok, bem-vindo de volta. Então, na camada base, vamos clicar com o botão direito do mouse aqui, criar estado a partir da nova árvore de mesclagem. Nós vamos chamar isso de “a mistura”. E isso é porque nós temos talvez a mistura ociosa. Então, ou ligar sem graça e isso é apenas para ficar congruente com as glândulas ambulantes. Então temos uma glândula ociosa, uma glândula ambulante. Quando clicamos duas vezes na mistura ociosa, você pode ver que temos o movimento x e y, mas não queremos isso. Precisamos do último x e do último y. então vamos criar um flutuador, o último, ou não precisamos capitalizar o último X e flutuar o último. Por quê? Nós vamos fazer isso uma direção simples 2D e os parâmetros serão o último x e o último. Bem, agora precisamos de quatro moções aqui. Então, estas são as nossas quatro moções. Nós vamos adicionar o ocioso, ocioso braço direito para cima e o, enquanto o ocioso lá em baixo. Então, o que sobrou a marcha lenta? Qual é a posição de Aileen esquerda? Vai ser menos 10. Em seguida, o alargamento direito vai ser 10. Ou no AP vai ser 0, 1, e eu vou vincular 0 menos swap. Ok, ótimo. Agora, quando olharmos para cima, temos o pequeno botão. Você pode ver que nós podemos apenas verificar e ter certeza de que está funcionando. Então, vamos subir. Você pode ver que estamos ociosos. Estamos em marcha lenta. Estamos em marcha lenta esquerda e direita. E eu estou olhando para a cor bem aqui, se você pode notar que fica um pouco mais azul sempre que estamos escolhendo a direção, e é baseado no último x e y. então eu espero que você tenha feito o desafio. Espero que tenham gostado deste vídeo e tenham criado a vossa própria terra. É muito importante que você sempre tente fazer esses desafios. Então, com isso dito no próximo vídeo, estaremos implementando os estados ociosos em nosso player. E vejo-te no próximo vídeo. 16. Enfeitando a direção direita: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, nós realmente criamos uma maneira de lembrar a última direção que nosso jogador estava enfrentando. Então, agora, quando andarmos para a direita, paramos. Lembramos que menos direção estava certa. Lembramos que a última direção foi deixada para cima e para baixo. E isso torna o nosso jogo muito mais, digamos, realista e manteiga olhando. Então não vamos perder mais tempo e vamos começar. Certo, agora queremos criar uma forma de transição do andar para o idílico. A primeira coisa que queremos fazer é tornar o ocioso a camada padrão. A maneira como fazemos isso, nós já cobrimos isso, nós clicamos com o botão direito do mouse e definimos como o estado padrão anteriormente quando eu vi a camada, eu quis dizer o estado padrão. Assim, após a entrada, podemos ver aqui que começamos a ficar ociosos. A próxima coisa que queremos fazer é criar uma transição entre a marcha lenta e a caminhada. Para fazer isso, vamos clicar com o botão direito do mouse, fazer uma transição e colocá-la no preto ambulante. Agora, se clicarmos na transição aqui, você pode ver que temos um tempo de saída e temos a duração da transição e assim por diante. Então o que queremos fazer, não queremos nenhum tempo extra, como dissemos, tempo de saída, como um tempo em que a caminhada volta para ociosidade, pára completamente. Nós não queremos que a próxima, a duração da transição, você pode defini-la como um pouco de tempo, mas eu acho que 0 seria melhor quando testarmos isso, vamos ver se isso é melhor. A próxima coisa que queremos fazer é ver qual é a condição para a transição da marcha lenta para a caminhada. Então, se atingirmos o mais e aqui podemos ver que podemos definir o movimento x ou o movimento y, ou o último x e y. Agora não queremos tocar em nenhum dos últimos x e y. Nós simplesmente queremos fazer a transição com base no movimento e movimento. Por quê? Então, se o movimento x é maior que 0 mais um, então vamos fazer a transição de marcha lenta e para andar. Mais uma vez, queremos verificar se há um movimento. Por quê? Então, se fizermos uma transição de marcha lenta também, caminhando, novamente, você pode ver que temos múltiplas transições representadas por várias setas na mesma linha. Também queremos desmarcar a hora de saída. Queremos definir a duração da transição para 0. E a segunda condição será se o movimento y for maior que 0,1, ok, ótimo. Você pode alterar as transições aparecem, você pode vê-las. Então é a abertura dos olhos para a caminhada. E estas são as nossas condições, o movimento x, o movimento. Por quê? Agora? A, outra coisa que queremos verificar é se o movimento no x é menor que menos 0,1. Portanto, isso é importante ter em mente porque o movimento é menor do que menos 0,1. Então vamos fazer a transição para a caminhada, mas para a outra direção. Então vamos desmarcar o tempo de saída e a duração. E, finalmente, isso deve ser bastante óbvio se tivermos a condição do movimento y ser menor que menos 0,1, então nós também transitou para a caminhada sem graça, ok, então movimento sem fio e ponto zero um, movimento x menor que, maior e maior. Agora, antes de seguirmos em frente, também precisamos criar uma transição da caminhada para a marcha lenta. E isso exigirá apenas uma única transição com várias condições. Então vamos definir a duração da transição de volta para 0 e o tempo de saída para 0. Então vamos adicionar uma condição aqui que sempre que o movimento no x é maior que 0 ou menos 0.1, então queremos fazer a transição de volta. E porque não temos, digamos, várias maneiras de voltar só precisam de uma transição. E adicionaremos todas as condições. Assim, o movimento x é menor que 0,1. Se o movimento for maior que menos 0,1, e se o movimento y for menor que 0,1. Ok, ótimo. Então vamos guardar isso. E vamos em frente e testar isso. Então, quando executarmos nosso código, você verá que nosso jogador está ocioso no momento e você pode vê-lo aqui na mola ociosa. E se começarmos a subir, você verá que estamos no caminho sem graça. Quando paramos, você pode ver que estamos ociosos, mas estamos sendo padrão para o sprite onde o demônio está olhando para a esquerda. Então, novamente, nós caminhamos para baixo, se você andar sem graça, caminhando para a esquerda. E se pararmos de andar, você pode ver que nos viramos para o outro lado. E isso não é algo que queremos. Queremos realmente fazer nosso jogador ou Jamie Dimon, lembrar a direção que ele estava enfrentando. E com base nisso, bem, quando pararmos, vamos para a mistura de olhos e olhos dessa forma. Mas para fazer isso, precisaremos de algo chamado condição “se”. Então deixe-me explicar o que é uma condição “se”. Estrutura condicional de declarações if-. Então, a forma como escrevemos uma condição se, é simplesmente o que significa. Se alguma condição precisa ser verdade, precisamos colocá-los dentro desses dois suportes aqui. Então, se alguma condição que precisa ser verdadeira é verdadeira, então o código dentro desses dois colchetes é executado. Então, se temos uma condição aqui que é falsa, o Dourado aqui não é executado. Mas o que acontece depois? Só temos isto se bem aqui, seguirmos em frente com o nosso código. Mas também podemos adicionar um outro “if”. Então, vamos salvar esta condição aqui é falsa. Então passamos para o outro. Se temos alguma outra condição que é verdade ou que precisa ser verdade. E se essa condição for verdadeira, então executamos o código dentro desses dois colchetes. Mas se a condição aqui for verdadeira, executamos este código e seguimos em frente. Mas e se essa condição for falsa e essa condição for falsa? E se tivermos vários outros else-if com todas as suas condições todas falsas. Bem, nós também podemos adicionar um outro. No caso em que todas as condições na série aqui são falsas, seguida, o, este código que está dentro destes colchetes sobre o outro é executado. Então vamos tentar usar este novo método adquirido e implementado em nosso código. Então vamos abrir o Visual Studio e aqui, e vamos criar uma condição aqui. Então vamos dizer que se o movimento horizontal é igual a um, então vamos chamar o jogador animador. Vamos pôr o carro alegórico. Nós vamos acessar o último X. E eu acho, bem, quer saber, não vamos nem tentar isso. Vamos voltar aqui. Vamos copiar o último X. E mesmo que eu tenha 100% de certeza quando alguma vez estamos usando referência de string, sempre tente ir e copiá-lo. É um bom hábito de se ter. E vamos definir o movimento horizontal. Então, o que está acontecendo aqui? Estamos usando a função get access. E se nos lembrarmos quando olhamos em pensamentos de unidade, sempre que estamos usando linha de acesso GET, vamos de um menos um ou 0. Então o que estamos vendo aqui, se o movimento horizontal é um, então estamos caminhando para a direita, então vamos definir o último x como o movimento horizontal, que é igual a um. O que acontece nesse caso é que se voltarmos aqui e dois estiverem ociosos glândula pode ver que se o x relaxado é 1, isso significa que estamos enfrentando, certo? Isso significa que vamos lembrar o último x e defini-lo como um. Assim, nosso jogador se lembrará da direção que está enfrentando. Ok, ótimo. Vamos testar isto e o nosso ganho. E quando executamos o código, então estamos virados para a esquerda quando andamos para a direita, se pararmos de andar. Incorreto. Então, como você pode ver, nós lembramos a última direção que nosso jogador estava enfrentando. Se avançarmos e pararmos de nos mover, é sempre para a direita. Ok, ótimo. Agora a próxima coisa óbvia a fazer é definir todas as direções e esse será o seu desafio. Certo, todas as outras condições. Então crie uma instrução condicional para as outras três direções. Para o movimento vertical deve definir o último por que. E eu vou te dar algumas dicas. Temos o movimento horizontal deve ser menos1 e o movimento vertical também deve estar verificando para o menos e mais 11 coisa que eu não expliquei, desculpe. Sempre que estamos comparando duas variáveis. Então estamos comparando movimento horizontal com um. Usamos dois sinais de igual, não apenas um. Quando usamos um único sinal de igual, isso significa que estamos atribuindo o valor aqui para a variável. Mas quando estamos usando dois sinais de igual, isso significa que estamos comparando-os com o dito, pausar o vídeo agora e ir fazer o desafio. Ok, bem-vindo de volta. Então, como você se saiu com isso? Agora o que podemos fazer aqui, podemos criar um outro. Se o movimento horizontal for igual a menos1, então vamos duplicar isso e movê-lo para baixo. A maneira como eu movo isso é segurando Alt e pressionando as teclas de seta. Então, agora, se o movimento horizontal é menos1, vamos definir o último x como o movimento horizontal. Bem, obviamente menos 1. Agora, vamos salvar isso e ver se ele funciona em nosso jogo porque eu quero mostrar a vocês uma maneira mais eficiente de fazer isso. Então salvamos. Nós caminhamos para a direita, nós caminhamos para a esquerda. Estamos presos à esquerda. Quando subimos, voltamos para a esquerda. Ok, ótimo. Então isso parece estar funcionando, mas há um pequeno problema. Temos código duplicado que não é muito bom e aqui nós realmente não precisamos dele. Então o que vamos fazer é apagar a declaração. E em vez disso, aqui vamos criar uma segunda condição que verifica se o movimento horizontal é igual a um. Ou usando essas duas linhas retas ou o movimento horizontal é igual a menos1, então vamos definir o último x como o movimento horizontal. E se salvarmos isso, voltaremos para a Unidade. Nós corremos. Quando andamos para a direita, estamos presos à direita, caminhamos para a esquerda, estamos presos à esquerda. Então, como você pode ver, esta éuma demonstração muito boa de como, uma demonstração muito boa de como às vezes, códigos diferentes podem dar o mesmo resultado. E, finalmente, precisamos definir v. movimento vertical é igual a um. E o movimento vertical é igual a menos um. Mas agora, em vez do último x, vamos definir o último y. e em vez da horizontal, estamos definindo a vertical. Então, de volta ao nosso jogo, executamos o código. E agora, quando nós subimos, você pode ver que o último y aqui é um. Quando pararmos, lá vai você. Então nosso demônio Jimmy está parando quando estamos, ou o demônio Jimmy está se lembrando da última direção em que estávamos indo, novamente, da esquerda para a direita. E como você pode ver, temos excelente movimento e nosso jogo, o que é muito, muito bom. Ok, ótimo. O que faremos no próximo vídeo é quando andarmos em direção à água, você verá que por alguma razão o demônio é capaz de andar sobre a água, que é algo que não queremos. Queremos que ele seja capaz de parar neste exato lugar ou pelo menos parar sempre que tivéssemos os repolhos bem aqui. E também teremos melhor controle da velocidade de caminhada do nosso reitor. Vemo-nos no próximo vídeo. 17. Colidir com objetos: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Lembra quando fomos capazes de atravessar qualquer objeto? Bem, como você pode ver, não podemos mais fazer isso em nosso ganho. Assim, as águas são inalcançáveis e as couves são um objeto sólido. Então não vamos perder mais tempo. Há um pouco de ajustes que podemos fazer aqui e vamos começar. Ok, então a primeira coisa que queremos cobrir, ou queremos fazer é realmente tornar o nosso jogador um pouco mais rápido. Mas não só isso, queremos ter a capacidade de controlá-lo. Então o que queremos fazer é criar uma variável aqui que poderemos mudar sempre que quisermos. E então multiplique essa variável com a velocidade ou movimento dos jogadores. Então vamos abrir nosso código. Aqui dentro. Nós vamos criar uma variável que vai ser, claro, um campo serializado. A menos que você queira ser capaz de X, então você vai torná-lo público. E nós vamos fazer disso, é claro, um carro alegórico. Ou você pode torná-lo um inteiro. Depende de você. Podemos torná-lo um inteiro. Vamos torná-lo um inteiro porque não fizemos isso. E chamamos de velocidade de movimento. E vamos definir isto para um por enquanto. Então aqui em baixo, depois de definir a velocidade do corpo rígido dos jogadores para o novo vetor 2, vamos simplesmente multiplicar isso pela velocidade de movimento. Vamos guardar isso. Vamos voltar para a Unidade. E lá vai você. A velocidade de movimento aparece aqui. Então, agora, se apertarmos o jogo enquanto estamos nos movendo em S1, se aumentarmos para 30. Agora você pode ver que estamos indo muito rápido. Então vamos torná-lo um pouco mais lento. E se você se lembra, mudamos a velocidade de movimento do jogador para 30 durante o jogo, mas agora está de volta para um. Isso ocorre porque tudo o que mudamos durante o tempo de jogo é redefinido para o valor padrão. Então vamos precisar mudá-lo aqui para, digamos, três. Nós executamos o código e lá vamos nós. Ele é um pouco mais rápido. Talvez fazer, digamos cinco. Nós executamos o código, executamos o jogo, e lá vai você. Acho que cinco como uma velocidade boa o suficiente, precisamos ajustar a velocidade da animação. Talvez se conseguirmos, então vamos ver como isso parece. Então, como eu vou muito rápido, vamos fazer isso talvez eu acho que sete é um número muito bom. Ok, então é sete. Ok, ótimo. Vamos ver se a próxima coisa que queremos mudar é, como vocês podem ver, podemos nos mover atualmente através de nossas couves, o que não é bom, e através das águas, o que também é uma péssima ideia. Então o que queremos fazer é adicionar colisores a esses objetos ao nosso redor. Então, se olharmos para o colisor, para o jogador, lá está. E acho que vamos torná-lo um pouco maior só para tocar os pés. Certo, então guarde isso. Agora vamos em frente e adicionar um colisor às águas. Então, vamos clicar com o botão direito do mouse aqui, criar um objeto de jogo vazio. Chamaremos isso de as águas reiniciarem sua posição. E da forma como o nosso reiniciá-lo, basta clicar nos três botões ou os três pontos aqui e apertar reset, tudo vai virar para 0. Vamos adicionar um colisor, e vai ser um colisor de caixa 2D. Vamos movê-lo para cá. E vamos mudar o tamanho do colisor para que ele caia sobre as águas. Lá vamos nós. Vamos guardar isso. Vamos rodar o código. Esse é um dos jogos. Então agora, quando caminhamos para as águas, sim, nada acontece. E por que isso? É porque não adicionamos um corpo rígido. Então nós vamos adicionar um corpo rígido 2D, aperte Play, e agora nós devemos, ok, então nós esquecemos de torná-lo estático. Então vamos fazer este corpo rígido estático. E agora, quando executamos o jogo, esperamos ser capazes de saber que ainda não somos capazes de interagir. Então, de volta ao nosso jogador, finalmente descobri qual era o problema. Então, no nosso jogador, fizemos o tipo de corpo cinemático. E isso significa que não podemos interagir com ou que outros objetos com colisores não podem afetar o jogador. Então o que fizemos foi mudar a dinâmica do tipo 2 de política e simplesmente definir a escala de gravidade para 0. Devíamos ter feito isso desde o início, mas acho que foi uma grande oportunidade para aprendermos como tudo funciona. Então, agora, quando batemos no jogo, podemos ver que não podemos mais andar em direção à água e você notará que algo não está funcionando corretamente. Isso é porque, bem, deixe-me apenas tentar mostrar isso usando os colisores, então vamos parar o jogo, vamos abrir o colisor de águas também, para que possamos ver tudo. E você vai notar que porque somos um círculo, você pode ver como o círculo parece aqui. É por isso que não podemos atravessar esta barreira. Então, quando andarmos, o círculo vai se mover ou deslizar. Ali. Você pode vê-lo. O círculo do colisor desliza sobre a superfície aqui e começamos a girar. Então, se tentarmos, agora não podemos nem escapar. Então podemos fazer isso um pouco mais rápido, arrastá-lo para baixo. E este é um grande problema porque nós não queremos que Jimmy esteja circulando em torno do jogo seria realmente estranho olhar. Então o que podemos fazer é adicionar restrições ao nosso corpo rígido. Se você olhar para o jogador, estas são as restrições. Podemos congelar a rotação em torno do z. E por que isso? Bem, porque se você olhar para a fracção transformada, que lhe dá a posição e rotação quando começamos a girar, você pode ver que estamos girando em torno do eixo z. E é mais óbvio se desclicarmos o 2D, e você verá aqui que este, o eixo Z, que é azul, você pode ver bem aqui, é o eixo z e estamos girando em torno dele. Então, de volta ao modo 2D irá congelar a rotação no eixo z. E agora podemos ver com segurança que não estamos girando. Ok, ótimo. Então, com isso feito, a próxima coisa é parar o nosso jogador de bater nos repolhos. E isso vai fazer parte do seu desafio. Torne os padrões sólidos. Então, em um colisor para as arquibancadas ao lado do nosso jogador, certifique-se de que o jogador não pode andar através deles. Então isto deve ser fácil. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, ok, bem-vindo de volta. Como você se saiu com isso? Então isso não deve ser muito difícil. Vamos simplesmente duplicar as águas. Vamos movê-lo para aqui e vamos mudar o nome para depor. E vamos mudar os colisores. Opa, na posição. Então vamos nos mudar. E aqui você pode ver claramente as linhas verdes. Então agora você pode, mesmo que você queira, fazer isso um pouco menor nos lados. E isso é por causa da forma como o nosso Daemon montou. Então, agora, se batermos no jogo, não devemos ser capazes de interagir com o do stand. Sim, lá vai você. Se você olhar para o jogador, veja que o círculo começa a interagir. É por isso que tornamos a postura um pouco menor nos lados. Se andarmos de cima, sim, lá vai você. Não podemos passar por eles. E também podemos adicionar os colisores à cabana aqui e aos sacos de batata e assim por diante. Mas em vídeos posteriores, quando começarmos a criar nossos próprios conjuntos de blocos e mapas, você verá uma maneira muito mais suave e melhor de lidar com tudo isso. Bem, dito isso, espero que você goste e te vejo no próximo vídeo. Antes de irmos, pelo menos não devemos esquecer de salvar nossos repositórios. Então árvore de código-fonte de back-end aqui. Vamos encenar tudo isso. E vamos nomear nossos colisores adicionados aos nossos objetos no mundo. Certo, ótimo, vamos cometer tudo isso. E podemos olhar para o ramo mestre e você já pode ver nosso projeto tomando forma. E é muito bom quando você tem tudo isso na sua frente com isso dito, eu vou te ver no próximo. 18. Seção 3: trocando da cena para a cena: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, criamos uma segunda cena, e também criamos um objeto chamado saída de área, que nos permite sair dessa área. Mas, por enquanto, a única coisa que ele faz é simplesmente certificar-se de que nós somos o jogador. Então, se passarmos, você pode ver o colisor. E aqui, assim que entramos nele, você pode ver que no console imprimimos este é um jogador que entrou. Então não vamos perder mais tempo e vamos começar. Oh, ok. Então a primeira coisa que precisamos fazer é mudar o nome da cena para cidade, a que estamos usando atualmente. Também mudei o colisor dos jogadores aqui. Então você pode ver que eu apenas fiz o círculo em torno dos pés e da cabeça. E notei que faz as interações com as águas e fica manteiga. Ok com isso fora do caminho, vamos para o arquivo e vamos criar uma nova cena. Certifique-se de que é 2D. Hit Create, e estamos em uma nova cena. Para salvar a cena, basta pressionar Control dentro de cenas e vamos chamá-lo de montanhas. Clique em Salvar. A próxima coisa que queremos fazer é adicionar um fundo à cena. Então vamos para as nossas imagens de fundo que eu forneci. Você. Clique em sprites, e vamos arrastar a imagem aqui e para os sprites. E agora vamos arrastá-lo para a nossa cena. E como você pode ver, é um pouco pequeno. Então vamos fazer os pixels por unidade. Acho que 64 bateu em Aplicar. Lá vamos nós. Agora temos nossa bela cena com algumas montanhas e este homem de pedra bem aqui. Vamos colocar em segurança. Ok, ótimo. A próxima coisa que queremos fazer é voltar à nossa cena anterior e à cidade. E aqui vamos criar um objeto. Então, vamos clicar com o botão direito do mouse criar objeto jogo vazio E isso será chamado de saída da área. Vamos redefinir a sua posição. Nós vamos adicionar um componente que vai ser um colisor 2D. E este colisor 2D é acionado. E o que queremos fazer é colocá-la bem aqui na borda. E vamos torná-lo tão grande quanto a estrada. Vamos torná-lo um pouco maior. Lá vamos nós. Agora temos a saída da área. Agora a próxima coisa que queremos fazer é criar código que nos permita realmente acionar essa saída de área. Então, sempre que entramos nesta área aqui, queremos fazer algo acontecer. E a maneira como fazemos isso é usar algo chamado On Trigger Enter. Então, se entrarmos nas documentações e na unidade, vocês podem ver que podemos usar algo chamado On Trigger Enter. E a descrição aqui diz, quando um objeto de jogo colide com outro objeto de jogo, Unity chama o método On Trigger Enter. E você pode ver aqui como ele é usado privado dentro da classe no Trigger Enter, isso nos dá um argumento. Aprenderemos mais sobre argumentos mais tarde. Mas por enquanto, tudo que você precisa saber é que isso é acionado sempre que um objeto de jogo interage com o colisor e qualquer que seja o objeto do jogo, seu colisor um perfume através deste outro argumento aqui, que está dentro desses dois colchetes ou amadurecer como estes são chamados. De qualquer forma, vamos ao Unity, e aqui vamos criar um roteiro. Então, de volta aos nossos scripts, vamos clicar com o botão direito aqui e vamos criar um script C-sharp. Vamos chamar isto de saída da área. Pressione Enter. E lá vai você. Agora temos o guião. Vamos esperar um pouco até que ele se compile. E agora podemos adicioná-lo ao objeto de jogo de saída de área vai clicar duas vezes e abrir o script. Então, o que deveríamos estar fazendo aqui? Bem, a primeira coisa que queremos fazer é ir em frente e criar um no Trigger Enter to D. E vocês podem ver aqui que entramos. E você pode ver que a descrição empreendedor entrar escaldante quando o colisor 2D outros, ou aqui mesmo a colisão entra no gatilho. Então colisão outro, você pode nomeá-lo o que quiser. Pode até chamá-lo de Michael, se quiser. Mas vamos mantê-lo como colisão como o padrão que é fornecido para nós. Ok, ótimo. Agora a próxima coisa que queremos fazer é ter certeza de que é camada profunda que entra na área. Não queremos acionar isso sempre que, por exemplo, um objeto ou um item ou algum MPC estranho. Entra, não queremos isso porque vamos usar isso para fazer a transição para a próxima área, para a área montanhosa que acabamos de criar. Então, como vamos ser capazes de identificar o jogador? Bem, podemos usar algo chamado “tags”. Então aqui você pode ver que temos uma etiqueta na saída da área. Temos uma aderência nas arquibancadas, e temos uma etiqueta em cada objeto de jogo. E você pode ver que a etiqueta na câmera principal é a câmera principal, e isso nos permite identificar essa câmera como uma câmera principal. Também podemos fazer isso com o jogador. Então, no jogador, você pode ver as etiquetas aqui. Você pode clicar e você pode ver que já temos um player tag padrão no Unity, nós também podemos criar nossas próprias tags. Então, se você se lembra anteriormente quando criamos nossas camadas de classificação, tínhamos as camadas aqui e tínhamos as tags também. Mas como já temos uma etiqueta chamada, o jogador vai usá-lo aqui mesmo. Vamos guardar isso. Agora aqui, quando entramos, primeira coisa que queremos fazer é verificar se o GameObject que entrou na saída da área é realmente chamado de jogador. Isso é um desafio para você. Então você precisará verificar se há um jogador. Primeiro, crie uma condição if dentro do On Trigger Enter. Em seguida, nesta condição, verifique a tag da colisão, que é o argumento que é enviado através, e, em seguida, certifique-se de que a tag é a das duas camadas. Então, como você pode fazer isso? Vou dar-lhe uma pequena dica, mas se você está se sentindo corajoso o suficiente, pause o vídeo agora e vá pesquisar como você pode verificar se há uma etiqueta. Se não, vou te dar a dica agora mesmo. Última chance. E você precisará usar um método chamado compare tack. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, hey, bem-vindo de volta. Espero que não queira usar a dica. Espero que você tenha saído do seu caminho e realmente pesquisar como você pode comparar impostos ou verificar impostos. Se não, espero que você realmente use a unidade de cães, a fim de procurar por etiqueta comparada para saber como ele é usado. Então aqui você pode ver booleano público. Isso significa que isso retorna um booleano. Isso significa se é verdade ou falso. E dentro daqui você pode passar a string ou a string de tags com a qual você deseja comparar. E convenientemente o suficiente, eles realmente usam o outro objeto de jogo ponto que está no Trigger Enter. Chama-se outros aqui, não colisão. E ele usa tag GameObject.com e também verifica a tag jogador. Quão conveniente é isso? Então eu realmente não armei isso. Não sei como isso poderia ter coincidido assim. De qualquer forma, aqui, vamos verificar o jogador. Então vamos criar uma condição se abrirá os colchetes e chamaremos o ponto de colisão. Vamos verificar a etiqueta de comparação, abrir os colchetes. E aqui queremos chamar o jogador. Mas é claro que isso é uma referência de string, então vamos e realmente temos que copiar este. Controle C, entre aqui, controle V, e vamos removê-lo. Não podemos copiar a etiqueta imediatamente, que é o jogador. Então vamos nos contentar com o que temos, mas precisamos ter certeza. Então jogador sim, é o mesmo. E aqui, apenas por causa do teste, vamos em frente e depurar log de pontos. E nós vamos imprimir, isto. É um jogador que entrou. Feche isso e volte para a Unidade. Vamos esperar que isto se compile. Ele executará o código. E como nosso jogador vai sair da visão da câmera, vamos apenas olhar para a cena. E para ver o que está acontecendo, devemos ver uma mensagem aqui abaixo. Então entramos aqui, sim, este é um jogador. Então, se você clicar duas vezes, podemos ver no console aqui que este é um jogador. E se não encontrarmos o console, você sempre pode ir para o Window General e acessar o console. Ótima. Então agora podemos ver a constante que tentou mudar isso do jogador. E só por uma questão de testar isso, adicionar um espaço, Salvar e agora deixe-me cão o console pode estar em algum lugar aqui. Quando executamos o código novamente, o console está vazio. Se entrarmos na área de saída, lá vamos nós. Então, clique duas vezes, você pode ver o erro. E o que diz é, deixe-me falar aqui. O jogador não está definido. Ok, então como você pode ver, até mesmo um pequeno espaço afeta a forma como uma referência de string é interpretada. Então eu espero que você goste e não vamos esquecer de cometer nossas mudanças. Vejo você no próximo vídeo onde aprenderemos mais sobre a gerência sênior. 19. Gerente de cena: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos realmente usar a segunda cena que criamos, que são as montanhas. Então agora você pode ver que quando entramos nos critérios de saída da área e as cenas, sim, lá vamos nós. Vamos a uma segunda cena, e quando voltarmos, voltamos para a nossa cidade velha. Mas como você pode ver, há alguns pequenos problemas que precisamos resolver, que estão tendo demônios 2D Jimmy, mas faremos isso mais tarde. Até lá, não vamos perder mais tempo e vamos começar. Certo, então a primeira coisa que precisamos entender quando quisermos passar de uma cena para outra é um gerente de sementes. Então, em cães da Unity, você pode ver que temos algo chamado o gerente de cena. E isso nos permite, bem, como você pode ver, gerenciar um suas cenas. E podemos usar muitos métodos estáticos aqui, que será claro, usando ao longo de nosso curso e sempre que quisermos desenvolver nossos jogos. Ok, ótimo. Então a primeira coisa que precisamos é na verdade uma referência ao nome da cena entre uma para ir. Então, de volta em nossa saída de área, vamos criar uma variável aqui, e vai ser um campo serializado. Vamos torná-lo uma string, e ele vai ser chamado de cena para carregar, salvar isso. Agora, em seguida, precisamos usar o gerenciador de cena, mas não podemos usá-lo sem, antes de tudo, adicioná-lo à nossa biblioteca. Então lembre-se quando eu disse que estamos usando o motor Unity e aqui, se nós removê-lo, você pode ver que imediatamente não podemos mais usar comportamento mono ou CRO, campo serializado, nem mesmo o colisor 2D. O que fiz aqui foi fazer um comentário para não ser executado. De qualquer forma, vamos continuar. Agora precisamos adicionar uma outra biblioteca. Então vamos chamar o uso. Vamos chamar o motor da Unity de novo. E agora queremos chamar a gerência da cena. Então isso nos permite acessar o gerente de cena. Então, o que vamos fazer? E aqui vamos estar carregando uma cena, usando esta cena para carregar a corda. Então, se voltarmos aqui, vamos em frente e abaixar a cena para que possamos ver leis a cena pelo seu índice de nome e as configurações de compilação. Então você pode ver aqui, onde está? Então, podemos usar um inteiro para vê-lo no índice de compilação. Vamos falar sobre o índice construído e só um pouco. Ou podemos usar uma string com o nome da cena. Então agora você sabe por que criamos uma string e por que precisamos dela como referência. Ok, ótimo. Vamos em frente e usar isso. Então, onde vamos ligar para o gerente de cena e dizer-lhe que queremos carregar para a próxima cena será fazê-lo aqui no gatilho de braço, entrar em 2D. Depois de verificar que seu fornecedor, em vez de imprimir algo, vamos chamar o gerente de cena. Ei, gerente de cena. Que tal carregarmos uma cena? Ele vai nos perguntar qual cena você quer carregar. Bem, eu quero carregar isso parece carregar. Então guardaremos isso em Unity. Vamos esperar que o código seja compilado. E antes de seguirmos em frente, só quero dizer uma coisa. Lembra quando colocamos um corpo rígido nas águas? Bem, na verdade não precisamos nem precisamos dele nas arquibancadas. E geralmente podemos manter isso, mas corpos rígidos levam muito tempo para calcular. Então, só um aviso. E eu poderia ter tomado o lugar onde adicionei corpos rígidos e disse que cometi um erro. Mas não, às vezes não sei o que está acontecendo. Há algo que não está funcionando. Então eu pensei que manter isso e torna tudo transparente e muitos de vocês são, iniciantes vão pensar que talvez você não seja bom o suficiente. Bem, lá vai você. Seu instrutor comete erros. De qualquer forma. Vamos continuar na saída da área agora temos uma cena para carregar, que parecia que queremos carregar. Novamente, esta é uma referência de string, então queremos carregar a cena das montanhas. Vamos copiar o nome de volta na saída da área. Vamos colá-lo aqui. Vamos salvar isso. E agora, quando executarmos o código, vamos a pé. Quando chegarmos a isto, creio que devemos ir imediatamente à cena da língua. Então, sim, lá vai você. Temos algum tipo de erro. O que é esse erro? Vamos abrir o console. Ele nos diz que as montanhas do mar não podem ser carregadas porque não é adicionado às configurações de construção ou k. Então, há uma configuração de construção e isso é o que os documentos se referiram quando ele nos disse a compilação. Índice. Então, se você for para o arquivo, apareça em unidade e podemos encontrar as configurações de compilação. E é aqui que construímos nosso jogo. Então você pode ver que podemos construí-lo como uma Plataforma Universal do Windows, como um jogo PS4, como um android e assim por diante e assim por diante. Por enquanto, não vamos nos preocupar com isso. Primeiro, precisamos ver o que está acontecendo aqui. Você pode ver que as cenas e construir nossa única cidade. Então o que precisamos fazer é arrastar as montanhas para cá. Então agora as montanhas são parte das cenas de construção, ou nas cenas em construído. Você pode ver os números aqui, 01. E isso é o que nós queremos dizer com a cena e índice construído. Certo, com isso feito, vamos salvar isso. Podemos fechar esta janela. Vamos bater em Run. Caminhamos em direção à saída da área, e lá vai você. Podem ver que as montanhas foram carregadas, embora não tenhamos jogadores. Então o que queremos fazer é manter o nosso jogador no jogo. Mas o que acontece quando passamos de uma cena para outra é que todos os objetos são destruídos. E nós não queremos isso. Queremos manter o nosso jogador vivo quando ele for de cena em cena. Então o que podemos fazer sobre isso é se entrarmos em nosso código, entrarmos em nosso jogador e começarmos, podemos ir em frente e dizer a ele que não queremos destruir em carga. Então deixe-me reverter isso e mostrar o que o inteligente nos diz. Não destrua o objeto de destino ao carregar. E você já viu o quão conveniente é que você poderia ter uma pesquisa na internet. Como posso não destruir um objeto? Quando eu ir para a próxima cena, você teria esse método e qual GameObject não quer destruir? Bem, é o jogador. Podemos simplesmente referenciá-lo usando o objeto do jogo. Lá vamos nós. Portanto, este objeto de jogo faz referência ao objeto de jogo ao qual este script de jogador está anexado. Espero que tenha feito sentido. Então vamos guardar isso. Vamos voltar para a Unidade. E vamos tocar no Play. Então andamos, andamos, andamos, andamos, e lá vamos nós. Então estamos na nova cena com a nossa pequena estátua aqui. Agora, obviamente estamos caminhando por tudo porque não adicionamos nenhum colisor, mas pelo menos tudo está funcionando bem. Agora, o que queremos fazer a seguir? Queremos que esta saída esteja presente na nossa segunda cena. Então é hora do seu desafio. E seu desafio é ajudar o jogador a voltar. Então crie uma outra saída de área. Primeiro de tudo, você precisa criar o objeto do jogo em um colisor, torná-lo um gatilho. Você precisará adicionar o script a ele, que é a saída da área. E você precisará mudar o nome da cena para a qual deseja ir. Então pausar o vídeo agora mesmo e ir fazer um com o outro. Ok, bem-vindo de volta. Então vamos em frente e criar este objeto de jogo. Mas antes de fazermos isso, quero apresentar-vos algo que tornará a vida mais fácil e que é prefabs. O que é uma pré-fabricada? Então, um prefab é um objetos previamente fabricados que podemos usar em qualquer lugar que quisermos. Vamos mergulhar um pouco mais fundo. Então, o que é uma pré-fabricada? É um modelo para um determinado objeto de jogo. sistema Prefab permite que você armazene um objeto de jogo com todas as suas propriedades. Então, para que o usamos? Nós o usamos para reutilizar um objeto de jogo configurado de uma maneira particular. Por exemplo, queremos que o nosso jogador tenha, digamos, cinco mãos. Então nós o usamos quando ele é configurado de uma maneira diferente. Podemos editar muitos objetos ao mesmo tempo. Então, por exemplo, digamos que temos vários itens e várias cenas. Podemos mudar o prefab um pouco e todos os itens e todas as coisas serão mudadas. E podemos usar o mesmo objeto em cenas diferentes, muito mais fácil. Demonstraremos isso daqui a pouco. Então, de volta ao Unity, a maneira como criamos um prefab é antes de tudo, vamos criar uma pasta. Vamos chamar isso de “prefabs”. E, na verdade, é muito complicado criar uma pré-fabricada. Então a maneira que fazemos isso é que precisamos verificar o objeto de saída de área ou qualquer objeto que queremos fazer como prefab e precisamos arrastá-lo para a pasta. Sim, é isso. Isso é tudo que você precisa fazer para criar uma pré-fabricada. E você sabe que algo é uma pré-fabricada quando você vê isso, é apenas um pouco mais azul. Então, agora, se entrarmos em onde estão as cenas? As montanhas. Sim, você pode salvar. Então, agora, se entrarmos em nossa pasta de prefabs, podemos simplesmente verificar a saída e arrastá-la aqui. Quão legal é isso? Então agora temos uma saída de área e nossa cena montanhosa. E peço desculpas por fazer você passar por todo o processo. Eu só queria enfatizar como os prefabs são importantes e quão mais fáceis eles tornam nossas vidas. Então agora podemos mudar o nome aqui. Vamos para as cenas. A cidade. Nós copiamos porque é uma referência de string. Se colarmos aqui, salvamo-lo. Vamos voltar para a cidade tinha brincado, e agora vamos caminhar. Vamos para a saída da área. Estamos nas montanhas. Agora. Andamos de novo até chegarmos à saída da outra área, e lá vai você. Mas você pode ver que agora temos dois jogadores. Se voltarmos de novo, agora temos três jogadores. Novamente. Por enquanto, temos quatro demônios Jimmy. E acho que não há lugar suficiente no mundo para Jimmy demônios. Vamos lidar com tudo isso no próximo vídeo. 20. Padrão de Singleton: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós realmente corrigimos D para duplicar o problema. Então agora deixe-me fazer meu jogador um pouco mais rápido. Então vamos aumentar para 50. Vamos, estamos na segunda cena. Quando voltarmos, lá vamos nós. Apenas um único Jimmy Daemon. Então não vamos perder mais tempo e vamos começar. Imagine se ele fosse aquele caso amortecido rápido. Portanto, queremos evitar ter jogadores duplicados. Para fazer isso, precisamos manter o controle do jogador e ter certeza de que há apenas um. E para fazer isso, vamos usar algo chamado instância. Então deixe-me mostrar-lhe o que é uma instância, o que é uma instância de uma classe? É uma variável estática, o que significa constante em todos os nossos projetos. Ele pode ser facilmente recuperado de qualquer outra classe, ou pode ser mais facilmente recuperado e vamos usá-lo para evitar encontrar o objeto toda vez que queremos jogar. E nós vamos usar para manter o controle do jogador e ser capaz de usá-lo, ela de outros scripts para o erro de digitação. Então vamos em frente e usar uma instância. Então de volta ao nosso código, volta e jogador, vamos criar uma instância de uma classe. E vai ser público. Vai ser estática. Como já dissemos, estática é algo que é o mesmo em toda a plataforma. Vai ser do tipo jogador e vamos simplesmente chamá-lo de instância. Vamos guardar isso. Agora dentro do início, queremos determinar o que as instâncias, instância é igual a isso. E isso faz referência, bem, exatamente o que diz. Faz referência a esta classe exacta. Então, sempre que começamos de novo, a instância é definida para esta classe particular que tem o jogador. Mas agora ainda temos um pequeno problema quando começamos o jogo. A instância será definida para este jogador, mas quando outro jogador for gerado, teremos outra instância. Então o que podemos fazer é ir em frente e terminar aqui. Vamos criar uma condição. Então, se a instância é diferente de null, isso significa que há uma instância. E como já dissemos, sempre que temos duas linhas retas, é um, OR, sempre que temos essas duas linhas rabiscadas, é um fim. A instância é diferente desta. Então isso aqui, então nós vamos, primeiro de tudo, destruir este objeto do jogo. Senão, vamos criar uma instância. Vamos definir uma instância. Então o que está acontecendo aqui é que se nossa instância não é nula e nossa instância é diferente desse objeto em particular que estamos olhando ou classe, então vamos destruí-lo. Caso contrário, se a instância é nula ou a instância é esta, então vamos simplesmente atribuir a instância a esta. Então vamos guardar isso. Isso é chamado de padrão singleton. E agora, quando voltarmos, vamos executar o nosso jogo, a nossa equipa e caminha. Ele chega à área, termina, agora precisamos voltar. Devíamos tê-los feito um pouco mais rápido. Então, lá vai você. Só temos um demônio. E você pode ver aqui, está sob o parágrafo “Não destrua na carga “ou é diferente da cidade se você quiser pensar sobre isso. É como se tivéssemos criado uma cena diferente onde temos este jogador e a cena é D1 em carga, mas é integrada sobre a cidade. Então agora podemos até voltar a pé. E lá vai você. Só um Jimmy Demon. Você pode ver aqui e na hierarquia, há apenas um demônio Jimmy, mas ainda há um problema. E esse problema é que sempre que atravessamos, não queremos ser jogados para fora do nosso mapa. Queremos realmente estar aqui e neste lugar como se entrássemos naturalmente nesta área. Então vamos fazer isso no próximo vídeo. Não te esqueças de dedicar o teu trabalho. 21. Enter de área: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, nós corrigimos o problema de nosso demônio Jimmy aparecer do outro lado do mapa. Então, como podem ver, quando fomos para as montanhas, estamos em uma boa posição como se fizéssemos uma transição natural para lá. E se tentarmos voltar, lá vai você. Também fizemos a transição para uma posição natural para o nosso demónio ser. E agora não é perfeito. Precisa de um pouco de ajustes, mas está funcionando. Então não vamos perder mais tempo e vamos começar o 0. Portanto, nosso objetivo neste vídeo é encontrar uma maneira de fazer com que nosso jogador apareça em uma determinada posição. Na próxima cena, quando avançarmos. Então, por exemplo, quando entramos nas montanhas a partir desta área específica, queremos aparecer aqui mesmo ao lado da saída da área na segunda cena. E isso é muito importante. Então o que podemos fazer é criar um objeto de jogo aqui chamado saída de área. E podemos colocá-lo em uma determinada posição. Acompanhe o nome da transição da saída da área anterior dentro do jogador e, em seguida, coloque-o de volta aqui porque o jogador nunca é destruído. Lembra-se disso? Então é um bom lugar para guardar um certo nome. E podemos, sempre que começarmos a cena, pegar nosso jogador e colocar sua posição na área, entrar. Espero que isso tenha feito sentido. Vamos fazer isso em vez de apenas falar sobre e talvez fique claro. Então a primeira coisa é que queremos manter o controle do nome da transição. Então aqui vamos criar um nome público de transição String. Ok. E vai ser público porque queremos poder acessá-lo a partir de um script diferente. Esta não é a melhor maneira de o fazer, mas até aprendermos uma maneira melhor mais tarde, continuaremos a usar desta maneira. A próxima coisa que queremos fazer é ir para a saída da área e também criar aqui um campo serializado, que vai ser do tipo string, e ele vai ter o mesmo nome, o nome da transição. Ok, então vamos salvar isso de volta na Unidade. Vamos para a nossa cidade. E n aqui na saída da área, você pode ver que temos um nome de transição no jogador. Temos o mesmo, mas não vamos nos preocupar em usá-lo, estará preenchendo o nome da transição do código dinamicamente. Então aqui, qual é o nome da transição? Queremos algo para representar que é este lugar para que você possa ver nosso mapa. Então podemos sair deste lugar, deste lugar ou de cima. Então, queremos antes de tudo, manter o controle de cada saída. Em segundo lugar, queremos manter o controle do que é o próximo local. Então, a maneira como fazemos isso é que vamos criar algum tipo de convenção de nomes. Vamos, digamos, chamar as áreas onde podemos sair de 1, 2, 3 e 4. Então, a maneira como vamos nomear isso é, por exemplo, a das montanhas. Então sabemos que esta área nos leva para as montanhas um. Vamos guardar isso aqui. Agora de volta ao nosso código e o nosso Onsager entra aqui. Antes de carregar a cena, vamos pegar o roteiro do jogador. Então estamos fazendo referência ao script do player aqui, mas não podemos usar nada dentro dele, mas podemos acessar a instância. E como a instância faz referência ao script, que é este, agora podemos acessar qualquer método aqui ou valioso que é público. Agora podemos acessar o nome da transição. E depois de acessar o nome da transição, vamos configurá-lo para o nome da transição. Agora, se você está um pouco confuso, este nome de transição faz referência ao lado de um lado da saída da área. E este nome de transição faz referência ao nome da transição aqui no script do player. Se você ainda estiver confuso, você pode alterar o nome do nome da transição aqui, algo diferente. Portanto, a maneira como você pode alterar um nome no Visual Studio é simplesmente manter pressionado o controle. Certifique-se de que você selecionou o nome da variável que deseja alterar mantenha pressionada a tecla Control, pressione ou ou duas vezes. E agora podemos mudar esse nome de área de transição. Você verá que ele muda aqui e muda em toda a sua pasta. Então, qualquer lugar onde você usa essa corda. Esta variável, ela será alterada. Ok, então controle ou é. Ok, ótimo. Então, vamos em nossa unidade. Agora isso não vai fazer nada. Nós só queremos ter certeza de que nosso jogador, então cada saída, montanhas um voltou para branco porque nós mudamos o nome da variável aqui. E maneiras de executarmos o código e agora podemos manter o controle do jogador. Qual é o nome da transição? Lá vamos nós. Então, agora, quando fomos para as montanhas, é a Montanha 1. Agora, nós precisamos ir para a nossa segunda cena aqui, e nós vamos criar um novo objeto de jogo, que vai ser a área entrar, vai redefinir sua posição. E vamos posicioná-lo em frente à saída da área e certificar-nos de que está do lado de fora da pequena praça aqui. Não queremos que o nosso jogador entre e volte imediatamente. Então vamos salvar isso. Então agora temos uma área enter e vamos criar um script. Assim, a forma como podemos criar um script, podemos simplesmente criar área. E terceiro, você pode ver que aqui, ele nos diz a opção de criar um novo script. Sim, obrigado. O nome é Erin, digite, crie um anúncio. E agora temos um roteiro de área entrar. E vamos usar o script para definir o jogador na posição exata da área entrar. Agora que o script está carregado, podemos abri-lo. E aqui vamos criar um campo serializado, que vai ser uma string, e vai ser o nome da área de transição. E o que vamos fazer é assim que começarmos o nosso nível. Então, no início, vamos verificar se o nome da transição ou o nome da área de transição é igual ao nome da transição do ponto da instância do jogador. Em seguida, vamos acessar o jogador ponto instância dot dot transformar e lembrar transformar. E aqui está o que mantém o controle de objetos de um jogo, de um objeto de jogo na cena Unity. E a transformação do jogador será igual à posição do ponto de transformação. E isso faz referência à transformação da área enter ou ao objeto que tem a área sob script nele. E temos uma flecha. E aqui o componente da transferência não pode ser atribuído, certo? Então precisamos transformar a posição do ponto, desculpe por isso, não podemos simplesmente mudar a transformação. Precisamos acessar a posição. Então aqui, podemos ver que temos uma posição e rotação e uma escala. Então estamos realmente acessando a posição na transformação, na instância no jogador. Certo, ótimo, então com isso, vamos voltar e unidade e vamos nos certificar de chamar isso, como chamamos na cena anterior? Vamos para a cidade. Sim. Salve esta área, saída da montanha um. Vamos copiar isso. Volte para as montanhas, a área entra e vamos colocá-la aqui. Vamos guardar isso de volta à cidade. Executar o código, executar o jogo, e nós andamos, vamos para a saída da área. Sim, lá vamos nós. Quão legal é isso? Então agora o nosso jogador não aparece no mapa. E se quisermos voltar? Sim, lá vai você. Isto não funciona desta forma e vai ser um desafio para ti. Seu desafio será criar uma pré-fabricada. Então, crie um prefab da área entrar objeto jogo adicionado à cena anterior e colocá-lo na posição que você deseja que o nosso jogador apareça. Então, é claro, a área entrar deve estar em uma posição lógica. Mas de qualquer forma, pausar o vídeo agora e ir fazer o desafio. Oh, ok, bem-vindo de volta. Então aqui, podemos pré-fabricar a área Enter e então podemos ir em frente e adicionar aqui e a língua. Mas algo que acabamos de atacar agora. Bem, na verdade eu já notei antes, mas eu quero dizer que talvez você tenha notado que cada saída de área terá sua própria área entrar. Então o que podemos fazer, em vez de simplesmente preferir ser a área entrar e, em seguida, adicioná-lo, podemos ir para as montanhas e podemos rastrear a área abaixo, sob a saída da área. Então agora você pode ver que a área enter está sob a saída da área, e isso é chamado de criança em um objeto de jogo. Então o que acontece agora é cada saída. Se nós movê-lo ao redor, digamos que para esta posição, área enter irá se mover com a saída da área e sua posição aqui é referenciada ao seu pai. Então, a área sair como o pai, a área entrar é o filho e é um relacionamento pai filho. Vamos olhar mais para isso em vídeos posteriores, mas por enquanto, isso é tudo que você precisa saber. Então área entrar é um filho de saída área. E podemos ir em frente e anular este sim. Aplique tudo. Então agora em nossa cidade, segura e nossa cidade, a saída da área tem uma área entrar e simplesmente movê-lo para esta posição bem aqui. Então vamos olhar para trás. Montanhas uma área, boas montanhas, uma, salva isso. De volta às nossas montanhas. A saída da área tem um nome de transição. Ele precisa ter um nome de transição? Vamos ver o que acontece. Na cidade. Nós executamos o código, passamos, então há um erro. Qual é o erro? Se clicarmos duas vezes? Sim, lá vai você. E há uma exceção de referência nula que eu mostro a vocês o que diz. Uma referência de objeto como não definida para uma instância. O que significa se clicar duas vezes aqui e é porque o nome da transição está vazio. Então vamos tentar testar isto antes de tentarmos resolver o problema. Sim, lá vamos nós. Há um grande problema. Precisamos mudar isso para montanhas, e agora podemos executar o código de novo. Vamos ver. Sim, lá vamos nós. Vamos para as montanhas. Agora, se quisermos voltar, sim. Nós não voltamos corretamente. Por que é isso? Bem, porque nas montanhas e aqui nós não definimos o nome correto, então deve ser Montanhas Um. Então vou guardar isso. Não anule tudo de volta. Aperte Play. Caminhe aqui. Sim. Sim. Sim. Sim. Tudo parece estar funcionando perfeitamente. Então, espero que gostem. Certifique-se de confirmar nossas mudanças e eu vou vê-lo no próximo vídeo. 22. Ordem de execução de Roteiro: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, não mudamos muito. Acabamos de aprender algo sobre a ordem de execução dos scripts. E também aprendemos como às vezes podemos otimizar o que já criamos. Então, agora, se executarmos nosso jogo, você pode ver que nosso demônio Jimmy começa na área, entrar em posição. Tudo funciona completamente bem. Se formos para a próxima área, você verá que tudo continua igual. Nada mudou, mas nós apenas brincamos e ajustamos algumas coisas. Então não vamos perder mais tempo e vamos começar. Oh, ok. Então, agora que temos o nome da saída da área e a área entrar na mesma. Queremos criar uma onda para economizar um pouco de tempo e tornar as coisas mais rápidas com menos alcance. Então, uma saída de área, vamos obter uma referência para a área anther. Então vamos criar um campo serializado e ele vai ser de tipo área. E terceiro, e chamaremos de área. Certo, agora e comece, vamos definir o nome da transição na área. E terceiro a ser o mesmo que o nome da área de transição aqui. Então, a área e o terceiro nome de transição ponto. Então não está nos dando isso porque é um campo serializado e não um público. Então vamos mudar para público. Guarde isso aqui. da área de transição do ponto e nome da área de transição. Então não vamos confundir as coisas. Isto é para este. Este é para este aqui. Não vou mudar o nome. Se você acha que quer mudar os nomes, fique à vontade para fazer isso. Ok, ótimo. Agora, de volta à Unidade, vamos para as nossas prefabs e, e a saída da área. Podemos ir em frente e a referência. Então, se clicarmos duas vezes, podemos abrir o prefab e podemos referenciar imediatamente a área enter. Isso é uma criança disso. Ótima. Então, como você pode ver, a saída da área tem uma criança que é a área entrar que está bem aqui. Vamos salvar isso. Vamos sair da pré-fabricada. E se formos para a área entrar, podemos remover isso e a saída da área, você verá que ele se atualizará automaticamente. Então vamos manter o controle da área entrar. Vamos jogar, e lá vamos nós. O nome da área de transição como montanha um na área, digite. Ok, ótimo. Então vamos tentar jogar o nosso jogo. Certifique-se de que está tudo bem. Sim, está tudo bem. Mas há um pequeno problema aqui que eu falei, mas não consertei ou talvez eu tenha feito. Mas você pode ver que há um erro. Há uma exceção de referência nula. Portanto, a referência do objeto não definida para uma instância de uma área de objeto digite ponto-ponto. E ele diz área entrar ponto início porque é um problema na área entrar. Se clicarmos duas vezes, ele nos levará para a linha e nos diz que tentamos acessar uma instância, mas não há nenhum. Agora, como você pode ver, quando jogamos nosso jogo, tudo está funcionando bem. Mas se você é muito duro com as coisas e quer consertar isso, temos que consertar isso. Qual é o problema? O problema é que a área inserida neste script exato está carregando antes do script player. Então o que acontece é, digamos que a área enter é criada. Iniciamos a área enter, mas o jogador ainda não foi criado, então não há instância. Então, como podemos consertar isso? Há muitas maneiras. Vou te mostrar um muito bacana. E é algo que não muitos EUA, não é tão bom fazer isso, mas é bom saber que você tem a opção. Então, em Editar, vá para Configurações do projeto. Aqui, você pode ver que temos algo chamado onde é a ordem de execução do script? E você pode ver como cada script é executado. Então podemos adicionar um plus. E aqui você pode ver que estes são os scripts que temos. Vamos escolher o jogador e movê-lo para cá. Então ele começa antes da hora padrão. Isso significa que começa antes de todos os outros scripts. Vamos bater em Aplicar. Vamos sair. Vamos executar nosso código e não devemos obter esse erro mais. Lá vai você. Mas como você pode ver, nosso jogador vai para a posição da área entrar, tudo funciona bem, mas sempre que começamos o nosso jogo, Lá vamos nós. Nosso demônio é transportado para essa posição. Eu acho que isso é uma coisa boa porque nós realmente nunca vamos começar no meio de um mapa. Então isso é, eu acho, uma coisa boa. De qualquer forma, espero que goste. Espero que você esteja salvando seus repositórios. E vejo-te no próximo. 23. Seção 4: Cinemachine 101: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, não somos mais estáticos e o trabalho. Como podem ver antes de adicionarmos qualquer coisa, sempre que nos movemos e giramos, só podíamos ver o que temos à nossa frente. Mas agora à medida que nos movemos, você pode ver que a câmera segue nosso jogador onde quer que ele vá. Então não vamos perder mais tempo e vamos começar a adicionar máquinas. Oh, ok. Então, no momento em que batemos em jogo, você pode ver que todos nós giramos em nossa cena, mas nosso jogador só pode se mover no espaço limitado que temos dentro de nossa janela de jogo. Mas nós queremos mover através de todo o mapa que temos uma interagir com diferentes objetos. Mas, infelizmente, a câmera não permite isso. Então o que vamos fazer é criar um acampamento de acompanhamento. Então, onde quer que o nosso jogador se mova, nossa câmera se moverá sem nada. Há duas maneiras de fazer isso. A primeira maneira é da maneira antiga, onde criamos um script que adicionamos à câmera, definimos um alvo, e então precisamos fazer um monte de ajustes. E há a maneira nova e mais avançada e que é usar uma máquina central. Então, o que é uma máquina pecadora? Vou mostrar-lhe a documentação da Unidade. Então aqui, você pode ver nos cães da unidade, você pode ler tudo sobre máquinas de cinema, o que eles exigem, o que eles precisam. Eu acho que você deveria ir e procurar a documentação. É um pouco longo. Está algures por aqui. Eu não acho que você deveria ler tudo lá dentro, mas pelo menos saber o que você tem. Então vamos voltar para Unity e adicionar uma máquina de cinema. Então a primeira coisa que precisamos fazer é importar um pacote. Então, precisamos ir ao Gerenciador de Pacotes. Vamos para o Window, o gerente de pacotes e aqui, esperar pela atualização dos pacotes, ir para o Registro da Unidade e agora e máquina de cinema que é olhar para a máquina Cinna. Lá vai você. Envie uma máquina, certifique-se de instalar isso. E te vejo depois que a instalação terminar. Ó K. Bem-vindo de volta. Então, usando a magia da edição, acabei de instalar a máquina de cinema. E agora a próxima coisa que precisamos fazer é entrar em nossa câmera principal e vamos adicionar um componente a ela. E vai ser um cérebro. Então teremos um cérebro de máquina de cinema em nossa câmera principal. Isso nos permitirá ter câmeras coexistentes com uma delas será a câmera principal e a outra será uma câmera virtual. Então vamos em frente e criar uma dessas câmeras virtuais. A maneira como fazemos isso é subir aqui e a máquina de cinema, e vamos criar uma câmera 2D, como você pode ver bem aqui. Então agora temos este C VCA. E você pode ver que há um par de coisas que não temos aqui não vai passar por todas elas porque há muito. Mas, por enquanto, as coisas que você precisa considerar e definir imediatamente estão aqui, a seguir e a pesquisa. Mas antes de fazer isso, precisamos criar um objeto de jogo e colocar as duas câmeras em nosso filho, as câmeras para ele. Então vamos criar um objeto de jogo. Vamos chamá-lo de câmeras. E vamos arrastar a câmera principal e duas câmeras. Ou antes de fazermos isso, deixe-me redefinir a posição e então vamos arrastar a câmera principal para as câmeras e o acampamento virtual e para as câmeras também. Agora temos as câmeras que seguram a câmera principal e a câmera virtual. Agora, a próxima coisa que precisamos fazer é arrastar a coisa ou qualquer coisa que você queira seguir. Então, o que queremos seguir? Bem, queremos seguir o jogador, então vamos arrastar o jogador aqui. Como podem ver, temos alguns guias. E antes de continuar, vamos mudar na janela do jogo de aspecto livre para 16 por 9, e isso ajudará a estabilizar a imagem. Então vamos guardar isso. E vamos tocar no Play e ver o que temos. E eu vou explicar o que todos esses guias aqui ou assim agora se nós andarmos, lá vamos nós, você pode ver que nossa câmera realmente segue nosso jogador. Quão legal é isso? Então agora não andamos por aí e não podemos mais ver o jogador. Na verdade, temos uma câmera que está seguindo e você pode ver como ela está seguindo aqui através dessas linhas vermelhas. Então você pode ver que não é imediato. Então leva um pouco de tempo e isso dá uma sensação mais natural ao nosso jogo, uma sensação mais profissional também. E isso não é algo que é facilmente feito usando scripts. Precisa de um monte de código e um monte de ajustes. Mas antes de continuarmos, o que são esses pulmões, você pode realmente desligá-los. Se você olhar aqui e o CMV pode, você pode ver ou precisamos mudar isso. Uma câmera virtual. Lá vai você. Então agora você pode ver que se pressionarmos o guia da janela do jogo, você vê que eles estão desaparecendo. E eu acho que nós precisamos copiar isso porque quando nós paramos de jogar, você vê, como nós dissemos, sempre que estamos no Modo Jogo, nada é seguro. Então é por isso que copiei e colei bem aqui. Ok, bom. Isto é algo que você vai entender depois de muitos anos experimentando perder todas as coisas que você mudou. De qualquer forma. Agora, o que são esses caras? Se descermos, podemos ver aqui que temos algo chamado o corpo. E aqui você pode ajustar e mudar muitas coisas. Agora, novamente, eu não vou passar por cima de todos eles. Mas uma maneira útil de entender o que tudo isso significa é simplesmente girando, por exemplo, todo o caminho para cima. Agora, quando executarmos nosso jogo, você verá isso. Lá vai você. Então você pode ver, porque nós giramos o amortecimento, leva mais tempo para que nossa câmera realmente alcança nosso player. Mas quando ele sai da zona vermelha, você pode ver que ela segue imediatamente. Se mudarmos o amortecimento no y, teremos o mesmo efeito. Muito agradável. Vamos voltar para um. E vamos ver o que mais temos se movermos a tela, por exemplo, podemos mover a tela. Então agora o nosso jogador está sempre à direita, que é algo, eu não tenho certeza de como você vai usá-lo, mas pode ser útil. Podemos mudar a distância da câmera, mas nada está acontecendo. Talvez seja porque você só pode usá-lo quando está em 3D. Podemos mudar a zona morta e vamos tentar ver como isto funciona. Então, agora, se o nosso jogador se mover um pouco, você pode ver que a câmera não segue. Mas assim que ele sair da zona morta, você pode ver que a câmera começa a seguir. E este é um truque muito bacana que você pode usar para implementar sua câmera. Vamos voltar para 0. A seguir, o que mais temos? Temos outras coisas. Então, se você se mover, eu não tenho certeza da zona suave 0. Então, a zona sul é, por exemplo, digamos que o amortecimento está de volta para 20. Você pode ver que as linhas vermelhas estão muito mais distantes. Então agora, mesmo que estejamos fora das linhas, a câmera leva tempo para alcançar nosso jogador. Eu acho que isso é algo que nós também queremos voltar para 0.8, o primeiro, por que amortecimento para um. Então, como você pode ver, há muitas opções. Há também ruído e objetivo, e você pode até adicionar extensões a eles, o que eu recomendo para ir e experimentar pesquisa. E agora que adicionamos uma câmera de acompanhamento, deixe-me desligar o guia da janela. Eu acho que o que temos por padrão é bom o suficiente para o nosso jogo por enquanto. Não quero complicar muito, mas está na hora do seu desafio. Seu desafio será ajustar sua máquina Cinna. Por isso, brinque com as definições e descubra onde está o seu ponto ideal ou como pretende que a câmara siga o seu jogador. Uma boa regra de ouro como você acabou de ver, se você não quiser ler o que cada configuração faz, é apenas definir um para o máximo e experimentar. Então você tem dúvidas sobre o que essa coisa faz. Defina para o máximo. Brincar, ver o que acontece e divirta-se. Então pausar o vídeo agora mesmo e ir fazer o desafio, e não se esqueça de salvar seus repositórios. E vejo-te no próximo vídeo. 24. Extensão de Confiner em cinema: Bem-vindo de volta meus colegas desenvolvedores de jogos para um dos maiores vídeos e todo este curso. Mas aprendemos muito. Aprendemos sobre os combinadores de máquinas Cinna. Aprendemos sobre camadas. A camada física não é as camadas de classificação antigas. Aprendemos sobre encontrar objetos do tipo. Aprendemos sobre obter componentes. Então eu preciso de sua concentração total e em torno de, digamos, 16 minutos talvez do seu tempo. Então não vamos perder mais tempo. Este é um vídeo muito importante e vamos começar. Então, no momento em que batemos no play, veja que temos nossa câmera de acompanhamento e tudo está funcionando bem. Mas o problema é que quando chegamos à borda, vemos esses quadrados azuis bem aqui. E nós não queremos isso. Não queremos tirar o nosso jogador da experiência. Se ele pode ver o que está fora dos limites do nosso jogo, ele vai entender que é novamente. E como você sabe, sempre que você vê uma falha no jogo e você percebe, oh, isso é um jogo. Isso realmente te tira da experiência. Então vamos precisar consertar isso. Como consertamos isso? Precisaremos confinar nossa câmera virtual. E a maneira como fazemos isso é se descermos aqui e a câmera virtual, você pode ver que temos extensões. Então, se clicarmos nisso, você verá que temos algo chamado uma máquina de cinema confinado. E como eu disse, essas coisas são muito legais para procurar aqui. Então, por exemplo, se você estiver fazendo um jogo 3D ou se você estiver tentando adicionar um zoom de acompanhamento e assim por diante. Este é um bom lugar para ler sobre esses recursos legais que você tem dentro da máquina. Mas, por enquanto, vamos adicionar um combinador. Então, lá vai você. Você pode ver que quando escolhemos um confinamento, um novo objeto de jogo ou um novo componente é adicionado à câmera virtual, um componente. Então, o que vamos fazer aqui? Bem, você pode ver que precisamos de uma forma delimitadora. Como adicionamos uma forma delimitadora? Nós adicionamos com um colisor 2D. Então vamos para a camada de fundo. Vamos adicionar um componente. E digamos que queremos adicionar um colisor de caixa, e eu vou mostrar por que isso não vai funcionar. Então, agora, se voltarmos para a câmera virtual e tentarmos arrastar a imagem de fundo, você pode ver aqui que temos um aviso de que deve ser um colisor de polígono ou um colisor composto. Então vamos voltar ao fundo. Vamos remover este colisor de caixa e vamos adicionar um colisor de polígono 2D. E qual é a diferença entre um colisor normal e o colisor de polígono? Bem, como você pode ver, o colisor de polígono é muito mais flexível sempre que você quiser adicionar objetos ou um colisor em torno de um objeto que não é realmente um quadrado ou um círculo ou qualquer outra coisa. Você pode ver, você pode criá-lo com qualquer forma que você quiser. E se você quiser excluir um desses lados, você pode simplesmente manter o controle pressionado. E lá vamos nós. Você pode ver que não podemos apagar tudo. E vamos apenas ter certeza de que ele está bem aqui em torno das bordas e não mais. Ótimo, agora que temos o colisor de polígono, vamos guardar isso. Vamos sair do modo de edição, voltar e nossa câmera virtual e arrastar a imagem de fundo. Vamos guardar isso. Mas agora algo estranho vai acontecer quando executarmos o nosso jogo. Então vamos tocar no Play. Você pode ver que nosso jogador acabou de sair da tela. E por que isso? Por que você acha, ou qual é o problema? Você acha? Tire um momento para pensar. Acabou o tempo. Então o problema é que nosso jogador está interagindo com esse colisor de polígono em segundo plano. A maneira como vamos corrigir isso é criando uma camada separada para a imagem de fundo. E eu não estou falando sobre a camada de separação. Se entrarmos nas camadas bem aqui, vá para as camadas de edição. Você pode lembrar que temos algo chamado tags, temos algo chamado camadas de classificação, e nós também temos as camadas. Então, anteriormente nós adicionamos uma camada de classificação, e isso nos permitirá classificar quais imagens em cima de qual imagem do autor. Mas agora nós estamos realmente indo para usar as camadas e estes nos permitem interagir ou permite determinar qual colisor interage com qual Collider ou qual objeto físico pode interagir com qual outro objeto físico. Então, atualmente, vamos criar uma camada de fundo. E você verá que nosso player, por exemplo, está no player padrão, assim como nossa imagem de fundo. Então, se mudarmos a camada aqui para o fundo, você pode ver que quando vamos para Editar configurações do projeto. Aqui em baixo, você verá que nós temos essa matriz realmente bacana. E o que isso me faz matriz? Você pode ver que temos várias camadas aqui e uma delas é o plano de fundo que acabamos de criar. Então você pode ver lá eles estão bem aqui à direita. Um deles é o padrão, que é a nossa camada de jogadores. E nós também temos a água se você ignorar o reelenco. Mas, por enquanto, o que essa matriz realmente faz? Ele determina se uma camada está interagindo com outra camada. Assim, por exemplo, o padrão com o plano de fundo, eles interagem, o padrão com a interface do usuário, eles interagem e assim por diante e assim por diante. Então o que queremos é que a camada de fundo não seja capaz de interagir com nada, e especialmente com o jogador. Então o que vamos fazer é simplesmente desligar tudo isso. Vamos guardar isso. E agora sabemos para um fato que a camada de fundo não vai interagir com a camada padrão. Portanto, nossos jogadores não devem ser afetados pelo que acontece quando ele toca o fundo. Então, agora, quando executamos nosso jogo, devemos ver que nosso jogador não está mais fora dos limites do mapa. Mas se formos lá fora, ele vai passar por isso? Não, como você pode ver, bem, algo deu errado. Queremos chegar ao próximo nível, mas como podem ver, agora, se descermos pelas águas, não vamos mais sair dos limites com nossa câmera. Agora, o nosso jogador ainda vai lá fora, mas não se preocupe com isso. Você pode ver que nossa câmera não está mais seguindo ele. E nós realmente podemos sentir que o ambiente em que estamos é o ambiente de todo o mundo. E isso realmente adiciona muita autenticidade ou ganho. Agora, se formos para o próximo nível, você deve ter notado um pequeno problema. E isso é que nós não temos uma câmera virtual rodando aqui. Mas o outro problema, se voltarmos à nossa cena anterior, novamente, como podem ver, não há mais uma câmera virtual, mesmo que a tenhamos bem aqui. E as câmeras, a câmera virtual, mas não há nada a seguir. A transformação que usamos para seguir está faltando agora. Então, como é que vamos superar este pequeno problema? Bem, vamos precisar criar um controlador de câmera no qual vamos acessar a máquina central e acessar o jogador dentro do nosso jogo ou encontrar o nosso jogador dentro da cena e, em seguida, atribuí-lo a essa câmera virtual para seguir. Então, como é que vamos fazer isto? A primeira coisa é que vamos criar um novo script Sharp. Então vamos para Criar C Sharp. Pode controlar. Carregue em Enter, aguarde a compilação. E não tenho certeza do que aconteceu. A próxima coisa que faremos é adicioná-lo à nossa câmera virtual. Então agora nossa câmera virtual tem um script controlador de cam nele. Vamos clicar duas vezes, abri-lo e Visual Studio. E a primeira coisa que precisamos é exatamente como nós adicionamos um onde está na saída da área. Adicionamos um gerenciamento de cena para acessar a Biblioteca do gerenciador de cena. E aqui nós também vamos precisar adicionar usando máquina central. Agora podemos acessar componentes em uma única máquina. A próxima coisa é que precisamos de duas variáveis aqui. Um deles vai ser um jogador privado, e vai ser um alvo de jogador. E você deve estar se perguntando, Michael, por que não tornamos um campo serializado ou público? O problema aqui é que não queremos anexar manualmente o nosso jogador ao alvo. Queremos que isso aconteça dinamicamente em nosso roteiro. Então vou te mostrar o que quero dizer daqui a pouco. A próxima coisa que queremos fazer é queremos uma máquina de cinema, câmeras virtuais ou máquina de pecado, e vamos chamá-la de câmera virtual. Lá vai você. Guarde isso. Agora e comece. Vamos usar um método que nos permitirá encontrar um objeto. E se entrarmos nas documentações aqui, mostrarei como um mestre solucionador de problemas encontra isso. Então vamos dizer que queremos encontrar o jogador. Como é que fazemos isso? Bem, Google como encontrar um objeto e Enter. Lá vai você. Você pode ver que temos algo chamado o ponto do objeto do jogo encontrar. Se clicarmos nele, você verá que podemos encontrar um objeto de jogo que precisamos. Mas há um método padrão que eu vou mostrar a vocês e é o objeto Encontrar de um certo. Digite Unity. Pressione Enter. Há um objeto finito do tipo. Então, entra. O que é que ele faz? Bem, ele retorna o primeiro objeto carregado ativo que corresponde ao tipo específico. Então nós queremos um tipo específico que é o jogador, e você pode ver como podemos usá-lo aqui. Ok, ótimo. De volta ao nosso script e eu recomendo que você tome um pouco de tempo para olhar através deste método irá acessar o alvo jogador. Então o alvo do jogador, esse é o nome da variável que criamos aqui em cima. Vai ser igual a phi1 objeto do tipo. E que tipo queremos procurar? É o jogador. Então, chamando o script do jogador, nós realmente obtemos o objeto do jogador. E agora podemos anexá-lo à câmera. Mas antes de fazermos isso, a fim de acessar a câmera virtual, precisamos realmente atribuí-la. E porque não criamos um campo serializado aqui, vamos precisar de outro método. Então temos o controlador que está ligado à câmera virtual. Mas o que queremos é que queremos acessar este objeto aqui, que está a seguir. Queremos acessar o componente de câmera virtual da máquina de cinema. E nós podemos realmente fazer isso de uma maneira muito útil. E isso é obtendo o componente. Então, usando Get componente, a máquina de cinema, câmera virtual. E agora tudo o que temos que fazer é fazer com que a câmera virtual siga pontos. Então, estamos acessando o “Segue”. E então nós vamos atribuí-lo como o alvo do jogador. Mas não só isso, porque um alvo de jogador é apenas o objeto que encontramos, precisamos realmente acessar a transformação. Então vamos guardar isso e deixe-me explicar mais uma vez o que está acontecendo aqui. Então, primeiro de tudo, nós criamos essas duas variáveis, delas como um privado, nós também podemos tornar o cisne privado, mas não se preocupe é. Então, um alvo de jogador privado e uma câmera virtual privada. Então encontramos o objeto do jogo. E por que estamos tentando encontrar o objeto do jogo e não atribuí-lo manualmente? Porque queremos que aconteça dinamicamente. Não queremos entrar em cada cena e atribuir o jogador à câmera em cada cena que queríamos que acontecesse dinamicamente. Em seguida, usamos um método que obtém um componente. E porque o controlador está na câmera virtual e é um dos componentes. Temos outro componente que é a câmera virtual máquina de cinema. Nós acessamos e atribuímos a próxima coisa que acessamos a seguir. Então aqui você pode ver que temos um acompanhamento. Nós acessamos isso usando a direita aqui usando este pequeno ponto. E nós atribuímos o jogador alvo transporte HDL porque nós apenas temos o objeto, não o transporte real. Certo, então se guardarmos isso, volte para a Unidade. Vamos definir isso como nenhum. Salve essa jogada. E devemos ver aqui que o jogador foi encontrado e foi designado. Então, agora, quando nos movermos, você verá que a câmera segue o nosso jogador. Mas se formos para a próxima cena, você verá que nada acontece e isso é porque não temos uma câmera virtual. Então, como é que vamos resolver isto? Vamos para os pré-fabs. Vamos definir as câmeras como uma pré-fabricada, vamos salvar isso. Vamos voltar e cenas para as montanhas, vamos apagar a câmera principal. E vamos pegar os prefabs e adicionar as câmeras que temos. Vamos guardar isso. Vamos voltar para a nossa cidade, vamos executar o código. Vamos caminhar até as montanhas e lá vai você. Como pode ver, temos uma câmera de acompanhamento. Agora não temos um confessionário, vamos adicioná-lo mais tarde, mas está funcionando. Como é isso? Então, espero que gostem. Espero que você esteja salvando seus repositórios. Como podem ver, nosso projeto está tomando forma e está se tornando muito grande. Você deve estar muito orgulhoso de si mesmo e de quanto você conseguiu até agora. Então, vejo-te no próximo vídeo. 25. Tilesets na Unity: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós vamos aprender como criar conjuntos de mosaicos a partir das folhas de sprite de fatia que temos. Então o que fizemos é que temos um sprite bem aqui, uma imagem completa dos blocos que queremos usar. Nós o cortamos e o convertemos em ativos de azulejos. E esses ativos agora estão presentes aqui e nossa paleta de azulejos. Então não vamos perder mais tempo. Vamos começar. Oh, ok. Então, atualmente, como você pode ver, nós sempre trabalhamos com uma imagem de fundo. Então é uma imagem onde já temos algum tipo de caminho predeterminado. Temos objetos predeterminados e nosso mundo. Mas isso não é divertido sempre que você quer criar seus próprios níveis, é sempre melhor ter uma maneira de usar algum tipo de telhas. Talvez vejamos isso mais tarde, a fim de criar seu próprio mapa com seu próprio layout. Então, como vamos fazer isso? Bem, primeiro de tudo, usando Sprites, depois dissecando ou cortando os sprites, e então usando esses sprites fatiados para colocar as peças e nosso mundo, talvez você esteja um pouco confuso com o que eu acabei de dizer. Então deixe-me explicar isso um pouco melhor. Em primeiro lugar, temos a nossa folha de sprite. Assim como tínhamos a folha Jimmy Demon Sprite, também temos uma folha de sprite para os nossos azulejos. próximo passo é vamos cortar os sprites. Em seguida, vamos converter esses sprites fatiados e para ativos de mosaico. Vamos adicionar os ativos de estilo a uma paleta de mosaico que nos permitirá desenhar no topo da nossa cena usando um layout de grade. E teremos um mapa de mosaico com o nosso daemon nele. Então, tome apenas um momento para entender o processo, porque nós vamos passar por ele agora mesmo. Então, de volta ao Unity, e aqui estamos indo para o Windows 2D e vamos chamar 40 paleta de mosaico. E esta paleta de azulejos nos permite desenhar, ou é como uma paleta de pintura sempre que você quiser pintar um quadro, esta é uma paleta de azulejos que nos permitirá pintar diferentes azulejos em nosso C. Ok, então agora precisamos pegar nossos azulejos. E vocês podem ver que nos recursos que eu deixei os arquivos a serem usados, que é o caminho e os objetos, e este é o conjunto de arquivos que eu vou usar. Teremos outros conjuntos de azulejos mais tarde. Mas por enquanto, a calça e os objetos é o que vou usar. Então o que vamos fazer aqui é ir para Assets, vai criar uma nova pasta para os arquivos. E aqui vamos seguir em frente e soltar o caminho e os objetos. Então vamos deixá-la aqui. Então, como você pode ver, se clicar duas vezes aqui, é um sprite com todos os blocos que queremos. Agora o próximo passo é ir em frente e cortá-los. Então vamos para o Modo Sprite, escolher vários, aplicar as alterações. Você vai ao Sprite Editor. E aqui vamos cortá-los. Então eu não acho que automático não vai funcionar. 64 por 64. Vamos tentar isso. Não, precisamos ter esse estilo, por exemplo, essa pedra e a grama entraram em nove pedaços. Então vamos tentar 32 por 32. E sim, lá vamos nós. Você pode ver que é cortado em nove pedaços e podemos usá-lo. Então vamos bater em Aplicar. E agora você verá que, em vez de uma única imagem, teremos todos os pequenos sprites cortados todas as fatias da nossa grande planilha. Ok, ótimo. Então estes são os dois primeiros passos. O próximo passo é criar ativos de mosaico e adicioná-los à Paleta de mosaico. E a maneira como fazemos isso, se voltarmos para a Unidade, e aqui temos a Paleta de Azulejos. Então, precisamos criar uma nova paleta de azulejos. Vamos chamar isso de caminho e objetos. Vamos clicar em Criar e vamos para os ativos dentro das telhas. Vamos em frente e criar uma pasta, caminhos e objetos. E nós vamos selecionar esta pasta aqui. E também vamos arrastar o sprite para cá. Então agora temos a paleta Style criada, mas agora precisamos criar o ativo de arquivo. Então, a maneira como fazemos isso é pegar esta imagem inteira e vamos arrastá-la aqui para a paleta de azulejos. Precisamos selecionar uma pasta. E vamos em frente e selecionar o caminho e os objetos dentro do arquivo. Portanto, certifique-se de salvar em uma pasta onde você pode ter todos os blocos. Portanto, selecione a pasta e aguarde até que a importação tenha. Então agora os sprites estão sendo convertidos em ativos de mosaico. E lá vai você. Então, como você pode ver, estes são os ativos de azulejos e você pode ler aqui mesmo no inspetor que este é um azulejo. Então, cada um deles é um azulejo e você pode vê-los bem aqui em uma paleta de azulejos. Agora que temos tudo configurado, a próxima coisa a fazer é criar um mapa de mosaico, mas faremos isso no próximo vídeo porque este já é muito longo. E antes de ir, quero te dar um desafio. Portanto, o seu desafio será criar o seu próprio mapa de mosaico ou deslocamento por enquanto. Portanto, importe quaisquer sprites e blocos que você escolher usar para o seu jogo. Então corte as planilhas dos blocos e adicione à paleta de mosaicos para criar o seu novo conjunto de pneus. E antes de ir, também quero mostrar onde consigo meus conjuntos de azulejos. Então esta é a minha folha de cálculo. Então é arte de jogo aberto. Como sempre, é um recurso incrível para qualquer coisa que você precisa para criar seus jogos. É da autora, Sabine. Eu não tenho certeza. Eu recomendo que você os veja. E você também pode ir para a arte do jogo aberto e encontrar seu próprio conjunto de estilo para que você possa ir para o navegador, para a arte. Há toneladas e toneladas de preconceitos, como você pode ver aqui, Zelda como masmorras blocos e assim por diante. Então, encontre sua planilha, sua planilha de sprite preferida e use-a para criar seu conjunto de pilhas. Então eu vou vê-lo no próximo vídeo onde vamos começar a colocar nossas telhas e criar um mapa de mosaico. 26. Criando um mapa de telhas: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós realmente criamos um mapa de mosaico. Então agora deixe-me mover o meu jogador um pouco para a estrada. Se executarmos nossa visão de jogo, você pode ver que este é o mapa que eu criei. Então lá vai você. Você pode ver que temos objetos sólidos com os quais interagimos. Temos lojas, temos tudo. Há algumas coisas que precisaremos mudar. Por exemplo, podemos ver que temos as águas aqui. Temos os sacos de batata e temos o corpo de água que não podemos atravessar. Então não vamos perder mais tempo e vamos começar. Oh, ok. Então, antes de continuarmos aqui, quando queremos confirmar as alterações depois de criarmos os ativos de mosaico, há um pequeno problema. Se você já encenou ou submeteu todos os seus arquivos, tudo bem. Mas se não, eu recomendo que você ignore tudo sob os ativos, estilos, caminho e objetos. E por que isso? Bem, porque eu não acho que é realmente necessário ir em frente e salvar todos os bens. É muito espaço, e não acredito que seja muito necessário. Somente o código e o que acontece dentro do jogo são mais importantes do que as imagens reais. Então, vamos ignorar tudo em Ativos, caminho de arquivo e objetos atingidos Ok, então agora podemos preparar todos os nossos arquivos e ir em frente e confirmar nossas alterações. Então eu criei um conjunto de azulejos. Não se preocupe se você já fez isso. Não se preocupe. Continue com a imunidade nas costas. Agora é hora de começar a pintar. Então, como vamos pintar usando nossa nova paleta de azulejos? Bem, em primeiro lugar, vamos em frente e criar uma nova cena. Vamos em frente e ter certeza que é 2D. Salve as alterações. Nossa cena aqui. E agora vamos entrar em objeto de jogo. Nós estamos indo para ir para o 2D e encontrar mapa de azulejos, certifique-se de que é retangular. Pressione Enter. E agora temos um mapa de mosaico. Podemos mudar isso para o fundo. E você notará aqui mesmo que o mapa de mosaico ativo se tornará o plano de fundo. Lá vai você. Vamos salvar a cena. E acho que vamos chamar isso de cidade também. Então Controle S para salvar a cena. E as citosinas chamarão isso de cidade para salvar. E agora temos uma segunda vez. Agora, como vamos desenhar aqui? Então, por exemplo, se ampliarmos, podemos escolher um desses estilos. E vamos falar sobre as opções que temos aqui em cima. Temos, em primeiro lugar, a seleção de uma área na grade. E deixa-me tornar isto um pouco maior. Podemos selecionar uma área na grade, e isso é para edição. Então, por exemplo, se apertarmos a tecla Editar aqui, selecionamos esta grade, tivemos a movimentação. Agora podemos mover esta paleta. Não queremos isso por enquanto. Este é o movimento de apenas vi o que ele fez. E nós também temos o pincel, e isso nos permitirá pintar coisas em nosso mundo. Então, se escolhermos isto, por exemplo, este tipo de pedra, podemos começar a pintar. Mas obviamente você pode ver que os sprites ou os azulejos são muito pequenos. Como consertamos isso? Se entrarmos no banho de azulejos e objetos, se atingirmos o grande sprite, podemos mudar isso de 100 para 32. Aperte aplicar, e lá vai você. Temos os azulejos agora grandes o suficiente. Também podemos alterar o modo de filtro para apontar nenhum filtro. E isso deve deixar nossos azulejos um pouco mais nítidos. Certo, ótimo, agora que sabemos como usar a tinta, a próxima coisa a aprender a usar a caixa cheia de tinta. E isso nos permite criar caixas em nosso jogo rapidamente. Então, como podem ver, podemos pintar vários blocos muito rapidamente. Ok, ótimo. Em seguida, temos o banquinho. Nunca usei esta ferramenta. É um pouco confuso. E temos a borracha, que é extremamente importante. Ok, ótimo. Então agora vamos criar apenas um pequeno exemplo apenas para testar algumas coisas. Então eu vou criar uma pequena estrada aqui. Então precisamos adicionar a grama em cima dela. Então, como podem ver, este é o bloco que podemos usar para desenhar grama. Então nós desenhamos em cima dela bem aqui. Lá vamos nós. Nós desenhamos um pouco de grama debaixo dele. E digamos, por exemplo, que queremos fazer algum tipo de curva. Então vamos salvar a estrada que vai por aqui. Então, como é que vamos ter a certeza de que parece autêntico? Bem, em primeiro lugar, vamos adicionar uma grama aqui. Vamos adicionar a grama à direita. E para a esquerda. Mas o que vamos adicionar e este bloco, ou neste bloco? Bem, você pode ver que temos este aqui. Então lá vai você. Você pode vê-lo naturalmente curvas. Mas e quanto a este? Não podemos usar nem este, nem assim nenhum outro. Bem, se entrarmos aqui em nossa paleta de azulejos, podemos ver que temos, por exemplo, esse tipo de grama. E se adicionarmos aqui, lá vamos nós. Temos uma curva muito agradável para cima. Então isso vai levar um pouco de tempo para entender, mas uma vez que você pegar o jeito dele, ele vai se tornar muito fácil. Então, por exemplo, se você quiser criar um monte de sujeira, nós adicionamos esse tipo de bloqueado na grama e então nós preenchemos tudo aqui. Então agora temos uma estrada de terra ou ADR, apenas terra no chão. Ok, então a próxima coisa é, vamos dizer que queremos adicionar esses sacos de batata para que possamos escolher vários blocos e começar a pintá-los. Mas obviamente há algo errado. O fundo destes sacos de batata é transparente, por isso, como podem ver, está a pintar sobre os nossos fundos. O que vamos fazer sobre isso? Bem, podemos criar um segundo mapa de arquivos. Então, se entrarmos na grade, clicamos com o botão direito do mouse e vamos para o mapa de mosaico 2D retangular. E vamos chamar isso de objetos. Então agora temos um segundo mapa de mosaico ativo aqui, que vai ser os objetos. Você precisa sempre se certificar de qual mapa de mosaico ativo você está trabalhando. Por isso, vou apagar o sexo por enquanto. Vou adicionar os reforços. Esta não é a sujeira que estamos procurando. Então vamos adicionar essa sujeira de volta aqui. E agora precisamos adicionar o saxofone. Então, em vez de fundo, vamos para os objetos, vamos selecionar os sacos. E agora você vai notar que nós podemos pintar os sacos sem ter qualquer problema ou qualquer inconsistência em nosso mundo. E só para ter certeza de que os objetos estão sempre acabados, o plano de fundo, irá para os objetos, irá escolher a camada de fundo como a camada de classificação, e nós vamos escrever uma. E aqui eu também vou para o fundo. Vamos nos certificar de que é um plano de fundo na camada de classificação e sua ordem e não há 0. Vamos guardar isso. E agora você pode ver como podemos criar nossos arquivos. Agora, vamos testar como este mundo funciona para o nosso jogador. Então, se voltarmos para nossa cena anterior para a cidade um ou a cidade normal, nós vamos em frente e o prefab, nosso jogador. Então agora temos um jogador como pré-fabricada e vamos voltar para a cena. Vamos remover as câmeras principais e adicionar nossas próprias câmeras. Então estas são as câmeras virtuais com uma lata de acompanhamento e vamos adicionar um jogador. Então, agora, quando salvarmos, executamos o jogo. Você pode ver que podemos nos mover com nosso jogador e temos um acampamento de outono. Ótimo. Claro que vamos expandir nosso jogo mais tarde ou expandir o mapa, tornando-o melhor. Mas, por enquanto, precisamos fazer algo muito importante. E isso garante que o nosso jogador interage com esses sacos e não se move apenas através deles. E podemos continuar adicionando colisadores. Temos um jeito muito melhor. Então, como vamos fazer isso? Bem, eu vou te dar um desafio. Então adicionando colisadores a telhas sólidas. Então adicione um colisor de mapa de mosaico, dois objetos sólidos. Então, o mapa de mosaico de objetos que temos aqui, você precisará adicionar um colisor a ele. Em seguida, você precisará adicionar um colisor composto. Explicarei o que é isso mais tarde. Você precisará adicionar um Rigid Body 2D e executar o jogo e perceber como tudo funciona perfeitamente. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, ok, bem-vindo de volta. Então vamos para os objetos. E você vai notar que estes são os objetos bem aqui. Nós vamos adicionar um componente e vai ser um mapa de mosaico colisor 2D pode ver agora, lá vai você. Você pode ver que os sacos aqui têm um colisor neles. E por exemplo, digamos que queremos adicionar um pouco de água aqui. E vai estar debaixo de objetos porque não queremos estar se movendo através da água. Então eu vou adicionar um pouco de água aqui, e lá vai você. Então, agora, quando executamos nosso jogo, você pode ver que não podemos mais nos mover para a água nem fim de semana ir para as costas. Ok, ótimo. Então agora isso funciona perfeitamente bem, mas há um pequeno problema. Como podem ver aqui, temos madeireiros médicos neste corpo de água. E isso ocupa muita memória e nosso ganho. Então o que podemos fazer é adicionar um, onde está o colisor composto? E você verá o que acontece quando adicionamos um colisor composto 2D. Você pode ver agora que um corpo rígido 2D foi adicionado e todo o mapa, se clicarmos no usado por composto, notar o que acontece com os arquivos ou os colisadores em todos esses estilos. Lá vamos nós. Então agora, em vez de ter 40 colisadores, temos um único colisor que é composto sobre todos os sacos ou quero dizer todo o corpo de água. Então, novamente, se rodarmos o código, vocês notarão que porque nós adicionamos um corpo rígido e foi isso que eu quis dizer quando eu disse que tudo não deveria estar funcionando perfeitamente. Isso não está funcionando porque o corpo está caindo, porque sua dinâmica ou vamos mudá-lo para cinemática. Executar o jogo. E agora tudo deve estar funcionando completamente bem. Muito bom. Como eu disse, não é muito complicado. É mais fácil do que você imagina quando quiser desenhar suas peças, você vai se acostumar com isso. Certifique-se de que você está sempre no mapa ativo correto. Portanto, certifique-se de confirmar suas alterações. Crie um mapa que você deseja assistir sempre mapeado que quiser usando os blocos que eu forneci a você ou quaisquer testes que você encontrou em arte de jogo aberto ou outros sites. Will que disse no próximo vídeo, Eu vou ter um preparado que podemos usar e eu vou vê-lo em seguida. 27. Mantendo jogadores dentro do mapa: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós estamos indo para primeiro de tudo ligado nossas câmeras. Então, como você pode ver, a câmera não sai mais da cena do jogo. E não só isso, nós também apertamos a posição do jogador. Como podem ver, ele não pode mais sair do mapa que criamos. Então não vamos perder mais tempo e vamos começar. O k. Então, atualmente, podemos nos mover e nosso novo criar um mapa de mosaico. Mas o problema é que o jogador sai do mapa e a câmera o segue até lá. Como podem ver, podemos sair do mapa e ver o fundo azul aqui e não queremos isso. Antes de fazermos isso, só queria mostrar-te uma coisa que fiz. Eu adicionei um conjunto de mosaico extra aqui que é o plano de fundo em objetos. E você pode ver que está no plano de fundo da camada de classificação e ordenar a Camada 2 sem colisores. E isso é para objetos no fundo. Então, quero dizer fundo sobre o objeto. Então, por exemplo, eu queria desenhar um pouco da madeira na água e parafusos na água. Então eu adicionei esses objetos de fundo apenas para isso, ou plano de fundo em objetos. Eu também me certifiquei de que eu poderia andar no bloco bem aqui. Certo, então vamos continuar. Como vamos, em primeiro lugar, ter certeza de que a câmera não sai dos limites. Bem, você já sabe que precisamos adicionar um colisor de polígono. Então, vamos adicionar ao colisor polígono de fundo 2D. Deixe-me consertar isso rapidinho. Então vamos editar o polígono. Lá vai você. Coloque a borda aqui e a borda apareça. Um colega de borda. E uma ponta aqui em baixo. Vamos salvar que abrirá a câmera virtual. E onde está o confinado? Há um confinamento bem aqui. Vamos arrastá-lo, salvar isso, e lá vai você. Agora temos um combinador. Então, se o nosso jogador arcos, então nós esquecemos de ter certeza de que esta camada de polígono está na camada de fundo e ele não interage com o jogador. Novamente, executamos o código e podemos ver que a câmera não sai mais dos limites, mas o jogador ainda pode se afastar de nossa cena. Então, como é que vamos resolver isto? Bem, vamos precisar criar uma maneira para o jogador saber onde os limites que ele pode andar sobre r. Então vamos abrir o script e o script do player precisará de um par de variáveis. Então vamos precisar de um vetor privado 3 porque precisamos da posição da borda inferior esquerda da tela. E também precisaremos de uma borda superior direita. Então, borda superior direita. Certo, então agora teremos ambas as bordas do mapa disponíveis para o jogador. Como é que vamos conseguir isso? Então, precisaremos ter acesso ao mapa de mosaico em que estamos trabalhando. Então, para acessar o mapa de mosaico, precisaremos estar usando o mecanismo Unity. Mapas de blocos de pontos. Lá vamos nós. Vamos guardar isso. Agora. A próxima coisa que precisamos fazer é criar uma variável aqui, que será um campo serializado para fazer referência ao mapa de mosaico. E vamos chamá-lo de mapa de azulejos. Para manter tudo muito simples. Talvez vamos manter o mapa de azulejos assim, salvar isso. E agora precisamos ter certeza de que atribuímos o mapa de mosaico certo. Então vamos precisar dos antecedentes para o nosso jogador. Então, de volta ao Unity, espere por essas compilações criptográficas. Vai ter com o jogador. E onde está o guião? Lá vai você. Temos um mapa de azulejos. Arraste o fundo, e aqui, guarde isso de volta no nosso script. Então, o que vamos fazer? Bem, em primeiro lugar, precisamos das bordas. Como vamos conseguir as bordas? Depois de inicializarmos o nosso jogador aqui, vamos em frente e chamar a borda inferior esquerda. E vai ser o mapa de azulejos ponto limites locais que os homens. Então deixe-me voltar e tentar isso mais uma vez para que possamos ler o ponto mínimo da caixa. Isto é sempre igual ao centro estendido. Então isso nos dará os limites mais baixos. É no canto inferior esquerdo. Agora vamos tentar a borda superior direita, e vai ser os limites locais do mapa de mosaico. Você adivinhou no máximo, e este é o ponto máximo da caixa. Ok, então agora temos a borda superior, a borda inferior, e podemos usá-los para determinar onde o jogador pode andar. Faremos isso na atualização aqui. Então, vamos em primeiro lugar, acessar o transporte da posição do jogador. E vamos usar um método que é chamado deixe-me apenas criar o novo vetor 3. Então é aqui que o jogador será capaz de andar. Mas como vamos nos certificar de que a posição do jogador nunca sai dos limites? Então, na atualização, acompanhamos a posição do jogador. Então, enquanto ele anda por aí, digamos, e notamos que sua posição está na beira de onde podemos andar. Queremos ter certeza de que ele nunca poderá exceder este ponto aqui, ou este ponto aqui ou ali em cima. Então, como vamos fazer isso? Há um método muito bacana que é chamado de braçadeira de ponto Math. E você pode ver o que ele faz. Ele retorna um flutuador. E um flutuador é o resultado entre o valor mínimo e o máximo. Então grampo dá um valor entre o mínimo dado e o máximo dado. Então o que podemos fazer é garantir que a posição do jogador nunca exceda uma determinada variável apertada, que será do mínimo ao máximo. E você pode ler mais sobre grampo e como ele funciona. Então este é o valor que fornecemos. Vai ser a posição do jogador. O mínimo será a borda inferior esquerda, e o máximo será a borda superior direita. Então vamos em frente e tentar implementar isso em nosso jogo. Então, primeiro de tudo, porque isso vai ser muito longas filas, vamos apertar Enter e começar a escrever aqui. Então, porque estamos tomando nossa posição de transformação de jogadores, é um vetor três como aprendemos porque estamos trabalhando nos eixos x, y e z. Então a primeira coisa que precisamos fazer é apertar a posição de transformação do jogador. E vamos ver como podemos escrever matemática depois do grampo. Você pode ver que precisamos escrever primeiro de tudo f ponto grampo e, em seguida, adicionar os valores. Então vamos escrever matemático F ponto grampo, e vamos abrir os parênteses. Qual é o valor que queremos fornecer? Vai ser a posição de transformação ponto x. E o que são, qual é o valor mínimo vai ser a borda inferior esquerda ponto x. E qual é o valor máximo vai ser a borda superior direita, o x. Lá vamos nós e precisamos adicionar Uma vírgula aqui. Agora, a próxima coisa a fazer é continuar com a posição y e z. E vai fazer parte do seu desafio. Então seu desafio é terminar o resto dos grampos. Aperte a posição do jogador no y e também no zíper. Portanto, este é um desafio bastante fácil. Pausa o vídeo agora mesmo. Se você quiser, você pode ler mais sobre grampos e cães da unidade e ir para o desafio. Ok, bem-vindo de volta. Então, eu vou apenas ir em frente e duplicar isso duas vezes. Vou remover a última vírgula. E em vez de posição ponto x, eu vou usar a posição ponto Y e em vez de posição x perto de deposição ponto z. E é claro que precisamos mudar isso aqui também. Mas y e o Z, ou Z, ou seja lá o que você chama, certifique-se de salvar tudo isso. E se, deixe-me apenas colocar isso de volta aqui, a maneira que eu fiz isso é usando tab shift para desvirar, mas isso parece mais organizado do que se nós colocar tudo em uma única linha e tivesse uma linha muito longa. Certo, então com isso feito, vamos executar nosso jogo e ver se isso funciona. Então vamos salvar tudo isso, executar o jogo. E agora, enquanto o nosso jogador caminha, verá que quando ele chegar ao limite, lá vai você. Ele não pode mais andar por lá, mas ainda há um pequeno problema que estamos usando. Então, como você pode ver, o jogador pode sair dos limites um pouco. E isso não é muito legal, especialmente quando ele está lá embaixo. Queremos uma maneira de garantir que nosso jogador ainda esteja aparecendo em nossa janela de jogo. Então, a maneira como fazemos isso, eu posso parar nosso jogo de volta em nosso código aqui e começar onde dissemos a borda inferior esquerda e a borda inferior direita. Vamos acrescentar algo a isto. Então não vai ser apenas o limite superior, quero dizer, 40 borda inferior esquerda ou o limite inferior. Vamos aumentá-la só por um pouquinho. Então eu vou criar um novo vetor 3, e vamos apenas adicionar 0.500.5 f e 0 F no set. E faremos o mesmo. Deixe-me copiar isso e colocá-lo aqui. Então, lá vai você. Vamos guardar isso. Então, o que acontece agora com, a fim de atribuir a borda superior direita levará o mapa de mosaico para limite máximo local. Pegamos o limite superior e diminuímos um pouco. E isso aqui deve ser menos e menos. Então diminuímos um pouco para que o jogador não atinja a borda real. Ele atinge uma borda aqui em cima que é apenas um pouco para baixo. Ok, então agora podemos ir em frente e executar o nosso código e ver o que acontece. Assim, enquanto o nosso jogador caminha, ele deve começar. Oh, lá vai você. Então você pode ver que o jogador pára antes de ele realmente passar. E por que ele estava passando? Você pode ver que é porque a posição está aqui. Então este é o centro da posição. Então agora esta pequena distância aqui é o 0.5 que adicionamos com o vetor a isso. Acerte isso na borda inferior. E lá vai você. Deixe-me voltar ao jogador contra jogador, jogador e posição. Lá vai você. Então você pode ver que o jogador ainda está mostrando. Talvez precisemos adicionar um pouco mais aqui. Vamos tentar o topo. E se formos para o topo, sim, lá vai você. Acho que precisamos adicionar um pouco ao topo e ao fundo. Então tente consertar isso. Talvez faça isso 0,8 por aqui 0,8. Vamos guardar isso. Tente isso novamente no R1, mova nosso jogador para a borda. Você pode ver que é o mesmo para baixo. Precisa de um pouco mais para o topo. Sim. Acho que o topo é bom o suficiente. Talvez façamos este. Vou parar o vídeo agora mesmo. E espero que você tente adicionar suas próprias bordas no próximo vídeo, vamos criar um gerenciador de níveis e aprender sobre métodos no Unity. Então, vemo-nos lá. Certifique-se de confirmar suas alterações. 28. Criando um segundo nível: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos criar um segundo mapa de arquivos. Então, como você pode ver aqui, nós criamos este mapa, nós adicionamos a grade, nós adicionamos uma área, saída e assim por diante e assim por diante. Agora, eu não vou fazer tudo na sua frente porque os passos que vamos fazer são extremamente básicos e não há nada de novo para aprender. O que você precisa fazer é antes de tudo, você precisará adicionar o sprite da montanha que eu lhe dei. Você precisará configurá-lo para 32 ou isso depende de seus sprites. Você precisará se certificar de que o modo sprite é múltiplo. Você precisará aplicar isso e certificar-se de que o modo de filtro é ponto mais filtro. E então você precisará entrar no Sprite Editor. Você vai precisar cortar tudo isso. E se você estiver usando o mesmo mapa de mosaico que eu, você precisa usar. Acho que 32 por 32 é a forma como os corta. Então, quando você tiver tudo cortado, você precisará adicioná-los à sua paleta de azulejos aqui mesmo. Você precisará criar uma nova paleta de azulejos e adicionar os mosaicos inteiros e aqui. Então, com isso feito, a próxima coisa que você precisa fazer, e este é um passo muito importante, é que você precisa ir para a visita na cidade também. Guarde isso. Sim. Mantenha-se seguro. Você precisará pré-fabricar a grade. E por que isso? Porque se você vir aqui, a grade tem o plano de fundo, os objetos, o plano de fundo em objetos. E temos os colisadores de polígonos e os colisadores de mapa de mosaico e assim por diante. E não queremos continuar a fazer isso. Mas a única diferença é que você precisa descompactar a grade completamente. Então, o que eu quero dizer com isso? Digamos que estamos nas montanhas 2, queremos começar nosso jogo. Mas quando adicionamos a grade, por exemplo, se entrarmos nos Prefabs e adicionarmos nossa grade, você notará que é a mesma que a anterior. E sempre que quisermos fazer alterações, haverá um pequeno problema. Nós não queremos isso. A maneira como descompactamos é clicar com o botão direito do mouse na grade, entramos nos Prefabs e selecionamos descompactar completamente. Então agora poderemos fazer alterações nesta grade sem ter nenhum tipo de erros. E este é um passo muito importante. Portanto, certifique-se de clicar com o botão direito do mouse Então agora não é mais. Então você clique com o botão direito do mouse, vá para pré-fabricar e descompacte completamente a grade e, em seguida, você será capaz de continuar trabalhando. Novamente. Outra coisa que precisamos ter certeza é o, quando você clicar no fundo, você vai notar que as bordas aqui será tipo de todo o lugar. Então você precisará ir para o renderizador de mapa de mosaico, quero dizer, o mapa de mosaico e você precisará comprimir o salto do mapa de mosaico depois de terminar de colocar todas as suas pilhas. Então é basicamente isso. Você também precisará alterar o colisor de polígono, certifique-se de que ele está configurado corretamente. Você vai precisar adicionar o confinado bem aqui. Então arraste e o fundo vai mais tarde encontrar uma maneira de fazer isso mais facilmente. Guarde isso. E é basicamente isso. Isso é tudo que você precisa fazer para criar um segundo mapa de pilha na grade no pacote completamente e começar a pintar. Então, com tudo isso dito, eu vou te dar um desafio, pois isso é criar uma segunda ou uma segunda cena ou o que quer que você queira chamar. Portanto, crie os ativos de mosaico a partir das sprites, prefab a grade, crie uma nova cena na grade na hierarquia e descompacte a grade completamente, para que isso não crie seu nível. Então pausar o vídeo agora mesmo, vá criar seu nível. E eu vou vê-lo no próximo vídeo onde vamos criar um gerente de nível. 29. Gerente de nível: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, nós vamos estar criando um gerente de níveis vai aprender o que significa quando queremos delegar scripts, onde queremos criar scripts diferentes para diferentes coisas a fazer. Nós também aprenderemos sobre métodos e métodos públicos e como scripts podem se comunicar uns com os outros, mesmo que eles tenham variáveis privadas. Então não vamos perder mais tempo e vamos começar. Oh, ok. Então, atualmente, podemos ver que quando executamos nosso jogo, tudo está funcionando bem e podemos passar de um nível para o outro. Agora temos um pequeno problema que a câmera não está seguindo o jogador quando ele vai para o próximo nível. Mas consertaremos isso mais tarde quando aprendermos “while loops”. Por enquanto, vamos nos concentrar na criação de um gerente de níveis. Por que precisamos de um gerente de nível? Bem, quando se trata de programação e criação de jogos, especificamente, você sempre precisa encontrar uma maneira de delegar seu código. Então não queremos que o nosso jogador fique sempre a par de tudo. Queremos que nosso jogador tenha que lidar com encontrar os limites do nosso nível. Então o que vamos fazer é criar um gerente de níveis que irá fazer isso para o jogador e , em seguida, enviar as informações das bordas para o jogador usando métodos. Então, vamos primeiro criar um gerenciador de níveis. Assim, na hierarquia irá criar um objeto de jogo vazio. Vamos chamá-lo de gerente de nível, e vamos redefinir sua posição 2 000 000 em todos os lados. Em seguida, vamos criar um script. Assim, nos scripts irá clicar com o botão direito do mouse criar um script C-sharp. Vai ser chamado de nível. E sem espaços, o gerente aperte Enter. Aguarde por estas compilações criptográficas. Vamos adicioná-lo ao gerente de nível e vamos em frente e fazer preferir. Mas antes que esqueçamos, porque precisaremos do gerente de nível e de todos os nossos scripts. Agora, vamos abrir o roteiro e ver o que vamos fazer aqui. Assim, o script será responsável por determinar quais são as bordas do nosso nível. Então, primeiro, é claro, precisaremos adicionar um mapa de arquivos. Então, isso nos dará a capacidade de acessar mapas de mosaico. Em seguida, vamos precisar em torno das mesmas variáveis que temos e do jogador. Então vamos copiar estes e colá-los aqui no jogador. E deixe-me apenas mover isso aqui, Enter, e lá vai você. Então agora temos uma referência para o mapa de mosaico, a borda inferior esquerda e a borda superior direita. Mas você pode estar me dizendo agora, como vamos nos comunicar entre eles? Ou mesmo antes disso, deixe-me apenas remover o fardo do jogador. E eu acabei de pegá-los usando o Controle X. E eu vou colá-los aqui e o começo. Então, sempre que o gerenciador de níveis começa, ele obtém o mapa de mosaico que temos aqui e define os limites dele. Ok, ótimo, então agora que terminamos com isso, você pode estar me perguntando, bem, Michael, como o Player vai saber qual é a borda inferior esquerda e qual é a borda superior direita. Então, mesmo que tenhamos este privado e nós temos estes aqui também privados, como eles vão se comunicar? Bem, eles se comunicarão usando algo chamado método. Deixe-me explicar quais são os métodos. Assim, assim como uma variável, os métodos também têm uma estrutura semelhante. Em primeiro lugar, temos o tipo de acesso. É a forma como a acessibilidade do nosso método. Então, podemos acessá-lo apenas pelo mesmo script? Isso significa que é um privado. Se pudermos acessá-lo a partir de vários scripts, isso significa que será um público. Em seguida, temos um tipo de retorno. Então, assim como temos um tipo de variável, nós também temos para um método, um tipo de retorno, e ele pode retornar uma string e inteiro, um float. Então, quando terminarmos de calcular as coisas em nosso método, podemos devolvê-las. Em seguida, temos o nome do nosso método. E assim como nós nomeamos nossas variáveis, nós também temos uma maneira de nomear nossos métodos sempre fazendo cada palavra do método ser maiúscula. Então adicionando velocidade, o a e o v são capitalizados e nós também sempre nomear nossos métodos pelo que eles fazem. Então, adicionando velocidade à velocidade. E, finalmente, uma ferramenta muito poderosa de métodos é que podemos enviar parâmetros e para eles. Então, se nós, por exemplo, precisamos ter duas coisas que precisam ser calculadas, podemos enviá-las nos parâmetros e no outro script, podemos calculá-las. Veremos como tudo isso funciona quando fizermos um exemplo. Então, de volta ao nosso script aqui, podemos realmente remover o mapa de mosaico porque não vamos precisar dele no player. E o uso da biblioteca para salvar um pouco de memória. Então vamos criar um método e o jogador que seremos capazes de aceitar a borda inferior esquerda e a borda superior direita e configurá-los. Então vamos criar um público porque queremos chamá-lo do gerente de nível. Vamos torná-lo nulo. E então vamos chamá-lo de limite definido. E este limite definido vai levar dois argumentos. O primeiro vai ser um vetor três, e vai ser a parte inferior esquerda ou a borda inferior para definir. E outro que vai ser a borda superior para definir. Então, agora que temos essas variáveis sendo passadas, podemos acessar a borda inferior esquerda do nosso jogador ou a variável no jogador aqui em cima, este. E nós vamos defini-la como a borda inferior para definir. Faremos o mesmo com a borda superior. A borda superior direita é igual à borda superior para definir. Ótima. Então, como você pode ver, nós temos um método público que não tem retorno e é chamado limite definido. Observe como definido, como o S e V estão ambos em maiúsculas. Temos dois argumentos que estão a ser enviados para aqui. E estamos definindo nossas variáveis com base nos argumentos ou nos parâmetros que estão sendo enviados para ele. Agora, o próximo passo é realmente chamar esse método no gerenciador de níveis. E eu vou te dar um desafio para fazer isso. Então você precisará chamar o método definir limites. Primeiro de tudo, vá para o script do gerenciador de níveis, acesse a instância do script do player, acesse o método, defina limites e forneça os parâmetros. Então, sempre que finalmente definir nossas bordas, usando o gerenciador de níveis terá que chamar o jogador método e dizer-lhe que estas são bordas. Aqui você vai usando os parâmetros. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você se saiu com isso? Então, primeiro de tudo, vamos acessar a instância do jogador. Então vamos chamar o limite definido. E aqui precisaremos passar os dois parâmetros. Então, o primeiro parâmetro será a borda inferior esquerda. O segundo parâmetro vai ser a borda superior direita, e vamos salvar isso. Então agora o que acontece é quando executamos o jogo e o gerente de nível começa, ele leva a borda inferior ou calcula a borda inferior. Ele calcula a borda superior, ele chama o jogador, ele acessa a instância, ele define o limite, que é o método aqui. Então ele chama o método aqui e define ambos os parâmetros. Então, o que acontece, então, quando chamamos esse método, saltamos para o script player. Nós colocamos a borda inferior esquerda, a borda superior direita, e agora podemos usá-los aqui. E esta é apenas uma pequena linha que são usadas para se certificar de que tudo estava funcionando corretamente, salvará tudo isso. E agora vamos para o nosso jogo e ver se isso realmente funciona. Então gerente de nível deve ter um lugar para nós adicionar o fundo. Vamos colocá-la aqui, vamos salvá-la. Vamos ver se isso funciona. Então nós executamos o jogo e lá vai você. Sim, lá vai você. Podemos descer aqui. Agora, vamos para a segunda cena, as montanhas. Vamos adicionar um gerente de nível aqui também. E vamos dar o fundo. Eu disse isso para salvar isso. Se executarmos o jogo. Vamos ver se conseguimos sair. Não, lá vai você. Nós não atravessamos tudo. Quão legal é isso? E uma outra coisa muito importante a saber é que se salvarmos essas variáveis no jogador e o jogador não for destruído, os valores do mapa não serão alterados. Portanto, é muito importante ter um gerente de nível separado do jogador. Agora, a última coisa que precisamos testar é se formos de cidade para, para as montanhas, vejamos. Quando formos. Sim, podemos ver que não temos a câmera seguindo o jogador. Vamos corrigir isso, como eu disse, usando o loop while quando aprendermos. Mas, como você pode ver, não podemos cruzar as bordas, nem na borda superior, nem na esquerda, e nem na parte inferior. Então, com isso feito, espero que tenha gostado. No próximo vídeo, vamos aprender sobre o Canvas in Unity. Te vejo então. Certifique-se de confirmar suas alterações. 30. Tela no Unity: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos criar uma imagem de desvanecimento. Como podem ver agora, temos algo chamado tela com uma imagem dentro dela. E quando batemos em jogo, você vai notar que nós lentamente desaparecer e agora não é perfeito, mas pelo menos ele de alguma forma funciona. Não se preocupe com isso. Estaremos consertando tudo isso. Então não vamos perder mais tempo e vamos começar. Oh, então atualmente, quando executamos nosso jogo, quando vamos para o próximo nível, você pode ver que ele é instantâneo e é muito rápido. E honestamente, não queremos que seja assim. Não queremos que seja tão rápido. O que queremos é ter algum tipo de desvanecimento para dentro e para fora. E a maneira como fazemos isso é criando uma imagem, uma grande imagem preta aqui que cobrirá todo o espaço do nosso nível ou todo o espaço da câmera. E quando fizermos a transição para o próximo nível, queremos que essa imagem apareça e desapareça. Então vamos começar. Primeiro de tudo, precisamos criar uma imagem. Então, se clicar com o botão direito do mouse na hierarquia aqui, vá para UI. Podemos ir em frente e criar uma imagem, apertar Enter. Como podem ver, criamos algo chamado tela e imagem. E você notará que esta imagem é uma enorme. E se clicarmos duas vezes na tela, você notará que a tela é ainda maior. Então você pode estar pensando, bem, por que eles são tão grandes? Mas não se engane. Na verdade, eles são extremamente pequenos. Porque se clicarmos na imagem e a movermos, você verá que ela é muito pequena em comparação com o nosso jogador. Enquanto o jogador e nós olhamos na cena é extremamente pequeno em comparação com a imagem. Então o que dá, por que temos essa escala estranha entre a tela e o jogo? Esta é uma maneira de a unidade saber como as coisas funcionam. Eles preferiram manter tudo na interface do usuário grande para que possamos facilmente controlá-lo. Enquanto isso, afeta a câmera e tudo na frente dela. Então não se preocupe com isso. Agora o que vamos fazer é usar esta imagem e esticá-la para que ela cubra toda a tela. Você pode ver que quanto maior o fazemos, maior e mais espaço ele preenche. Agora podemos levar isso para as bordas, mas deixe-me ensiná-lo de uma maneira muito legal. Se olharmos bem aqui à direita, há algo chamado ponto de ancoragem. Então, se clicarmos aqui, você pode ver que da maneira que podemos ancorá-lo, você vai notar essas linhas finas brancas. E eu não vou me aprofundar muito nisso porque se eu quiser explicar tudo na interface do usuário, ele pode fazer um curso sobre si mesmo, mas vamos aprender o básico se mantivermos pressionado Alt. E podemos ver que tudo muda quando pressionamos Alt, clicamos na borda inferior direita. Você vai ver que ele imediatamente passa por cima de tudo. Então esta é uma maneira muito legal e bacana de fazer as coisas. Próximo passo, vamos clicar na imagem e vamos mudar a cor. Então aqui você pode ver que temos a cor da imagem. Vamos clicar na cor e vamos torná-la completamente preta. Ok, bom. Então agora temos uma imagem preta na frente da nossa tela que não vai embora e vai precisar, é claro, mudar isso. Como é que vamos fazer isto? Então a primeira coisa primeiro é que precisamos criar uma animação que levará isso de completamente preto para completamente transparente. Então, como vamos fazer isso? Se entrarmos na imagem, adicione um componente. Podemos adicionar um grupo de tela. E o que este grupo de lonas faz é que você vai notar que ele tem um alfa. E aqui, agora precisamos desligar o bloco, reformular e desligar o interactable. E você pode ver que o alfa está em um. Mas se arrastá-lo para baixo, você pode ver que em 0 é completamente transparente e que um, é completamente não-transparente. Acho que é assim que se chama. Então vamos manipular isso usando animações, a fim de desvanecê-lo e, em seguida, desvanecê-lo. Então vamos começar. Vamos criar uma animação. Então, vamos clicar com o botão direito do mouse sobre a imagem ou vai realmente enquanto a animação, nós perdê-lo. Não se preocupe. Vamos para a animação na guia de animação. E vamos apenas, deixe-me apenas mover isso, mas configurá-lo aqui ao lado de ganhar, selecionar a imagem, criar uma animação. E onde devemos ir com isso irá para as animações, desvanecimento da imagem e arquivo OVA lado. E vamos chamar isso de sublinhado de desvanecimento. E assim isso acaba com o desvanecimento. E vamos criar outra animação. Então vamos entrar aqui, criar um novo clipe. E este é o sublinhado de desvanecimento parado. Vamos guardar isso. Então agora temos duas animações. Como funciona o desvanecimento e como podemos realmente gravá-lo aqui? Então, em primeiro lugar, o desvanecimento começa, vai de um a 0. Então começamos em uma. Quando chegamos à marca de 1 segundo, queríamos ir para 0. Então, se clicarmos aqui, podemos apertar este pequeno botão vermelho de gravação. Podemos ir até o fim e podemos definir isto como 0. E agora o que acontece se executarmos o nosso jogo? Você pode ver que ele vai de completamente preto para completamente transparente. Então clicamos de volta neste botão vermelho e ele desaparece. Em seguida, vamos para o fim do desvanecimento e vamos fazer o oposto completo. Então, começamos em 0, precisamos apertar o botão de gravação. Vamos para a marca de 1 segundo e vamos definir para um. Guarde isso, remova o botão de gravação. E agora, quando batermos no jogo, você vai notar que ele vai de completamente transparente para completamente preto. Ok, ótimo. Agora que configuramos nossas animações, a próxima coisa óbvia a fazer é ir em frente e configurar o animador corretamente. E por isso, vou te dar um desafio. E seu desafio será fazer fé na imagem. Então vá para o animador e disse O destino começar como o estado padrão, em seguida, criar uma transição para desaparecer e ele não deve ter nenhum tempo de saída e uma duração de transição de 0. Crie um parâmetro de gatilho chamado Fade start e defina-o como a condição na transição. Pause o vídeo agora mesmo e vá preparar o animador. Ok, bem-vindo de volta. Como conseguiu tudo isso? Então, primeiro de tudo, precisaremos definir o início da fé, pois a camada padrão ou o estado padrão criarão uma transição para o desvanecimento. E vamos remover qualquer tempo de saída e vamos definir a duração para 0. Vamos guardar isso. Então precisaremos criar um parâmetro e será um gatilho. E isso vai ser chamado de começar a desvanecer, pressione Enter. E com a condição de começarmos a desaparecer quando o fizermos, vamos para o próximo nível. Então, agora que temos tudo configurado, o próximo passo é realmente acionar esse parâmetro, e vamos fazer isso no próximo vídeo usando algo muito, muito importante chamado corotinas. Te vejo então. 31. Coroutines 101: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, suspendemos o tempo até carregarmos a próxima cena. Então, como você pode ver, não temos mais imagens pretas piscando, apenas uma imagem preta que desaparece. Então, quando vamos para o próximo nível, ele desaparece e depois desaparece de volta para transparente. Quão legal é isso? Deixe-me mostrar-lhe como isso realmente acontece enquanto olha para a cena. Lá vai você. Você pode ver quando vamos para o próximo nível aqui que leva apenas um pouco de tempo. Lá vai você. Já não é instantâneo. Espera um segundo. É uma maneira muito legal de fazer as coisas, então não vamos perder mais tempo. Vamos começar. Oh, ok, então o que vamos fazer é acessar o animador na imagem e vamos começar as animações a partir daí. Mas queremos um guião. Então, quais scripts devem estar controlando tudo isso? Eu acho que deve ser o script em uma tela porque nós vamos usar este Canvas para muitas coisas. E antes que eu me esqueça, algo que precisamos fazer e que está aqui no scaler de tela. Precisamos escalar com o tamanho da tela. E vamos defini-la para 1920 por 1080. Então este é o ATP e essas telas regulares costumam se encaixar exatamente com a gente aqui para que ele não mude de forma à medida que avançamos. Vamos continuar. Agora vamos criar um novo script aqui. Então, um novo script C-sharp vai ser o gerenciador de menu. Vamos esperar que ele compile e nós vamos dá-lo para a tela. Então, agora na tela, vamos fechar tudo isso. Temos o gerenciador de menu, não o gerente de nível. Vamos em frente e abrir isso. Agora. A primeira coisa que precisamos é de uma referência à imagem. Então vamos criar um campo serializado do tipo imagem. Mas, infelizmente, não podemos usar a imagem a menos que dissemos o motor Unity dot UI. Então agora teremos a capacidade de criar uma variável de imagem. Espero que não tenha sido muito rápido. A próxima coisa que vamos fazer é chamar esta imagem D ao destino aqui. Agora, o que vamos fazer é realmente acessar o componente que está na imagem. E por isso, vou te dar um desafio. E seu desafio será conseguir o componente animador. Então, crie um método fade image atua como o componente animador nessa imagem. Defina o gatilho para começar a desaparecer. E dou-te umas mãos se quiseres fazer o desafio sozinho e não precisares de ajuda. Pause o vídeo agora mesmo e vá para o desafio. Se não. Ok, bem-vindo de volta. Então vamos em frente e criar o método aqui. Não acho que precisaremos começar e atualizar por agora, só por agora, se precisarmos deles, vamos criá-los. Então vamos criar uma imagem de desvanecimento do vazio público. E aqui, já temos acesso à imagem do destino. Vamos pegar o componente, que é o animador. E esse é o componente da imagem para desaparecer. E então vamos definir o gatilho. Agora. Vamos adicionar um pequeno ponto aqui e vamos definir o gatilho. E porque precisamos de uma referência de string, sempre precisamos copiá-la. Então escolha a imagem, vá para o animador, comece a desaparecer. Copie isso. Voltamos aqui, colamos e salvamos. Então agora o próximo desafio é, onde devemos chamar essa imagem de fé? Bem, para onde queremos chamá-lo? Eu acho que o melhor lugar para chamá-lo é na saída da área bem, é o lugar que precisamos chamá-lo. Então, na saída da área, quando o jogador entra, dissemos que a transição, começamos a carregar a próxima cena. Mas antes de fazermos isso, vamos em frente e chamar a instância do ponto do gerenciador de menu. Ok, nós não temos uma instância, então vamos em frente e criar uma instância. Então, como você vai ser uma estática pública se você ainda se lembrar de como criamos instâncias. Então gerenciador de menu de tipo estático público, e ele vai ser a instância, instância. É assim que se escreve a instância. E porque apagámos o início. Vamos criar o começo de novo. Veja como foi fácil. Instância é igual a isso. E não acho que precisaremos fazer um padrão de singleton só por enquanto. Mais tarde, talvez precisemos. Então agora de volta na área, saída irá definir a instância que destino MH. Então agora, sempre que o nosso jogador entrar no colisor e nós certificamo-nos de que é um jogador. Nós adicionamos o nome da transição. Começamos a desvanecer a imagem e depois recarregamos a próxima cena. Vamos guardar isso de volta no nosso jogo. Vamos correr e há um pequeno problema que você vai notar que nossa imagem desaparece, mas ele continua falhando e você pode vê-lo bem aqui. Qual é o problema? Se clicarmos nele? Se formos para a animação real aqui no pensamento do destino, você vai notar que tem um loop de tempo. Então, vamos apenas desmarcar esta caixa, clique em Padrão e desmarque esta caixa também. Então, agora guardamos isso. Fazemos o nosso jogo e desaparecemos apenas uma vez. Ótima. Então, agora, se andarmos, há um problema que é que não temos. Se clicarmos aqui e precisarmos começar a desaparecer, mas não temos uma referência à imagem. Isso é porque no nível, onde está na tela? Ok, na tela, lá vai você. Não atribuímos a imagem certa. Agora, quando o salvarmos, agora, quando corremos, tudo deve estar funcionando bem. Então, desvanecemo-nos. Nós caminhamos para o próximo nível, e lá vai você. Saltamos imediatamente para o próximo nível. Qual é o problema aqui? Bem, de novo, não temos a pré-fabricada a tela. Então eu estou levando você passo a passo muito duro com isso, mas não se preocupe. É uma coisa boa aprender com os nossos erros aqui. Enquanto nossa pré-fabricada, nossa tela, lá vamos nós, guardamos isso. Vamos tentar isto mais uma vez. E eles ainda são um pequeno truque que não está funcionando. Mas agora desvanecemo-nos. Nós andamos, e lá vai você. Desvanecemo-nos para o próximo nível. Mas ainda há um pequeno problema se você notou que estamos nos movendo instantaneamente para o próximo nível, estamos vendo até mesmo o desvanecimento e nosso ganho. Então, quando pudermos, o que quero dizer é que desaparecemos. Queremos ter apenas um segundo só para que tudo se desvaneça novamente. E isso não está acontecendo porque estamos surtando imediatamente. Como podemos consertar isso? Queremos uma maneira de esperar apenas alguns segundos, talvez um segundo, apenas para desaparecer e depois desaparecer no próximo nível, como magia. A maneira como fazemos isso é usar coisas frias. Então, o que é uma qualidade? É um método que pode suspender a execução de instruções até que uma determinada condição seja atendida. Estas suspensões são conhecidas como rendimento. E o nosso exemplo será suspender o tempo até carregarmos a próxima cena para ver a nossa, esta deve ser a nossa imagem a desaparecer. Corrotinas. Basta ter um momento para ler sobre eles. Você pode revistá-los. Os cães da unidade, eu recomendo que eles são um pouco complicados quando você começar a fazê-los, mas eu vou tentar levá-lo passo a passo e tornar tudo mais fácil. Então não vamos falar de corotinas. Vamos em frente e criá-los. Então, onde devemos criá-los? Deve ser onde está? Na área, saia. Área, saída. Em vez de carregar imediatamente a cena quando o jogador bate, vamos usar um Goldie. Então, uma co-rotina é do tipo enumerador ocular. Então eu enumerador, vamos chamar a cena de carga Goldstein. E aqui vamos fazer algumas coisas. Assim que entrarmos o que você pode ver que temos uma linha rabiscada porque precisamos ter um valor de retorno sobre ela. Então o que vamos fazer é ceder, como eu disse, precisamos nos render, teremos que voltar novo. E temos algumas condições que podemos usar. Um deles é esperar quatro segundos. E agora o que podemos fazer é dar-lhe uma certa quantidade de tempo que ele precisa esperar antes de fazer tudo abaixo e o que ele quer fazer? Bem, ele quer ir em frente e usar o gerente de cena para carregar a cena. E para chamar essa co-rotina, vamos dizer iniciar co-rotina, carregar, visto co-rotina. Então, o que acontece agora? Começamos, o nosso jogador entra, certificamo-nos de que é um jogador. Definimos a transição, desvanecemos a imagem, começamos um resfriado. Tudo isso acontece quase ao mesmo tempo. Mas quando começamos um namoro, é aqui que a magia acontece. Entramos no método. É um enumerador de olhos. Está à espera de um retorno de rendimento. Então começa com esta linha. Ele lê retorno de rendimento, novo, espere quatro segundos. Então ele sabe que ele tem que esperar 1 segundo antes de executar todo o resto. Vamos ver que em ação, se você estiver um pouco confuso, pause o vídeo, olhe para isso, certifique-se de entender completamente o que está acontecendo. E vamos em frente e testar isso. Então, executamos nosso jogo. Vamos ver o animador. Se andarmos, desaparecemos. Desvanecemo-nos no próximo nível. Quão legal é isso? Então eu espero que você tenha gostado se você ainda está confuso sobre co-rotina, Eu recomendo esse sapato novamente. Dê uma olhada no código para você, depois expire. Pense no que está acontecendo. Entenda como o rendimento funciona, como estamos esperando um segundo antes de carregar a cena e como a imagem está desaparecendo e desvanecendo. Daqui usando nosso resfriado, espero que goste. E é, este é um vídeo muito longo, mas é muito importante. Vejo-te no próximo. 32. Seção 5: criando o interface: Bem-vindo de volta meus colegas desenvolvedores de jogos neste longo e longo vídeo. Mas muito importante, como você pode ver, criamos alguns elementos de interface do usuário. Adicionamos uma caixa de texto aqui, que é um painel. Nós adicionamos uma pequena caixa de nome aqui, e nós também adicionamos um pequeno personagem, que é um curandeiro que vai ser capaz de falar conosco. Então, ei Hitler, o que você tem para nós? Então não vamos perder mais tempo. Este vídeo é muito longo, e nós também criamos nossa própria fonte se você notou, e vamos começar. Oh, ok, então criar diálogo, a primeira coisa que precisamos fazer como realmente precisamos ter um MPC para conversar. Então vamos adicionar um dos MPC que eu forneci a vocês. E novamente, todos eles estão disponíveis em arte de jogo aberto para que você se encontre assistindo sempre que quiser. Então este é o cisne do orgulho dos RPGs. Encontrei-o. Talvez você possa procurá-lo e encontrá-lo você mesmo. E vamos em frente e usar o, você pode usar o que quiser. Vamos usar o curandeiro. Então, nesses primatas, isso é mudança aqui para o meio ambiente. Então, o ambiente, e vamos adicionar estes dois ao ambiente. E criaremos outro arquivo para os personagens, e adicionaremos o demônio ambulante e o curandeiro. Vamos chamar o curandeiro. Então, aqui, vamos clicar duas vezes sobre o curandeiro. Lá vai você. Ele não é uma excelente qualidade, mas ele vai fazer por enquanto. Vamos configurá-lo múltiplo, vai torná-lo sem filtro. Espero que isso faça a manteiga de bunda. Então, como você pode ver, vamos em frente e dividi-lo por tamanho de célula. Não, isso é muito grande. Então vamos fazer 32, cortá-la. Talvez precisemos fazer 32 em ambos os lados. E não, vamos ver o quão grande realmente tem que ser. Então tem que ser 32 por 37. Então vamos tentar isso. 32 com uma largura de 32, uma altura de 37. Corte isso. E acho que precisamos ter um pouco de, digamos assim, ou quer saber, podemos cortar esse orgulho que precisamos. Então vamos precisar apenas desta. Então deixe-me deletar o existente. E eu vou cortar este único sprite que precisamos. E lá vai você, aplicar e só vai precisar deste sprite. Não vamos ter o jogador andando por aí. E vamos começar, enquanto o curandeiro que está parado aí você vai, aqui está ele. Então vamos arrastá-lo aqui para o nosso jogo que definiu a camada de classificação como o jogador. E vamos colocá-lo como um. Então, não está funcionando. Por que é isso? Oh, está funcionando, mas ele é tão minúsculo. Então vamos fazer quatro por quatro. E eu acho que este é um tamanho bom o suficiente. Então agora temos o curandeiro bem aqui. E a próxima coisa que vamos fazer é mudar isso para a loja ou como devemos chamá-lo de aqui. Ok, aqui estamos nós. Então, lá vai você. Este é o nosso curandeiro. Não sei quem eu fiz isso capitalizou. Aí está, curandeiro. Então, agora, quando executamos nosso jogo, vamos em direção ao nosso curandeiro. Ei, curandeiro. E precisamos ter certeza de que podemos realmente renderizar. Não se preocupe com isso. O que é isso? O 0, o jogador é o 0. Então vamos fazer menos um. Certo, ótimo, vamos guardar isso. A próxima coisa que vamos fazer é ir para o Canvas. Então clique duas vezes na tela abrirá a tela, o cisne. Então nós só vemos o que está acontecendo, o componente do campus na tela. E vamos em frente e clique com o botão direito do mouse e criar painel de interface do usuário. Então, onde está, o painel? Lá vai você. Então este painel é onde vamos colocar o nosso elemento UI e é onde teremos todo o nosso diálogo. Agora você vai notar que é transparente. Então, se clicarmos na cor e aumentarmos a transparência ao máximo, então vamos escolher este painel, apertar D ou a ferramenta rec aqui em cima e vamos torná-la um pouco menor. Então é sobre onde nosso diálogo vai acontecer, talvez até um pouco menor. Então lá vai você. Agora, não queremos que seja completamente branco. Queremos ter alguns elementos nele. Então vamos para o arquivo onde eu forneci alguns elementos de interface do usuário. E vamos para o onde devemos colocá-los na pasta sprites criar. Você é. Elementos. E vamos arrastar o painel por enquanto. E talvez eu acho que eu vou apenas, vamos apenas arrastar a fonte agora também. Então vamos arrastar a fonte para o elemento UI, e talvez este também. Mantenha-o aqui. Usaremos mais tarde. Então você vê, nós temos esta imagem e este será o nosso painel. E eu vou em frente. Se clicarmos no painel, você verá que temos uma imagem fonte simplesmente substituí-la por este banner. Então lá vai você. Aqui está o nosso painel. Parece muito mais agradável. Podemos configurá-lo para o seu tamanho nativo. Você pode ver como ele deve estar olhando, mas vamos esticá-lo para o nosso conteúdo. Podemos fazer muitas coisas aqui para mudar um pouco. Talvez possamos mudar o alvo porque não precisamos que isso aconteça. O reelenco significa que se podemos ou não clicar nele. Tudo bem com esse nenhum. Agora, o próximo passo é adicionar uma caixa de texto nele para onde podemos um texto. Em primeiro lugar, vamos nomear este painel de diálogo. Painel de diálogo. E vamos clicar com o botão direito. Vá para a interface do usuário e use o texto, mas não apenas o normal, o texto Mesh Pro. E ele vai pedir-lhe para importar centrals, tinha importado essenciais. E você verá o porquê em um minuto. Estamos usando o texto Mesh Pro. Estamos usando porque ele nos permite adicionar nossa própria fonte. E se olharmos na fonte aqui, esta é a fonte medieval e provavelmente deveríamos tê-la extraído. Então vamos fazer isso. Vamos removê-lo daqui. E dentro da festa medieval, vamos extrair a pasta. Ok. Lá vai você. E onde conseguimos nossos telefones é de um site chamado duff font.com. E você pode ir e verificar muitas, muitas fontes. Então o que eu fiz foi escrever medieval e consegui todas essas opções e escolhi usar a festa medieval. Vamos ver se isso parece bom. Então, de volta ao nosso jogo, e aqui temos o nosso texto Mesh Pro. Vamos em frente e expandi-lo para todos os lados. Temos que fazer isso manualmente e 0. Claro, se você não quiser encolhê-lo assim, você pode realmente segurar Alt, pressionar em um dos lados. E lá vai você. Você pode ver que podemos torná-lo maior e menor. Então mantenha pressionado Alt e expandido. Certo, então como vamos criar nossa própria fonte? Se entrarmos na janela texto Mesh Pro fonte ativo criador, ele nos dá a opção de adicionar uma fonte. Então vamos para a festa medieval, menos arrastá-lo para as fontes aqui e elementos de interface do usuário. E agora vamos arrastá-lo aqui para estes arquivos fonte fonte gerados a partir do Atlas. Guarde isso. Perguntar-nos-á onde queremos salvá-la? Vamos salvá-lo dentro da fonte de elementos de interface do usuário. Guarde isso. Então agora podemos arrastar o medieval para cá. E nós podemos escrever, por exemplo, “Ei, ei lá, como você está? E vamos mudar a cor para preto. E lá você pode ver que nós temos, hey, como você está? Vamos ajustá-lo um pouco, talvez torná-lo ousado. Podemos aumentar o tamanho da fonte se não parecer muito bom. E podemos até mudar a distância entre cada letra. Então temos a opção de espaçamento. Veja que podemos separá-los ou podemos separar apenas a distância entre as palavras, que é muito legal e tudo isso porque estamos usando o texto Mesh Pro. Então talvez eu acho que eu vou apenas fazê-lo um pouco ou nós podemos torná-lo tamanho automático. Assim, quanto mais palavras tivermos menos espaço, podemos mudar de transbordamento para todas as coisas diferentes. Podemos colocá-los no meio e ter certeza que está no meio, vertical e horizontalmente e assim por diante. Podemos até adicionar alguma iluminação e a largura da vangloria são todas, todas essas são opções que você pode tentar descobrir, ver o que acontece. Então, se adicionarmos um underlay, você pode ver que temos um pouco de enchimento. Podemos aumentar os underlays. Lá vai você. Você pode ver que é muito, muito mais claro ou podemos mudá-lo para vermelho, mas não queremos isso. Vamos mantê-lo como preto, completamente preto. Ok, ótimo. Isso foi feito? Deixe-me apenas redefinir isso e talvez apenas talvez 0 ou vai manter o tamanho automático. Vamos aumentá-lo. Você pode ver que podemos definir o mínimo e máximo. Então, esta é apenas uma visão geral rápida de como o texto Mesh Pro funciona e assim por diante. Ok, ótimo. Então, a próxima coisa a fazer agora que criamos nosso painel de diálogo é que queremos ir em frente e definir um nome. Então, sempre que falamos com alguém, sabemos que ele tem um certo nome. E isso vai fazer parte do seu desafio. Seu desafio é criar uma caixa de nomes. Portanto, crie uma caixa menor ou uma caixa de nome menor à direita sobre a caixa de diálogo grande. Vou lhe dar uma pequena dica de como você pode fazer isso rapidamente. Simplesmente duplicado e defina o nome do texto corretamente. Então você precisará duplicar o painel, torná-lo um pouco menor acima do painel traseiro. E é isso. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, ok, bem-vindo de volta. Então vamos entrar no texto e aqui está uma pequena introdução ou uma pequena lição sobre como as âncoras funcionam. Vou te mostrar porque não sei como explicar isso em palavras. Então, se escolhermos o painel de diálogo, você pode ver que quando nós torná-lo menor, que detecta vai para fora. Isso porque a âncora do texto está no meio. Se ancoramos no canto superior direito, você notará que agora, quando tornarmos nossa caixa de diálogo menor, as palavras permanecem dentro. Portanto, este é um dos principais aspectos do uso de âncoras e é muito importante entender como elas operam. Vamos fazer isso um pouco maior do lado e do lado. E também podemos ir em frente e expandir o texto para que ele preencha todo o quadrado. Mas como podem ver, já não vemos o lado. Então acho que mantê-la aqui será bom o suficiente para nós. Então vamos preencher o espaço em branco com o nosso texto. E lá vai você. Acho que isso é bom o suficiente. Então agora, a fim de criar o painel de nomes, irá duplicar o painel. Vamos chamá-lo de painel de nomes, painel principal. E vamos torná-lo muito menor. Então deixe-me mover isso um pouco para que você possa ver o texto no painel de nomes também deve ser menor. E vamos colocá-lo aqui em cima. Vamos fazer isso, bem menor. Então este é o tamanho que deveria ser. E o texto também deve ser muito, muito menor. Portanto, este é o benefício de usar o Piloto Automático, mas claramente o texto não é mais legível. Então deixe-me apenas, apenas um pouco e nós vamos mudar do aspecto 16 por 9 para o 1920 vezes 1080. E se você não tiver, você pode adicioná-lo usando este plus. Então, 1080. Vamos acertar isso. E agora você pode ver que nosso imposto é um pouco mais claro. Então deixe-me diminuir o zoom e ajustar tudo. E vai ser seu desafio configurá-lo do jeito que você quer. Então, deixe-me ajustar a posição e aí vai você. É tudo o que precisamos fazer. Como você pode ver, criamos um painel de nomes, um painel de diálogo. Eles ajustam o tamanho do tributado em conformidade. Nós também criamos nossa própria fonte. Tudo o que precisamos fazer agora é cometer nossas mudanças. Então eu gosto de mostrar isso de vez em quando. Então vamos encenar tudo. Nós vamos chamar isso, adicionou uma caixa de diálogo, confirmar as alterações. Vamos olhar para o nosso ramo mestre, e lá vai você. Quão incrível é isso? Finalmente, estamos vendo nosso jogo sendo construído na frente de nossos olhos. Olha o quanto já cobrimos. Então, no próximo vídeo, nós vamos realmente estar controlando o que acontece dentro dessas duas caixas. Te vejo então. 33. Controlador de diálogo (arres: Bem-vindos de volta meus colegas desenvolvedores de jogos. E neste vídeo vamos aprender sobre arrays. Vamos aprender sobre como usar o texto Mesh Pro. E eu também cometi um grande erro. Então, antes de continuarmos, este é o código. Certifique-se de que quando eu digo que é apenas o texto Mesh pro, que você usa texto muito pro GUI. Então, com tudo isso dito, isso não é perder mais tempo. E vamos começar. Certo, então o que queremos é criar uma maneira de controlar nosso diálogo. Então, para isso, eu acho que só é apropriado se nós criarmos um controlador de diálogo. Então vamos apenas adicionar o painel de nomes ao painel de diálogo. Portanto, só temos um painel de diálogo. E vamos para o onde está, onde r, isso é fechar tudo porque está começando a ficar confuso e fazer o mesmo, mas maior. E isso um pouco menor, basta configurar tudo corretamente. Lá vamos nós. Vamos clicar com o botão direito do mouse e ir em frente e criar um script C-sharp chamado controlador de diálogo. E eu acho que nós temos que começar a criar, ok, o que aconteceu? Comece a criar pastas aqui. Então vamos criar uma coluna de pasta, o gerenciamento de nível, e vamos definir a área de saída, área, entrar. Por favor, pare de fazer essa área. Informe o gerenciador de níveis. Vamos lá. Visual Studio. Abra. Sim. Agora eu sei suas táticas e o que mais devemos escolher? Talvez o controlador da câmara. Eu não tenho certeza do que também adicionar, mas por enquanto vamos apenas mantê-lo para que continuemos organizando nossos arquivos. Vamos arrastar o controlador de diálogo na tela. Então agora temos um gerenciador de menu e um controlador de diálogo. E vamos abrir este guião. Primeiro de tudo, porque vamos manipular e controlar elementos de interface do usuário, vamos precisar do mecanismo Unity wi, e agora precisamos de um par de referências. Então a primeira referência vai ser um campo serializado, vai ser um texto Mesh Pro. Mas, infelizmente, não podemos usar textos muito Pro a menos que usemos o texto do motor Unity, o BI Pro. E agora podemos começar a usar malha de texto por linha. E vai haver em primeiro lugar, o texto do diálogo e o texto do nome. Então, porque temos dois textos, se você lembrar o texto de diálogo que está aqui, e o texto de nome aqui em cima. A próxima coisa que precisamos fazer é criar um campo serializado que irá referenciar diálogo e a caixa de nome para que possamos ativá-los e desativá-los. São objetos de jogo. Portanto, a caixa de diálogo e a caixa de nome. E, finalmente, o que precisamos fazer é criar um campo serializado, que vai ser uma string, e vai ser as linhas de diálogo. Agora você pode estar pensando, bem, normalmente linhas de diálogo são, como o nome indica, muitas linhas, não é uma linha de diálogo. São muitas linhas. Então, o que podemos fazer? Vamos em frente e duplicar fazer 15 desses. Nós também temos que renomeá-los para 1, 2, 3, etc Mas e se você quiser adicionar outro? Então vamos entrar no controlador de diálogo, depois outro. Mas agora você pode ver o quão pesado isso vai ser e não agradável em tudo. Mas felizmente, C-sharp tem algo para nós, e são as matrizes. Então, o que são arrays? Arrays permitem armazenar vários objetos do mesmo tipo em uma única variável. O que eu quero dizer com isso? Não é tecnicamente uma única variável, mas uma lista de variáveis que é chamada de matriz. Então nós criamos um inteiro, que é, nós já cobrimos. É um tipo de variável, mas em vez de apenas nomeá-lo inteiro, nós adicionamos esses dois colchetes aqui. Então isso diz C Sharp que estamos usando isso como uma matriz de inteiros. Temos o nome, temos a mesma convenção de nomenclatura como variáveis, e podemos adicionar dentro deles esses valores. Como é que isto funciona? Primeiro de tudo, temos o tipo, temos o nome, e temos os valores que damos a essa matriz. E uma coisa a ter em mente, como indexamos essas matrizes, vamos de 0 a 1, para 2 a 3, 0 é sempre o primeiro índice e é muito importante que você se lembre dessa etapa exata. O primeiro valor na matriz é sempre, sempre 0. Então, o quatro está no 0, posição 6 no primeiro ou no um. 112713 e assim por diante e assim por diante. Podemos criar arrays tão grandes quanto queremos, é claro, até alguns limites. Então, como vamos implementar arrays em nosso código? Em vez de criar 17 linhas de diálogo objetos de valor, vamos criar um único, que vai ser um array. Portanto, agora temos uma série de diálogos e estamos a usá-los para criar o nosso sistema de diálogo. E também precisamos manter o controle da sentença atual. Então vamos criar um, outro campo serializado. Não precisamos criar isso como um campo serializado, mas só queremos ter certeza de que tudo está funcionando. Então, vai ser a sentença atual nos EUA. Espero que seja assim que se escreve a frase. Ok, bom. Então agora temos tudo pronto. O próximo passo é ir para o texto da caixa de diálogo no ponto inicial txt. E vai ser igual ao diálogo, as linhas LOC. E, na verdade, vamos mudar isso de linhas de biolab para frases de diálogo. Clique duas vezes aqui, Control R e K frases de diálogo. Eu acho que ele se encaixa pequeno porque estamos usando a frase atual. Então frase atual, lá vai você. Então, quando começarmos, qualquer frase atual que enviamos será o diálogo ou os textos que aparecem no texto do diálogo. Tão ótimo, vamos testar isso emitindo um desafio em algumas linhas. Assim, em algumas linhas de diálogo para o controlador de diálogo, jogue com a frase atual e certifique-se de que as linhas são exibidas na caixa de diálogo. Então eu vou dar a vocês a oportunidade de explorar como as matrizes ficam no inspetor sozinho. Isto é muito divertido e excitante e talvez um pouco assustador para alguns de vocês. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, ok, bem-vindo de volta. Espero que você tenha feito o desafio e eu espero que você perceba que você precisava adicionar os textos aqui mesmo. Então, a primeira coisa que fazemos é ir para o Canvas. Vamos clicar nesta fechadura bem aqui. E isso nos permitirá escolher objeto que quisermos sem alterar o inspetor. Uma ferramenta muito útil, qual eu deveria ter falado antes de fazermos o desafio. Espero que não estejas zangado. De qualquer forma, texto de diálogo, nós arrastamos o texto para baixo do diálogo. Lá vai você. Não me permite, porque então, qual é o nome? Caixa de diálogo? Talvez devesse ser o texto Mesh pro GUI. Sim, acho que é assim que deveria ter sido desde o início. Agora, quando não queríamos provar isso, desculpe, deixe-me corrigir meus erros rapidamente. E agora, lá vai você. Podemos adicionar a caixa de diálogo. Agora, eu percebo como isso deve ter sido. Deves ter ficado muito zangado comigo. Sinto muito por isso. Novamente, adicionamos o nome. Estou suando. Então painel de diálogo e o painel de nome. Ótima. Agora vamos em frente e adicionar algumas frases. Então você pode ver agora que começamos com 0 frases. Vamos adicionar um. Ei, ali. Sou o Jimmy. Eu venho do submundo. Eu costumava matar muitos camponeses, como você na minha época. Mas agora sou um bom tipo de demônio, se isso existe. Então vamos escolher a frase atual e, como você pode ver, os elementos começam em 0. Então, vamos escolher elemento para um. Guarde isso. Vamos executar o nosso jogo. E você pode ver que eu sou Jimmy. Muito agradável. Vamos tentar a frase atual para mudá-la. Vamos tentar usar o elemento 3. Guarde isso, dirija o nosso jogo. E eu costumava matar muitos camponeses como você nos meus dias. Então isso parece bom o suficiente. Se você acha que a fonte é talvez um pouco fora, eu recomendo que você vá encontrar outra fonte ou você pode brincar com o texto Malha prop. Então, novamente, resolvendo por não usar o nome correto da variável aqui, deveria ter sido barra invertida pro GUI. Se você encontrou isso e mudou por conta própria, então eu só quero te dar uma mão de aplausos. Você é incrível, então espero que goste. No próximo vídeo, estaremos lendo várias linhas. Então, vejo-te depois e cometo as minhas alterações. 34. Propriedades de matriz: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, vamos controlar nosso diálogo de texto usando nosso botão mais à esquerda. Então eu sou Jimmy, vindo do submundo... são usados para matar muitos camponeses como você nos tempos, nos meus tempos. Mas agora sou um bom tipo de demónios. E quando acertamos a última frase, lá vai você. Você pode ver que o diálogo de texto e desaparece por conta própria. Então não vamos perder mais tempo e vamos começar. Oh, caso. Então agora precisamos de uma maneira de controlar nosso diálogo e ir de frase em frase sem realmente ter que colocá-los manualmente todas as vezes aqui. Mas quando pressionamos um certo botão, seja na tela ou algum tipo de botão que criamos aqui. Então vamos começar. Primeiro de tudo, vamos para o nosso controlador de diálogo. E aqui na atualização, vamos nos certificar de que atualizamos isso a cada quadro. Então, antes de fazermos qualquer coisa, precisamos ter certeza de que a caixa de diálogo está aberta na hierarquia e na maneira como a verificamos, e aqui está. Você pode ver que ele está ativo na hierarquia, que significa que define se o objeto do jogo está ativo e enganado. E se você esqueceu qual é a hierarquia lá, é, o nome está aqui em cima. Então, se é ativo ou ativo e hierarquia, então vamos ver o que queremos fazer. O que queremos fazer? Queremos ter uma certa opinião. Então, como eu disse, podemos usar isso ou podemos criar um botão aqui se você não quiser, apenas continue. Então, se pressionarmos um determinado botão, então vamos usar ponto de entrada obter botão para cima. E se olharmos atentamente para retornos true, o primeiro quadro que o usuário libera o botão virtual. Por que estamos usando este? Se olharmos para trás aqui na documentação do Unity, você pode ver que é verdade e o botão virtual está ativo. Não queremos que o jogador comece a clicar em algo. E se usarmos o botão para baixo, por exemplo, isso não funcionará. Usar o get abotoado é uma maneira muito melhor, especialmente quando se trata de lidar com o diálogo, porque ele vai evitar às vezes o jogador pular através deles ou bater muito. De qualquer forma, vamos continuar. Qual botão devemos usar? Bem, podemos entrar na entrada bem aqui. Então, no Editar Configurações do Projeto, Gerenciador de Entrada, mas temos opções? Opções, temos o fogo. Então fogo um é com o mouse 0, e eu acho que é o botão esquerdo do mouse, que eu acredito ser a melhor opção para usar. Então vamos copiar, disparar um, fechar isso aqui, colar aqui. E agora o que queremos fazer? Então a primeira coisa que queremos fazer é pegar nossa sentença atual e queremos aumentá-la em um. Como é que fazemos isso? Podemos dizer que a sentença atual se torna a sentença atual mais um. Então o que acontece é digamos que estamos, sentença atual é 0. Tomamos 0, adicionamos a um, e então damos esse valor inteiro e o definimos dentro da frase atual. Então isso se torna um. Então, novamente, quando pressionamos novamente, vai se tornar a frase atual é um. 12, nós damos para a sentença atual. E, em seguida, tomamos o texto de diálogo dot txt. E vai ser o mesmo que aqui, que é igual às frases de diálogo na frase atual. Mas antes de seguirmos em frente, isso é um pouco complicado para escrever e não muito profissional. E outra maneira de escrever isso é removendo toda essa linha e, em seguida, simplesmente adicionando a vantagem por trás dela. Então isso funcionará da mesma maneira. Mas mesmo há uma maneira muito melhor de fazer isso. E sempre que queremos adicionar um 1, 2, qualquer número inteiro, podemos simplesmente escrever sentença atual mais, mais. E isso irá adicionar um à frase atual sempre que dispararmos ou clicarmos no botão, disparar um. E sempre que a caixa de diálogo estiver ativa na hierarquia. E vamos guardar isso. Vamos testar isso em Unity. Então, quando definimos a frase atual para ser 0, vamos pressionar Enter. Vamos ver o que acontece. Então, ei, aí. Sou o Jimmy. Eu venho do submundo. Eu costumava matar muitos camponeses como você nos meus dias. Agora, eu sou um bom tipo de demônio. Muito agradável. Mas o que está acontecendo aqui? Há algum tipo de erro. E você percebe que ele aumenta cada vez que clicamos no botão esquerdo do mouse ou no mouse 0. E está nos dizendo que o índice está fora de alcance. índice estava fora dos limites da matriz. Hmm. Interessante, Vamos clicar duas vezes e ver onde está o problema. Então lá vai você. O problema está aqui. Estamos tentando adicionar a frase atual. Se olharmos aqui, a frase atual é 20, enquanto temos apenas um a cinco elementos, então estamos fora dos limites da nossa matriz. E este é um erro muito comum para acontecer, especialmente quando estamos usando array. Então sempre precisamos encontrar uma maneira de ter certeza de que nunca saímos dos limites da matriz. Como é que vamos fazer isto? Bem, eu vou te dar um desafio e você vai corrigi-lo porque eu estou muito cansado. Então crie uma instrução if para verificar se a frase atual ou o número atual excedeu o comprimento da matriz, se tiver, desligue a caixa de diálogo, eu vou dar-lhe uma pequena dica. Use o comprimento de pontos de frases de diálogo para obter todo o comprimento de nossas frases de diálogo e usar o ponto de caixa de diálogo definido ativo como falso. Então, com todas essas dicas, pausar o vídeo agora mesmo. Este é talvez apenas um desafio um pouco mais difícil para você, porque você precisa comparar o tamanho do comprimento das sentenças de diálogo com a frase atual. Podemos usar esses tamanhos menores e maiores. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, ok, bem-vindo de volta. Então aqui estamos aumentando o tamanho ou o número de nossa sentença atual. Então, antes de realmente dá-lo aqui, precisamos criar a declaração if. E saber onde definir a declaração se também fazia parte do desafio. Então, se a frase atual é maior ou igual ao comprimento das frases de diálogo ponto. Então o que vamos fazer é simplesmente ir para a caixa de diálogo e vamos defini-la como false. Ou desculpe, eu quis dizer caixa de diálogo Lot set active to false. Então, o que acontece aqui? Digamos que cheguemos à frase atual número 5 ou qualquer uma antes. Então digamos que cheguemos a quatro. E a duração da frase de diálogo é cinco porque temos 01234. Então, se a frase atual for maior ou igual ao comprimento da frase de diálogo, vamos definir o diálogo ativo como falso. E como isso ajuda? Bem, se ele está definido como falso, em seguida, uma atualização, não podemos mais inserir esta condição se porque ele não está mais ativo e a hierarquia, Vamos testar isso e ver se ele funciona. Mas antes de fazermos isso, também precisamos adicionar uma outra declaração para evitar o erro. Então, vamos apenas mover isso para cima mantendo pressionada a tecla Alt e usando as teclas de seta e pressionando tab. Então está no mesmo recuo. Vamos salvar tudo isso. Voltaremos para a Unidade. Vamos rodar o código. Então agora, ei lá, essa frase atual está em um. Você pode manter o controle aqui mesmo no inspetor. Sou o Jimmy. Eu venho do submundo. Eu costumava matar muitos camponeses, mas agora sou um bom tipo de demônios. Então, agora, quando vamos para o quinto ou a sentença atual torna-se cinco. Lá vai você. Em primeiro lugar, não há erro. E em segundo lugar, a caixa de diálogo simplesmente desaparece. E mesmo que continuemos pressionando a frase atual é sempre cinco. Então, evitamos um grande erro com apenas algumas linhas de código. Espero que tenha gostado do desafio. Espero que não tenha sido muito difícil. E vejo-te no próximo vídeo. 35. Como ativar o diálogo na área: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós realmente aprimoramos nosso sistema para que nós não apenas batamos em todos os lugares e tudo deve funcionar. Nós só queremos que o diálogo seja ativado quando estamos nas proximidades do nosso NPC ou do MPC que pode realmente falar conosco. Então, agora, se estamos perto do MPC e tivemos o botão de fogo, podemos ver que hey, podemos ativar a caixa de diálogo. Atingimos várias vezes. Lá vai você. Você pode ver que nós ativamos. Mas se estamos de pé do lado de fora, você pode ver que não há impressão da caixa de diálogo. Não podemos abri-la. Novamente. Lá você pode ver dentro dos gatilhos em nós podemos, lá fora, nós podemos. Então não vamos perder mais tempo e vamos começar. Ok, então nós já criamos uma espécie de sistema de diálogo, mas nós não queremos que ele esteja sempre aqui e sempre seja controlado em todos os lugares, onde quer que nosso edema e andem. Só queremos acioná-lo quando estivermos perto de um dos MPC com quem podemos conversar. Então, para isso, vamos para o curandeiro, vamos mudá-lo para curandeiro NPC. Vamos salvar isso e vamos adicionar colisores de caixa de ferramentas a ele. Então o primeiro colisor de caixa vai ser do tamanho do nosso MPC aqui. Este é 40 jogador colidir com ele e não andar sobre ele. E vamos criar um segundo colisor de caixa. E este colisor de caixa representará a zona onde podemos falar com o nosso MPC. Então vamos criar uma espécie de grande zona aqui para nosso demônio se encaixar. Então agora você pode ver que nesta música, sempre que entrarmos nela, seremos capazes de iniciar um diálogo e precisamos ter certeza de que é um gatilho para que possamos usar o empreendedor e o, seu jogador, aquele que você estão usando pode realmente entrar na zona. Então eu mudei isso para MPC. Ok, obrigado. A próxima coisa que queremos fazer é criar um manipulador de script ou um manipulador de diálogo para adicioná-lo ao nosso MPC que lida com todo o diálogo para este NPC específico. Então, para fazer isso, vamos clicar com o botão direito do mouse e aqui vamos criar uma pasta. Vai ser para o diálogo. Vamos adicionar o script controlador de diálogo nele. E nós vamos em frente e criar um novo script C-sharp. O manipulador de diálogos. Aguarde isso compilar. E tudo bem, então vamos adicioná-lo ao curandeiro MPC. Lá vai você. Você pode ver que temos a caixa colliders sprite renderer, o segundo collider caixa, eo manipulador de diálogo. Vamos abrir isto. Agora. O que vamos fazer aqui? Então é aqui que vamos manter o controle de todos os nossos diálogos e então vamos entrar em contato com o controlador de diálogo onde z. Então vamos abrir o script. Entraremos em contato com o controlador de diálogo e informaremos quais frases de diálogo precisamos usar. Então, para isso, precisaremos de acesso ao controlador de diálogo. E para isso vamos precisar de um exemplo. Então eu vou te dar um desafio. E esse desafio é criar uma instância. Então crie uma instância do controlador de diálogo de classe. Se você já sabe como fazer isso, pause o vídeo agora e vá para o desafio. Se não, vou te dar algumas dicas. Você precisará criar uma variável estática pública do tipo e controlador de diálogo chamada instância e, em seguida, definir a instância para isso. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então já fizemos isso antes. É bem básico e fácil. É um controlador de diálogo estático público chamado em posição. E, em seguida, começar, vamos definir a instância para ser igual a true. Lá vai você. Então quero dizer isso, quero dizer verdade, eu quis dizer isso. Ok, ótimo. Então, o próximo passo é que vamos entrar no manipulador e criar duas variáveis aqui. Então a primeira variável vai ser uma string pública, e vai ser as frases. E o segundo é um booleano privado que pode ativar a caixa. Então, por que estamos criando a caixa de ativação de lata? O que eu quero dizer com esta variável, esta variável booleana é que sempre que estamos dentro da zona de gatilho no MPC onde Z nos disse caminho. Sempre que estivermos dentro da zona de gatilho, podemos ativar a caixa. Se estivermos fora dela, podemos ativar a caixa. Então vamos criar dois métodos aqui, que são o On Trigger, Enter 2D. E o braço aciona a saída 2D. Então, como esses dois métodos funcionam? O Trigger Enter, já o usamos na saída da área, mas você ainda não usou a saída do gatilho. Então você já sabe que quando entramos em uma determinada área, o Ativado entra, se ativa. Mas quando sairmos dessa área de gatilho, a saída On Trigger se ativa. Deixe-me mostrar-lhe como isso funciona. Então, dentro do empresário Enter, vamos verificar se a colisão é comparada com a camada. E mesmo que esta seja uma referência de string, eu tenho certeza que é assim que você escreve player. E aqui vamos dizer que pode ativar caixa é igual a true. Então, se estamos dentro da área de gatilho aqui para o MPC, então podemos abrir a caixa. Mas se estivermos lá fora, vamos copiar isto. Então, se sairmos da área de gatilho, podemos ativar a caixa será falsa. Então só quando estivermos dentro da zona de disparo podemos iniciar e ativar a caixa de diálogo? E finalmente, uma atualização criará uma condição se pudermos ativar a caixa. E lembre-se que este é o sinal para. E assim, se pudermos ativar a caixa e o ponto de entrada obter o botão para baixo no fogo um. Então vamos simplesmente ir em frente e imprimir o log de pontos de depuração. Podemos ativar a caixa de diálogo. Então nós geralmente usamos a impressão para depurar coisas, mas imprimir é algo que realmente imprime para o console enquanto o log de pontos de depuração é apenas para desenvolver o jogo e não imprime realmente algo. Portanto, os logs são melhores para desenvolvedores e uma maneira muito mais profissional de fazer as coisas. Então vamos guardar isso. Vamos voltar ao nosso jogo e depois vamos executar o nosso código. Então agora podemos clicar no botão, veremos que não temos nada aqui. Mas quando entramos na zona, você pode ver que o fogo é desconhecido. Por que é isso? Até agora um é desconhecido. O problema é abaixar a chave. Certo, então vamos abaixar o botão. Meu Deus, abaixe o botão. E isso agora deve funcionar. Então, novamente, executamos o código, executamos nosso jogo. E agora, se formos ao nosso MPC, quando tivemos o fogo, lá vai você. Podemos ativar a caixa de diálogo. Você pode ver quantas vezes ele está sendo chamado aqui à direita, porque eu tive o colapso removido o colapso. Você verá que cada um deles é impresso em uma única linha com o colapso. Estão todos concatenados. Se eu me mudar, você vai notar que se eu apertar a tecla não há impressão fora de comportamento. Pode ativar o botão. Quando estivermos lá dentro. Lá vai você. Podemos ativar o botão. Agora, no próximo vídeo, vamos tornar isso muito mais sofisticado e realmente implementar isso em nosso sistema de diálogo. Isso foi feito? Espero que goste e vejo-te no próximo vídeo. 36. Manual de diálogo: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, como você vê, se tivéssemos o botão do mouse, nada acontece. Se formos até nosso curandeiro e apertarmos o botão do mouse, ei, eu sou curandeiro. Sou um daemon chamado Jimmy. Vim buscar a tua alma. Por que você é tão mau Jimmy? Você parece ser legal. E essa é a conversa toda. Então não vamos perder mais tempo e vamos começar. Ok, então agora que configuramos tudo, é hora de realmente começar a ativar a caixa de diálogo baseado se estamos dentro ou fora da música. Então a primeira coisa que precisamos fazer é ir para o controlador de diálogo e criar um método aqui que irá ativar o diálogo. Então vai ser um vazio público. Ativar diálogo. Então, isto vai iniciar o diálogo e vamos passar-lhe um argumento. E este argumento vai ser a matriz de string das novas frases a serem usadas. Então, obviamente, isso será tratado no manipulador de diálogo, mas vamos lidar com isso mais tarde, explicar mais. Assim, as frases de diálogo, as que estão no controlador de diálogo, serão iguais às novas frases a serem usadas. E porque estamos começando a conversa, a frase atual será igual a 0. Então esta é a variável que mantém o controle de qual frase estamos. Vai ser 0. E o texto do ponto de diálogo será igual às frases de diálogo, as frases na frase atual. Então isso é apenas para iniciar tudo. E, finalmente, precisamos também ativar a caixa de diálogo. Portanto, a caixa de diálogo ponto definido ativo como verdadeiro. E é claro que vamos ser desativados aqui no nosso jogador. Então, onde está? Onde está nosso painel de diálogo Canvas? E vamos desligar isso. E no Canvas este é o painel de diálogo. Ele será ativado mais tarde. Então guarde tudo isso. E agora vou te dar um desafio. E seu desafio é ativar o diálogo. Portanto, ative a caixa de diálogo a partir do script manipulador de diálogo. Use a instância do controlador de diálogo e certifique-se de passar essas frases para o método através do parâmetro. E já estabelecemos onde no manipulador de diálogo você deve chamar o método controlador de diálogo para ativar o diálogo. Então, com isso dito, pausar o vídeo agora e ir fazer o desafio. Ok, bem-vindo de volta. Espero que saiba como fazer isso. Então, no manipulador de diálogo, quando pressionamos o fogo uma tecla e podemos ativar a caixa, vamos chamar o controlador de diálogo instância ponto ponto ativar diálogo. E vamos passar-lhe as sentenças que temos. Então as frases guardam isso. Agora vamos voltar para a Unidade e até mesmo nós podemos ir para o controlador de diálogo e vamos colocar esta carta em privado. Mas, por enquanto, enquanto isso, vou definir isto para privado. Podemos até ter dito a frase atual ao privado, mas só queremos ter certeza de que tudo está funcionando. Então, no curandeiro NPC, temos as frases que queremos adicionar. Então lá vai você. Podemos dizer: “Ei, quero dizer curandeiro”. Então isso é uma conversa Sou um daemon chamado ou sabe o quê? Sou um daemon chamado. O Jimmy. Vim buscar a tua alma. Por que você é tão mau Jimmy? Você parece ser legal. Ok, então esta é uma pequena conversa entre Jimmy e o curandeiro. Então o que vai acontecer agora é que vamos executar o código. Então este é o script no manipulador de diálogo do NPC. E na tela devemos ver que, hey Jimmy, nós, tudo ainda é o mesmo. Mas quando caminhamos até o curandeiro, quando tínhamos a chave de fogo, lá está. Ei, eu sou um curandeiro. Ei, eu sou um daemon. Então você pode ver que ainda há um pequeno problema. Nós não estamos mudando. Estamos indo da sentença 0 para a primeira frase. Então, qual é o problema aqui? Bem, o problema. Que no manipulador de diálogo, estamos atualizando cada quadro, verificando se a caixa pode ser ativada e se estamos apertando o botão de fogo. Então o que está acontecendo é que esse método está sendo chamado toda vez. E o que isso faz é que vai em frente e ativa caixa de diálogo e novamente define a frase atual como 0. Por isso, temos de nos certificar de que o invocamos apenas uma vez. Como é que fazemos isso? Vamos adicionar outra condição aqui. Então, se a caixa está ativa e pressionamos a tecla de botão e o manipulador de diálogo. Então você vai notar que eu adicionei um ponto de exclamação. Eu digo-te o que é isso. E o manipulador de diálogo ou controlador de diálogo, instância de ponto, caixa de diálogo ponto. Então, a caixa de diálogo é, onde está? A caixa de diálogo é um campo serializado. Não podemos acessá-lo. Podemos fazer duas coisas aqui. Então podemos transformar isso em público e dar acesso a todos. Ou uma maneira muito mais sofisticada é seguir em frente e criar um booleano público. E o diálogo é ativo. E o que isso faz é que ele retornará, retorno ponto caixa de diálogo está ativo ou ativo na hierarquia. Então, agora, se a caixa de diálogo estiver ativa e hierarquia, isso será igual a true e retornará o valor. Então, se o controlador de diálogo ponto instância ponto é diálogo, é diálogo. Esta deveria ter sido talvez a caixa de diálogo ativa. Portanto, diálogo que pode alterar a caixa de diálogo de nome ativa. Aplique isso. Qual é o problema? A caixa de diálogo está ativa? Lá vai você. Mas e este pequeno ponto de exclamação? Então, qual é o ponto aqui? O que estamos realmente a fazer? Queremos ter certeza de que, se a caixa de diálogo já foi aberta, não queremos continuar chamando a caixa de diálogo de ativação. Então este pequeno ponto de exclamação nos diz que se a caixa de diálogo estiver ativa for verdadeira, o ponto de exclamação será revertido. A caixa de diálogo está ativa. Então, se toda esta frase for verdadeira, toda esta condição aqui é verdadeira adicionando um ponto de exclamação, nós transformamos isso em falso. Então, o que acontece aqui? Marcamos as caixas ativas. Tínhamos a chave de incêndio, a caixa de diálogo está ativa, mas por causa desse ponto de exclamação, isso torna toda essa condição falsa para que não ativamos a caixa de diálogo. Quão legal é isso? Então tome um pouco de tempo se você ainda está confuso, o que está acontecendo? Este ponto de exclamação, inversos descondicionados e misturar tudo cai ou torna tudo verdade. Então, com isso dito, vamos salvar isso. Voltaremos para a Unidade e tentaremos isso de novo. Então vamos rodar o código, vamos até o MPC, vamos acertar. E lá vai você. Sou um daemon chamado Jimmy. Vim buscar a tua alma. Por que você é tão mau Jimmy? Você parece ser legal e terminamos a conversa. Ok, ótimo. Mas se você notou que há algo errado acontecendo. Então, novamente, se eu for para o curandeiro, aperte a tecla tão alto que eu sou um daemon. Então, onde está o, hey, eu sou um curandeiro. Não está aparecendo. Isso porque se voltarmos ao nosso controlador de diálogo aqui, podemos ver que sempre que apertamos o botão, adicionamos imediatamente a frase atual. Então, como é que vamos resolver isto? Bem, é bastante fácil. Vamos apenas criar uma variável aqui que vai manter o controle se o diálogo acabou de ensinar. Então um diálogo booleano privado acabou de começar. E no diálogo ativar. E aqui estamos indo para o diálogo apenas iniciado é igual a verdadeiro, salvo isso. E sempre que apertássemos a chave de fogo, iríamos adicionar outra condição aqui. Então, se o diálogo acabou de começar, ou o que eu queria dizer é que se o diálogo não acabou de começar, então nós vamos adicionar um mais dois ele mais. Vamos simplesmente definir o diálogo que acabou de começar a falso. Ok, então vamos testar isso e eu vou explicar um pouco mais. Então agora fazemos o nosso jogo. Vamos até o curandeiro, iniciamos a conversa e, como podem ver, não pulamos a primeira linha, e depois continuamos com a nossa conversa. Então o que está acontecendo aqui é que nós criamos uma variável. E como podem ver, adicionei um ponto de exclamação. Então, se o diálogo acabou de começar, não entramos nessa condição. Nós definimos como false, e nós realmente iniciamos a primeira linha de código aqui porque nós adicionamos. Então o que estava acontecendo é que dissemos que o imposto de diálogo para ter a frase atual que era 0. Mas assim que apertamos o botão de fogo, novamente, temos uma vantagem atual e estamos alterando-o. Então isso nos permitirá, em primeiro lugar, se ele ainda não começou, então vamos adicionar um plus, plus. Mas se acabou de começar agora, não vamos aumentar a sentença atual. Espero que não tenha sido muito confuso. É só uma maneira de mitigar danos sempre que começamos uma conversa. Mas ainda há dois problemas aqui. A primeira é que quando formos até a nossa senhora aqui, se estivermos a falar com ela, ainda podemos ir embora. E como podem ver, estamos quase a falar com ela a partir de outro mapa. E isso é um grande não-não. Precisamos achar um jeito de impedir nosso demônio de se mover. A segunda é que estamos falando, mas não sabemos quem está dizendo: “ Ei, eu sou um demônio, pode estar congelado. O daemon ligou para o ginásio. Talvez ela seja chamada de academia. Não sabemos quem está falando, então precisamos adicionar um nome aqui, mas isso é para outro vídeo. Até lá, certifique-se de confirmar suas alterações. E vejo-te no próximo vídeo. 37. Segurando o movimento jogador: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo temos pensado, ou demônios algumas maneiras. Agora, quando formos falar com a bela curandeira, não podemos mais fugir dela e gritar do outro lado da tela. Então, a menos que terminemos a conversa, não temos como sair. Então, como podem ver, quando terminarmos a conversa, podemos sair e ir nadar e as águas. Então não vamos perder mais tempo e vamos começar. Certo, então como já abordamos em um vídeo anterior, queremos que nosso jogador pare de se mover sempre que estivermos conversando com o NPC porque isso são boas maneiras e nosso demônio Timmy precisa ter boas maneiras. Ele não tem boas habilidades de conversa, mas tem boas maneiras. Então, como vamos fazer isso? Vamos ter que encontrar uma maneira no jogador de ativar o movimento sempre que estamos conversando e estamos lidando com isso aqui e com a velocidade. Então, a maneira como paramos isso é emitindo um desafio para você, então você vai parar o jogador de se mover. Então crie uma variável booleana e declara um script, que será o movimento de ativação ou você pode chamá-lo do nome que quiser. Uma atualização. Verifique se a variável é verdadeira e vamos defini-la para uma velocidade de 0. Portanto, se a variável, o movimento de ativação for verdadeiro, a velocidade do jogador deve ser definida como 0. Senão simplesmente manterá a velocidade como está. Então pausar o vídeo agora mesmo. Aproveite o tempo para fazer este desafio. É muito importante e vejo-te daqui a pouco. Oh, ok, bem-vindo de volta. Então a primeira coisa que precisamos fazer como um movimento público de desativação booleana é igual a false. Vamos nos certificar de que começamos por ter o movimento de ativação falso. E aqui, quando colocamos os carros alegóricos para os eixos “get” horizontais e verticais, vamos verificar se o movimento de desativação é verdadeiro. Então vamos em frente e acessar o corpo rígido dos jogadores. Vamos acessar a velocidade nele. E, a fim de defini-lo como verdade, nós não vamos apenas dizer que é igual a 0. Nós vamos ter certeza de que nós dizemos que é um vetor dois ponto 0. Por que estamos usando isso em vez de apenas um 0? Porque você pode ver que a velocidade aqui, você pode ler que é um vetor, velocidade corporal muito rígida. E para defini-lo como 0, precisamos usar o fator para o 0, que é inicialmente apenas um vetor 0, F 0, F. Então, o que devemos fazer a seguir? Bem, precisamos adicionar outro caso e depois colocá-la aqui. Então, se o movimento do jogador desativar for verdadeiro, então a velocidade torna-se 0. Senão, nós apenas definimos como a velocidade normal. Então vamos testar isso e nosso ganho. Oh, nós realmente não ativamos isso. Então, a fim de ter certeza de que fazemos, precisamos ir para o manipulador do diálogo. Quero dizer, desculpe, os controladores de diálogo. Então aqui, o diálogo acabou de ser ativado e nós precisamos ir e para a instância do jogador ponto ponto ponto o movimento de ativação. E vamos defini-lo como verdadeiro. Agora, obviamente teria sido melhor fazer isso uma variável privada e criar um método para acessá-la. Mas para se mover mais rápido, usaremos a instância. Então diremos que no nosso jogo, executamos nosso jogo. Jimmy vai até o NPC, Ei, eu sou um demônio curador. E agora não podemos nos mover mais. Mesmo que paremos, a conversa precisará desativar os movimentos de desativação. Então agora podemos nos mover, mas assim que começamos a conversar, não podemos nos mover. Mas há um pequeno problema, que é que ainda podemos dar uma olhada. Agora, se você quiser, este é um recurso legal. Podemos ficar com ele, mas não queremos no nosso caso agora. Então eu vou mostrar-lhe um mini desafio para você parar a rotação do jogador enquanto estamos conversando. Portanto, este não é um desafio oficial. Tire um momento, pause o vídeo. Faça você mesmo. Acabou o tempo. Então vamos em frente. Se não estamos ativando o movimento, então podemos definir o animador. Então, porque a nossa viragem é feita aqui mesmo. Então, se o movimento é igual a um e assim por diante, estamos acessando o animador. Estamos definindo o último x, então temos o movimento ativado definido como verdadeiro, então essa condição não vai funcionar e não vamos definir nenhum imposto menos, mas isso feito, vamos voltar para a Unidade. Vamos nos certificar de que o salvamos. Não, não fizemos. Então, novamente, precisamos apenas notar que eu tenho uma queda pelo asterix no topo. Então vamos ao NPC, começamos a conversar e lá vai você. Não podemos nos virar. Então eu estou tentando atingir o WASD e nada está funcionando. Ok. Mas um último problema. Como podemos dar a habilidade ao Jimmy de começar a andar de novo? Bem, nós vamos para o controlador de diálogo. E quando verificamos se as sentenças atuais são maiores do que o comprimento das sentenças de diálogo, vamos definir o diálogo ativo como falso. E nós vamos acessar a instância do ponto do jogador, desativar o movimento e defini-lo como falso. Então vamos guardar isso. Agora, nós devemos ser capazes de ver que Jimmy pode andar novamente depois que ele terminar de ter uma conversa com a senhora simpática. Então, ei, sou um demônio curador. E lá vai você. Podemos andar de novo se tentarmos andar por aí quando estamos conversando. Sim, lá vamos nós. Então agora temos um daemon muito bem educado. Portanto, certifique-se de confirmar suas alterações. E no próximo vídeo, vamos lidar com os nomes dos personagens falando. Te vejo então. 38. Mostrando nomes de personagens: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Então, agora, quando caminhamos para o nosso curandeiro, começamos a conversar. Sabemos que é um curandeiro. Então, ei, eu sou um curandeiro. O Jimmy. Ei, eu sou um demônio. Jimmy ligou para Jimmy. Então Jimmy está falando, ele diz, eu me chamo Jimmy. Vim buscar a tua alma. Por que você é tão mau Jimmy? Quem está falando? Oh, é o curandeiro. Ok, ótimo. Então o curandeiro disse que você parece ser legal. Então Jimmy provou que ele tem maneiras excepcionais ou com curandeiros na cidade. Então não vamos perder mais tempo e ter certeza de que sabemos quem está dizendo que os centros de diálogo. Certo, agora queremos definir o nome de cada personagem falando. Portanto, há muitas maneiras de fazer isso, mas acredito que a maneira mais fácil é a seguinte. Vamos ao curandeiro, por exemplo. E aqui vamos dizer, hey, eu sou um curandeiro, mas vamos fazer, é definir um certo personagem que pode ser qualquer coisa. Pode ser o símbolo da hashtag. Então, enquanto o símbolo hashtag, então, por exemplo, o curandeiro símbolo hashtag. E o que vamos fazer é colocá-la em algum lugar. Então agora o curandeiro está falando. Novamente, quando quisermos ter certeza de que é o demônio falando, vamos colocar Jamie e aqui, ok, e vamos fazer isso de novo. Então, vamos clicar aqui. E outro. Curandeiro. Por que você é tão mau Jimmy? Você parece ser legal. Ok, então agora você pode ver que nós temos curandeiro, Jimmy, curandeiro falando. Mas como vamos nos certificar de que quando as frases estiverem vermelhas, sabemos que é um curandeiro. Bem, vamos usar o símbolo que dissemos por trás dele. E vamos usar dois métodos em C-Sharp. Então o primeiro é string dot começa com, e isso nos permite verificar se ou determinado se a instância string começa com um caractere específico. Isso nos permitirá verificar o caractere ou símbolo que tínhamos no início da frase. E então usaremos Substituir. E com isso vamos substituir o símbolo por algum tipo de talvez apenas um espaço vazio, então vamos nos livrar dele para que ele não apareça em nossos nomes. Vamos em frente e implementar isso. Então, uma hora, enquanto que ele e nosso controlador de diálogo irá criar um método e aqui que é chamado de vazio. Verifique se o nome ou verifique o nome. Vamos chamar-lhe o cheque para o nome. Acho que combina com o método manteiga e não tem que ser público, pode ser privado. Eu não acho que vamos usá-lo fora do controlador de diálogo. Então vamos criar uma condição if aqui que irá verificar se as frases de diálogo no ponto da frase atual começa com o Hugo. Assim que escrevermos. Não sei como até o Visual Studio pode ser tão inteligente. Então, se começar com o caractere hashtag, então o que vamos fazer é nomear texto. Então já dissemos que o nome era tributado lá em cima. texto do ponto será igual às frases de diálogo na frase atual. E nós vamos substituir a hashtag por um, um espaço vazio. Vamos substituí-lo por um espaço vazio. E então o que vamos fazer é aumentar a sentença atual em um. Certo, então o que estamos fazendo aqui? Primeiro de tudo, estamos verificando se a frase de diálogo na frase atual começa com a hashtag ou qualquer símbolo que você escolheu adicionar. Nós vamos acessar o texto do ponto de imposto de nome e vamos defini-lo como a frase de diálogo no atual. Mas vamos substituir a hashtag por um espaço vazio. Agora sabemos que é o nome, mas porque não queremos que o nome apareça na caixa de diálogo. Vamos aumentar a sentença atual a partir daqui imediatamente e vamos continuar com a conversa. Então, o passo final é saber onde ligar para o número do cheque. E isso vai fazer parte do seu desafio. E seu desafio será chamar o método cheque para nome. Então encontre os dois. Então há dois lugares onde devemos verificar se uma frase é um nome ou uma linha de diálogo, e aplicá-los e executar o código, executar o jogo, certificar-se de que ele funciona. Então pausar o vídeo agora mesmo e ir terminar o sistema de jogo final de diálogo. Ok, bem-vindo de volta. Como você se saiu com isso? Este foi um desafio muito importante se você não tentou fazê-lo, fazê-lo agora, vai lhe dar mais insights sobre como os jogos funcionam e realmente é um desafio divertido saber para onde devemos chamar. Então eu dei o spoiler. Precisamos verificar o nome antes de ativar o diálogo. Então este é o primeiro lugar. E devemos estar sempre verificando se estamos definindo o texto de diálogo dot txt. Então, onde mais deveríamos checar? Aqui dentro? Vamos verificar o nome. Então guarde isso. Acho que esses são os dois lugares que precisamos checar. Vamos tentar isto e ver se eu estava certo. Então vamos executar o nosso jogo. Nós vamos caminhar até o curandeiro, vamos bater Print. Então lá você pode ver curandeiro, Ei, eu sou um curandeiro. Jimmy, sou um demónio chamado Jimmy, vim buscar a tua alma, o curandeiro. Por que você é tão mau Jimmy? Parece ser legal e lá vai você. Saímos para fora. Então, quão legal é isso? Agora sabemos quem está falando quando e onde. Assim, o diálogo está completo. Espero que goste. Vejo você no próximo vídeo. E não se esqueça de cometer todas as suas alterações. Estamos indo incrível. Olha o quanto já fizemos. Vejo-te a seguir. 39. Seção 6: de jogadores: Bem-vindos de volta meus colegas desenvolvedores de jogos. E neste vídeo vamos criar estatísticas de um jogador. Então, se clicarmos no jogador agora, você verá que ele tem um par de estatísticas e o HP máximo, a atual defesa suja do HP TEDx, e, claro, o nome de Jimmy, o demônio. Então não vamos perder mais tempo e vamos começar. Oh, ok, então é hora de criar algumas estatísticas para o nosso jogador. E como já falamos sobre delegação antes, não queremos que nosso script de jogador esteja lidando com as estatísticas do jogador. Vamos criar um tipo diferente de script para lidar com isso. Então vamos criar uma pasta aqui. Vamos chamá-lo de, digamos que os caracteres talvez adicionarão o script do player a ele. E vamos em frente e criar um script de estatísticas de jogador. E aqui, então clique com o botão direito do mouse, crie um script C-sharp e chamaremos essa camada D. Estatísticas. Pressione Enter. O que deveríamos estar fazendo aqui? Bem, nós vamos apenas definir um par de estatísticas para ter para o nosso jogador. Então o primeiro passo será um campo serializado. É uma corda, e vai ser o nome do jogador. Então esse é o primeiro passo habitual que temos para qualquer tipo de diretor em um RPG. E, em seguida, a segunda variável vai ser o nível dos jogadores. Porque, como sabemos, cada jogador em um RPG tem algum tipo de nível e nós vamos configurá-lo em um por padrão, será capaz de mudar todos eles no inspetor porque nós estamos configurando-os campos serializados IS. Vamos manter o controle do XP atual. Então, o XP atual, e vamos apenas remover os iguais aqui. Então, experiência atual, o que mais temos? Bem, nós temos o HP máximo, então a saúde máxima, e nós vamos definir por padrão para 100. Temos a HP atual que queremos acompanhar. Então HP atual, vamos remover este abismo. Queremos adicionar magia ao nosso jogador. Também teremos um Max Mano. Então, se você não sabe qual mana é a fonte de magia para qualquer personagem, quantidade de mana que você tem determina quantos feitiços você pode adivinhar. E vamos separar tudo isso com um espaço para manter tudo limpo. E, claro, também teremos a maneira atual. Então atual Mano, o que mais um personagem deveria ter? Um RPG? Acho que a destreza e a defesa são uma boa estatística de se ter. Então destreza e diferença. E se você não sabe o quê, tenho certeza que sabe o que defesas, mas se você não tem certeza do que é destreza, destreza é sua habilidade de lidar com uma arma. Então, quanto mais destreza você tem, mais você pode lidar com uma arma. Eletron talvez adicione mais algumas coisas aqui, como a arma equipada e a armadura equipada. Mas por enquanto eu acho que esses são os conceitos básicos que vão funcionar. E quando precisarmos adicionar mais, voltamos e adicionamos mais. Então vamos salvar tudo isso. Agora vamos voltar para Unity e onde está o nosso jogador? Vamos arrastar as estatísticas do jogador para o jogador. Vamos minimizar o animador. E lá vai você, você pode ver as estatísticas do jogador. Então, o que devemos fazer aqui? Qual é o nome do nosso jogador como dissemos, Jimmy? E qual é a experiência atual? Vamos dizer que lhe daremos talvez 200 ou não a centenas a mais. Vamos dar-lhe 36. Com o Max HP é 100. Vamos dar-lhe uma destreza de 10 e uma defesa de, digamos 30. Ok, então estes são apenas números arbitrários. Você pode adicionar o que quiser mais tarde, vamos nos aprofundar, mas por enquanto, só queremos definir o terreno para tudo e começar a trabalhar. Agora, é hora de te dar um desafio. E seu desafio será criar estatísticas. Então adicione suas próprias estatísticas de jogador que você gostaria de ter. Como você viu, estes são muito básicos, básicos, básicos. Você pode adicionar muito mais. Então, se você já jogou um jogo como, digamos acompanhamento New Vegas, ele tem inteligência, sorte e assim por diante. Dark Souls, Por exemplo, também tem um monte de, que está lá. Foi aí que consegui destreza. E usaremos RPGs diferentes para criar um sistema de nivelamento a partir deles e como atacaremos usando esses sistemas. Então aqui estão alguns exemplos. Velocidade, vitalidade, resistência, inteligência, bloqueio, etc Portanto, há muitas habilidades. Como eu disse, este jogo é o seu jogo que você criou como você gostaria. Não tenha medo de adicionar algumas estatísticas para experimentar, para depois ajustar o código à medida que avançamos através do nosso jogo para se adequar às suas estatísticas, acordo com as suas próprias necessidades. E esse é o processo de aprendizagem. Ficar aqui me vendo fazer frio e não fazer nada não vai te ajudar tanto. Então, com isso dito, pausar o vídeo agora mesmo em algumas de suas próprias estatísticas, se você quiser. E vejo-te no próximo. E também se você está gostando do curso até agora, isso me ajudaria muito se você me deixar uma revisão positiva sobre o curso. E obrigado, te vejo no próximo vídeo. 40. Para loops na Unity: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos neste vídeo, como você sabe, cada jogo de RPG, cada jogador em seu jogo requer subir de nível. Então criamos uma experiência para cada nível. Assim, a quantidade de experiência para cada nível, e é feito dinamicamente. Assim que executarmos o jogo, você verá que do nível 0 você está aqui. Para chegar ao nível dois, você precisará de 100 experientes dois, nível três, 200, 300, 400, 56 até chegar a 49 mil ou 4.900. Então você pode ver que tudo isso foi feito automaticamente usando loops. Então não vamos perder mais tempo. E vamos começar. Oh, ok, então é hora de começar a nivelar o nosso jogador. Então, para fazer isso, vamos para as estatísticas do jogador e vamos adicionar duas novas variáveis aqui. Então primeiro vamos adicionar um campo serializado. Então campo serializado, ele vai ser um inteiro e vai ser o nível máximo, e vamos defini-lo em 50. Acho que não precisaremos de mais de 50 níveis no máximo. Você pode alterar isso com base no caractere que você tem. Você verá que podemos adicionar as estatísticas deste jogador a qualquer personagem e torná-lo um jogador ou um personagem jogável. E a outra variável que queremos adicionar é um campo serializado, que vai ser um inteiro ou uma matriz de inteiros. E vai ser a experiência que precisamos para cada nível subir de nível. Então vai ser o XP. Para cada nível. Lá vai você. Então agora temos o nível máximo que o nosso jogador pode chegar e a experiência para chegar a cada um desses níveis. A próxima coisa que queremos fazer, queremos definir essas experiências para cada nível. Então, como fazemos isso? Primeiro de tudo, e começar, vamos criar a matriz de XP para cada nível, e é assim que você criá-lo. Assim, o XP para cada nível é igual a uma nova matriz de inteiros. E precisamos determinar o tamanho que ele vai ser e o tamanho vai ser o nível máximo. Então agora o número de experiência para cada nível será o nível máximo. Então, quantos níveis temos? Bem, nós temos, por exemplo aqui 50. Assim, o tamanho da matriz XP para cada nível será 50. A próxima coisa que queremos fazer é sermos capazes de criar essas experiências. Para fazer isso precisamos de outra variável e eu não tenho certeza de onde vamos adicionar a classe. Basta manter tudo o que está relacionado com a experiência no mesmo bloco aqui. E vai ser um inteiro. E nós vamos chamar uma base profunda de nível XP. Então, isso será igual a 100. Então o primeiro nível é 100, e vamos definir isso também aqui. Então a experiência para cada nível no nível um será igual ao nível base XP. Ok, ótimo. Agora, uma ordem para preencher o resto, vamos usar um loop porque não queremos ir. E por exemplo, para cada um e os dois iguais a algum tipo de número, queremos fazer isso dinamicamente. E, felizmente, há uma ferramenta incrível para fazer o que é chamado de loops. Deixe-me explicar o que são loops. Então, para ser específico, o que é um loop for? Então os loops podem executar um bloco de código várias vezes. Loops são úteis se você quiser executar o mesmo código e outra vez cada vez com um valor diferente. Então esta é a estrutura do loop. Começamos escrevendo para, e este é um loop for verá um tipo diferente de loop mais tarde no curso. Então, por exemplo, escrevemos quatro, abrimos esses dois colchetes. Começamos inicializando a primeira condição. Então int I é igual a 0. Enquanto eu é menor que um certo limite, vamos aumentar I plus, plus. E cada vez que vamos executar o código que está entre esses dois colchetes. Então continuamos a executar este código dentro até que eu atinja um certo limite. Começamos às 0. Digamos que o limite certo é três. Começamos às 0, está bem? Podemos executar o código. Aumentamos i em um é eu, que agora é um, menos de três. Não. Então, novamente, nós executamos o código, nós aumentamos em um. Eu sou torna-se também eu sou menor do que o limite certo? Sim, é. Eu disse não antes? Então eu igual a dois é menor que o limite certo, que é três. Mais uma vez, nós executamos. Finalmente chegamos ao 3. Então eu sou igual a três. É menor do que o limite certo com apenas três nós não então saímos do loop e terminamos. Vamos adicionar isso ao nosso código e ver o que acontece. Então, de volta ao início, vamos criar um loop for. Então, para abrirá os colchetes. Vamos escrever int I é igual a. E por que não começamos às 0? Pense um pouco sobre isso. Por que não começamos com I igual a 0? Bem, porque já estabelecemos o I é igual a um e aqui, e o I igual a 0 será, claro, 0. É o nível base. É com o que você começa. Para chegar ao primeiro nível, você usa o nível base e, em seguida, vamos definir o resto de I igual a 2. Qual é o limite que não queremos exceder o tamanho da matriz, que é o XP para cada nível. Então nós obtemos o tamanho usando o comprimento e vai aumentar I em um cada vez. Então, agora o que vamos fazer e aqui? Bem, vamos te dar um desafio. Na verdade, vou mostrar-vos um desafio e o vosso desafio é imprimir o número em que estamos. Então use o método de impressão para imprimir I ou o número onde estamos atualmente na iteração. Pause o vídeo agora mesmo e vá fazer o desafio. Bem-vinda de volta. Então é muito fácil. Basta escrever, imprimir, abrir os parênteses. Vamos em frente. Estamos e concatenamos uma string, que é, poderíamos simplesmente ter escrito I, mas isso é apenas para fins mais estéticos. Vamos guardar isso em Unity. E nós, nós, nós adicionamos tudo. Então, agora vamos olhar para o console. Nós nos certificamos de que o nível máximo é 50. Você pode ver aqui que cada XP como em 0, mas é uma matriz. Então, quando rodarmos o código, mas lá vai você. Você pode ver que agora temos de 0 a 49, então 50 níveis, o primeiro é 0, o segundo é inicializado em 100. E você pode ver os números aqui no console a partir de 2, 3, 4, 7, 8, 9, 10, 11, 14. E continuam até chegarem ao 49. Ok, ótimo. Dito isso, em seguida, precisamos fazer algo real aqui, não apenas imprimir. Então vamos comentar isso. E vamos em frente e dizer que o XP para cada nível na posição I, porque lembre-se que eu está aumentando com cada iteração. Então, estamos passando por cada elemento na matriz do XP para cada nível, e ele vai ser igual ao nível base XP. E vamos multiplicá-lo por eu. Poupe isso. Vamos voltar para a Unidade. Vamos esperar por isso para compilar e manter seus olhos no XP para cada nível, vamos executar o nosso jogo e lá vai você. Você pode ver que começamos para chegar ao próximo nível, precisamos de 100 XP para chegar ao próximo nível, próximo nível, 200 para o terceiro nível, 300, 400, 56, e assim por diante até precisarmos de 4.900. Então, com isso feito, espero que tenha gostado disso. Só talvez mais uma vez. Explique o que está acontecendo na inclinação porque se você não está familiarizado com loops e esta é a sua primeira vez, vale a pena ouvi-lo mais uma vez. Vamos começar. Nossa condição inicial é duas. Temos um certo limite, que é o comprimento do para cada matriz de nível que criamos aqui. E cada iteração aumentamos i por um. Vimos como isso parece quando imprimimos o I em cada linha. Então pegamos esse cara que está aumentando a cada vez e usamos para passar pela matriz e em cada um, e digamos elemento da matriz, estamos definindo a velocidade do nível base vezes o número I. E isso é como incrementamos cada vez atribuído a todas as velocidades para cada nível e a matriz. Espero que goste. E no próximo vídeo será incrementando a velocidade para o próximo nível e não tão estável como agora. Portanto, não queremos ter apenas 100 pontos diferenciados entre cada um. Como você sabe, os jogos de RPG, cada nível requer mais do que o anterior para aumentar. Então, digamos que o primeiro nível nos levou 100 experiência, o segundo deve levar mais de 100 para superar isso. Então, vemo-nos na próxima. 41. Distribuição de experiência: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos implementar uma equação diferente para obter a experiência que precisamos para chegar a cada nível. Então, quando executamos o código, você verá que não temos mais um 100 cada vez, mas temos um nível muito bem distribuído para chegar ao próximo nível. Então você pode ver, por exemplo, é preciso 223 para chegar ao nível dois. Mas se quisermos ir de sete para oito, isso requer um pouco mais e abaixo da linha, vocês notarão que também muda à medida que progredimos. Então não vamos perder mais tempo e vamos ver como implementamos essa distribuição 0. Então, como vamos distribuir a experiência que temos? Porque, como já dissemos anteriormente, não queremos apenas aumentar em 100 cada nível. Queremos ter algo um pouco mais, digamos dinâmico. Então, queremos ser um pouco mais duros de cada vez. Então o que eu encontrei é esta página realmente legal, e esta é da wiki Dark Souls. Se você não está familiarizado com Dark Souls, eu recomendo que você jogue. É um jogo incrível e realmente um ótimo lugar para aprender como os RPGs operam. Você pode obter um monte de informações. Então, por exemplo, que tipos de estatísticas de jogador você quer. E nesta página específica é a quantidade de experiência necessária para ir de um nível para o próximo. Então, como você pode ver, os números não aumentam normalmente. Você pode ver, por exemplo aqui eles aumentaram em 13 e, em seguida, algum tipo de número. Eu não vou fazer as contas aqui, mas cada, por exemplo, nível, você pode ver que há uma diferença dos dois níveis anteriores. Então, para obter, por exemplo, deste nível para este nível, você pode ver que requer cerca de 300 almas talvez para chegar de 690 para 707. Você pode ver que é muito menos do que 100. Então é isso que queremos implementar em nosso jogo. E felizmente, temos uma pequena equação aqui. Então, como você pode ver, y é igual a 0,2 x ao poder 3, e x é o número de vezes. Então, como posso dizer isso? Então, por exemplo, cada vez que este é o x, começamos como o nível base e, em seguida, aumentamos x e um e assim por diante. Então, em nosso código, o x vai ser o I, e nós vamos tentar aplicar isso. Então vamos voltar ao nosso roteiro e ver como podemos fazer isso. Então vamos remover o impresso aqui e vamos começar de novo. Então eu tenho a fórmula na minha frente e eu recomendo que você também obter a fórmula em algum lugar ao seu lado. Então nós vamos abrir os parênteses e nós vamos escrever 0 para F. Vai ser vezes eu, vezes eu, vezes I. E por que eu estou adicionando tantas vezes eu, porque se olharmos para trás aqui, você vai notar que é 0,02 vezes x para o poder três. E podemos encontrar poder na Unidade. Opa, podemos encontrar o poder e a unidade, mas eu acho que usar apenas vezes vezes, tempos é muito menos complicado e fácil e evita muitos erros. A próxima coisa é 3,06 F vezes que eu, e é isso. Então vamos ver de novo, lá vai você. Vezes 2, 3.06. Então temos 105,6 vezes x. então vai ser 1,605 F vezes I. E lá vai você. Vamos salvar. Isso não vai usar o menos 895. Não acho que seja tão obrigatório. Vamos manter o que é. Mas se você escreveu a equação, você vai notar que há um pequeno problema. Há uma linha vermelha. Então, se passarmos o mouse sobre ele, você pode ver que operador flutuante, flutuar no erro esquerdo é não pode implicitamente converter float para um inteiro. Existe uma conversão explícita. Então, o que é cativante, o que está acontecendo? Então a experiência para cada nível é uma matriz de inteiros o, k. mas o que estamos alimentando é um valor que é um flutuador. Então você pode ver quando escrevemos um flutuador, então, por exemplo, 0 a F, Isso significa que este é um flutuador e 3.016 ou 3.06 F como um flutuador. Então, como vamos ser capazes de alimentar um número flutuante em uma variável inteira? Bem, eu estou muito cansado para fazer isso, então eu vou dar a você como um desafio. Converta um flutuador para um inteiro. Digamos que você é um desenvolvedor de jogos e você chegar ao ponto em que você encontrar um problema como este, é hora de usar sua incrível capacidade de resolução de problemas. Então faça um pouco de pesquisa e procure como converter um flutuador e um inteiro. Existem dois métodos para fazer isso. Você pode ir e procurar esses dois métodos por conta própria, ou eu vou te dar um deles. Eu vou te dar o difícil e é chão de matemática para e eu não vou dizer mais do que isso. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, ok, bem-vindo de volta. Então, o que você encontrou, como fazê-lo? Então, se entrarmos aqui, você pode ver que nós temos, nós nos conhecemos, temos chão para otorrinolaringologia. E você pode usá-lo para converter retorna o maior número inteiro, menor ou igual a f. Então lá vai você. É assim que você usá-lo, Math.Floor e você colocar o flutuador e citar isso, por exemplo, vamos imprimir 10. Você pode ver os exemplos ao lado dele. Mas vamos usar a ferramenta de manteiga. E essa ferramenta é simplesmente escrevendo e antes dela. Então você pode converter qualquer coisa usando este método aqui, embora eu ache que ele ocupa mais memória do computador, mas não vamos nos preocupar com isso. Tenho certeza de que você tem memória suficiente em seu computador com isso feito, espero que você tenha gostado e espero que você esteja cometendo as mudanças que você está fazendo. E com isso dito, verei vocês no próximo vídeo onde testaremos nosso sistema de nivelamento. Então, vejo você então. 42. Testando o de teste: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, criamos uma maneira de aumentar ou testar nosso XP para o próximo nível aumentando a quantidade de experiência. Como podem ver agora, estamos no nível um. Para chegar ao nível dois, precisamos de 100, então pressionamos a tecla L. Você pode ver que temos que jogar ou nível 2. Agora precisamos de um 123. Então lá vai você. Para chegar ao nível 4, precisamos de 344, por isso continuamos a aumentar até chegarmos ao nível 4. Então não vamos perder mais tempo e vamos começar. Agora queremos testar nosso sistema de nivelamento. E vamos para o nosso roteiro aqui e as estatísticas do jogador. E vamos criar um novo método. Então este método vai ser um vazio público, adicionar XP. E aqui vamos dizer a enésima quantidade de EXP. Você pode adicionar a quantidade de XP a adicionar, mas por enquanto, vamos continuar. A próxima coisa, o que vamos fazer é sempre que chamarmos esse método, vamos obter nosso XP atual e vamos adicionar a ele a quantidade de espera para adicionar. Então, lembramos que este mais é igual a de antes. Isso é o mesmo que dizer que o x b atual é igual à velocidade atual mais a quantidade de XP. Ok, ótimo. Agora a próxima coisa que queremos fazer é depois de adicionarmos a quantidade de XP, queremos verificar se a corrente é maior que a XP para cada nível no nível do jogador. Então queremos ir em frente e primeiro de tudo, remover do XP atual menos igual ao XP para cada nível no nível do jogador. E então vamos querer incrementar o nível do jogador por um. Então lá vai você. Por que estamos removendo e aqui o EXP? Porque, como você sabe, por exemplo, digamos que você tenha acumulado 480 XP e queira ir para o próximo nível. Você não apenas manter tudo com você não vai para o próximo nível que vai, pode exigir 600. Então você não mantém com você os 480 e, em seguida, só precisa de 200. Você terá que voltar e ou remover a quantidade já que você tem. E não queremos defini-la como 0. Porque digamos, por exemplo, que queremos dar a escolha ao jogador para subir de nível ou não, assim como um Dark Souls. Talvez não queiramos torná-lo obrigatório, então não queremos redefini-la para 0. Simplesmente removemos a quantidade de experiência necessária para ir para o próximo nível. Então este é o nosso método, isso é tudo o que precisamos fazer. E eu vou lançar um desafio para chamar esse método e atualizar. Então use a entrada de uma chave e atualize para adicionar XP ao seu jogador. Eu recomendo que você pause o vídeo agora e vá fazer o desafio. Ou pode ver a mão que estou prestes a lhe dar. Nós já fizemos isso. Pausar o vídeo agora mesmo, ir para o desafio. Ou use o ponto de entrada, obtenha o código de teclado e use uma das teclas. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, uma atualização. Nós vamos verificar se o ponto de entrada obter a chave para baixo. E com um código de chave de, vamos usar L porque é o nivelamento. E o que vamos fazer é adicionar XP e vamos adicionar 100. Então eu acho que eu 100 é uma boa quantidade para adicionar. Agora, antes de seguirmos em frente, há algo que está me incomodando. O nome XP para cada nível. Não é uma boa representação? Deve ser o EXP E para o próximo nível. Então XP para o próximo nível, representa batalha, o que queremos dizer com esta matriz. Então o XP para chegar ao próximo nível é este. Ok, então de volta à Unidade e vamos em frente e executar o código. Então você pode ver que a corrente é 36 e precisamos de 100. Então, se tivéssemos o alceno, vocês notarão que agora estamos no nível dois e aqui, e o XP ainda é 36. Por que é isso? Bem, porque fomos do nível 0 para o nível 1 e removemos os 100. Então agora se tivéssemos o LD mais uma vez, lá vai você. Ainda estamos no nível 2 porque precisamos de um 123. Agora devemos ir para o nível 3. Sim, lá vamos nós. Nível três e acredito que subtraímos 223 do número que conseguimos. Então é por isso que ficamos com 13 de novo. Então precisamos do 344 para ir para o próximo nível. Agora vamos para e com 69 XP atual. Muito agradável. Novamente, vamos tentar subir de nível até o nível cinco, o que requer 470 a 469. Só precisamos de um pouco mais para adicionar um pouco de XP. Lá vai você. Estamos no nível 5 com uma EXP atual de 1970. Então, como você pode ver, nosso método de nivelamento funciona completamente bem. Então eu espero que você goste e eu vou vê-lo no próximo vídeo onde nós estaremos realmente impactando as estatísticas que temos sobre o jogador depois de cada nível subir. 43. Levar os de batidas: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, não só aumentaremos nosso nível por diversão, também aumentaremos nossas estatísticas à medida que aumentarmos em níveis. Então agora, vocês verão que estamos no nível de uma hora no máximo, HP é 100, máximo de 30, destreza 10 defesa 30. E agora vou pressionar L e você fica de olho nas estatísticas do nosso demônio ou jogador. Então, como você pode ver, enquanto aumentamos a nossa destreza, defesa e o HP máximo aumentam de maneiras variadas. Então não vamos perder mais tempo e vamos implementar essas mudanças em nosso jogo. Oh, então como conhecemos um jogo de RPG, quando nosso nível aumenta, precisamos ter mais força, mais maneiras de nos defendermos, mais HP e mais mana ou o poder da magia. Então vamos adicionar isso ou integrar isso em nosso nivelamento. Então vamos para o nosso roteiro e abrimo-nos aqui. Onde estamos? Certo, então toda vez que aumentarmos o nível, vamos fazer algo diferente. Queremos aumentar a destreza e a defesa, mas não todas as vezes. Queremos verificar se o nível de jogador que estamos atualmente é divisível por dois. E o que isso significa? Conhece o sinal para o módulo? Modulo isto divide o nível do jogador por 2 e vê se há algum resíduo. Então, há outro termo? Por exemplo, se o nível do jogador é 3 dividido por 2 deixa de fora um, então há um outro número. E quando dividimos, por exemplo, um número par por 2, temos 0. Então, quando um nível par subir, vamos aumentar a destreza em um. Senão. Se é um nível estranho, então vamos aumentar a diferença em um. Então, cada nível temos ou a destreza ou a defesa ficando aumentada em um. E o que mais podemos acrescentar? Primeiro de tudo, vamos em frente e testar isso. Nós salvamo-lo. Vamos nos certificar de que o salvamos em Unity. Vamos executar o nosso jogo, como você pode ver, nossa destreza e defesa ou 30, Vamos fazer isso menor. Então vamos ver quando subimos de nível pela primeira vez. Então, dez por 30, lá vai você, porque estamos no nível 2, são aumentos de destreza. Então nossa diferença, então nossa destreza do que nossa defesa, destreza, defesa, destreza, defesa, e assim por diante e assim por diante. Como podem ver, estamos aumentando lentamente as estatísticas dos nossos jogadores. Agora, a outra coisa que podemos aumentar é o máximo, HP e TMax Mano que o nosso jogador pode ter. Então eu vou te dar um desafio. E seu desafio será aumentar o HP e mono. Portanto, aumente o HP máximo com cada nível acima. Multiplique o HP máximo por ponto zero. Vou apenas colocar um número arbitrário ou qualquer outra proporção que você achar adequado e certifique-se de convertê-lo em um inteiro. Faça o mesmo para os monges. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, depois de aumentarmos a destreza e a defesa, vamos obter o HP máximo. E vai ser igual a Math dot chão para int. Porque vamos usar o HP máximo que tínhamos anteriormente. E vamos multiplicá-lo por quanto eu disse que é 1,06? Sim. É isso. 0.6 F. Sim, lá vamos nós. E, como sabemos, cada vez que subimos de nível, queremos definir o HP atual para o HP máximo. Portanto, nem todos os jogos fazem isso, mas alguns, ou a maioria dos jogos, na verdade, cada vez que você subir de nível seu HP máximo como um pequeno presente, o HP atual que seu anúncio vai para o HP máximo para o seu novo HP Max. E vamos fazer o mesmo pelas boas maneiras. Então eu vou duplicar isso, tem um par de anteras e o maná máximo terá uma proporção diferente. Então, talvez, vamos tornar isto um pouco pequeno. Quer saber, vamos fazer este ponto 18 e este 1.06. Então não queremos muita mononucleose extra. E o atual Mano, atual Mano torna-se o máximo. Lá vamos nós. Guarde isso. De volta à Unity. Aguarde a compilação de criptografia, execute o código e execute o jogo. E vamos ver, quando chegarmos a L, lá vai você. O HP máximo é agora 117, a corrente é 117 e o máximo aumentou, mas também. Então vamos, lá vai você. Você pode ver que estamos aumentando lentamente o mana, mas em algum momento vamos mover não só 1, Vamos mover vários pontos. Lá vai você. Agora estamos subindo por dois e agora ainda estamos em dois. Ainda até algum ponto? Sim. Lá vamos nós. Ok. Primeiro ainda às duas e, em algum momento, acredito que iremos a três níveis. Não. Vamos lá, vamos lá, vamos lá, vamos lá. Ok. Acho que foram três. Bem, isso feito. Espero que tenha gostado de confirmar suas alterações. E vejo-te no próximo vídeo. 44. Gerenciador de jogos: Oh, ok, então nós queremos manter o controle de várias camadas com suas próprias estatísticas, porque mais tarde você vai ver em nosso sistema de batalha que temos vários jogadores, vários inimigos atacando uns aos outros, para que possamos manter o controle deles em nosso jogador principal, que é Jimmy, o demônio. Queremos manter o controle deles em um objeto de jogo separado, entidade ou script, que será nosso gerenciador de jogos. Então a primeira coisa que vamos fazer é criar um objeto de jogo vazio chamado The Game manager, e vamos redefinir sua posição. Isso não é obrigatório, mas eu gosto disso para que saibamos sempre onde ele está. Então não está desligado em algum lugar à distância. E vamos seguir em frente e R scripts ou clique com o botão direito do mouse criar um script C-sharp chamado Game Manager. Em Enter. Aguarde até que ele compile e você pode ver que ele tem um ícone diferente nele. E isso é exclusivo para os gerentes de jogos. Então Unity sabe que este é um script muito importante que vai ser um quase todos os jogos. Então lá vai você, você pode vê-lo bem aqui. Vamos clicar duas vezes. E o que vamos fazer aqui? Primeiro de tudo, vamos querer tornar isso uma instância estática pública porque nós vamos estar chamando sobre ele muito. Então estático público, gerenciador de jogos e instância. Ótima. E a seguir vamos criar um campo serializado que irá acompanhar todos os jogadores. Então estatísticas do jogador, vai ser, claro, um array, e vamos chamá-lo de estatísticas do jogador. Ok, ótimo. Agora e começar, vamos nos certificar de que a instância é igual a isso. Não queremos destruir a carga. Então já fizemos isso quando queremos ir a uma cena diferente. Não queremos destruir isto. E nós também vamos torná-lo um considerando nosso jogador, então vamos torná-lo um padrão de singleton. Então vamos abrir o jogador. E onde está a aderência dos jogadores? Lá vamos nós. Abra o roteiro e vamos copiar isso. Colar. Exatamente o mesmo. E o gerente do jogo, aí está. E é isso. É tudo o que precisamos fazer. Agora. A partir daqui, há duas maneiras de ir. primeiro caminho é sempre que chegarmos a um determinado mapa ou mais tarde em uma certa caverna e reiniciarmos os inimigos enfrentados. Você pode ir em frente e vamos dizer, Como posso dizer convocar todos os jogadores disponíveis com uma estatística jogador para lutar com você. Então, por exemplo, digamos que temos o curandeiro aqui. Podemos adicionar um jogador que a ele ou a ela. E podemos adicionar outro personagem, digamos o guerreiro. E adicionamos uma estatística a ele também. E digamos que encontramos algum tipo de monstro e nosso mundo enquanto estávamos caminhando, então precisamos lutar com ele. Então, todos os jogadores que estão nesta cena virão em auxílio do nosso demônio Jimmy. Este é o primeiro mecânico a fazer isso. Então a maneira que fazemos isso é que vamos em frente, vai preencher as estatísticas do jogador vai ser igual para encontrar objetos do tipo e seus objetos não encontrar Object, encontrar objetos do tipo. Considerando que, como você pode ver , são objetos do tipo. E isso retorna um, todos os objetos que podemos encontrar que estão sob as estatísticas do jogador. Então vamos encontrar todos os objetos do tipo de estatísticas do jogador e adicioná-los à matriz de estatísticas do jogador. Agora, esta é uma maneira. Do outro lado, como nós realmente ir em frente e preencher este campo serializado manualmente. Então, por exemplo, digamos que não queremos adicionar o curandeiro. Então, por exemplo, aqui vamos adicionar o primeiro será o jogador, e o segundo será, por exemplo, digamos, vamos dar estatísticas do jogador para o curandeiro e BC. Então você pode ver que ele tem estatísticas de jogador. Podemos mudá-los. Digamos que façamos destreza na defesa sete e máximo 200 e nos bastidores sejam 30, no máximo 200 e nos bastidores sejam 30, e assim por diante. Então vamos mudar isso para qual é o nome da Hillary? A Sarah. Então, vários dos curandeiros. E digamos que quando executamos o jogo, podemos encontrar todos os objetos do jogo. E nós pegamos Sarah e Jimmy, ou podemos fazer o contrário e Indie Game Manager, nós simplesmente adicionamos o curandeiro bem aqui. E podemos anexar o jogador sob o gerenciador do jogo e o curandeiro sob o gerenciador do jogo e levá-los conosco através de cada C. Então isso vai depender de como você quer que seu jogo funcione. Eu lhe dou a habilidade total, mas certifique-se de usar pelo menos um deles. Prefiro encontrar qualquer um que esteja nas proximidades e adicioná-los. Mas isso exigirá um pouco de manter o controle de quantos jogadores existem. Você não quer adicionar, digamos 500 jogadores ao seu jogo. Então, com isso dito, deixarei a escolha para você. Não há nenhum desafio neste vídeo, só isso. E vamos ver, no Game Manager, vou remover este e este. E agora, se executarmos nosso jogo, você verá que devemos encontrar o curandeiro e o jogador estão ambos aqui porque temos uma estatística de jogador em cada um deles. Então eu espero que você tenha gostado, se você está gostando das pontuações e você gosta de mim como instrutor para tirar o tempo para deixar um comentário, isso me ajuda muito. Dito isso, te vejo no próximo vídeo. 45. Seção 7: Menu UI: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos criar um menu. Então, como você pode ver, criamos um menu. Criamos vários botões e colocamos todos sob o objeto de um único botão. Tentei espaçá-los o máximo que pude. E agora se clicarmos em Maximizar no Play, só para que possamos vê-lo, muito melhor. Ram, e lá vai você. Você pode ver que temos itens, estatísticas, Salvar, Fechar e Sair botão. Ainda não temos nada para mostrar, mas, por enquanto, isso serve. Então. Não vamos perder mais tempo e vamos começar. Está bem, está na hora de criar um menu. Até agora só tínhamos o painel de diálogo que manteria isso fora do caminho. Agora é hora de criar um menu. E um menu terá muitas coisas nele. Teremos o inventário, um botão de salvamento, um botão e assim por diante. Então, vamos começar. A primeira coisa que precisamos fazer é clicar com o botão direito aqui e vamos até você i, e vamos criar um, Onde é um painel? Então agora temos um painel. Vamos avançar e aumentá-la ao máximo. E vamos dar a ele o fundo que temos. Então vamos adicionar o fundo e lá vai você. Então este vai ser o nosso cardápio. Se você quiser, você pode fazer um pouco menor, só um pouco para que possamos ver talvez as bordas do nosso ganho. E lá vai você. Então, talvez um centímetro, lá vai você. Então este será o pano de fundo do nosso jogo. E certifique-se de que a resolução é 1920 por 1080, assim como a escala da nossa tela. A próxima coisa que vamos fazer é adicionar um botão a este painel. E antes de fazermos isso, vamos mudar isto para o menu. Agora temos um menu e vamos em frente e adicionar um botão aqui. Então botão Localizar. Então nós temos um botão e o que nós vamos fazer é que nós vamos obter este botão, vamos movê-lo para cima aqui e nós vamos precisar adicionar algum tipo de fundo a ele para torná-lo um pouco melhor. E como fundo de botão, vamos usar um dos recursos que eu nos forneci. Então arraste isso aqui, e agora podemos arrastá-lo sobre a imagem do botão. E aí está, temos um botão muito legal. Agora o que fazer sobre o texto? Basta excluir o texto, clique com o botão direito do mouse na parte inferior. E nós vamos adicionar nosso próprio texto Mesh Pro. Vamos ancorá-lo ao nosso não, não vamos ser precisos. Nós vamos adicionar a fonte a ele. Então, a ferramenta de texto adiciona a fonte a ela aqui mesmo. Vamos torná-lo completamente escuro. Então aí está, é completamente preto. Vamos chamar isso de itens. Então, itens. E vamos em frente e fazer o texto se encaixar no lugar correto. E nós vamos realmente também mudar o tamanho do botão. Então vamos colocá-los, esses itens. Faça-o assim. E nós vamos, vamos pegar o botão, torná-lo um pouco maior. E porque vamos ter quantos botões? 12345 botões. Portanto, certifique-se de economizar espaço suficiente para cinco botões. Vou tentar o melhor que puder. Então este é o primeiro botão, os itens. Lá vamos nós. E agora é hora de um desafio para você. E seu desafio é terminar o manual. Então crie o resto dos botões. Você pode duplicar o botão depois de configurar tudo. O meu ainda não está perfeito. Eu posso mudar algumas coisas e eu vou te dar uma pequena dica. Você precisa ter as estatísticas, o Save, as roupas e a cuvete. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, ok, bem-vindo de volta. Então algumas coisas que eu vou mudar aqui, eu vou ou o subjacente já está presente. Vamos ver, vamos ver como fica de longe. Então, se eu aumentar o deslocamento no X, deslocamento no y, não, isso não ajuda a manter isso em 0 toneladas de Archytas. Então eu só estou experimentando ver o que funciona, ver o que não funciona. E se você já fez o que precisava fazer, você pode pular e terminar. Eu só vou ir em frente e talvez adicionar um brilho. O que aconteceria se eu adicionasse o globo? Não, não acho que adicionar cola seja boa ideia. Deixe-me fazer isso um pouco maior. Então eu vou aumentar o tamanho. Talvez seja ousado. E o tamanho da fonte será maior. Então, lá vai você. Itens com bom aspecto. E vamos configurar isso corretamente para que mova os itens. Então lá vai você, itens, eu acredito que isso vai ser bom o suficiente. Talvez encolher. Lá vai você. Só quero que o crânio ainda esteja bonito. Então vamos tentar isso tão bem. Isso mudou o nome do botão, ferramenta, Itens, botão ou botão do item ou podemos chamá-lo de itens. Não se preocupe com isso. Então vamos duplicar isso, Adicionar ao lado dele, duplicar isso novamente, e duplicar isso novamente. E quantos botões existem? Cinco. Então duplique isso de novo, e lá vai você. Este é o botão final, e obviamente eles não são adequados. Então eu não vou aborrecê-lo com tudo isso. Vou parar o vídeo agora mesmo. E no próximo, continuaremos criando nosso menu. Então, vemo-nos lá. 46. Informação de personagem: Bem-vindos de volta meus colegas desenvolvedores de jogos. E neste vídeo estamos atualizando nosso menu criando informações de personagens. Então, se executarmos nosso jogo, você verá que temos um layout muito bom do personagem e da formação. Temos o HP, mana e XP atual foi a experiência que precisamos para o próximo nível com a imagem do jogador com seu nome sob ele e um número muito preciso. Então vamos aprender muito neste vídeo. É um pouco longo. E criar interface do usuário é sempre um processo longo. Você precisará ter ainda mais tempo para fazer tudo parecer melhor em seu jogo. Então não vamos perder mais tempo e vamos começar. Ok, então o que queremos fazer neste vídeo é criar um par de painéis e aqui talvez dois, talvez três. Não tenho certeza se vamos ver e adicionar todos os personagens e cair nele. E não qualquer personagem. E para o personagem e queda das estatísticas do jogador sobre os jogadores que têm estatísticas do jogador. Então, a primeira coisa que vamos fazer, e eu já fiz isso. Eu criei um objeto de jogo que é chamado Botões. Eu adicionei todos os botões embaixo dele, então certifique-se de fazer isso. A próxima coisa que vamos fazer é criar um, outro painel no menu. E isso vai representar o fundo para a informação do personagem. Então vamos entrar em você. Vou procurar o painel. Como sempre, chamaremos isso de personagem NFO. NFO. E vamos mudar o plano de fundo para usar o elemento que temos. Lá vai você. Vamos aumentar o Alfa. Então é completamente não-transparente e vamos torná-lo muito pequeno. Então, aqui dentro, vai ser sua escolha. Se você quiser ter, digamos três, você precisará torná-lo um pouco menor, como você pode ver, mas também certifique-se de torná-lo um pouco maior para que possamos encaixar tudo aqui. Deletar, oops, isso não foi planejado. Então vamos apagar esses, pegar o personagem e seguir novamente. Vamos ver se três se encaixam assim. Ok? Talvez seja preciso torná-lo um pouco menor. Ok, então deixe-me deletar de novo. Só vou usar este. E vamos montá-lo aqui, torná-lo um pouco menor. Ok, então o que isso fez? A próxima coisa que vamos fazer é ir em frente e tentar representar todas as informações do jogador aqui. Então, o que queremos representar? Queremos representar o HP, o mana, o nível atual, a experiência que precisamos para ir para o próximo nível. E acho que é tudo o que precisamos. Se precisarmos de mais alguma coisa, adicionaremos mais tarde. Então vamos começar. Ou também precisamos desse orgulho do personagem aqui com o nome. Então vamos começar com isso. Nós vamos em frente. Vamos renomear isso para caractere NFO. Então é apenas o personagem NFO. E nós vamos adicionar uma imagem aqui, então vamos clicar com o botão direito do mouse, ir até você. Eu vou para a imagem. Lá vai você. E vamos pegar a imagem do nosso personagem. Então vamos usar um desses. Vamos ver a imagem, enquanto a imagem, e nós vamos arrastá-la para aqui. Nós vamos clicar em preservar proporção, e eu vou configurá-lo para o nativo e, em seguida, torná-lo menor. Então, como você pode ver, quando preservamos o aspecto ou loop, vamos configurá-lo como nativo. Agora definir preservar aspecto, e agora devemos ser capazes de torná-lo um pouco menor. Então, como você pode ver, ele preserva o tamanho e nós apenas ajustamos, torná-lo deste tamanho. Acho que sim. Então eu não vou tentar fazer isso perfeito. Vai ser o teu trabalho. Talvez eu faça isso mais tarde porque eu não quero que o vídeo se arraste por muito tempo. Agora a próxima coisa é que vamos adicionar o nome. Então vamos clicar com o botão direito do mouse aqui e ir até você. Eu adiciono um texto Nash Pro. E vamos em frente e usar a cor medieval. A fonte medieval. Então, o medieval, vamos chamar isso de nome do carro. E vamos escrever aqui o nome do jogador. E vamos adicioná-lo sob o sprite do jogador bem aqui. Vamos ter certeza de que é pequeno o suficiente para caber e que é completamente preto. Sim, lá vamos nós. E vamos torná-lo ousado. E amplie. Vamos ver como isso fica e isso está sob o jogador. Ok, ótimo. Agora, o que mais precisamos fazer? Precisamos adicionar o HP. Vamos duplicar isso e mover o personagem aqui. Então este vai ser o personagem HP, e esta será a imagem do personagem. E vamos ver o que temos aqui. Então, o personagem HP que vamos fazer. E o que mais temos? Vamos ver, vamos fazer isso menor, ter certeza que estes alinhados. Ok, então aqui vamos digitar HP dois pontos. E eu acho que esta não é a melhor fonte para usar para isso. Se você quiser mudar a fonte, eu recomendo que se você achar que esta fonte não é boa o suficiente ou não parece nítida o suficiente à distância. E o que mais temos? Bem, precisamos da mononucleose, então vamos duplicar isto. Teremos o mana e aqui, então o personagem mano. E vamos escrever aqui mono. E vamos apenas adicionar algo para garantir que tudo se encaixa, vai adicionar 100 sobre 100. Então agora podemos ver que ele precisa ser representado um pouco maior. E a HP também precisa mudar. Então vamos fazer 100 por 100. E você pode ver que a fonte atual não tem nenhum caractere especial para os números. Então, se você quiser adicionar outro, eu recomendo que se você quiser um mais frio olhando números, mas eu acho que esses são bons o suficiente por enquanto. Então também precisamos ter o XP atual, então vamos duplicar o personagem Manon também. Lá vamos nós. Vamos movê-lo para parecer. E vamos dar o nome a este personagem, tema atual. E vamos escrever aqui XP atual. E vamos fazer isso maior. Lá vamos nós. Aumentaremos o tamanho, certificamo-nos de que todos se encaixam. Vamos montá-lo aqui no canto superior direito, o homem no meio. Certo, isso não está se movendo. Precisamos mover o objeto inteiro. E lá vamos nós. Então agora temos o HP, o mana, e a corrente vai mudar isso para um Não, eu quis dizer sobre a XP atual. Ok, lá vamos nós. E finalmente queremos ver a experiência que precisamos para o próximo nível. Então vamos fazer algo especial sobre isso. Primeiro, vamos duplicar isto. Vamos chamá-lo de XP para o próximo nível. Oh, vá personagem. XP para o próximo nível e XP para o próximo nível. E em vez de representá-lo de uma maneira numérica normal, vamos representar isso usando um controle deslizante. Então, antes de fazer isso, deixe-me apenas fazer isso um pouco menor e reduzir os espaços entre as letras apenas para torná-lo mais localizável. Apenas mude isso em torno disso. E talvez tenham um pouco de distância entre as palavras. Ok, então isso é bom o suficiente agora é hora de adicionar um controle deslizante. Então, vamos clicar com o botão direito do mouse no personagem NFO, ir aos seus olhos. E você pode ver aqui que temos a opção de adicionar um controle deslizante, coletar sobre isso. Então agora temos um controle deslizante aqui para representar o XP. E agora como vamos mudar isso? Deixe-me apenas clicar no personagem para o próximo nível, mover um pouco para baixo, e pegar o controle deslizante, colocá-lo no mesmo nível, e vamos torná-lo um pouco maior. Então, lá vai você. Mas este controle deslizante é muito chato. Queremos torná-lo mais excitante. Então vamos abrir o controle deslizante e vamos excluir o controle deslizante alça aqui. Então vamos deletar isso. A imagem de fundo vai mudar e o preenchimento também. Mas vamos adicionar nossa própria interface do usuário. Então eu forneci isso a você. É uma interface muito boa. Eles são os mesmos que este da mesma pasta. Então, vamos adicionar o enchimento azul para representar ou você pode adicionar a laranja. Acho que vou adicionar a laranja e o fundo. Então vamos para os sprites, elementos da interface do usuário, e vamos arrastar o fundo do controle deslizante para o laranja e o amarelo. E vamos apenas arrastar o azul e vermelho vai usá-los mais tarde. Então agora temos estes. Vamos voltar para o nosso controle deslizante, para o fundo. Vamos adicionar a imagem de fundo ao fundo do controle deslizante. E no filme, você pode ver que nós também temos um sprite UI. Vamos adicionar o preenchimento laranja a ele. Então agora você pode ver se clicamos no controle deslizante, você notará se rolarmos para baixo no Inspetor, temos o valor. Se aumentarmos o valor, lá vamos nós. Podemos ver que podemos mover esta linha laranja para chegar ao fim. Mas ainda temos algumas mudanças a fazer. Então, vamos clicar no plano de fundo. Se você olhar em transformação direta, esta é a maneira como ele é representado. Está esticado em ambos os lados. Nós não queremos isso. Queremos manter pressionado Alt e pressionar o no canto inferior direito, e você pode ver que ele vai esticar para todos os lados. Em seguida, vamos para a área de preenchimento no filme e esticaremos todos os lados. Lá vai você. Então agora podemos pegar o controle deslizante. E se aumentarmos o tamanho, você pode ver que ele preenche toda a área. Se formos para o valor de controle deslizante agora vai de 0 para o comprimento total. Mas há um pequeno problema aqui. Você pode ver que está um pouco fora dos limites. Para corrigir isso, vamos para a área de preenchimento e basta movê-lo aqui e ajustado de acordo com nossa preferência garante que você ajuste os dois da maneira que quiser. Considerando que o final e clique na área de preenchimento e aqui também, e lá vai você. Então, para esticar isso para preencher tudo. E você também pode esticar isso para preencher toda a imagem sprite. Ok, então vamos fazer isso um pouco maior. E lá vai você. Agora temos nossas informações de personagens, mas há apenas mais uma coisa que queremos adicionar e é algo que está disponível em todos os jogos onde temos controles deslizantes que representam o quanto ainda temos que ir. E esse é um número preciso neste controle deslizante. Então eu vou emitir um desafio para vocês e que é adicionar texto. Portanto, adicione um texto para representar com precisão o XP no controle deslizante para evitar confusão. E você precisará duplicar o personagem e se apaixonar por dois outros personagens e nosso jogo. Então, pause o vídeo agora como um texto XP e duplique o personagem na foto. Tome mais dois. Oh, ok, bem-vindo de volta. Então precisamos de um número. Temos o controle deslizante. Chama-se isso, o controle deslizante de exposição. E vamos ao personagem e talvez duplicar, ou talvez devêssemos fazer isso um pouco maior. Não tenho certeza se precisamos trabalhar no pequeno. E diremos que são 100.000 mil. E nós vamos colocá-lo aqui mesmo no número como ele vai. Então não me permite, talvez precise de mais de 100. Basta colocar outro 0 extra aqui. E vamos ver como podemos ajustar isso. Lá vamos nós. Então, é um número muito bom, limpo que nos permite saber o quanto nós realmente amamos além do controle deslizante. Então eu vou aumentar o tamanho em ambos os lados. E finalmente, a última coisa que precisamos fazer é duplicar esse personagem NFO e configurá-lo aqui, duplicado novamente, configurá-lo aqui mesmo. E se você quiser ter quatro, bem, você terá que abrir espaço ou mais tarde você aprenderá uma técnica onde podemos mudar o layout de tudo. Talvez adicionar algum tipo de botão que nos permita ir para a próxima página. Essa é uma possibilidade se você quiser ter mais de três caracteres. Mas como você pode ver, se voltarmos, se clicarmos em maximizar no jogo, executar nosso jogo, e lá vai você. Isso parece muito, muito bom, especialmente quando você vê personagens diferentes. Então temos o HP, o maná, o XP atual, a experiência para o próximo nível. E este é um controle deslizante dinâmico que você verá como podemos controlar mais tarde. No próximo vídeo, vamos estar ativando e desativando o menu com base na entrada do player. Porque atualmente, como você pode ver, está sempre na nossa cara e nós não queremos isso. Vemo-nos no próximo vídeo. 47. Gerente de menu: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Como pode ver, não temos mais o menu. Bem, para onde foi? Vamos procurar com o Jimmy. Não há menu, mas se pressionarmos uma certa tecla, sim, lá vamos nós. Temos o menu, mas se passarmos a mesma chave, ela desaparece, aparece, desaparece. E podemos fazer isso o dia todo. Então não vamos perder mais tempo e vamos começar. Oh, caso. Então, atualmente nosso menu parece bom o suficiente. Claro que adicionaremos mais coisas mais tarde, mas por enquanto, precisamos de uma maneira de fechar este menu e abrir. Então vamos fazer isso e nosso gerente de menu, obviamente. Então vamos clicar duas vezes no gerenciador de menus e abrir e Visual Studio, a primeira coisa que precisamos é, obviamente, uma referência ao menu. Então vamos duplicar esta linha. E nós vamos criar uma variável de objeto de jogo. E vai ser o menu manual simples. A próxima coisa que precisamos é de uma maneira de ter certeza que ligamos e desligamos o menu usando algum tipo de tecla. E isso precisa ser a mesma chave. Portanto, não precisamos usar, por exemplo, a tecla M para abrir o menu. E então o, por exemplo, eu não sei, pico para fechar o menu, isso não é muito útil. Precisamos de uma chave para fazer isso, e eu vou te dar um desafio. E seu desafio será verificar se há entrada, ativar e desativar o menu usando a tecla M ou qualquer tecla que você quiser. Porque bem, menu começa com, e assim mg é o melhor usando na atualização. Então acho que apagamos a atualização. Você só pode usar uma chave. Como eu disse. Vou lhe dar uma pequena dica de como você pode usar apenas uma chave se você já sabe ou não sabe e quer desafiar a si mesmo, pausar agora, ir para o desafio. Caso contrário, verifique se o menu está ativo na hierarquia. Então você precisará criar uma condição. Se estiver ativo na hierarquia, irá desativá-lo. Se ele não estiver ativo, vamos ativá-lo e você já sabe como definir algo ativo. Essa é outra dica. Pause o vídeo agora mesmo e vá fazer o desafio. Ó K sua bem-vinda de volta. Então, uma hora de codificação aqui em início, vamos criar a atualização. E você pode ver que ele itera imediatamente para nós. Nós não precisamos digitar private void, apenas digite update e pressione tab. Então, se o ponto do menu é ativo ou ativo e hierarquia, em seguida, vamos definir o ponto do menu ativo como false else. E acabei de notar que nem sequer digitei o uso da chave. Então farei isso agora mesmo depois de terminar. E se ele não estiver ativo na hierarquia do que o conjunto de pontos do menu ativo, não será verdade. E vamos embrulhar tudo isso em uma condição que a entrada FV obtenha keydown. E em um código de tecla que é o m, eu vou mover todos estes mantendo pressionada Alt e usando a guia cabeçalho setas. E lá vai você. Então agora e atualizar, ele continua verificando se tínhamos a tecla M, vamos verificar se o menu está ativo na hierarquia. Vamos defini-lo como falso. Se não for, vamos defini-lo como verdadeiro. Vamos testar isso. Então eu vou desligar o menu. Vou comandar o jogo. Vou apertar a tecla M e nada parece estar acontecendo. Por que é isso? Porque se clicar duas vezes aqui, o menu e a hierarquia ativa para que você possa ver não foram atribuídos. Então isso significa que nos esquecemos de fazer o passo mais crucial. E que em Canvas, precisamos dar-lhe o menu Objeto. Vamos salvar isso. Vamos parar de maximizar em Play. Vamos executar o jogo. E quando apertamos a tecla M, lá vamos nós. Você pode ver que temos o nosso menu. Se apertarmos a tecla M novamente, lá vamos nós, ela vai embora, entra e sai vai. Espero que goste. Espero que você esteja cometendo suas mudanças. Vou encenar tudo agora e vou comprometê-los. E se você está gostando do curso, você vai gostar de mim como instrutor. Por favor, deixe um comentário. Isso me ajuda muito. Então, com isso dito, te vejo no próximo vídeo. 48. Stop Player (de novo): Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, vamos impedir que nosso jogador se mova quando ele abrir o menu. Então, quando abrimos o menu e ainda fomos capazes de mover o nosso jogador. Então agora, quando nos movermos em nosso mundo, se abrirmos o menu, você verá que não podemos mais nos mover. E eu fiz algo muito estranho e você deve. Então eu sou capaz de controlar o controle deslizante usando o ancinho como o mouse, então vamos lidar com isso mais tarde. Mas por enquanto, não vamos perder mais tempo e vamos começar. Oh, ok, então atualmente temos um menu que podemos ligar e desligar. Então, se pressionarmos o MK, você vai ver ligado e desligado. Muito bom. Mas o problema é que, enquanto estamos nos movendo, podemos ligar a chave e continuar em movimento. E isso não é algo que realmente queremos. Queremos impedir que o jogador se mova quando abrir o menu. Agora alguns jogos têm a opção, não a opção. Bem, sempre que você abrir o menu nesses jogos, você ainda pode se mover como, por exemplo, Dark Souls. Mas vamos criar algo diferente. Queremos que o jogador pare. Então nós já fizemos algo semelhante a isso. Se entrarmos no Considerando que o controlador de diálogo. Aqui, você pode ver aqui que quando abrimos ou quando estamos conversando, quando começamos a conversa, você pode ver que a instância do ponto do jogador, a Ativar é igual a false. E até lá, não, estamos colocando isso em um lugar diferente aqui. Então, estamos definindo como verdadeiro quando ativamos o diálogo e depois voltamos para falso quando paramos de falar. Isto é bom. Agora precisamos adicioná-lo em um lugar diferente, que é o gerenciador de menus. Mas há um pequeno problema. Estes podem contradizir-se a si próprios. Se estamos ativando o movimento do jogador a partir de muitos lugares, podemos encontrar problemas onde, digamos que paramos de nos mover ou digamos que abrimos o diálogo e abrimos eles e você. Então agora podemos começar a andar. Podemos até testar isso e nosso jogo quando adicionamos ao gerenciador de menus. Então, queremos evitar isso. Queremos um lugar centralizado onde paramos o movimento do jogador e que lugar melhor do que usar o gerenciador de jogos. Então, aqui vamos criar duas variáveis, um bool público. E eles serão o menu do jogo aberto e a caixa de diálogo aberta. E agora uma atualização, vamos verificar esses dois. Então, se Vi menu do jogo aberto ou a caixa de diálogo aberta, então vamos acessar a instância do ponto do jogador ponto o movimento ativar e defini-lo como true. Senão. Se nenhum desses dois estiver aberto, então vamos definir a terceira instância de desativação do movimento para falso ou se um deles fecha um grande. Agora temos um lugar central onde podemos parar o movimento, mas ainda não os designamos. E vai fazer parte do seu desafio. Então seu desafio é colocar o booleano no lugar certo. Então precisamos parar o jogador de se mover em dois lugares e nossos roteiros, então dois roteiros, precisamos parar o jogador se mover. Precisamos ajustar um deles. E precisamos configurá-los usando a instância da classe. E, claro, a classe a que me refiro é o Gerente de Jogo. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, ok, bem-vindo de volta. Então, a primeira coisa aqui, quando pressionarmos o Encke vai acessar o gerente do jogo. Instância, pensei que o menu do jogo aberto e ele vai ser igual a true, irá duplicar esta linha. Vamos movê-lo para baixo e vamos configurá-lo para, ou não, este deve ser definido como falso e este é verdadeiro. Menu é aberto como igual a false. Isso significa que isso não é mais verdade e precisamos ativar o movimento está definido como falso. Ok? Vamos testar isto no nosso jogo, certificamo-nos de que a lógica funciona e o que mais? É verdade, está bem? E a próxima coisa, precisamos mudá-lo no controlador de diálogo. Então, em vez da instância do ponto do jogador definida como false, vamos entrar no gerenciador do jogo. Ponto de instância ponto. A caixa de diálogo abre é igual a false porque aqui terminamos de falar. Assim, as frases atuais são maiores do que as sentenças de diálogo disponíveis ou o comprimento delas. Portanto, a caixa de diálogo é fechada. E aqui, quando a caixa de diálogo for aberta, será a instância do ponto do gerenciador de jogos, a caixa de diálogo aberta definida como true. Então vamos em frente e testar isso. Deixa-me mostrar-te mais uma vez. Então talvez você não tenha pego isso. Eu segui em frente muito rapidamente. Lá vai você. Agora vamos entrar no nosso jogo. Vamos tocar em Play e podemos andar por aí quando apertarmos a tecla M. Sim, lá vai você. Não podemos andar por aí. Você pode vê-lo pela grama, por trás. Ou podemos clicar duas vezes no jogador. E lá vai você. Este é o nosso jogador. Tentamos nos mover. Sim. E esta é uma das características de ter uma tela tão grande. Podemos olhar para a tela em nosso menu de jogo, mas ainda ver na cena corretamente o que está acontecendo. Certo, então agora desligamos a tela ou o menu. Podemos voltar a andar perfeitamente. Agora vamos falar com o nosso curandeiro aqui. Então tínhamos a chave. Podemos andar? Não, não podemos quando terminarmos de falar, podemos andar de novo. Espero que goste. Espero que você esteja salvando seus repositórios e eu vou vê-lo no próximo vídeo. 49. Configurar Stat: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos estar configurando todas as estatísticas. Então, quando executamos nosso jogo primeiro, quando tínhamos a tecla M, você notará que só temos dois painéis de personagens se removermos agora o curandeiro, executamos nosso jogo. Você vai notar que quando nós apertamos a tecla M, nós só temos um porque nós temos apenas um único jogador ou personagem e nosso mundo que tem uma estatística de jogador sobre ele. Então não vamos perder mais tempo. E precisamos mover as estatísticas de atualização e para o outro. Isto é algo que vou cometer um grande erro. Então não vamos perder mais tempo e vamos começar. Oh, ok. Então, atualmente, deixe-me ligar o menu. Atualmente, temos tudo configurado. Então temos o HP, a quantidade de XP atual e assim por diante. Tudo configurado em termos de elementos de interface do usuário. Agora o que precisamos é converter esses elementos da interface do usuário e para o personagem real e para a frente usando as estatísticas do jogador que temos em cada um de nossos jogadores. Então vamos fazer isso no gerenciador de menu. Se entrarmos na tela, clique duas vezes em Gerenciador de menus. E temos este grupo bem aqui. Primeiro, precisamos de uma referência às estatísticas do jogador. Então crie um campo serializado aqui, que vai ser um, oh, você sabe o quê? Nem precisamos torná-lo um campo serializado. Podemos fazer disso um campo privado. E podemos movê-lo para cá agora e apenas remover isto. Então agora vamos criar uma matriz de estatísticas de jogador privado, que vai ser chamado de estatísticas de jogador simplesmente. A próxima coisa, porque estamos acessando elementos de interface do usuário, precisará se certificar de que temos usando UI mecanismo Unity. E agora queremos referências aos diferentes elementos que temos. Então precisamos colocá-los dentro de um colchete, então um campo serializado. Primeiro de tudo, ele vai ser um texto e maneira e ele vai segurar o texto nome vai segurar o texto HP. E é h p texto. Vai ter o texto de mana, o texto de nível, o texto XP. E eu acho que isso é tudo o que vamos adicionar a isso se descobrirmos que precisamos e talvez eu deva mover isso para cima ou para baixo. Não, eu vou ficar com ele vai manter todos os elementos que estão juntos sem nenhum espaço entre eles. Então a próxima coisa que precisamos é de um campo serializado para esses controles deslizantes. Então, um controle deslizante, ele vai ser, é claro, uma matriz porque temos vários controles deslizantes. Então XB, controle deslizante é o nome da nossa variável, vai precisar de uma matriz de campo serializado para as imagens. Então campo serializado em cada matriz e o caractere, oops, a imagem do caractere. E o que mais precisamos? Precisamos acompanhar o número de painéis. Então, atualmente, temos três painéis estáticos, mas digamos que temos apenas um jogador com estatísticas de jogador no jogo, ou temos dois jogadores. Então não queremos ter um terceiro. Isso só fará com que tudo seja carinhoso. Então o que vamos fazer é também fazer referência a isso. Então vamos criar uma matriz de objetos de jogo. E serão os painéis de personagens. Então painel de caracteres, guarde isso. Agora vamos colocar tudo na Unidade. Então, se formos ao cardápio gerencial, ver se temos tudo aqui. Nós vamos trancar isso e então vamos para o personagem e false vai abrir todos eles. Então vamos abrir todos os três. E estamos fazendo isso porque queremos arrastar e soltar todos eles. Então, em vez de adicionar cada um deles, vamos assim. E em vez disso estamos indo, por exemplo, nome do personagem, nome do personagem, nome do personagem. E vamos arrastá-los todos para cá. E isso não nos permite porque, por favor, posso arrastá-lo até aqui? Não, não posso, então isso não é um imposto. Este é o MP Pro. Guarde isso. Agora, vamos tentar de novo. Nós escolhemos esses três e não podemos usar o MPI Pro porque não adicionamos os testes TM usando. Então, agora podemos continuar? Outra vez? Está me dizendo que há um erro. Namespace JMP Pro. Eu adicionei, estamos usando o TMP Pro. Qual é o problema? Vamos ver no controlador de diálogo, sim, lá vamos para JMP Pro, o MPI pro. Eu acho que vai se resolver em apenas um pouco. Text Mesh PRO techs malha GUI, guarde isso. Ok, então agora finalmente, nós vamos escolher o nome do caractere, o nome do caractere, e arrastá-lo para o texto do nome. Então, como podem ver, lá vamos nós. O primeiro é referenciado ao primeiro, ao segundo e ao terceiro. E isso tornará tudo mais fácil. A próxima coisa temos o HB. Então personagem HB, HB, personagem HP personagem HB, arrastá-lo para o texto HB. Então, lá vai você. Bhp, BHP. A próxima coisa é o mano a mano, um mano, cara. Direto e texto. Lá vai você. Portanto, certifique-se de que o primeiro faz referência ao primeiro. Temos o texto de nível. Então XB atual, Jacqueline aqui, o personagem para o próximo nível controle deslizante. Então este é ordinal, o controle deslizante XP. Arraste-o para o controle deslizante XP. A imagem do personagem, que é algo que precisamos mudar. Então as imagens do personagem ou não mudam. O que precisamos fazer é adicionar as estatísticas de jogadores invejosos porque ainda não fizemos isso. As informações de caracteres e para o painel de caracteres. E finalmente temos o texto XP, XP para o próximo nível. Eu acho que é isso. Então personagem SP2, próximo nível, eu acredito que é isso. Se voltarmos à nossa cena, sim, lá vamos nós. Então, tudo está pronto agora. Uma coisa que precisamos fazer é entrar nas estatísticas do jogador. Precisamos subir na NFO e herdar. Vamos criar um campo serializado, que será uma imagem. E não estamos usando elementos de interface do usuário. Então vai ser uma imagem e vai ser a imagem do personagem. Guarde isso em Unity. Onde temos personagens? Então vamos fechar a tela por um segundo. Entra aqui. E agora podemos parar as fechaduras ou pressionar o registro para vermos novamente o que está acontecendo aqui. Precisamos da imagem, enquanto a imagem, podemos arrastar o renderizador sprite. Isso vai funcionar? Não, precisamos abrir, encontrar a imagem e arrastar esta imagem para aqui. E não está aceitando porque precisa ser um sprite. Como podem ver, também cometi muitos erros. Precisa ser tão brilhante e vamos arrastar os curandeiros Brighton até aqui. Então, lá vai você. Salve esse back-end. Ou o nosso jogador também. Então Jimmy, enquanto me dê, me dê seu sprite. Muito vá, guarde isso. Agora, eu acho que isso vai funcionar. Talvez não seja só porque precisamos mudar o onde está no gerenciador de menu. Isto devia ser talvez um “sprite”. Veremos o que acontece daqui a pouco. Agora, a próxima coisa que precisamos é de um método para atualizar o status. Então vamos criá-lo. Então, antes de desvanecermos a imagem, e aqui vamos criar um vazio público, atualizar estatísticas. E o que faremos aqui? Bem, a primeira coisa é que precisamos das estatísticas do jogador. Então vamos escrever estatísticas do jogador é igual à instância de ponto do gerenciador de jogo as estatísticas do jogador podemos acessá-lo? Não, porque é um campo serializado, enquanto o gerente do jogo, é um campo serializado. Vamos fazer isso da maneira mais profissional. Então vamos criar um array público ou público de estatísticas de jogadores, e vamos chamá-lo de obter estatísticas de jogadores. E vamos simplesmente devolver as estatísticas do jogador. Então lá vamos nós e precisamos torná-lo um array porque seu tipo de retorno é uma matriz de estatísticas de jogadores, não apenas uma estatística de jogador. Vamos testar isso aqui. O jogador, as estatísticas do jogador. Então, lá vai você. Agora você poderia ter evitado esta etapa de criação de um método. Podias ter mudado isto para um público e depois usado. Mas essa não é a maneira mais profissional de fazer isso. Não queremos ter acesso às estatísticas do jogador porque não queremos poder modificá-las. Nós só queremos ser capazes de obtê-los. Não é problema quando você está criando o jogo, mas por algumas razões em algum lugar você tentar ou talvez você apenas manipulou as estatísticas do jogador um pouco. Você vai ter muitos problemas. Então, usando métodos como estes, realmente evitar esses tipos de problemas. Não queremos manipular as estatísticas do jogador. Só queremos pegá-los. Certo, então com isso fora do caminho, o que mais deveríamos fazer? Se entrarmos em nosso gerenciador de menu terá que atualizar o status cada vez que abrirmos o menu. Então, depois de abrir o menu ou antes de realmente, vamos atualizar as estatísticas. Então atualize as estatísticas. Ok, então finalmente o que queremos fazer é ir em frente e desligar qualquer painel de caracteres que não seja usado. E para fazer isso, vou te dar um desafio. Então seu desafio é ativar os painéis de personagens. Então, crie um loop que passe pelas estatísticas do jogador e ative o painel Personagem para os jogadores disponíveis. A primeira coisa é que você precisa desligar os painéis de caracteres no Unity e depois usar o loop para ativá-los novamente. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então vamos desligar tudo isso. Vamos guardar isso aqui. Vamos criar um loop. Então, para int I é igual a 0, para I menor do que VT jogador estatísticas comprimento ponto. E para aumentar em 1 cada vez. Primeiro, vamos imprimir quantos eu temos. Quantos AI não são nossos olhos reais, os olhos e aqui, ok, isso foi uma piada ruim. Vamos acessar o painel de caracteres na posição I. E vamos ativar. Verdadeiro. Guarde isso. Agora de volta aqui, vamos ver se isso funciona. Deixe-me desligar o menu. Aperte Play. Então, agora apertamos a tecla M e não temos nada. Por que é isso? Nenhum deles foi ligado. Então, oh, lá vamos nós. Então você pode ver que dois deles foram ligados e levou um tempo. Por que é isso? Salvar? Temos certeza de que tudo está funcionando corretamente? Vamos aumentar o MPC por enquanto e ver o que acontece quando executamos o jogo. Tínhamos a chave M. Lá vai você. Então temos apenas um deles ativo porque removemos o curandeiro. Precisamos voltar a ligar o curandeiro. Precisamos executar o jogo para que o gerente do jogo possa realmente encontrar. Então temos um “M ”. Temos que, você pode ver que temos um pequeno problema de corrigir estes, pressionando as duas vezes, mas tudo parece funcionar bem. Mas ainda não terminamos porque precisamos preencher todas as informações que configuramos. Faremos isso no próximo vídeo. 50. Atualização de stats: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nosso menu vai realmente fazer algo útil. Então, se olharmos para o nosso curandeiro, digamos que o XP atual deve ser 50, a casa atual deve ser 60. E não, porque o máximo é 30, isso é ajustado para 20. E o mana atual será três. Vamos executar o nosso jogo. Vamos apertar a tecla M e você vai notar que temos tudo configurado aqui corretamente. Até temos esses controles deslizantes. Você pode ver que é exatamente no meio porque tem, ou ela tem, a curandeira tem Sara 50 pontos de um 100, então é exatamente no meio. Então não vamos perder mais tempo e vamos começar. Atualmente, estamos apenas configurando os painéis para ativos. O próximo passo é realmente ir em frente e usar o onde está nas estatísticas do jogador. Então, por exemplo, definindo o nível dos jogadores, a XP atual e assim por diante e assim por diante. Agora, alguns deles precisarão ser públicos para poder acessá-los. Então, vamos começar. A primeira coisa que queremos é o nome do jogador. Então o texto do nome na posição I. E estamos fazendo tudo isso dentro do loop for. Então, passamos por todas as estatísticas dos jogadores que estão disponíveis. Precisamos ter certeza de que é dot txt e será igual às estatísticas do jogador na posição I, que o nome do jogador. Então, como você pode ver, nós precisamos mudar muitos desses. Agora. Já fizemos isso da maneira mais sofisticada antes. Mas acho que não vale a pena criar um método para cada um deles. Então podemos simplesmente ir em frente e torná-lo público, vamos tornar público as coisas de que precisamos. Então vai ser o nome do jogador de pontos. Lá vai você, guarde isso. Em seguida, vamos obter o texto HP na posição I, o imposto, o jogador. Agora aqui vamos fazer algo diferente. Porque se voltarmos, executamos o menu. Desligamos, ligamos um dos personagens. Você percebe que HP não é simplesmente o número. É também a concatenação com a palavra HB. Então, se eu clicar duas vezes na tela, se eu clicar aqui, você notará que o personagem NFO é ponto HP e o número. Então o que precisamos fazer é ter isso em conta. Então vamos escrever, primeiro lugar, abrir essas duas citações. Citações, ok, Então HP, e então vamos adicionar os dois pontos, e então nós adicionamos um plus. E fizemos isso anteriormente em uma de nossas digitais. Isso significa que estamos concatenando um inteiro com o HB. Então, vamos adicionar outra vantagem. Vamos adicionar a barra dianteira e outra vantagem, e são as estatísticas do jogador. Eu pensei Max HP, e nós precisamos ir e aqui. Enquanto o HP máximo, o HP máximo é público e o HP atual também é público. Guarde isso aqui. HB atual, Max HP, guarde isso. Está bem. Em seguida, temos a mononucleose. Então precisamos voltar aqui e torná-los públicos. E clique em salvar isso de volta aqui. E o texto como a maneira atual e o máximo. Então, quão chato isso é fazer? Mas é necessário para que o nível de texto dot txt. E também precisamos mudar as cordas aqui. Então mana, AHP. Agora o nível. Então, o que escrevemos aqui? O, oh, nós nem sequer criamos um nível, então é o atual este nível de imposto deve ser alterado, eu acho que sim. Vá no Canvas, gerenciador de menu, o texto de nível, é o , ok, então é o atual, então precisamos mudar. Eu não acho que textos nivelados realmente representam a palavra correta, então eu vou mudar isso para o texto XP atual e aplicá-lo. Então, a XP atual é o jogador em vez da XP atual, e nós não temos isso. Você também pode adicionar um imposto ao nível. Então, o nível em que o nosso jogador está, tornar isso público, guarde isso de volta aqui. EXP atual. E nós não pensamos em nada disso. Guarde isso. E o que mais temos? Bem, nós temos muitos mais, mas por enquanto, vamos salvar que isso está acontecendo aqui. Vamos virar o personagem e termo de queda do menu. E antes que eu esqueça de comer, nós tínhamos as estatísticas de atualização aqui, mas eu coloquei aqui pensando que é onde abrimos. Na verdade sei que n aqui é onde nós realmente abrir os menus. Tudo isso é onde vamos chamar as estatísticas de atualização de volta ao nosso jogo, executar o código e agora vemos que quando apertamos a tecla M, temos um vínculo externo. Qual é o problema? Então, estamos olhando para o texto XP atual. Qual é o problema? Ok, bem-vindo de volta. Então o problema é que mudamos o nome da variável sem configurá-la aqui. Então, de volta ao bloqueio do gerenciador de menu, que é abrir o personagem NFO. Vamos pegar o personagem enquanto personagem XP atual. E vamos arrastá-los para cá. Então, lá vai você. Guarde isso. Agora não devemos ter problemas. Nós comandamos o jogo, tivemos o MP. Sim, lá vamos nós. Então temos os HPs acima de 100 menos 0 sobre 30, e a experiência atual é 36. Então, se quisermos ir dar uma olhada no jogador, vamos desbloquear isso. Podemos ver que a experiência atual Trinta e seis, ótimo. O próximo HP é 100, o atual h ser 0. Se fizermos 20, e desligarmos o menu, ligamo-lo novamente. Lá vamos nós. Então temos 20 HP. Então isso parece ou parece estar funcionando. E agora temos de terminar o resto e vai ser o teu desafio. Seu desafio é completar o imposto de experiência. Então atualize o controle deslizante. E antes de tudo, antes de atualizar o controle deslizante, você precisa atualizar o valor máximo no controle deslizante. O que eu quero dizer com valor máximo? Se olharmos para trás aqui, se clicarmos no controle deslizante, você pode ver que temos um valor e aqui temos o mínimo e o máximo. Então, se dissermos fazer o valor máximo 50, você vai notar que vamos de um a 50. Você precisa se certificar de que atualiza o valor nos controles deslizantes. Então, com isso dito, deixe-me levá-lo de volta ao Desafio. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, ok, bem-vindo de volta. Então, a primeira coisa que precisamos fazer é ir para o controle deslizante XP. Ok, Então controle deslizante XP na posição i ponto valor máximo, ele vai ser igual ao jogador começa na posição I ponto XP para o próximo nível, e nós não temos isso. Assim, o x B2 próximo nível é público. Guarde isso, e vamos ver. Então, para o próximo nível. E aqui precisamos fazer algo muito importante. Precisamos levar o perito para o próximo nível em uma determinada posição. Então o que vamos fazer é conseguir essa posição olhando para as estatísticas do jogador na posição I, esse nível de jogador. Então precisamos do nível eo nível do jogador precisa ser público. Então sei que muitos de vocês podem ter tropeçado aqui. Esta foi a parte difícil do desafio. Espero que tenha acertado. Então, por que estamos fazendo isso? Você pode estar perguntando, então o que acontece aqui? Se formos para o XP para o próximo nível, você notará que é um array e queremos obter a posição certa. Então precisamos do nível do jogador. E usando o nível do jogador, queremos acessar a experiência para chegar ao próximo para configurá-lo. Então é por isso que aqui no gerenciador de menu, estamos usando o nível de jogador na posição I e obtendo o nível que seu anúncio e usando todo este inteiro e ordenado para olhar através do XP para o próximo nível. Espero que não tenha sido tão difícil como um desafio. E agora vamos acessar o valor, os jogadores que pontam I. E vamos usar a exp atual, guarde isso. E, finalmente, precisamos que o XP seja tributado. Assim, o XP tributado na posição i ponto texto, é claro, é igual às estatísticas do jogador na posição I, a atual XB dot dois string. Então este foi um dos segundos desafios. Eu sei que esse desafio foi muito difícil. O que estamos fazendo aqui, se não adicionarmos um ponto à string, você notará que teremos uma seta. Então esta seta nos diz que não podemos converter implicitamente um inteiro em uma string. Então, para convertê-lo em uma string, vamos escrever toString. E então vamos adicionar a concatenação com a barra. E então vamos acessar as estatísticas do jogador na posição i, ponto XP para o próximo nível na posição que já criamos aqui. Então, qual é o próximo nível? Coloque isso aqui. E lá vai você. Isso deve cobrir quase tudo se não cometemos nenhum erro. Então agora se nós, vamos adicionar o curandeiro NPC novamente. Então, agora, quando executamos nosso jogo, tínhamos a tecla M. Lá vamos nós. Temos a experiência para o próximo nível porque temos, talvez devêssemos ter escrito isso em branco. Deixe-me maximizar o jogo para que possamos vê-los mais claramente. Então, quando tivemos o MK, lá vai você. Então, para chegar ao primeiro nível, precisamos de 100. Vamos fazer com que isto seja uma cor diferente. Temos 36. Então você pode ver que o controle deslizante muda automaticamente e nós não temos a imagem para Sarah. Por que é isso? Porque deveríamos ter feito isso não uma imagem, mas um sprite. E tenho certeza que esse é o problema. E nem mesmo que ainda não tenhamos atribuído. Então aqui nós vamos obter a imagem do personagem na posição que eu vou. Então a imagem do personagem na posição eu pontinho o sprite. Então, por que estamos fazendo isso? Porque se olharmos para trás em uma de nossas imagens de personagem aqui, você notará que temos a imagem e a necessidade de substituir o sprite nela. Então, a imagem de caractere ponto sprite é igual ao e precisamos ter certeza de que o, onde está? A entidade gráfica na estatística do jogador é pública. Então ele está indo para os jogadores que na posição i ponto personagem MHC2. Vamos guardar isso. Voltaremos para a Unidade e espero que a imagem funcione. Então, quando tivemos a tecla M, muito objetivo. Mesmo que Sarah não pareça tão bem quanto deveria, tudo parece estar funcionando bem. Tudo está funcionando corretamente. Então eu espero que você tenha gostado deste vídeo muito longo. Estamos em torno de 20 minutos. Alguma edição vai ajudar, esperançosamente, mas temos tudo feito. E no próximo vídeo, estaremos criando uma maneira de navegar pelo menu. Então, vemo-nos na próxima. 51. Usando os botões: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos colocar nossos botões para usar. Então, se você se lembra, nossos botões não fizeram nada. Mas agora, quando apertamos o botão de itens, temos um painel diferente. Quando atingimos as estatísticas, temos outro painel diferente. E quando desistimos do jogo, você vê isso com, com o jogo. Infelizmente, porque ainda estamos no editor do Unity, o rápido não faz nada. Será mais tarde quando construirmos nosso jogo, mas por enquanto, ele funciona imprimindo algo para o console. Então não vamos perder mais tempo e vamos começar. Certo, então no momento, se rodarmos nosso jogo, você pode ver que se nosso jogo correr qualquer dia agora, se apertarmos a tecla M, temos o menu. Tudo está configurado corretamente. Talvez precisemos consertar o sprite do pequeno hilar aqui, mas os botões não estão funcionando. Por que é isso? Bem, porque não lhes demos nada para trabalhar. Então precisamos de uma maneira de, sempre que clicamos no botão de status ou no botão de itens, queremos abrir em outros muitos. Então vamos abrir o Canvas, abrir o menu para que possamos ver tudo. E nós estamos indo para ir em frente e colocar todo o personagem e para sob um único objetos vazios, ou este será o personagem NFO. E vamos arrastar todos os três para o personagem e para a TI. E a próxima coisa que vamos fazer é criar um novo painel. Então vá para o seu painel de olhos e nós vamos torná-lo um pouco menor para que ele se encaixe bem debaixo dos botões. E vamos dar a ele o fundo que estamos usando. Então vá para os elementos, dê o fundo que estamos sempre usando e vire, whoops, onde está? Então, ligamos tudo completamente. Lá vamos nós. Podemos até torná-lo maior. Então vamos fazer isso, oops, não, queremos torná-lo um pouco maior. Então, lá vai você. Então temos mais espaço para trabalhar. E este painel vai ser o painel de itens. Portanto, os itens ou itens ou painel de itens depende de você. O que você quer nomear. Ele só precisa representar o que os itens são corretamente. Ok, ótimo. Então agora precisamos de uma maneira de ligar e desligar este painel quando coletarmos os botões. Agora, há muitas maneiras que podemos criar um método no gerenciador de menus para lidar com isso. Ou podemos ir para o botão Itens. Então, se abrirmos os botões, vamos para o botão Item. Se rolarmos para baixo, você pode ver no componente de jogo inferior ou o componente botão, temos um onclick. Este onclick, faz o que diz. Sempre que você clicar nele, ele faz algo e podemos adicionar aqui uma função para ele fazer. Então você pode ver atualmente podemos adicionar um objeto e é aqui que estaremos. Oops, desculpe. Então, se voltarmos para o botão Itens aqui, podemos arrastar o painel de itens aqui se ele nos permitir. Então, o painel de itens, e você pode ver que atualmente não há nenhuma função. Se clicarmos nele, temos muitas opções, e uma delas é o objeto do jogo. Assim, podemos acessar o objeto do jogo e fazer muitas coisas com ele. Então, por exemplo, o nome da string e assim por diante. Mas o que nos interessa é o set active book. Então, se você clicar aqui, você vê que nós temos esta pequena caixa de seleção. E esta pequena caixa de seleção representa se queremos definir ativo como verdadeiro ou se queremos definir o ativo como falso. Então, se definirmos o ativo como true, isso significa que este painel será definido como bem ativo. Então, agora, se eu desligar o painel de itens, se rodarmos o jogo e desligarmos o menu, ligá-lo novamente. Então, se eu clicar sobre os itens, muito ir. Quão legal é isso? Se eu clicar novamente, nada acontece porque ele não tem mais nada para fazer, ele apenas ativa o painel de itens. Então é assim que vamos abrir e fechar menus diferentes. Então, com esse conhecimento, é hora de você criar o painel de estados e o desafio do dever. Seu desafio é completar o botão de estatísticas. Então você precisará ativar as estatísticas e tudo o resto desligado. E eu não estou falando apenas sobre o personagem NFO. Estou falando das estatísticas de muitos. O que eu quero dizer com isso? Como você pode ver, temos um botão stat que é diferente das informações de caracteres regulares que criamos. Então, com esse conhecimento, deixe-me voltar aqui. Pause o vídeo agora mesmo, crie o painel de estatísticas. Ele não precisa ter nada nele, assim como os itens. Você pode duplicar o painel de itens e precisará definir o botão de status. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então vamos para o painel de itens. Vamos duplicá-lo e mudá-lo para o painel de status. Veremos o que o painel de status faz mais tarde. Então vamos para as estatísticas. Vamos ligar o painel de status. Vamos arrastá-lo aqui, definir o objeto do jogo para definir ativo e defini-lo como true. Mas não só isso, o desafio também diz e tudo o resto fora. Então vamos voltar aqui. Vamos criar outro objeto onclick sob o painel de estatísticas. Vamos arrastar o painel de itens. E aqui estamos indo para ir para o objeto do jogo, definir ativo, e vamos defini-lo como falso. Então, agora, quando clicamos no botão de status ou no botão stat, vamos definir ativo. As estatísticas devem ser as estatísticas, não o status. Então, as estatísticas. Então, quando ligamos o painel de estatísticas, desligamos o painel de itens e faremos a mesma coisa aqui para os itens. Então, como é que vamos saber a diferença? Não estamos agora. Mais tarde, veja que há uma diferença. Se você quiser, você pode adicionar talvez um pouco algo que diferencia os itens das estatísticas. Vamos em frente e fazer isso. Na verdade, é uma boa ideia com a qual comecei. Vamos apenas torná-lo um pouco menor. Então, agora guardamos isso. Vamos desligar o painel de estatísticas. Vamos executar o nosso jogo. Deixe-me sair, ligar isso de volta. Vá para os itens. Lá vai você. Este é o painel de itens, o grande. Agora devemos ter um menor quando tivemos as estatísticas. Lá vai você. Temos um menor. Ainda temos os personagens bem aqui. Você também pode desativá-los. Então o personagem NFO só deve aparecer quando entrarmos. Então vamos ver como podemos descobrir isso mais tarde. Nós também temos a última coisa que é o botão Sair. E para isso, porque queremos sair e sair do nosso jogo, vamos criar um método para isso. Então vamos ao gerente do menu. Vamos criar um método aqui e vai ser um vazio público, sair do jogo. E aqui vamos escrever ponto de aplicação. Então, o que isso faz, vai nos tirar do aplicativo. Mas como ainda não construímos nosso jogo, ainda o estamos usando no editor Unity. Não vai fazer nada. Então o que vamos fazer é usar o log de pontos de depuração. E vamos imprimir uma mensagem aqui que diz: “ Nós desistimos do jogo. Poupe isso, volte para a Unidade. E vamos ver como podemos fazer isso. Nós estamos indo para ir para o botão Sair, role para baixo no objeto onclick. Nós vamos, onde está? Onde é que estamos indo para arrastar e a tela porque estamos usando um método que está no gerenciador de menu. Então, enquanto o gerenciador do menu, está na tela, lá vai você. O gerenciador de menus está na tela. Então nós arrastamos e via Canvas para o objeto que está sendo solicitado aqui, a não-função irá clicar nele e você vai notar que devemos ter um gerenciador de menu. E aqui podemos acessar todos os métodos que estão lá. E um deles é o jogo de desistir. imagem de desvanecimento também é uma delas. Então, sempre que você quiser chamar um determinado método do OnClick, certifique-se de que ele é público. Então, vamos salvar isso. Vamos desligar o menu. Deixe-me desligar o menu. Vamos executar o nosso jogo. Tivemos a tecla M, vai clicar em um sair. E lá vai você. Você pode ver a mensagem impressa no console com sair do jogo. Então, com isso feito, espero que goste. No próximo vídeo, vamos criar nosso painel de estatísticas, adicionando tudo o que precisamos para terminar lá. Então, vemo-nos na próxima. 52. Configurar o interface da status Viuu: Bem-vindo de volta meus colegas desenvolvedores de jogos a este vídeo muito, muito longo. É longo porque temos muitos de vocês I para armar. Então, agora, se tivéssemos a tecla M, clicamos nas estatísticas. Lá vai você. Você pode ver que criamos um menu Estatísticas. Temos o nome de defesa destreza equipado arma, armadura, armadura de defesa, e assim por diante. Eles também têm esses nomes aqui, e eles não são apenas para mostrar. Se virarmos o curandeiro do MPC, lá vamos nós, Desligamos. Saímos, voltamos e acertamos estatísticas. Certo, isso não está funcionando. Isso pode desligar o curandeiro aqui. Isto é tão constrangedor. Tinha o jogo errado. Por favor, trabalhe. Ok, então lá vai você. Nós só temos um nome porque temos apenas um único personagem que tem estatísticas de um jogador sobre eles. Então não vamos perder mais tempo, e vamos começar configurando essas estatísticas muitos 0. Então, neste vídeo, vamos colocar nossas estatísticas. Então vamos ligar o painel de estatísticas e vamos tentar redefini-la para o tamanho anterior. E vamos clicar no Tiki, que nos permitirá ir para a ferramenta de recreação aparecer e vamos apenas torná-lo tão grande. Então lá vamos nós. Este é o nosso painel de estatísticas que vamos preencher. Então, a primeira coisa que vamos fazer ou deixe-me dizer-lhe a visão do que vamos fazer e você pode ajustar sua própria visão de como você quer, as estatísticas para olhar. Nós vamos adicionar talvez três botões aqui ou quatro botões dependendo de quantos personagens ou jogadores você quer ter. E então vamos adicionar uma imagem aqui ou aqui ou em qualquer lugar, talvez eu acho, à esquerda para representar o jogador. E então vamos adicionar todas essas estatísticas aqui. E você pode estar se perguntando por que isso é diferente da informação do personagem. Personagem NFO é apenas para como o quanto exibe ou tem saúde. Mas isso representará o quanto o jogador tem defesa, destreza e que armas ele será equipado coisa mais tarde quando realmente criar armas para equipado. Então este é o trabalho do span stat e não o personagem. Personagem é apenas um olhar rápido. Este será um olhar profundo do que o jogador realmente faz. Então vamos começar. Primeiro, vamos clicar com o botão direito aqui e vamos criar nossos botões. Então vamos entrar no seu olho e vamos criar um botão. Ok? Eu pensei por um momento lá que eu não cliquei nele. Vamos dar a ele a imagem de fundo que estamos acostumados. E vamos montá-lo aqui para torná-lo um pouco maior. Lá vai você. Acho que isso é o suficiente. E vamos remover este texto. Vamos adicionar o nosso próprio texto, Nash Pro, e vamos dar-lhe a palavra medieval. Para onde foi? Então vamos dar a ele o irregular medieval. Claro, bem, chama-se, vai chamar-se o nome do jogador. Aí está, o nome do jogador. Também será o nome do texto. Não temos que fazer isso, mas vamos mudar. Vai torná-lo ousado, vai torná-lo preto. E como sempre. Então, nada diferente agora. E vamos ver o que está acontecendo aqui. Vamos ajustar o texto para o tamanho adequado. E lá vai você. Talvez façamos a fonte um pouco menor. Ok, então lá vai você. Este é o nome do jogador. Acho que este botão é suficiente. Vamos chamá-lo de botão Camadas. E vamos continuar e duplicar isso duas vezes. Então duplique os cisnes, arraste-o um pouco para baixo. Duplicar isso outra vez, caiu um pouco. Então lá vai você. Agora temos esses três jogadores, e eu só espero que a distância seja conhecedores corretos. Então lá vai você. Em seguida, vamos adicionar uma imagem. Então vamos clicar com o botão direito aqui. E antes de continuarmos, vamos fazer isso sob um único objeto de jogo. Temos uma hierarquia muito boa. Então, como você pode ver imediatamente, isso fica muito confuso. Então eu sempre recomendo que você crie botões, pautas, Painel, Botões no painel de estatísticas e assim por diante. Então você tem uma organização muito boa. Ok, então a próxima coisa é a interface do usuário, a imagem, e esta será a imagem do jogador, imagem do jogador. E vamos apenas dar-lhe a imagem padrão do nosso jogador. Então, onde eles estão nos personagens? Dá-lhe este. Então lá vai você. Nós estamos indo para definir o aspecto SIFS nativo preservar vai torná-lo um pouco menor. E eu não tenho certeza onde você quer definir isso pode estar aqui e então colocar tudo à direita. Vai depender realmente, depende do seu tempo. Estou fazendo tudo o que está relacionado ao seu olho. Estou tentando passar por isso porque não é, não é como você não está aprendendo nada duplicando botões. Então eu gosto de passar por cima deles um pouco mais rápido. Então, aproveite o tempo para criar seu próprio layout. Então a imagem do jogador, vamos clicar com o botão direito do mouse e vamos criar dois conjuntos de, vamos dizer coisas. Vamos ter os rótulos à esquerda e os valores à direita. E nós temos que ter realmente, você sabe o que, basta ir para os botões, ir para qualquer um desses botões, duplicar o nome do jogador, e vamos colocá-lo lá fora. Então lá vai você. Agora podemos usar este. É muito mais rápido. E este primeiro de tudo, vai ser o nome, então o nome do jogador, e nós vamos apenas torná-lo um pouco menor. Lá vai você. Então, nome. Vamos duplicar isso de novo. Isso vai ser o HP irá duplicar isso novamente, e vamos definir tudo isso antes de começar a duplicar isso, vamos criar um objeto de jogo vazio, os rótulos, e vamos definir tudo isso sob os rótulos. E nós vamos fazer com que eles se enfrentem à direita assim. E vamos colocá-los no meio para que estejam todos ajustados para a direita. Vamos nomear isto o HB. Mais uma vez, vamos fazer. 53. Informação de status: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, você vai notar que eu cometi um monte de erros, mas nós conseguimos algo nenhum. Então, se formos para as estatísticas, você pode ver que o nome é Jimmy HBS, 0 para um sobre 100, destreza 1030. Mas o que acontece quando clicarmos na Sarah? Lá vai você. Você pode ver que todas as estatísticas mudam e podemos ir e voltar através delas. Então não vamos desperdiçar mais tempo e vamos começar. Oh, volte. Então o que vamos fazer agora é configurar nosso painel de status. Então vamos configurar tudo, incluindo os botões. A primeira coisa que precisamos fazer é definir os nomes corretos nos botões. E lá vai ser o seu desafio. Então seu desafio é definir os nomes, tão triste os nomes dos jogadores nos botões. Dentro do loop, acesse o componente de imposto nos botões e use o componente Obter em filhos para acessar esses textos. Então você só faz um pouco de pesquisa sobre como o Get Component e as crianças funcionam. Isso nos economizará muitos, digamos, campos serializados que precisaremos adicionar de outra forma. Então ResearchKit componentes e filhos e usá-lo para adicionar o componente no homossexual. Então, vemo-nos daqui a pouco. Oh, ok, bem-vindo de volta. Espero que tenha tentado fazer isso. Então, como é que isto funciona? Vamos seguir em frente e usar os botões de estatísticas na posição I. Depois de configurá-lo para ativo, vamos pegar o componente e as crianças e eu não vou abrir os cães. Espero que tenha tentado. Mas como você pode ver, ele retorna o componente do tipo, tipo, o objeto do jogo das crianças. Então nós estamos acessando os botões aqui, e eles têm filhos que são o nome do jogador ou esses textos. Então vamos acessá-los. Então vamos ter filhos ou componentes em crianças. E como você pode ver, ele vai nos perguntar a que tipo queremos acessar. Vai ser do tipo TM por linha, sem malha de texto, malha pro GUI. E nós vamos acessar o elemento de texto neles. E vai ser igual às estatísticas do jogador na posição i ponto nome da camada. Então vamos salvar isso. Vamos voltar para a Unidade e esperar que isto se compile. Desative este painel de guias. Vamos correr o jogo e vamos ver, o MPI abriu as estatísticas e lá vai você, Jimmy. Então vamos precisar ajustar o nome apenas um pouco nesses painéis. Se olharmos aqui, onde está o botão? Então vamos abrir isso. Vamos colocá-los no meio. E acho que é o suficiente. Guarde isso. Vamos ligar o curandeiro. Tente isso mais uma vez. Certifique-se de que funciona. E nós vamos transformar este AP Stats. Lá vamos nós. Então Jimmy e Sarah. Então eu espero que você entendeu como obter componente e crianças funciona. Então a próxima coisa que vamos fazer é precisamos todas as variáveis para representar os rótulos e os valores. Então vamos abrir nosso gerenciador de menus e vamos precisar de muitos campos serializados. Então, primeiro, vamos em frente e criar um campo serializado para os profissionais de texto ou mensagem de texto ou texto. Eu continuo esquecendo que estamos usando texto Mesh sonda texto Mesh, pero, You Gui. Então é o nome da estatística, o stat, HP, stat mano. E quer saber? Eu vou te dar um desafio e vamos ver quem pode completar todas as coisas que precisamos primeiro. Então, mana, que decks, defesa imediata. E depois precisaremos de mais um. E vai ser uma imagem. E o caráter stat. Lá vamos nós. A próxima coisa que vamos fazer é criar um método para realmente atualizar as estatísticas. Então aqui no menu Stat, vamos entrar no vazio público e criar uma atualização do menu Estatísticas. E porque nós temos diferentes, isso é o que eles chamam, a informação do personagem, nós vamos dar um argumento. E este argumento vai ser um inteiro e ele vai representar o número selecionado do jogador. Este método será chamado toda vez que clicarmos nos botões dos jogadores. Viste que tínhamos o Jimmy e a Sarah. E sempre que clicarmos em Jimmy ou Sarah, passaremos uma variável aqui. E com base nessa variável, ele irá atualizar todos os estados e todos os valores e rótulos. Então, primeiro de tudo, nós temos o nome, então o nome stat está indo ou dot txt realmente vai ser igual ao stat do jogador na posição, jogador selecionado número.net ou nome do jogador ponto. E porque nós vamos estar usando isso toda vez, nós vamos criar uma variável que vai ser chamado de pipe player stat. Ele vai ser chamado de jogador selecionado e vai ser igual a estatísticas do jogador na posição número selecionado da camada. E agora podemos usá-lo imediatamente aqui e salvar um pouco de código, então jogador selecionado. Ok, ótimo. Agora a próxima coisa vamos usar o HB stat. É o jogador selecionado, o HP atual HB, e vamos concatená-lo com um HP máximo. Então, mais jogador selecionado Max HP. E eu acho que precisamos ter certeza de que esta é uma seqüência de duas para evitar erros. A seguir temos a mononucleose. Então Stats maná, maná não criará o Mano. Não. Sim, nós começamos Mano. Então por que não aparece? Dessa maneira? Lá vai você. Então, Madonna atual e a maneira máxima. Ok, ótimo. Em seguida, temos a destreza. Então vamos criar, vai colocá-lo em uma linha separada. Então, como é que lhe chamámos os decks de estatísticas? Eu acredito que os decks, lá vamos nós. Nós vamos remover isso e vamos definir este para destreza. Então, temos acesso à destreza nas estatísticas dos jogadores? Eu acho que não. Lá vamos nós. Portanto, a destreza deve ser pública e a diferença também será usada. Então vamos torná-lo público. Guarde isso aqui. Destreza, ponto para String, duplicar esta defesa estatística, defesa para String. E finalmente precisamos da imagem do personagem. Então, eu não sei por que eu duplicei isso. Nós não precisamos dele. Então, a imagem de personagem sprite. Então não está me permitindo acessá-lo porque também esta deve ser a imagem estática do personagem. Então caractere e imagem stat, ponto sprite. Lá vamos nós. E será igual ao jogador selecionado ponto sprite jogador. O que temos nós? O que se chama aqui? Vamos verificar a imagem do personagem. Ok, então imagem de personagem. Lá vamos nós. E vamos guardar isso. E no menu Estatísticas, vamos chamar isso apenas uma vez. Então, isso é chamado de atualização do menu Estatísticas. Então atualização do menu Estatísticas. E vamos apenas com o 0, que deve ser o Jimmy, eu acho. Então vamos salvar tudo isso. Vamos nos certificar de que salvamos. Ok, então tudo deve estar no lugar. Voltaremos para a Unidade. Nós vamos salvar isso. Vamos executar o nosso jogo. E agora, se clicarmos no status, lá vai você. Não temos referência a nada. Então não mencionamos o nome das estatísticas. Não mencionamos nada. Então, quantas vezes Michael deve cometer esse erro até que ele finalmente perceba? Acho que vai levar um pouco mais de tempo. Então o nome do jogador, PHP, V1, destreza, defesa e a imagem do personagem. Considerando que a imagem do personagem, ok, então é, eu acho que lá está. Assim, a imagem do personagem e tudo mais como a arma equipada e assim por diante, não será usado por enquanto. Então agora executamos as estatísticas do nosso jogo. Lá vai você. E nada parece estar funcionando pela causa O. Em vez de dar os valores, eu dei os rótulos. jogada muito inteligente. Mais uma vez, vamos virar a fechadura. Como podem ver, Michael comete tantos erros antes de finalmente conseguir. E eu vou manter este fim no vídeo porque é importante saber que ninguém é perfeito. Vamos voltar. Vamos rodar o código então, por favor. Desta vez, acertamos as estatísticas, temos o nome Jimmy HP, 0 sobre 100 menos 0. Isso é porque nós não mudamos isso no jogador, e assim por diante e assim por diante. Destreza, Stan, defesa 30. Tudo está funcionando. Agora. Precisamos alterá-lo no OnClick. Então agora estes, se formos para os botões que estão aqui, você vai ver que temos três botões. O primeiro botão no onclick não faz nada. Nós vamos adicionar uma função a ele no Canvas. Nós vamos para o Gerenciador de Menu, nós estamos indo para atualização do menu Estatísticas. Então, como você pode ver, porque nós adicionamos um parâmetro, ele nos pede um inteiro. O primeiro vai ser 0. O segundo também vai ter o gerenciador de menu Canvas um. E o terceiro terá também a atualização de status do gerenciador de menu Canvas com inteiro de dois sub 1 ou 0, 1. Para salvar isso. Vamos torcer para que isso funcione e eu não tenha cometido outros erros ou estatísticas. Jimmy, Sarah, lá vamos nós. Quão legal é isso? Então, como você pode ver, nós temos a imagem mudando. Obviamente, precisamos fazer Sarah um pouco menor usando essas calhas, mas tudo está funcionando para que você possa ver a destreza, a força, a demanda e HP, até mesmo o nome alterado com base em qual botão clicamos. Então, quão difícil é isso? Espero que você goste se você está curtindo o curso até agora, mesmo que eu tenha cometido um monte de erros, espero que você goste de mim como instrutor. E se fizer isso, tire um tempo para me deixar uma crítica, isso me ajuda muito. Vemo-nos no próximo vídeo. 54. Seção 8: criando itens: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, vamos criar um gerenciador de itens que é adicionado a cada item em nosso jogo. E como você pode ver, nós já criamos um mana, um oceano de saúde, dois conjuntos de armaduras e dois conjuntos de machados. E você vai notar que um deles é de ouro. Um deles é apenas prata. Então não vamos perder mais tempo e vamos começar. 0 caso. Então precisamos criar alguns itens. Primeiro de tudo, então o que precisamos é de um script para lidar com esses itens ou para determinar que tipos de itens eles são, que nome eles têm, que valor e moeda eles têm, e assim por diante e assim por diante. Então vamos em frente e começar a criar. Então vamos para o script, vamos criar uma pasta aqui que vamos chamar o gerenciamento de itens. Acho que administrar significava. E nós vamos abrir, e aqui nós vamos criar um script C-sharp e vamos chamar isso de gerente de itens. Pressione Enter. Aguarde a compilação do script. E vamos em frente e abrir o roteiro. Então, o que precisamos aqui? Primeiro de tudo, este gerenciador de itens estará disponível para muitos tipos de itens. Então, em primeiro lugar, temos os itens regulares como, digamos, moedas, poções e assim por diante. Temos armas e armaduras. Então, como vamos determinar qual é qual? Nós vamos criar algo chamado um enumerador, diferente do enumerador que usamos para os adolescentes do carvão. É um numerador de tipos. Deixa-me mostrar-te o que é isso. Criamos um público em e o tipo de item. Então acabamos de criar um novo tipo de variável. E isso pode ser aplicado a, ou isso pode ter três, digamos tubos. Se você quer um tipo com três tubos que ele pode ter. E talvez tipo não seja a melhor palavra. Mas podemos ter um item ou uma arma, ou podemos ter uma armadura. Então, agora cada item precisava escolher o tipo que é. Nós, em seguida, vai criar uma variável pública que vai ser do tipo, tipo de item. Então, como você pode ver, porque nós criamos um enum agora nós criamos, nós podemos criar uma variável de tipo, tipo de item, e ele vai ser chamado de tipo de item. Então agora cada item, para cada item, podemos definir qual tipo de item é. A próxima coisa que vamos fazer é criar um nome de item de string. E vocês notarão que todos eles são públicos porque queremos acelerar o processo de realmente obter essa informação. Vamos criar outra string. Vai ser a descrição do item. Até agora sabemos o que podemos realmente criar isso na mesma linha. Então o nome do item, a descrição do item, e não é necessário, mas é apenas melhor. E vamos continuar. E aqui vamos criar um inteiro público e este vai ser o valor e a moeda. Então o valor e as moedas. O que mais temos? Precisamos definir o sprite. Então é um sprite público. E vai ser a imagem do item. O que mais temos? Precisamos da quantidade de efeito que ele faz. Então, se temos, digamos, por exemplo, uma parte, se temos um item, queremos dizê-lo, qual é a quantidade de efeito? Será que nos dará 100 HP, 200 ou 700 HP? Então é uma quantidade inteira pública de efeito. E também vamos criar uma enumeração para o tipo de efeito. Então vamos ter uma enumeração pública e vai ser o tipo de efeito. E vamos ter dois tipos. Vai afetar o HP ou o homem. O que mais temos? Precisamos, precisamos criar o cano público. E vai ser chamado de tipo de efeito apenas pela simplicidade das coisas. E, finalmente, precisamos de algo para a destreza e defesa das armas e armaduras. Então público e armas decks 3080 e o público e defesa armadura. Então armadura de defesa. Ok, então agora eu acho que cada aspecto de um item configurado. Agora precisamos ir em frente e criar alguns. Agora, se voltarmos aqui. Vamos entrar nos recursos que lhe dei. E esta é uma lista de itens que vamos usar. Então vocês podem ver que temos escudos diferentes, eixos diferentes, a frente, espadas, e assim por diante. Temos corações, temos porções azuis, temos porções vermelhas para o, para onde fomos? Então, poções Lu, poções verdes e assim por diante, moedas, gemas, tudo isso pode ser usado em nosso jogo. Então eu vou para os sprites aqui, clique com o botão direito do mouse e criar uma pasta. Ou quer saber? Não preciso criar uma pasta. Podemos simplesmente arrastar esta pasta e aqui, mas certifique-se de que temos uma pasta separada para os sprites item. Vamos chamar isso de “sprites” de itens. E lá vamos nós. Então clique duas vezes aqui, você vê que temos todos os sprites. Vamos em frente e adicionar alguns itens. Então vamos acrescentar, digamos uma armadura. Obviamente não podemos ver esta armadura porque está atrás da janela. Então, novamente, por favor, armadura, onde está? Onde é que está? Lá está, por alguma razão, que não estava aparecendo. Vamos colocá-lo no fundo. Vamos configurá-lo para um. E se não for muito visível, podemos aumentar a escala para dois por dois, digamos. Então, lá vai você. Temos o item no chão algures. Talvez possamos adicionar algum tipo de fundo para que fique melhor no chão. Mas, por enquanto, acho que fica bom o suficiente quando andamos, se executarmos o jogo. Sim, lá vamos nós. Podemos ver o item e podemos andar por cima dele. Mas não se preocupe, não teremos a habilidade de andar por cima dela. Então agora temos a armadura. Podemos até torná-lo maior se quisermos. Acho que isso é exagero. Então 2.52.5. Sim, lá vamos nós. Vamos adicionar um pouco de rotação a ele. Então, oops, 2.5. Vamos adicionar um pouco de rotação. Lá vamos nós. Então, há uma armadura deitada no chão. Vamos adicionar um componente, o gerenciador de itens. E como você pode ver agora, este é o tipo de item que podemos escolher. Se for um item, arma ou armadura. Obviamente é um animal. Agora precisamos de um nome, então vamos chamá-lo de armadura prateada. Precisamos de uma descrição. Isso vai se defender dos monstros. Vamos precisar de um valor para isso. Então, digamos, vale 15. Precisamos da entidade gráfica do item, para que possamos arrastar este. Podemos, podemos arrastar este? Sim, lá vamos nós. Portanto, a imagem do item está agora disponível. Quanto isso afeta? Nós não queremos estar realmente usando isso e nós podemos até movê-lo um pouco para baixo. Então, acho que se baixarmos isso, é melhor. Então, porque não é nenhum tipo de item que possamos beber. Então, nós não vamos realmente usá-lo. Não vamos usar a quantidade de fatos. Vamos adicionar uma defesa de armadura que você pode começar a criar e algum tipo de condição que nos permite usar essas especificações em vez das outras. Mas acho que não vale a pena o incômodo por enquanto. Claro, quando mais tarde você estiver criando seu próprio jogo. Claro que não deveríamos ter tudo isso disponível. Então, qual é a defesa da armadura? Digamos que são seis. Estes são apenas um tipo de números arbitrários estranhos. Agora, em seguida, vamos adicionar os atos. Então, vamos adicionar atos aqui. Ou quer saber? Por que não duplicamos a armadura e vamos movê-la para cima e mudamos o sprite para um x. Isto é um machado, digamos arma. Isso vai matar demônios e monstros porque somos um demônio. Um daemon é um monstro? Nem sei qual é o valor. Acho que o eixo é mais barato que a armadura. Os itens são sprite, é o machado e a diferença 0. Ou você pode até ter algum tipo de defesa para a arma. Mas, como verão mais tarde, quando construirmos nosso sistema de batalha, não levaremos em conta a diferença ao atacarmos. Se tivermos o machado e a destreza das armas, digamos que são nove. Certo, guarde isso. Ótima. Agora é hora de um desafio. E seu desafio vai criar o resto dos itens. Então crie o resto dos itens. Que tipo de itens eu recomendo que você adicione outra armadura e outro x. algo que é diferente pode ser eixo de ouro. É uma boa idéia ou você pode adicionar algum tipo de escudo. Temos escudos. Então, dois tipos de tipos, dois tipos de armadura, dois tipos de movimento. Então não adicionamos poções. Você vai precisar adicionar uma poção. E eu vou apenas definir tipos aqui. Ele pode ser acessado, pode ser qualquer coisa que você quiser, e você pode adicionar qualquer outro item que você quiser. Você pode adicionar outros atributos aos seus itens. Então, se você acha que há mais coisas nos itens do que apenas as coisas que eu mencionei. Por exemplo, você pode adicionar efeito de sangramento. Então, se isso, Digamos arma assim dimensões, você pode adicionar o efeito de sangramento depois de tudo, após a certa quantidade de dano e assim por diante. Então, com isso dito, pausar o vídeo agora e ir adicionar o resto dos itens. Ok, bem-vindo de volta. Então vamos nomear isto os atos de prata e a armadura será nomeada a armadura de prata. E vamos em frente e adicionar um x dourado. Então este será um machado dourado. Vamos encontrar um machado dourado. Isto é um machado dourado? Sim, há. Este é um X dourado. Vamos fechar. Vamos mover um pouco o machado dourado. E eu acho que estes são um pouco grandes demais. Eu não sei. Talvez os façamos um pouco menores. Então o x dourado que somos, certifique-se de que é uma arma. Chama-se Machado Dourado. E sua descrição matará monstros mais rápido. Mais rápido. Valorizando moeda, é claro, vai ser o dobro, talvez até 25. O sprite vai ser o x2 e os atos. E aqui X para a quantidade de efeito que não precisamos, a destreza das armas será 18. E lá vamos nós. Então este é o machado dourado. Vamos pegar alguma armadura dourada, se tivermos alguma. Então acho que não temos nenhuma armadura de ouro. Eu acho que tudo o que temos é oh sim, lá vamos nós. Temos armadura dourada. Então, armadura de prata. Armadura de ouro Entendido, colá-lo aqui vai se defender dos monstros. Manteiga. O valor será 35, onde mudaremos os sprites aqui e a diferença será 19. Guarde isso. Então, vamos mover isso. E aqui eu acho que vou torná-los um pouco menores. Quero dizer, olha como eles são grandes comparados com o nosso ginásio, aqui mesmo. E, finalmente, precisamos criar as duas porções. Então eu vou replicar a armadura dourada. Vou colocar as porções aqui. Este será o oceano HB e vai ser do tipo item. Vai ter o nome. Então, por que não mudou a poção HP? Obrigado. Hb poção, isso lhe dará h ser o valor em moeda. Eu sou Nano 7. E vamos ver onde é isso. Então, onde estão as nossas porções? Lá vamos nós. Sprite, sprite e quantidade de efeito. Então vai afetar o HP, a quantidade de efeito. Digamos que nos dê 50 HB e remova esse 0 ou algo assim. Isso não importa. E vamos mudar um pouco a rotação. Duplicado. Então está tudo certo em quase duplicar isso? E vamos movê-lo para a direita. Este será o oceano monopólio. Apague tudo isso. É um item. Poção Y mano, nomeie, isso lhe dará um valor na moeda. Acho que deveria ser 11. E vamos encontrar a porção azul que está aqui, colocá-la aqui. E a quantidade de efeito, eu acho que 15 é bom o suficiente. O tipo de efeito como o maná, que salva tudo isso. Então, como você pode ver agora temos um monte de itens e se executarmos nosso jogo, Vamos ver como isso parece. Sim, lá vamos nós. Então, há uma poção, nós a pegamos. Há outra porção. Nós caminhamos, yo, há algum tipo de armadura e aqui um monte de armaduras e machados que podemos usar. E eu vou clicar com o botão direito do mouse em criar um objeto de jogo vazio, chamá-lo de itens apertados Enter, redefinir sua posição, e vamos pegar cada item e soltá-lo em itens também mudará a escala para 1.8 por 1.8. Vamos ver. Sim. Lá vai você. Acho que essas porções são agora muito mais lógicas. Eles são menores e eles parecem algo que caberia em cima do nosso edema ginásio e coisas que ele pode segurar em sua mão. Quero dizer, olha, quão legal isso seria? Esse x ainda é grande, mas não se preocupe com isso. Então eu espero que você goste e eu vou vê-lo no próximo vídeo onde estaremos criando nosso menu de itens. 55. Janela de itens: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, como você pode ver, criamos uma incrível janela de itens. Então você verá aqui que nós temos para bem aqui você verá que nós temos o nome do item. Devíamos mudar isto aqui mesmo. Vai mudar automaticamente. Temos dois botões para que possamos usar um item ou descartar esse item. E nós também adicionamos um pequeno quadrado aqui e arranjamos alguns itens. E acabei de notar que o botão de itens, devemos ter a imagem do item aqui para que a quantidade apareça melhor. Então não vamos perder mais tempo e vamos começar. Ok, então agora é hora de criar um menu itens. Então o que vamos fazer, então já temos algum tipo de menu de itens, abra o menu e aqui vamos ligar isso. E se formos ao painel de itens, ligue isso. Lá vai você. Então agora temos ou já temos um painel de itens que podemos usar. Oh, ok. Então agora vamos torná-lo um pouco maior em todos os lados. O que vamos fazer é duplicar o painel de itens. Vamos adicioná-lo no painel de itens já existentes, e chamaremos isso de descrição do item, essa opção de curva. Certo, aperte Enter e vamos torná-lo menor. Então é aqui que vamos definir as informações de nossos itens. Então, onde terá um nome e a descrição do item que criamos? Então vamos entrar em um desses botões, o botão de itens, digamos que vamos duplicar o texto e vamos arrastá-lo para a descrição do item. E vamos movê-lo para baixo. E aqui vamos escrever que este é o nome do item. E, obviamente, queremos colocá-lo para a direita e talvez sábado para cima. Então vamos ajustar isso. E novamente, este vai ser um longo vídeo. Sinto que mesmo que ainda não tenhamos começado, mas porque toda vez que você estiver trabalhando com a interface do usuário, será um vídeo longo. Então o nome dos itens, e talvez fazer isso um pouco menor. Então lá vai você. Este é o nome dos itens, eu acho. Ok, então nome do item, e nós vamos mudar este texto para o texto do nome do item. E vamos duplicá-lo. E não, nós não duplicamos, duplicamos agora e vamos adicionar um aqui. Este vai ser o item, esta corrupção ou vamos apenas chamá-lo de, o script ou mesa e mesa. Então, como não temos muito espaço aqui, teremos que fazer com o que temos. Podemos até fazer isso um pouco menor. Então vamos fazer o painel da descrição do item um pouco menor, então temos mais espaço para adicionar. Os itens moverão isso para baixo. E lá vai você. Então, e este vai ser o texto Descrição do item. Oh, ok, então vamos guardar isso. Agora vamos precisar de dois botões. Então, o que podemos fazer com um item uma vez que escolhemos aqui, precisamos usá-lo ou descartá-lo. Então, vamos adicionar dois botões aqui, clique com o botão direito do mouse e a descrição do item, ou ele não precisa estar na descrição do item. Vamos em frente e criado fora dele, mas ainda no painel de itens. Então, um botão que vamos arrastar até aqui. Vamos chamar isso de botão Usar e assistir tipo de fundo, devemos dar? Bem, é o fundo que estávamos usando. Então, os elementos de interface do usuário, Vamos dar que este conjunto de fundo preservar nativo. Digamos que talvez não devêssemos preservar a proporção. Devemos adicionar nossa própria relação de aspecto. Isto vai ser duplicado. Um botão Descartar. Então descarte botão, e se você já está entediado, Eu recomendo a verdadeira pausa o vídeo agora e basta ir em frente e continuar. Porque estas são coisas muito básicas. Então o que eu vou fazer, eu vou apenas apagar o texto nos botões. Clique com o botão direito, teste Add Text mesh. E vamos nomear este uso. E o texto vai ficar o mesmo ou clique com o botão direito aqui novamente no texto Mesh pro. Scared deveria ter feito isso antes. Vamos definir a fonte, definir a cor completamente preta, torná-la negrito. E vamos ajustar as posições aqui para que nós vamos definir esta cicatriz. Vamos nos certificar de que está no meio. E lá vamos nós, talvez torná-lo um pouco menor. Então lá vamos nós, a descarte. Acho que podemos até tornar este botão maior. Então deixe-me deletar o botão dos EUA e trabalhar em um único. Será então duplicado. Então vamos fazer isso um pouco mais alto. Lá vai você, um pouco mais largo. Então agora podemos fazer o nosso texto se encaixar e apenas um pouco mais e aumentar. Oh, legal, isso parece muito melhor. Então duplique o botão de descarte. E vamos movê-lo ao lado do botão aqui. Onde está a mensagem? E vamos definir isso para usar. Ok, então agora que a parte fácil está feita, vamos começar com a azia e antes que eu esqueça, também precisamos ir para a descrição do item. Duplicar isso também, porque queremos adicionar o nome do item aqui. Então vamos fazer assim, muito mais tempo. Então deve ser por aqui. E vamos duplicar isso e colocá-lo aqui. Este seria o valor do nome do item e o valor do item. E vamos tentar talvez ajustá-lo para caber no texto, seja lá o que for. Então auto tamanho porque talvez a descrição vai ser muito longo para caber aqui, então não queremos que ele vá por todo o lugar. Ok, então agora que a parte fácil está feita, está na hora da parte difícil. E nós vamos criar a caixa de itens aqui. Então, para fazer isso, vamos para o fechado a descrição do item e o painel do item clique com o botão direito do mouse, vamos criar um objeto de jogo vazio. Estes serão os itens que vamos torná-lo tão grande quanto o espaço disponível que temos aqui. Então lá vai você. E agora vamos adicionar o botão direito do mouse aqui, criar ou adicionar UI um botão. Vamos dar a ele o fundo deste tipo de painel. Assim como nós fizemos, e nós vamos adicionar o texto aqui em baixo. Vamos torná-lo um pouco menor. Aqui em baixo, vamos para 0. Este deve ser um texto Mesh Pro, então não se preocupe com o teste Mesh de texto. E esta será a quantidade, quantidade. Isso porque mais tarde teremos itens que podemos armazenar ou empilhar várias vezes. Então podemos ter, digamos, cinco porções de saúde na mesma posição. Então vamos em frente e colocá-lo aqui. Tamanho fará com que a fonte irá digitar em 99. Nós vamos conseguir. Não sei o que pode ser completamente preto, talvez completamente branco. Não sei o que deveria ser. Veremos mais tarde. E acho que isso é bom o suficiente. Talvez o botão precise ser mais quadrado. Então o, vamos ver. Vamos montá-lo aqui. Deve ser quadrado. Então vamos ver se é um livre fazer a largura 160. E ainda assim, acho que 120 por 120 é um bom número. Ok, então vamos mover o texto um pouco para a direita ou não deve estar usando o t. Sempre certifique-se de usar a ferramenta rec ao trabalhar com elementos de interface do usuário. Então, por ferramenta de rack, estou nesta caixa aqui, ou pressionando V T. Ok? E finalmente, precisamos adicionar uma imagem aqui. Então, clique com o botão direito Vamos para a interface do usuário, adicionamos uma imagem. E esta imagem será a representação de alguns tipos de itens. Então vai ser o item, imagem de itens. E vamos apenas adicionar algum tipo de imagem padrão. Então vamos usar o Machado Dourado. Lá vai você. Assim chamado um conjunto de machado tamanho nativo o. Como puxa que preserva a relação de aspecto? E nós vamos ancorá-lo em todos os lados e aqui, então lá vai você. Como pode ver, temos o item aqui. Então agora o passo final é que vamos adicionar aos itens um componente que é chamado de layout, o layout de grade. Já cobrimos esse layout da grade. Então precisamos fazer 120 por 120, porque foi o que dissemos aqui em cima. O tamanho do botão deve ser 120 por 120. Você pode vê-lo bem aqui. E talvez só adicionar um pouco de espaçamento ou algo assim. Então vamos definir isso como 0. E agora se apertarmos o botão, botão itens, vamos duplicá-lo, duplicado, duplicado. E vamos ver quantos botões podemos adicionar. Então eu vou te dar um desafio aqui, e seu desafio é descobrir o novo componente. Já cobrimos esse componente, eu sei, mas é hora de você descobrir. Aproveite para explorar o novo componente de grade e use-o para organizar os itens de uma maneira boa. Então, encontre o tamanho que deseja para seus itens e certifique-se de alterar o espaçamento, alterar o tamanho das células, brincar, ver como você pode organizar seus itens no menu de itens. Então pausar o vídeo agora e ir cara, cada desafio. Oh, ok, bem-vindo de volta. Então vamos para os itens 120 por 120. São os meus números. Não precisa seguir meus números. Então eu vou adicionar um pouco de espaço aqui e um pouco de espaço como esse. Então, quantos itens você quer ter? E acho que quero torná-los maiores. Então eu acho que um bom número, 150 como você pode ver, eu estou experimentando. Não sei o que vou usar. Eu só vou com o fluxo, ver o que acontece. Então são itens suficientes ou devemos torná-lo ainda maior. Vamos tentar 200 por 200. Não, isso é muito grande. Então 170 por 170. É assim que se faz jogos, senhoras e senhores. Então lá vai você. 170 é um bom número. E eles se encaixam perfeitamente juntos. Então vamos duplicar novamente. E você vai ver, sim, lá vamos nós. Estes são os nossos itens agora eles são valores padrão. Vamos alterá-los mais tarde, mas agora que temos o layout correto, podemos excluir todos eles. E a maneira como você pode escolher o primeiro e o último, clique em um deles. Mantenha a tecla Shift pressionada, clique no último, clique, Excluir. Lá vamos nós. Então, agora nossos itens muitos bom bloqueio. No próximo vídeo, armazenaremos nossos itens no inventário para que possamos adicioná-los mais tarde no menu de itens. Dito isso, espero que gostem. E antes que eu esqueça, espero que você não tenha cometido suas mudanças porque não queremos ter todo o PNG comprometido. Então, vou clicar com o botão direito do mouse e ignorar tudo em ativos, itens ou até mesmo em sprites de ativos. Ignorar tudo, ok, agora vamos selecionar todos eles e os itens com artesãos gerente e criou um itens e muitos. Certo, ótimo cometer tudo isso. Espero que goste e vejo-te no próximo vídeo. 56. Listas em C#: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos criar um inventário usando listas e C-sharp. Então, quando executamos nosso jogo, nada de especial. Você só vê aqui, hey, novo inventário foi criado porque temos um script de inventário no gerenciador do jogo, isso será importante para o desafio. Então lembre-se, o inventário vai para o gerente do jogo. Eu dei o desafio. Não se preocupe. Não vamos perder mais tempo. E vamos começar. Oh, caso. Então ele lista e C-sharp. Por que estamos usando listas e C-sharp? Porque queremos criar um inventário. E o inventário tem uma lista de itens. E por que estamos usando uma lista e não uma matriz? Vou explicar daqui a pouco. Mas antes de tudo, vamos em frente e criar um novo script aqui. Então, se formos para os scripts, clique com o botão direito do mouse ou vá para os itens com o botão direito e crie um inventário. Então, no inventário, lá vamos nós. E vamos abrir o roteiro. E isso continua acontecendo. Abra os roteiros. E a primeira coisa que vamos fazer é criar uma lista privada. E cada lista terá um tipo. Vai ser do tipo gerenciador de itens e vai ser uma lista de itens. Então por que estamos usando uma lista de itens e qual é a diferença entre uma lista e uma matriz. Assim, matrizes têm um sites já definidos. Então, quando criamos uma série de jogadores, estatísticas e gerenciador de jogos e assim por diante, já sabemos quantos haverá. Podemos acrescentar a isso. Mas sempre que quisermos remover um dele, vai ser muito difícil. Precisamos descartar o lugar vazio que deixamos. Então, por exemplo, digamos que criamos uma matriz de três lugares e um deles é removido, então será muito difícil substituir esse espaço vazio. Por que as listas são muito dinâmicas e muito mais fáceis de passar. E precisamos de algo onde possamos remover um item e colocar um item muito rápido. Não queremos ficar atolados removendo esses espaços vazios e enchendo-os com algo e reorganizando tudo e assim por diante. Assim, as listas são muito mais flexíveis do que o array. Então, sempre que criamos uma lista, precisamos instanciá-la. Então, e começar, sempre que começarmos nosso inventário, vamos para a lista de itens. E nós vamos dizer que é igual a uma nova lista de tipos de gerenciador de itens. E vamos precisar adicionar esses dois colchetes e fechar com um ponto-e-vírgula. Agora o que queremos fazer é garantir que uma nova lista seja criada. Então é hora de um pequeno desafio, e vai ser enviar uma mensagem no console toda vez que uma nova lista de itens é criada, toda vez que começamos uma lista. Então você entendeu, comece a lista. E você precisará usar o log de pontos de depuração e o padrão de impressão. Então pausar o vídeo agora mesmo e ir fazer este pequeno desafio. Ok, bem-vindo de volta. Então debug, já sabemos como fazer isso. É um desafio bastante fácil. Então depurar backlog e o feno, um novo inventário foi criado. Guarde isso no nosso jogo. Vamos desligar o menu por enquanto. Vamos correr, oh, antes de rodar o código, não adicionamos o script. Isso era parte do desafio que eu queria que você testasse. Espero que tenha encontrado, espero que tenha encontrado esse erro. Precisamos adicionar o inventário em algum lugar. Onde devemos adicioná-lo? Bem, eu acho que o melhor lugar para um inventário é no gerente do jogo. Por quê? Porque à medida que passamos de script para script, queremos manter nosso inventário. Nós não queremos, quer dizer, de roteiro, eu quis dizer de cena em cena, queremos manter o nosso inventário e Game Manager é um dos poucos querem objetos de jogo que não são destruídos quando nos movemos de cena em cena. Então eu acho que, novamente, Gerente é um lugar perfeito para armazenar em inventário. Você também pode criar um script separado ou um objeto de jogo separado para o inventário, ou você pode adicioná-lo ao jogador. Mas eu não acho que o jogador é o melhor lugar porque vamos dizer que em algum momento queremos matar o nosso jogador e destruir o objeto. Queremos acompanhar o inventário e algo mais permanente. Nunca destruiremos o gerente do jogo. Agora que o gerente do jogo tem o inventário, vamos executar o jogo. E lá vai você. Assim que começarmos o jogo temos, ei, um novo inventário foi criado. Ok, ótimo. Então agora uma das coisas mais essenciais para usar um analista é ser capaz de adicionar coisas a ele. E o inventário é muito importante ter uma maneira de adicionar a ele. Então, se pegarmos os itens, precisamos adicioná-los ao inventário. Então vamos voltar e nosso roteiro de inventário. E aqui vamos criar um vazio público, adicionar itens. E vamos dar um argumento. E esse argumento ou parâmetro vai ser do tipo itens, gerente, item. Guarde isso. Agora aqui vamos chamar a lista de itens e vamos adicionar o item. Feche isso. Então, o que acontece agora? Este é um método especial de listas. Então chamamos os itens, chamamos o método adicionar itens do inventário. Nós damos a ele o item que queremos adicionar. E então acessamos a lista de itens que temos e adicionamos um item a ela. E a maneira como acessamos a lista ou o inventário é que vamos criar um inventário estático público em posição. Lá vamos nós e começamos. Vamos definir a instância para isso. Lá vamos nós, guarde isso. No próximo vídeo, começaremos a visualizar como esses itens ficarão em nossos itens, homens. Espero que goste. Espero que esteja comprometendo seu trabalho e te vejo no próximo vídeo. 57. Escolhendo itens: Bem-vindo de volta meus companheiros desenvolvedores de jogos neste vídeo FOR, e novamente, Eu vou apenas mostrar-lhe, Eu não preciso dizer o que acontece. Então nos aproximamos da monopolização. Lá vamos nós. Ele faz auto-destruição e nós temos manipulação foi adicionado ao inventário. Quantos anos tem essa porção de HP? A armadura de prata e laranja dourada e os atos dourados. Então, como você pode ver, temos um inventário que realmente funciona com os itens que criamos. Então não vamos perder mais tempo e vamos começar. Oh, então é hora de começar a pegar nossos itens. A primeira coisa que precisamos fazer para pegar um item como uma forma de interagir com ele. Então, o que vamos fazer enquanto vamos adicionar um colisor? Então, vamos verificar tudo isso. Vamos adicionar um componente e vai ser um colisor. Você pode escolher se é um colisor, um Colisor de Caixa ou um colisor de círculo. Vou escolher um círculo. Então, para onde foi isso? Colisor de círculo. Lá vamos nós. Então cada um desses itens agora tem um colisor de círculo. Você pode ajustar cada um deles. Por exemplo, você pode ver que este é apenas um pouco grande demais para o HP, para a poção. Para a armadura de ouro. Não, isso é grande o suficiente para o x, para o x prateado e para a armadura de prata. Certo, agora que temos um colisor em cada um deles, vamos fazer disso um gatilho. E nós vamos criar um método onde podemos acionar algo sempre que entramos na vizinhança já sabemos o que gatilho significa. Então vamos criar um empreendedor, entrar em cada item. Então, no gerenciador de itens, é o gerente de nossos itens. Então vamos criar um no Trigger Enter para D. E a primeira coisa que precisamos ter certeza é que precisamos, antes de tudo, que é o jogador que está bem colidindo com o item. Então, não queremos mais nada para pegar este item. Então, se a tag collision.com é o jogador, então aqui vamos em frente e fazer algumas coisas. Então a primeira coisa é que vamos imprimir o nome dos itens. Então este item é e vamos concatená-lo com o qual um desses e nome do item. Então nome do item, feche isso, salve isso de volta e nossa Unidade, vamos executar o código e ver se isso funciona. Então comanda o nosso jogo. E agora, se nos mudarmos para a porção de maná, lá vai você. Este item é a distribuição da demanda. Este maná é a parte HP. Armadura de prata, armadura de prata e ouro e o Machado Dourado. Então, quão legal é isso? Já sabemos qual item estamos pegando. Mas como você sabe, quando pegamos um item em um jogo, esses itens desaparecem. Ele não fica parado lá nos observando. Então vamos precisar de uma maneira de destruí-la. Então, a fim de destruí-lo, eu vou te dar um desafio. E seu desafio é autodestruição ou autodestruição. Então, crie um método e gerenciador de itens no script de item, este deve ter sido o script de item que se destrói a si mesmo. Então use-o quando um item é pego pelo jogador. E eu vou te dar uma pequena dica. Se você já sabe como destruir um objeto de jogo, pause o vídeo agora mesmo e vá fazer o desafio. Não usar destruir. Sim, é isso em um objeto de jogo. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então aqui vamos criar um vazio público, mesmo que eu não acho que vamos usá-lo em outro lugar. Mas vamos apenas mantê-lo como público, vai se chamar de destruir. E aqui vamos destruir o objeto do jogo. Guarde isso. E agora, depois de pegarmos o item, vamos para o Sul destruído. Lá vai você. Guarde isso. De volta ao nosso jogo aqui. Vamos ver se isso funciona. Portanto, agora devemos ver, por exemplo, poção de maná, e depois que os monopólios devem desaparecer. Então, vamos buscá-lo. Lá vamos nós. O aborto do homem desapareceu. A saúde e tudo o que pudermos pegar e tudo isso desaparece. Tão grande que estamos no nosso caminho para criar um sistema de itens incrível e sistema de inventário. Mas ainda há uma pequena coisa que temos de fazer e que é, em primeiro lugar, podemos remover isto, comentar isto. E no inventário também vai comentar isso. Não precisávamos mais salvar isso. Agora precisamos realmente adicionar esse item ao nosso inventário. Então o que vamos fazer é salvar tudo aqui, vamos para o item adicionar. Vamos apenas imprimir a dica aqui, algo apenas para manter o controle de tudo e ter certeza de que nada está errado. Então o item que eu sou e para fazer outra coisa, nome do item ponto do item mais o foi adicionado ao inventário. Guarde isso. E o que também podemos fazer assim como temos o comprimento de uma matriz. Também podemos verificar a contagem da lista de itens. Então contamos dá-nos o tamanho do teste. E o que precisamos fazer aqui antes que as células sejam destruídas. Vamos acessar o inventário. Nós estamos indo para acessar a instância e nós estamos indo para adicionar um item em itens. E o item que vamos dar é este. Então guarde isso, e vamos ver se isso funciona. Então, de volta ao Unity, vamos executar nosso jogo e vamos verificar se estamos adicionando itens para pegar o mana. Aí está, cara, o aborto foi adicionado ao inventário. Em seguida, temos a parte HP foi adicionado ao inventário e você pode ver que a contagem é dois. A armadura, o, o que é? Os atos de prata, a armadura dourada e os atos de ouro. Então, como você pode ver, criamos uma maneira de adicionar coisas à lista, o crescimento, e é isso. No próximo vídeo, vamos realmente exibir os itens retirados em nosso inventário. Então, vejo-te depois. Não se esqueça de, para confirmar suas alterações. 58. Como atualizar itens no inventário: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Não estamos fazendo nada extravagante neste vídeo, estamos simplesmente definindo as bases que vamos usar para chegar ao próximo vídeo onde vamos exibir todos os itens que estamos pegando. Então, vamos apenas obter uma referência a algumas coisas. Vamos falar brevemente sobre instanciação, e vamos também criar um método que retorna listas. Então não vamos perder mais tempo e vamos começar. Certo, então é hora de mostrar os itens que estamos pegando. Como é que vamos fazer isto? Primeiro, deixe-me ligar o menu para que possamos ver claramente o que está acontecendo. Então o que queremos fazer é cada vez que pegamos um item, queremos criar um novo slot de item aqui. E não queremos ter todos os slots de item disponíveis aqui e depois ligá-los e desativá-los. Queremos instanciá-los sempre que precisarmos deles. Então estamos tendo uma abordagem um pouco diferente de antes, especialmente quando estávamos criando personagem e 4, onde já temos tudo aqui. Queremos criar algo diferente. Queremos realmente instanciar cada item como ele está sendo pego. Então, como vamos fazer isso e o que é instanciante? Bem, não vamos entrar em instanciação neste vídeo, mas deixe-me apenas dar-lhe uma pequena visão geral. A forma como instanciamos algo é que temos um pré-fabricada em algum lugar armazenado em nossos ativos. E toda vez que queremos criar algo que é semelhante a esta pré-fabricada, talvez com pequenas diferenças, podemos instanciá-lo. Então, a primeira coisa, como sabemos, precisamos da referência pré-fabricada. Precisamos dos pais. Por que pai? Porque queremos instanciar os itens dentro dos itens. Vamos chamá-lo de painel de exibição de itens. Então este painel de reprodução, então precisamos de uma referência a este painel de exibição de item. Então podemos criar itens, botões, que serão nossos prefabs dentro daqui. E porque já criamos um layout de grade, eles serão dispostos muito bem e nosso menu. Espero que não seja muito confuso. Eu só queria expor as bases para os próximos dois vídeos para não ficarmos confusos. Vamos começar. Primeiro de tudo, vamos criar um prefab. Então NR prefabs aqui. Vamos em frente e arraste o botão de itens. Então isso será o que usaremos para instanciar e também obteremos uma referência a ele. Então vamos em frente e abrir nossos scripts e o gerente de menu, onde está? Então, no Gerenciador de menus e não notei quantos scripts já temos, nosso ganho está realmente tomando forma. Então, se isso é um pequeno lembrete, vamos obter uma referência ao contêiner de slot de item. Então vamos criar um campo serializado. Vai ser do tipo objeto de jogo. Este é o recipiente dos nossos itens. Então item, slot, contêiner. Este será o, este o item de exibição. Então, onde está? Então, será o painel de exibição de itens. E então vamos criar um segundo campo serializado que vai ser de tipo transformado. E ele vai ser o item slot recipiente pai. Ok, então o que eu posso dizer que o contêiner itens slot será o prefab que acabamos de criar e o pai será o item painéis de exibição. Então, apenas para evitar qualquer confusão, assim como eu confundi agora, este será o lugar onde nós dissemos que o pai, este será o recipiente que nós estaremos instanciando, vai ver tudo isso em apenas um pouco nua comigo. Em seguida, precisaremos criar um método para exibir nossos itens toda vez que pegá-los no Gerenciador de menus. Então aqui, vamos rolar para baixo e depois da atualização do menu Estatísticas criará um vazio privado. Atualizar itens, inventário. E por enquanto vamos deixar em branco porque antes de fazer isso, precisamos de uma maneira de obter uma referência de nossos itens. Se olharmos no inventário, você notará que a lista de itens é privada, então precisamos de um método no inventário para poder obtê-los. Então, a maneira como fazemos isso é emitindo um desafio e seu desafio é criar um método de lista de tipos. Então crie um método que nos permita acessar a lista de itens. O método deve ser do tipo que retorna uma lista, um determinado tipo de lista, e deve retornar a lista de itens que temos. Então pausar o vídeo agora mesmo e vá em frente e crie um método que nos dê a lista de itens. Ok, bem-vindo de volta. Como conseguiu tudo isso? E não tenho certeza se usaremos a atualização por enquanto. Então eu vou apenas removê-lo se nós precisarmos dele, vou criá-lo mais tarde. Então este será um público porque nós vamos acessá-lo a partir dos scripts frontais. Vai ser da lista de tipos. Você já sabe disso, mas que tipo deveria ser? Deve ser do tipo gerenciador de itens porque estamos recebendo esses itens lista e ele vai ser chamado de lista de itens get. Ele não leva quaisquer argumentos, e tudo o que ele faz é que ele retorna a lista de itens. Lá vamos nós. Então, o que acontece agora quando solicitamos a instância do inventário? Nós acessamos o método obter lista de itens e ele retorna para nós esta lista de itens. Então, de volta ao nosso gerente de menu, onde está? Vamos usá-lo aqui para ter certeza de que temos todos eles. E no próximo vídeo vamos adicionar os slots do código à medida que avançamos com o nosso jogo. E talvez antes de fazermos isso, vamos apenas ir e a tela que é rolar para baixo. Vamos ver. Lá vamos nós. O contêiner do slot do item. Este deve ser o botão Itens. E nós transformamos será a exibição de itens. E você pode estar se perguntando, por que é do tipo transformar, porque se clicarmos na exibição Itens, você vai notar que ele não tem nada além do transporte. Talvez tenhamos que mudar para Rect, Transformar. É um tipo diferente de transformação que é usado apenas para os itens ou os objetos do jogo na interface do usuário. Então, com isso feito, espero que goste. Você não precisará confirmar suas alterações apenas por enquanto no próximo vídeo. Então, vejo-te depois. 59. Exibindo itens Displaying: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Este é um vídeo muito emocionante porque quando pegamos itens, se formos agora para o nosso menu, vamos para itens de estatísticas. Lá vai você. Você pode ver que temos todos os nossos itens exibidos com os sprites corretos e quantos nós pegamos? Não, não representado por um número, mas você pode ver que temos três garrafas de promoção de saúde e assim por diante. Então este é um vídeo muito emocionante. Isso realmente coloca tudo com o que trabalhamos juntos. Um código um pouco complicado pode ser, mas aprenderemos tudo passo a passo e você entenderá cada um desses passos. Então não vamos perder mais tempo e vamos começar. Está bem. Hora de chegar à parte difícil. Não é muito difícil, mas é meio novo. Então, o que queremos fazer? E nossa codificação aqui, podemos ver que queremos atualizar os itens no inventário. Então o que vamos fazer é ir através de cada um dos itens na lista de itens. E poderíamos usar o loop for, mas há uma maneira muito melhor e eficiente de acessar cada item e uma determinada lista. E esse é o loop foreach. Então vamos falar sobre o for-cada loop, um muito central para. Então ele permite que você passe por cada coisa em uma coleção de coisas do mesmo tipo e uma matriz ou lista, não importa. Então esta é a estrutura que escrevemos para cada um que definimos o tipo, criamos um nome em tipo de coisas. Assim será, eles devem, naturalmente, ser do mesmo tipo. Então esta será a lista que iríamos acessar. Então, por exemplo, no nosso caso, esta será a lista de itens. Esta será qualquer variável que você deseja nomear para que possamos nomear itens. E será do tipo gerenciador de item porque estamos acessando item. Então, quando acessamos ou quando passamos por cada um dos itens dessa lista, podemos obter a coisa ou o item. Podemos usar algum método nele, ou podemos enviá-lo para algum outro método ou executar quaisquer outras coisas que queremos com ele. Então vamos em frente e implementar um loop foreach. Então, vamos escrever para cada um, vamos abrir este pequeno colchetes e ele vai ser do tipo gerenciador de item. Vai ser nomeado item. E vamos procurar no inventário. Por exemplo, ponto obter lista. Então pegue a lista de itens. Então este é o método que criamos anteriormente e aqui, então lá vai você, Obter lista de itens. Então, o que vamos realmente fazer aqui? Bem, o que queremos é instanciar os slots de item que configuramos aqui. Então, precisamos criar novos botões, slots de horas para o item toda vez que temos um novo item no inventário. E se entrarmos aqui, mostrarei o que significa instanciar. Então, como você pode ver, há muitas declarações disso nos cães da unidade. E um deles, e o que vamos usar é este que nos permite definir certos pais para isso. Então ele vai se tornar um filho de outro objeto ou ele vai estar sob ele. E por que precisamos disso? Já abordamos isso no vídeo anterior. Queremos que os itens criados sejam os filhos deste painel de exibição de itens para que eles sejam dispostos corretamente usando o layout da grade. Então isso estabelecido, vamos em frente e usar este, aquele que usa o pai, e nós já configuramos o pai aqui. Onde é que está? Então, lá vai você, os itens slot recipiente pai. Então, como vamos fazer isso? Bem, vai ser em primeiro lugar, do tipo Transformação Rect. Então, Ret Transform, já dissemos por que é uma transformação direta, mas vamos revisá-la novamente para que você possa ver bem aqui que é a Transformação Rect. Então aqui também estamos instanciando uma transformação destruída, não uma transformação qualquer. Então, de volta aqui , Ret Transform vai ser o slot de item e vai ser igual a instanciar contêiner de slot de Item. E esta é a pré-fabricada que montamos. Agora precisamos dar-lhe um pai que vai ser o pai recipiente slot item. E se pararmos aqui, você notará que temos um erro porque queremos instanciar um objeto de jogo em um Rect, Transform. E é por isso que vamos acessar o componente. Então vamos pegar o componente do transporte destruído desse objeto. Então, espero que isso faça sentido. O que estamos fazendo aqui? Primeiro de tudo, estamos instanciando o contêiner de slot de item. E definindo o pai como o pai do contêiner do slot do item. Já configuramos essas duas variáveis no vídeo anterior. E então estamos acessando o componente da Transformação Ret para que possamos usá-lo mais tarde, talvez se precisarmos dela. Então, espero que esteja claro. Vamos salvar tudo isso. Vamos voltar para a Unidade, e vamos em frente e desligar o menu. Com corrida, nosso jogo vai pegar alguns itens. Então, 1, 2, 3, 4, 5. Trabalhe na frente do menu. Vamos para Stat, vamos para os itens. E nós não temos nada para exibir porque quantas vezes eu tenho que fazer esse erro antes de eu finalmente obtê-lo, nós terminamos botões precisa realmente chamar esse método de itens de atualização. Então, um item irá adicionar um aqui. Canvas, qual função você deseja chamar? Vou atualizar no gerenciador de menus, onde está a atualização? Tornámos isto privado ou caso? Então, vamos torná-lo público. Diga isso de volta aqui. E agora podemos gerente de dinheiro extra e atualizar itens no inventário, salvar isso, executar nosso jogo. E agora, quando pegamos alguns itens, lá vamos nós. Então, agora apertamos a tecla M. Estatísticas vão para itens, e lá vai você. Assim, podemos ver em nosso console que temos cinco itens. E aqui você pode ver que temos seis. Isso é porque já temos um dos botões estabelecidos. Então, como é que vamos evitar isto? E especialmente se você já tentou isso por conta própria, você vai notar que algo muito estranho acontece quando adicionamos tudo isso. Apertamos os itens chave M, itens, itens, e você vê que cada vez que você está aumentando. Por que é isso? Porque se voltarmos no código, você notará que estamos passando por cada item e, em seguida, estamos instanciando o contêiner slot novamente e novamente e adicionando-o ao pai contêiner slot. Então, como é que vamos evitar isto? Bem, não tenho certeza de como podemos fazer isso. Eu fiz muita pesquisa, então eu acho que este vai ser o seu trabalho a fazer. Então você vai destruir slots antes de instanciá-los. Então você vai usar seu conhecimento recém-adquirido para excluir ou destruir slots de itens antes de atualizá-los. E você precisará passar por cada slot de item no contêiner de slot de item e destruir. Então, com essa informação, pausar o vídeo agora, passa por todos os itens slot e o slot pai e destruí-los antes de atualizarmos o inventário. Para que não, pausar o vídeo agora e ir para o desafio. Oh, ok, bem-vindo de volta. Espero que não tenha sido muito difícil. Então, o que vamos fazer antes de atualizarmos tudo aqui ou antes de instanciarmos? Talvez você tenha feito isso em um método separado. Isso não é ruim. Mas podemos fazê-lo no mesmo método. Vamos passar por cada slot de item de transformação e o pai contêiner de slot de item. E o que vamos fazer é simplesmente destruir o objeto do jogo de slot do item. E estamos acessando o objeto do jogo porque isso é uma transformação. Então, porque o item slot container pai contém tipos de transformação, vamos destruir o item objeto de jogo com fenda. Então, como é que isso vai funcionar? Voltaremos aqui. Vamos executar o nosso jogo. Vamos pegar alguns itens. E agora você verá que temos cinco itens. Se formos estatísticas itens lá você vai 12345. E isso é porque estamos sempre destruindo os anteriores disponíveis. Então back-end estatísticas itens, você vai notar que não temos mais o erro, mas há um pequeno problema. E isso é que as imagens ainda são as mesmas, então temos a imagem padrão. Então, para corrigir isso, vamos voltar para o nosso código e onde instanciar o nosso slot de item, vamos criar uma variável que será do tipo imagem. Será a imagem do item. E ele vai ser igual ao item slot dot find. E nós vamos procurar a imagem dentro do slot de itens. Agora, o que é encontrar? Deixa-me mostrar-te. Encontrar. Lá está ele. Ele encontra um objeto de jogo pelo nome e você sempre usá-lo em um objeto de jogo. Então você pode ver que o objeto de jogo ponto encontrar. Então, o que queremos fazer, então certifique-se de que você leve isso e abra documentos para que você possa vê-lo claramente. O que queremos fazer é ir para o botão Itens aqui e acessar a imagem dos itens. Então vamos copiar isso porque é uma referência de string e ele olha através pelo nome. Vamos colá-lo aqui. E nós vamos obter o componente sobre ele, que é do tipo imagem. Então eu recomendo que você use este ponto encontrar muito moderadamente porque ele pode causar um monte de erros, especialmente se você às vezes alterar o nome. Então, se mudarmos a imagem de itens de nome sob o slot de item, isso vai causar muitos erros. Espero que tenha entendido o que estamos fazendo aqui. Nós acessamos o slot de item que criamos. É por isso que nos certificamos de que é uma variável, para que possamos usá-la mais tarde. Encontramos a imagem que é nomeado itens imagem. Conseguimos a imagem do componente. E agora vamos definir o item imagem ponto sprite para igualar o item porque estamos passando por cada item, lembre-se, e nossa imagem de itens de inventário. Então vamos salvar isso, voltar e nosso jogo, vamos executar o código. E se pegarmos alguns objetos, eles devem ter a imagem correta sendo exibida. Então imagens estáticas, lá vamos nós. Quão legal é isso? Então criamos um inventário muito bom, mas há um pequeno problema se agora eu pegar uma segunda garrafa de saúde. Então, itens, poção HP. Deixe-me duplicar isso. Então vamos adicioná-lo aqui. Nós adicionamos e aqui vamos executar o código. Então agora eu pego 1231 das poções de saúde e alguns outros itens. Se eu fizer estatísticas, você pode ver que temos três poções de saúde. Agora, isso não é um erro. Tudo está funcionando bem. Mas se você jogou jogos de RPG, você vai notar que poções e outros tipos de gemas às vezes são empilháveis. Então nós temos este número aqui deve representar quantas porções nós temos. Talvez espadas e machados, escudo de armadura e assim por diante. Eles não precisam ser empilháveis, mas as poções precisam ser empilháveis. Então, vamos resolver este problema no próximo vídeo e certifique-se preparar todas as suas alterações e a cadeia de caracteres de origem. Então, espero que gostem. Espero que esteja gostando do curso. Espero que tenha gostado de mim como instrutor. Se o fizer, de novo, vou lembrá-lo, faça um plug-in aqui. Deixe um comentário sobre o que me ajudou muito. Obrigado. 60. Itens empilháveis: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos estar empilhando itens sobre, um em cima do outro. Agora, mesmo que Jimmy, o demônio, possa colocar machados no bolso, ele tem bolsos grandes para juntar bósons. Então, agora, quando executarmos nosso jogo, vocês verão que se pegarmos um dos eixos e escudos, quero dizer Armen, também podemos pegar várias dessas poções. Então você vai notar que nós pegamos três poções de mana e para a porção HP. Então, quando tínhamos, hum, itens de estatísticas, lá vai você. Você percebe que temos um ato de cada um e uma armadura de cada um. Mas quando olhamos para as poções, temos 43. Eles são empilhados um sobre o outro e não em diferentes slots. Então, não vamos perder mais tempo, e vamos começar a empilhar itens. Então alguns itens devem ser empilháveis, outros não. Moedas, oceanos e assim por diante. Tudo deve ser empilhável. Placas de armadura, capacetes, espadas e assim por diante não devem ser empilháveis. Então vamos implementar isso em nosso gerenciador de itens. Vamos entrar no gerente de itens. E aqui vamos adicionar duas novas variáveis. O primeiro vai ser um bool público e é empilhável. Então, se este for verdade, vamos adicioná-lo um pouco diferente no inventário. E outra variável que irá adicionar vai ser um inteiro e vai ser a quantidade. Então, digamos que você joga uma parte da saúde, você pode definir o valor para ser dois ou três, ou cinco ou 10. Ok, então com isso feito agora precisamos criar um método especial no inventário para adicioná-los. Então vamos nos certificar de que podemos verificar por um valor cada vez que adicionamos um item. E atualmente nós vamos remover a impressão ou talvez, você sabe o que, vamos apenas removê-la ou vamos mantê-lo como um comentário. Então vamos comentar. Você sabe o que foi removê-lo, nós vamos remover este e este aqui. E agora vamos verificar e os itens. Então, primeiro de tudo, se o item que estamos procurando é empilhável, então o que vamos fazer é percorrer cada item. Gerente irá nomear este item. E então a lista de itens Tory e V. E, em seguida, vamos verificar se o item no nome do item da lista de inventário ponto é igual ao item que estamos tentando adicionar o nome do item ponto. Então, basicamente, o que estamos fazendo aqui é verificar se já temos esse item no inventário, vamos para os itens no inventário, vamos acessar o valor. E nós vamos aumentá-lo pela quantidade do item que estamos tentando adicionar. Então, o que está acontecendo aqui? Em primeiro lugar, estamos verificando se é empilhável. Em seguida, vamos olhar através de nossos itens na lista de itens. E vamos verificar se um desses itens é igual ao mesmo que o item que acabamos de pegar. E se for, então vamos aumentar a quantidade do item no inventário pela quantidade do item que nos é dado. Digamos que já temos duas poções de saúde. Pegamos mais duas poções de saúde. Vai aumentar em dois, então teremos um total de quatro. E finalmente, se não for empilhável, isso vai simplesmente adicionar o item e a lista. Lá vai você. Oh, ok. Correto. Mas o que faremos se o item for empilhável, mas ainda não tiver sido adicionado. Então é a primeira vez que ele está sendo adicionado ao inventário. Nós vamos criar um booleano aqui que vai manter o controle disso. Então, um item booleano já está no inventário, e será igual a false apenas por padrão. E se estiver disponível dentro do inventário, vamos defini-lo como verdadeiro. Então o item já no inventário é igual a verdadeiro. Então isso está estabelecido. Mas se não for, então criaremos uma condição aqui que será se o item ainda não estiver no inventário. Então você vai notar que eu tenho este ponto de exclamação. Então, se o item no inventário for falso, isso significa que não foi encontrado no inventário e na inclinação bem aqui. Então o que vamos fazer é simplesmente ir para a lista de itens e adicionar esse item. Como normalmente fazemos. Lá vamos nós. Então, o que está acontecendo aqui, como você sabe que aqui e este para cada loop, estamos olhando através de todos os itens e verificando se temos esse item dentro do inventário. E se o encontrarmos, aumentamos pela quantidade que estamos recebendo. E estamos definindo os itens já em estoque como verdadeiros. Então esta condição não acessa, ou esta, esta condição aqui é falsa. Ou toda a condição aqui com o ponto de exclamação é falsa. Portanto, não adicionamos o item à lista. Nós simplesmente aumentamos pelo valor. Se não o encontrarmos, o item no inventário permanecerá falso, então toda a condição com o ponto de exclamação será verdadeira. Isso significa que precisamos adicionar o item. Então vamos salvar tudo isso. Vamos voltar ao nosso jogo. E agora, quando pegarmos todas as poções de saúde, não deveríamos ver três. Deveríamos ver apenas um deles. Então agora nós pegamos estes. Vamos para itens de estatísticas. Então agora vamos voltar e fazer a união. E devemos ver que na armadura de prata que temos é empilhável e a quantidade. Então, vamos para a parte HP, certificar-nos de que é empilhável. Temos de acrescentar a todos estes que o montante é um. Devemos ter colocado como um padrão sempre que criamos qualquer objeto, você precisa ter certeza de que pelo menos há um e a parte HP como um e assim por diante. Assim, a parte HP, toda a parte HP e todas as porções em geral são empilháveis. Então vamos salvar isso. E mais tarde vamos ser pré-fabricados em todos os nossos itens. Então isso não vai ser um grande incômodo. Então nós vamos realmente, é uma boa idéia para pré-formá-los agora. Mas vamos continuar. Vamos executar o jogo. Faremos isso daqui a pouco. Então, executamos o jogo, pegamos alguns itens. Verificamos os itens. E como podem ver, mesmo que tenhamos apanhado três poções, só temos uma vaga delas. Agora, o próximo passo óbvio é representar que existem três poções e não apenas uma. Precisamos acessar o texto aqui. E vai fazer parte do seu desafio. Seu desafio é atualizar a quantidade de texto. Então primeiro obter os itens são montados texto, você precisará acessá-lo. Em seguida, verifique se temos mais de um item. Se o fizermos, você precisará exibi-lo de outra forma. Nós realmente não precisamos exibi-lo. Então, por exemplo, se tivermos um outono, não queremos colocar lá que temos uma ordem. Basta ver a imagem. Portanto, precisamos desta condição para verificar se há mais de um desses itens. E eu vou te dar uma pequena dica. Você precisa ter certeza de converter a quantidade para duas cordas, porque quando eu estava criando o jogo, eu tive esse erro e me levou um longo tempo para descobrir, então eu pensei que um Hinton aqui iria ajudar. E com isso dito, pausar o vídeo agora e ir para o desafio. Ei, bem-vindo de volta. Então parte do desafio era descobrir onde realmente precisamos fazer tudo isso? E vamos precisar fazer isso, é claro, aqui quando estivermos atualizando o inventário do item. Então vamos criar uma variável aqui do tipo texto. Vai ser a quantidade de itens Próximo, e vai ser igual ao slot de item. E nós vamos encontrar aqui a quantidade de texto. Então, se voltarmos, encontramos a quantidade de texto, copiamos porque é uma referência de string que colamos aqui. Vamos acessar o imposto componente, e vamos em frente e acessar esse texto. E antes de continuar, eu me lembro que eu fiz algumas mudanças aqui para o texto muito Pro, então não é mais o medieval. E eu só mudei para Liberation Sans como o F fez ousado e acrescentou algumas coisas aqui. Oh, sem coisas extras. Apenas alterou um pouco e aumente o tamanho da fonte apenas para que você saiba, se é diferente da sua fonte, na verdade, você precisava tomar o tempo e configurar tudo quando se trata de você. Com isso feito, vamos voltar. Guarde isso. Agora vamos verificar se a quantidade do ponto do item é maior do que um. Em seguida, vamos definir a quantidade do item, texto do ponto de texto para ser igual à quantidade do ponto do item. Ponto toString. E você vai notar que eu não adicionei nenhum colchetes. E digo-te porquê daqui a pouco. E se o item não for maior que um, então vamos simplesmente configurá-lo como 0 para que o item, quantidade de texto, o texto será igual a uma string vazia. Então, onde estão os suportes? Você mentiu para nós que nunca precisamos usá-los? Bem, não, porque estamos simplesmente usando uma única linha no condicional, estamos tentando implementar uma única linha de código. Não precisamos adicionar os colchetes. Agora, este colchetes ondulados, agora, se relaxa mais para adicioná-los, então vá em frente. Isso é só para economizar um pouco de espaço e um truque bacana que eu queria te ensinar. Então vamos salvar tudo isso. Vamos voltar para a Unidade. Vamos duplicar a poção de maná, duplicar isso. E outro aqui, duplicar isso, eu adiciono outro aqui, guarde isso para executar o jogo. E agora, quando pegarmos as poções, pegarmos as porções, reforçaremos os itens. Apertamos a tecla M, vamos para os itens e temos uma seta. E essa seta está nos dizendo que quando estamos tentando atualizar a quantidade de pontos itens toString, não obtendo uma referência. Então objeto não definido como um exemplo de olhar. Obviamente, obviamente, você precisa ir ao Canvas. E onde está o montante do imposto? O imposto. E é porque precisamos ter certeza de que é um teste de malha de texto porque vemos, porque eu lembro que copiamos isso ou mudamos para um texto Mesh Pro. Não é mais um texto normal em um botão. Então, em vez de texto aqui, certifique-se de que é o texto Mesh pro GUI. E espero que durante o Desafio você não tenha caído no mesmo erro. Se você fez, não se preocupe, você pode ver que isso acontece com o melhor de nós. Se não o fez, parabenizo-o. Você tem que dar o próximo passo, jovem gafanhoto. Então guardamos isso. Voltamos e nosso jogo, vamos fazer isso. E acredito que não há mais erros. Então você pode ver que nós pegamos duas porções de vida e três porções de mana. Vamos itens de estatísticas. Lá vamos nós. Então nós temos um x. Nós não precisamos dos números porque nós temos um de cada e eles não são empilháveis. Os itens empilháveis que você pode ver que têm um número para baixo ao lado deles. Então, quão legal é isso? Nosso inventário está realmente tomando forma. E finalmente, um pequeno passo. Vamos criar uma pasta aqui para os itens. E vamos definir todos os itens, não aqueles com um e dois ao lado deles nos originais. E por que eu não sou capaz de adicionar todos eles de uma vez? Para adicioná-los um por um sobre x, machado dourado e assim por diante e assim por diante. Então vamos usar esses pré-fabs e ordem para adicionar itens. Assim, por exemplo, parte HP. Preciso estar na cena do crime. Porção Hp. Lá vai você. Adicionamos outra poção HP e podemos mudar tudo sobre esta porção HP daqui, do pré-fabricada. Espero que goste. Espero que estejas a cometer as tuas alterações e vejo-te no próximo vídeo. 61. Como selecionar itens: Bem-vindo de volta, meus colegas desenvolvedores de jogos neste vídeo, quando executamos o código, quando pegamos alguns itens. Quando acessamos os itens, se clicarmos em um deles, notou o quê? Repare no que acontece aqui. Lá vai você. Então agora sabemos que esta é uma parte da HP. O que é que ele faz? Isto nós lhe daremos HB. Isso lhe dará mana. Isto vai matar monstros. Isso matará monstros mais rápido porque é um machado dourado. Este foi um ato de prata. Então não vamos perder mais tempo e vamos começar. Então, atualmente, se pegarmos alguns itens, você notará que quando formos aos itens, se clicarmos neles, nada acontece. Ainda temos o nome do item, a descrição do item ou vazio, e não podemos usar nada. Então, basicamente, é uma lista de itens sem valor. Vamos mudar isso. Então primeiro vamos para o gerenciador de menus e op aqui vamos criar um nome de item de texto público. Nós vamos criar um também adicionar a ele a descrição do item. E também vamos criar e aqui uma instância ou já temos uma instância. Então, isso é bom. Guarde isso. Agora vamos voltar e unidade, esperar que isto se compile. E nós vamos criar um script que lida com empurrar um desses botões. Então temos o botão Itens. Queremos criar um script para lidar com o que acontece lá. Poderíamos usar o Onclick. Vamos usar o onclick, mas queremos criar um script. Então vamos entrar em scripts, vamos entrar em itens. Você acha que o gerenciamento de itens é um bom lugar para criar isso? Sim, claro. Por que não tão bem, criar um script aqui, estamos chamando o botão item. Pressione Enter, espere que isso para compilar e vamos entrar no botão de itens Prefabs ou prefabs item, e vamos bloquear, ir para os scripts e adicionar o botão itens. E aí vai você. Então botão Itens, salve isso. Abra o botão de itens. E o que vamos fazer aqui? Bem, vamos criar um método que pressiona ou estojo. Então aqui estamos nós nos itens, o roteiro. Nós só precisamos de uma única variável por enquanto, e vai ser um gerenciador de itens públicos e o item no botão. Então isso representará o item que temos na parte inferior. Então agora o próximo passo é criar um método que é chamado cada vez que pressionamos o botão para definir o item pilhas ou itens nome e o gerenciador de menu e a descrição do item. E vai fazer parte do seu desafio. Seu desafio é criar um método para pressionar. Então, um botão Itens, criar um método pressione, usá-lo para acessar o gerenciador de memória e definir o nome do item e descrição com base no item no botão. Então pausar o vídeo agora mesmo e ir fazer o desafio, 0, k. Então vamos excluir o início e atualizar por enquanto. Acho que não vamos precisar deles. Faremos mais tarde. Se precisarmos deles, crie-os. Vamos criar um método de progresso vazio público. E aqui vamos acessar a instância de ponto do gerenciador de menu, nome do item de ponto, texto de ponto. E isso vai ser igual ao item no botão, o nome do item. E também vamos definir exatamente o mesmo para a descrição. Então, em vez do nome do item, a descrição do item e a descrição do item, vamos salvar isso. E agora vamos para o gerente do menu. Vamos rolar para baixo. Onde configuramos a maiúscula ou aqui onde atualizamos. Depois de terminar a atualização, vamos para o slot do item. Vamos pegar o componente. E esse componente é o botão do item. Vamos acessar aqui, o item no botão. E vai ser igual ao item que acabamos de adicionar. Então eu acho que uma maneira melhor teria se nós definir isso como privado e , em seguida, criar um método para obter acesso a este botão item para configurá-lo. Isso provavelmente teria sido melhor. Mas, por enquanto, vamos usar isso como público. Não se preocupe com isso. Então, onde estávamos nós e o gerente do menu? Lá vamos nós. Item slot obter componente. Nós acessamos o botão de item de script, que é um componente no slot de item. Nós acessamos o item no botão e configuramos para ser o item que acabou de ser adicionado no inventário, a lista. Então, agora, se executarmos nosso jogo, se entrarmos em nossa tela, abrirmos nossa tela, abrimos nosso menu. E a propósito, a Unidade caiu em cima de mim. Então vamos para, onde está o menu, o painel de itens, a descrição do item. Então vamos fechar a tela. Do que precisamos? Precisamos do nome do item, da descrição do item. Vamos ver. Esta é a descrição do item? Tem isso abaixo de um ano, então o nome do item, texto, etc. Então, quantas vezes eu cometeria esse erro de texto? Malha pero Gui? Então você deve estar frustrado por eu continuar fazendo isso, Michael, você precisa colocar isso na sua cabeça. Estamos usando texto Mesh Pro. Guarde isso. Agora sei que tenho dois problemas para trabalhar. Primeiro de tudo, certifique-se de definir sempre o texto Malha ampla, não texto, e sempre definir os elementos no inspetor. Até agora, consertei esse problema, consertei um deles pelo menos. Então guardamos isso. Fazemos o nosso jogo. Certo, antes de continuarmos, notei que temos o valor. Deveríamos ter definido o valor. Então, o que é isso deletado? Prefiro a descrição. Portanto, precisamos dos valores e não do texto normal. Então dissemos o valor, o valor da descrição. Nós guardamos isso. Fazemos o nosso jogo. Pegamos algumas poções. E mais uma vez, há mais uma coisa que precisamos fazer. Se entrarmos nos Prefabs e no botão Itens, removemos o bloqueio para que possamos vê-lo claramente. Precisamos que o onclick seja script de botão de itens V. E no botão Itens chamamos a imprensa. Então guarde isso. E agora está tudo pronto. Podemos pegar alguns itens, pegar tudo isso. Vamos acertar os itens. Se clicarmos em um dos itens, lá vai você. É um ovo dourado. Isso matará monstros mais rápido. Deixe-me fazer isso maior para ficar mais claro. Isso matará monstros mais rápido. Isto vai matar monstros. Isso vai se defender de monstros melhor. Isto lhe dará HB, é uma poção HP, e este é um oceano monopólio. Isso vai te dar dinheiro. Então agora esses botões realmente fazem coisas. E no próximo vídeo vamos ver como podemos usar o botão de descarte para descartar os itens. Vemo-nos no próximo vídeo. 62. Descarte itens: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós vamos estar pegando os itens. E quando apertamos a tecla M, vamos para os itens. Se escolhermos um deles e descartarmos. Lá vai você, você vai notar que ele desaparece. Fizemos um pequeno ajuste sobre como os itens são destruídos. E lá vai você com destruir todos os itens. Então não vamos perder mais tempo que eu digo destruir. Quero dizer, descartar todos os itens e vamos começar. Oh, ok. Então, para descartar um item, precisamos manter o controle do ato do item que acabamos de clicar. Então vamos fazer exatamente isso. Vamos para o nosso gerenciador de menus, e aqui vamos criar um gerenciador de itens públicos. E o item ativo. Lá vamos nós. Então agora precisamos ir para o botão de itens. E quando pressionamos irá para o gerenciador de menu, acessará a instância, definirá o ato do item para ser igual ao item na parte inferior. Guarde isso. Agora o que queremos fazer é criar um método que descarta o ato do item. E eu vou lançar um pequeno desafio. Não é o que você pensa. Crie um método para descartar um item e init, imprima o nome do item que acabamos de descartar isso. Você precisa se certificar de que você o aplica no botão de descarte, que é algo que eu sempre esqueço. Então, por favor, faça isso para pausar o vídeo agora e vá para o desafio. Ok, bem-vindo de volta. Como você se saiu com isso? Vamos rolar para baixo até o fundo. E aqui vamos criar um vazio público. Descarte o item ou simplesmente descarte. Isso não importa. Então aqui irá simplesmente imprimir o item ativo, o nome do item do ponto, o nome do item. Guarde isso. Vamos para a Unidade, onde vamos acessar o onde está? O botão de descarte? Por que temos um botão Descartar um? Acabamos de duplicar e deixá-lo lá? Então o menu liga isso. Vamos ver, botão Descartar, clique duas vezes. Oh, ok, então vamos mudar isso deste botão do carrinho para usar botão. Agora neste botão de carrinho, vamos rolar para baixo. Vamos adicionar um clique. Vamos arrastar a tela. Vamos acessar o gerenciador do menu. Nós vamos descartar o item, salvar isso, executar o jogo. Isso é desligado em estatísticas ICT 0. Então quem, que ainda não pegou nenhum item. Então vamos executar o jogo de novo. Nós vamos sair vamos pegar um par de itens. Lá vamos nós. Aperte Enter e estatísticas Itens. Clique em um dos itens, descarte. Lá vai você. Estamos descartando os atos de prata... foram descartando a armadura de prata, descartando 10 poções, e descartando o HP. Então, estamos recebendo o item ativo corretamente. A próxima coisa é começar a movê-lo da nossa lista. Então vamos para o inventário, vai criar um método aqui que vai ser o item adicionar. Vamos criar o método vazio público e removeremos a arte. Então remover item e ele vai tomar um argumento que vai ser o gerenciador de itens, digite gerenciador de itens e o item que vamos remover. E aqui vamos fazer algumas coisas. Podemos simplesmente começar a remover da lista de itens. Temos de ter a certeza, em primeiro lugar, de que é empilhável. Se for, só queremos remover um deles, nem todos os Ahmad ou nem todos os itens. Então, se o item é empilhável, então vamos, em primeiro lugar, criar uma variável aqui do gerenciador de itens tipo. E vai ser o item do inventário. E vai ser igual a nulo. E você vai ver por que estamos fazendo isso daqui a pouco, ok, então tudo está bem. Vamos percorrer todos os itens. E nós vamos ter certeza de olhar através da lista de itens. E vamos verificar se v item no inventário, que estamos recebendo agora. Nome do item ponto que já cobrimos isso é igual ao item dois sinais iguais porque estamos comparando com o item, o nome do item. Então o que faremos é o item no inventário, a quantidade que o IntelliSense não está me ajudando. E vamos apenas remover um. Ou poderíamos simplesmente ter escrito aqui menos menos. Então, isso remove A1. E então o que vamos fazer é definir o item de inventário, que criamos aqui para ser igual ao item e inventário. E por que estamos fazendo isso? Bem, porque queremos verificar depois de terminar o loop for-cada, se o item de inventário é diferente de nulo, e o item de inventário é menor que o valor do dólar, modo que o valor é menor ou igual a 0. Então o que faremos é remover o item. Então, a maneira como removemos como acessamos a lista de itens com cima e remover, e acessamos o item de inventário. Então o que estamos fazendo aqui é que estamos criando essa variável para manter o controle do item que estamos removendo. Se removermos um, digamos que o valor chega a 0, o item de inventário, então verificamos se é diferente de nulo e o valor é menor ou igual a 0, então removeremos o item. Caso contrário, vamos simplesmente remover o valor e apenas manter o controle dele para mais tarde. E se não for empilhável, simplesmente removeremos o item. Então, se não for empilhável, item, ponto da lista remova o item, salve isso. Agora vamos voltar para a Unidade. Certo, então, quando executamos nosso jogo, há um pequeno problema que não falamos. Então, quando pegamos todos os itens, apertamos a tecla M, vamos até os itens, clicamos em um dos itens. Se olharmos no botão Itens aqui, você notará que o botão ativo ou o item no botão está faltando. O mesmo se aplica se formos ao Canvas e procurarmos o Item ativo. Agora você pode estar se perguntando, por que isso está acontecendo? Não estamos escrevendo o código corretamente? Há algo errado com a adição de inventário? Há algo errado no Gerenciador de Itens? Sim. Se você pensou sobre o último, o problema é o gerenciador de itens. Então, o que está acontecendo aqui? Toda vez que pegamos um dos itens, estamos destruindo-o. Você pode vê-lo bem aqui. Então, quando destruímos o item com destruir o objeto do jogo e não há mais referência a ele. Então, em vez de destruir, vamos definir o ativo em 24. Então vamos definir isso, o contratempo. Então vamos definir o ponto do objeto do jogo ativo como false. Guarde isso. Agora, de volta ao nosso jogo, vamos correr. E agora você vai notar que os itens em vez de serem destruídos simplesmente vão desaparecer, mas eles ainda estarão aqui disponíveis para nós. Então nós, nós pegamos tudo isso. Nós apertamos a tecla M, vamos para os itens e você vai notar que agora, lá está. Temos a poção e todos os outros itens. Se clicarmos no machado dourado e na tela, temos uma referência ao Machado Dourado. Então agora, quando descartarmos os itens, o último que descartarmos, ele desaparecerá tão bem, tudo o resto. E você vai notar, lá vai você. Então tudo está desaparecendo. Tudo está funcionando corretamente. Então, com isso feito, verei vocês no próximo vídeo onde usaremos os itens e não apenas descartá-los. Então, vejo-te depois. 63. Como usar itens: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, implementamos o uso de um botão do botão dos EUA na verdade. Então, agora, quando vamos aos itens, escolhemos uma das poções. Se olharmos para o jogador, usamos a poção, mas espere um segundo, o HP atual ainda é o mesmo. Se tentarmos de novo , o HP atual ainda é o mesmo. Mas se escolhermos o curandeiro, você notará que quando olharmos para o modelo atual, que é 3, se adicionarmos um pouco de maneira a ele, lá vai você, você pode ver que ele está funcionando, mas não no jogador correto. Vamos corrigir isso mais tarde, mas por enquanto é hora de implementar o botão de uso e nossos menus de ícones. Então não vamos perder mais tempo e vamos começar. Ok, então é hora de começar a usar nossos itens. E o primeiro item que vamos usar ou itens que vamos usar são as porções que temos para Adicionar Mano e adicionar HB. Então, para isso, precisamos de métodos e estatísticas do jogador que adicionam mono e HP para o nosso jogador. E isso vai fazer parte do seu desafio. Seu desafio é adicionar maneira e HP. Então faça uma instância do script de estatísticas do jogador. E também cria dois métodos. Um para adicionar mono e quer adicionar HP. Ambos os métodos devem ter um argumento ou um parâmetro passado para ele sobre o valor para aplicar a quantidade para o HP barra mono atual, e certificar-se de que o HP e o mana atuais nunca ultrapassam a maneira máxima HP, porque não queremos que o nosso jogador. Digamos que se o HP máximo for 100, não queremos que o jogador tenha, digamos, 110 ou 120 quando HP for adicionado à sua saúde. Então, com isso dito, pausar o vídeo agora e co-criar os métodos. Ok, bem-vindo de volta. Então aqui, vamos em frente e criar uma instância. Então público, estático, instância, operações, estatísticas do jogador, instância. E começar. Vamos definir a instância para isso, salvar aquilo. Agora vamos rolar para baixo e aqui vamos para ir em frente e criar dois métodos, o vazio público, adicionar HP. E aqui vamos tomar um parâmetro inteiro que vai ser a quantidade HB para adicionar. E vamos começar a digitar aqui. Então, o que vamos fazer? A primeira coisa que faremos é obter o HP atual. Vai ser mais igual. Então, vamos adicionar a ele a quantidade de HP para adicionar. Mas precisamos ter certeza de que o HB atual, HP tão atual, se ele ultrapassar o HP máximo, então vamos definir o HP atual para ser igual ao HP máximo. Então é tudo o que precisamos fazer e faremos o mesmo aqui. Então vamos duplicar este. E esta será a adição de mana. Esta será a maneira de adicionar o mano atual. Um mano para adicionar Mano atual. Se ficar maior que o Max Mano, então o “eu “copie isto, cola-o aqui, copie isto, cola-o aqui, guarde isso. Então agora temos tudo pronto. Agora vamos criar um método para usar esses itens a partir do script gerenciador de itens. Então aqui sob a atualização ou quer saber, vamos apenas excluir o início e a atualização porque eu não acho que vamos precisar deles em breve. E aqui vamos criar um item de uso anulado público. E aqui a primeira coisa que vamos fazer é verificar se o tipo de item é igual a item, digite item ponto. Vamos verificar se o seu tipo de efeito é igual ao tipo de efeito HP. Do que o que vamos fazer é chamar as estatísticas do jogador. Vamos acessar a instância, adicionaremos HP e enviaremos a quantidade de efeito. Então lá vai você. A quantidade de efeito else-se seu tipo de efeito é igual ao tipo de efeito dot mono, então, oops, eu quis dizer que este deveria estar aqui. Portanto, a condição if não é se é um item ou não, é sobre se ele afeta HP ou mono. E eu acabei de adicionar um else-if e não apenas um outro porque talvez você gostaria de adicionar outros oceanos que aumentaram a destreza. E assim por diante. Então, é melhor usar else if neste contexto. Então vamos adicionar uma estatística de jogador, a outra instância, Madonna, e a quantidade de efeito. Lá vai você. Guarde isso. E finalmente, o que precisamos fazer é chamar o item dos EUA a partir do gerenciador de menu. Então, um livre ir para onde está? Onde está o gerente do menu? Lá vamos nós. Então, no Gerenciador de menus, temos o item descartar. Agora vamos criar um item de uso anulado público. E aqui vamos verificar o ato do item. Vamos usar o item. Lá vamos nós. E, finalmente, há mais uma coisa que precisamos fazer e que é descartar o item. Então vamos chamar o item de descarte porque assim que usarmos o item, queremos descartar isso. Então, o que ele faz, ele irá removê-lo do inventário usando a instância de inventário remover item e, em seguida, atualizar o inventário. Então vamos salvar isso. Vamos entrar no nosso jogo. Vamos nos certificar de que salvamos tudo. Ok, então de volta ao nosso jogo, execute o nosso jogo. E vamos olhar para o jogador, vai ver bem aqui que temos, eu tenho, Onde está? Assim, os jogadores HP atual é 0. Então vamos pegar alguns itens que tinham, hum, ir para os itens, pegar a promoção de saúde, vamos usá-la e ver se o HP atual aumenta. Não atribuímos o botão para fazer nada. Ok, então Canvas, menu, botões, parar itens, usar botão, clicar sobre isso, adicionar um onclick na tela, ir para o Gerenciador de menus e usar item salvar isso, executar o jogo. Agora isso deve estar funcionando então nós pegar os itens, ir para itens amniote, escolher a metade parte Isso é clique no jogador certifica-se de que o, há algum tipo de efeito e como você pode ver, há atualmente Nada. Então você pode estar se perguntando o que deu errado como nosso código não escrever como algo que nós tentamos adicionar aqui, não trabalhando enquanto tudo está funcionando. Mas o problema é que quando pegamos os itens, apertamos a tecla M, vamos até os itens para a poção HB e usamos. Não é o jogador que está sendo afetado. É o curandeiro e PC porque ele também tem estatísticas de um jogador sobre ele. E se você olhar de perto aqui, você pode ver que o atual Mano no curandeiro é três. Se escolhermos o oceano monopólio e o usarmos. Lá vai você, você pode ver que nós adicionamos um pouco e outra vez e outra vez. Então agora somos capazes de usar nossa poção. Mas o próximo passo é realmente ter uma maneira de escolher qual personagem recebe os benefícios de usar a parte que temos. Então, no próximo vídeo, escolheremos o personagem apropriado para usar. As porções e itens são. Te vejo então. 64. Adição de escolha de personagens: Bem-vindos de volta meus colegas desenvolvedores de jogos. Então lembre-se quando nós costumávamos pegar itens e não saber quem pode obter o quê enquanto agora quando clicamos em um dos itens, nós tentamos usá-lo, whoa, nós temos este painel aqui que se abre e nos pergunta, quem você quer usar Isto está ligado? Se é o Jimmy? É a Sarah? Mas ainda podemos fazer qualquer coisa sobre isso. Faremos isso em vídeos posteriores, mas por enquanto é hora de criar um painel para a escolha do personagem. Então, vejo-te depois. Ok, então como vamos ser capazes de escolher qual jogador recebe a poção que queremos usar, ou qualquer outro item. Vamos criar um painel que se abre sempre que clicarmos em notícias. E vamos escolher entre os jogadores disponíveis. Então vamos voltar o menu temático. Vamos clicar duas vezes sobre ele para abri-lo. Torne esta janela do jogo um pouco menor porque temos um pouco de edição aqui para fazer. Vamos talvez digamos que o painel de exibição de itens. Não, acho que a descrição do item, vamos duplicar isso. E aqui vamos apagar tudo, apagar isso. Então agora temos a descrição do item, que é uma rodada tão grande quanto a descrição do item original. Este será o painel de escolha de caracteres. Vamos tocar em “Enter”. E aqui vamos ter um par de botões. Então vamos entrar nos botões aqui, obter o botão de itens, vamos duplicá-lo e arrastá-lo para a escolha do personagem. E vamos movê-lo para cá. Então vamos ter a opção de escolher entre três jogadores. Acho que essa é a quantia que tínhamos. Então vamos fazer isso um pouco menor, talvez torná-lo um pouco mais alto para o nome. E vai ser a escolha da camada, escolha C, escolha do jogador. Certo, então escolha do jogador. E vamos ver se podemos apenas fazer a fonte um pouco menor e torná-la maior nas laterais. Então, lá vai você. Isso é bom o suficiente. Acho que é um bom lugar para escolher o jogador. Vamos fazer essa escolha menor do destino, e vamos colocá-la aqui. Vamos duplicar isto. Então vamos definir, este será o primeiro à direita. Isto vai ser no meio, e vamos duplicar isso de novo, temos o terceiro aqui. E agora vamos ver, é cerca de 400 por 134. Então vamos adicionar uma grade. Então vamos adicionar um layout de grade. Vamos montar esses botões. Então nós vamos expandi-los no x, no y. Vamos adicionar um pouco de espaçamento. E vamos ver. Talvez no nada, não batemos na selva porque não temos distância. Então, sim, isso é certo. E podemos movê-lo. Podemos adicionar um pouco de preenchimento da esquerda. Então lá vamos nós. Remova o espaçamento à direita. E isso é sobre o quanto precisávamos. Talvez nós vamos movê-lo para baixo. Então vamos adicionar um pouco de estofamento do topo. Isso era parte do desafio quando você precisa dele para explorar. Aposto que encontrou o tema, o estofamento. O estofamento. E vamos ver, talvez isso deva ser um menor no lado, e lá vamos nós. Então agora temos três botões de escolha de jogador que podemos usar. Então, o que faremos é sempre que apertarmos a tecla dos EUA, abriremos este painel e escolheremos um dos jogadores disponíveis. Talvez devêssemos mudar o texto aqui para dizer o nome do jogador. E é por isso que precisamos torná-lo um pouco menor ou não, podemos dimensioná-lo automaticamente. Não, o tamanho do carro parece muito pequeno. Então vamos apenas definir para ser em torno de 30 como um bom número, aperte Enter o k. Então com isso feito, vamos fechar isso. Guarde tudo isso. Vamos abrir o gerenciador de menus e é hora de configurar tudo. Então, as duas primeiras variáveis que precisamos são obviamente o painel de escolha de caracteres e os nomes das escolhas de caracteres. Então vamos criar dois campos serializados. Um deles será um objeto de jogo. E vai ser o painel de escolha de personagem. E outro campo serializado, que será uma matriz de textos. E vai representar os itens, caráter, escolha, nomes. Sei que é um nome longo para uma variável, mas precisamos ter certeza de que entendemos com o que estamos trabalhando. E então aqui embaixo, nós vamos, onde estamos? Devemos estar, Vamos puxá-lo aqui sobre o botão de descarte ou saber o quê, Vamos colocá-lo sob o botão EUA para que fique perto. Então vai ser um vazio público. E queremos abrir a escolha do personagem. Então vamos chamar este painel de escolha de caracteres aberto. E o que vamos fazer aqui? Em primeiro lugar, o painel Caractere deve ser definido como ativo. Então o painel de escolha de caracteres que definir ativo é verdadeiro. Então precisaremos percorrer todas as estatísticas do jogador. Então nós vamos criar um loop for, ou podemos criar um para cada loop, realmente não importa, mas às vezes isso faz. E eu vou te mostrar talvez neste vídeo por quê? Então, se eu for menor do que as estatísticas do jogador que temos esse comprimento. Então temos uma referência a todos os jogadores disponíveis. Lá vamos nós. Então temos a referência aqui, pode usar as estatísticas do jogador imediatamente. E eu mais, mais. Então agora, como estamos passando por todas as estatísticas do jogador, vamos criar uma variável que vai ser do tipo de estatísticas do jogador. Vamos chamar-lhe o jogador ativo. E vai ser igual ao gerente do jogo. Instância da porta. A estatística do jogador na posição i. Agora que temos referência ao jogador ativo, vamos acessar os itens, escolha do personagem, nome. Na posição i. Nós vamos para o texto e ele vai ser igual ao nome do jogador ponto ativo. E, finalmente, precisamos ligar e desligar o botão com base em se este jogador está ativo na hierarquia ou não. Então o que vamos fazer é criar um booleano. Então bool camada ativa estão disponíveis e vai ser igual ao jogador ativo objeto de jogo ponto ativo ativo ativo e hierarquia. E eu criei uma variável separada para ela porque a próxima linha será muito longa. Então vamos acessar o primeiro de todos os itens, o nome da escolha do personagem. Qual é o nome da escolha do personagem? É o texto nos botões. Então, precisamos ligar e desligar os botões ou configurá-los ativos ou não ativos. Então o que precisamos fazer é acessar a transformação e pegar o pai. E, em seguida, a partir do pai acessar os objetos do jogo. Então, agora estamos no botão e vamos configurá-lo para ativo com base em se o ato de jogador como disponível. Então, como eu disse, Talvez elétron, quando atribuirmos tudo na Unidade, será mais claro, mas este é o texto no botão. E é, eu acho que deve ser texto Mesh Pro. Então texto Mesh pro, Eu acho que esta é a primeira vez que eu não faço esse erro. Então este é um texto Mesh Pro. Precisamos acessar a transformação antes de acessar o pai. Em seguida, acesse o objeto do jogo e defina-o para ativo com base no fato de o jogador ativo estar disponível ou não. Então agora podemos salvar tudo isso. E também, é claro, precisamos de uma maneira de fechar este solo, criar um vazio público, fechar e fechar painel de escolha de personagem. E é muito simples. Basta ir para o painel de escolha de caracteres, seletor de pontos, false. Guarde isso. Agora, de volta ao Unity, precisamos ter certeza de que quando saímos do menu, fechamos a janela de escolha de personagem. Então vamos para o Canvas, atribuir tudo. Então, se nós rolarmos para baixo, nós temos os nomes de escolha de personagem. Então abra tudo isso. Vamos trancar este inspetor, calçar tudo isso, arrastá-los para cá. Vamos arrastar o painel de escolha de caracteres e para a posição correta. Vamos salvar tudo isso. Fecharemos isso e desligaremos o painel de escolha de personagem. E também precisamos voltar aqui e quando usamos o item, então quando usamos o item, precisamos abrir o painel de escolha de caracteres. Então lá vamos nós. Abrimos o painel de escolha de personagem. E isso nos permitirá escolher um desses personagens em que queremos usar as poções. Agora, esses itens de descarte devem ser movidos. Então vamos adicionar um comentário aqui. Isso deve estar se movendo e deve ser ativado depois que escolhermos um dos jogadores mais tarde. Então vamos nos certificar de que tudo está funcionando. Então eu vou desligar o painel de itens e desligar. Vamos manter o painel de itens. Nada nos incomodando. Dirija o jogo. Coletar um par de itens, abrir o menu, ir para Itens, e vamos ver, se clicarmos em uma das partes que tivemos os EUA. Lá vai você. Temos Jimmy, Sarah, e o nome que não deveria estar disponível para nós porque não os desligamos aqui. Então deixe-me voltar atrás. Deixe-me escolher todos estes e colocá-los para um ativo. Porque estamos transformando eles em baseado se há um jogador e eles já estavam em. Então vamos escolher, abrir os itens do menu, usar seu ego apenas ginásio e Sarah ou estão disponíveis. Atualmente, isso não faz nada, mas pelo menos sabemos que está funcionando e nos dando uma escolha. Então, no próximo vídeo, nós vamos realmente estar escolhendo o personagem, usando o item neste personagem e preenchendo tudo o que precisamos fazer. Então, vemo-nos na próxima. 65. Escolhendo um personagem: Bem-vindos de volta meus colegas desenvolvedores de jogos. E neste vídeo, finalmente conseguimos usar os itens que temos trabalhado há tanto tempo. Agora, quando vamos aos itens, escolhemos a poção de maná. Apertamos a chave dos EUA, temos a opção de escolher se queremos Jimmy ou Sarah. Se clicarmos no jogador agora vamos dar uma olhada no HP atual. Tivemos os EUA, ou aumentamos a maneira, vamos aumentar a demanda por Sarah. E Sarah, aumentamos a demanda por Sarah. Então finalmente terminamos de implementar isso. Então não vamos perder mais tempo e vamos finalmente terminar com o uso de itens. Certo, agora precisamos escolher um personagem. Como vamos fazer isso? Vamos para o botão de itens. E aqui vamos adicionar um parâmetro. Então vai ser um caractere ENT para usar. Então por que eu adicionei um inteiro como parâmetro e não uma estatística de um jogador real. Deixe-me explicar como tudo isso vai funcionar. Vamos entrar na escolha do jogador aqui, e vamos adicionar a cada um também. Também precisamos remover todos esses botões. Então nós vamos nos certificar de que cada um desses jogadores escolha inferior tem um número específico para ele. Vamos, sempre que apertarmos o botão, vamos enviar esse número inteiro para o gerenciador de menus aqui. E, em seguida, usando este, este item, e, em seguida, usando este poder, vamos enviá-lo de volta para o item dos EUA no gerenciador de itens. Então vamos implementar isso se você não entendeu o que eu quis dizer, eu vou te mostrar enquanto passamos. Então agora no gerenciador de itens usar método item, vamos ir em frente e criar uma variável que é de cinco estatísticas jogador. Ele vai ser chamado de personagem selecionado e é igual à instância de ponto do gerenciador de jogo, ponto get, ou os jogadores que obter estatísticas do jogador na posição do personagem para usar. Então agora aqui em vez de instância jogador ponto, vamos obter o personagem selecionado. E também aqui o personagem selecionado. Guarde tudo isso. Em seguida, precisamos ter certeza de que sabemos qual personagem usar vamos usar. Então de volta no Gerenciador de Menu e aqui vamos passar um parâmetro que vai ser o caractere selecionado. E vamos passar aqui o personagem selecionado e o professor. Então, o que acontece agora? Deixa-me mostrar-te. Se voltarmos aqui, selecionaremos os três jogadores aqui. Vamos nos certificar de que são eles que usam o item. Então, vamos arrastar também, ainda estamos no Modo de Jogo. Oh não. Ok, então agora precisamos fazer tudo isso novamente, porque todas as mudanças que fazemos durante o jogo antigo são removidas. Isso é tão triste de ver. De qualquer forma, vamos em frente e adicionar um clique a todos eles. Adicione um item e aqui. E então escolha um gerenciador de menu de tema. No gerenciador de menu, o item dos EUA, a escolha do jogador será 0 e o outro será um na segunda escolha e será dois na última. Vamos salvar isso garante que eles estão na posição correta. Assim, a primeira escolha do jogador, que é 0, deve estar no lado mais esquerdo. O no meio deve ser o único, e no lado direito deve ser dois. Então vamos salvar tudo isso. Nós também vamos adicionar aqui um, outro método e que é fechar os painéis de caracteres. Então nós vamos e escolhemos. Onde é que está? Fechar, fechar, fechar painel Caractere. Lá vamos nós. Guarde isso. E, finalmente, no botão EUA, devemos apenas abrir o painel Caractere. Nós não queremos realmente usar o item com o botão EUA. Então use o botão. Em vez de usar, precisamos ir para o gerente e apenas abrir o painel de caracteres vai salvar tudo isso. E isso deveria estar funcionando. E uma coisa a menos está aqui quando queremos abrir o painel Caractere, precisamos ter certeza de que temos um item ativo. Portanto, se não tivermos um item ativo selecionado, não queremos poder abrir o painel. Isso causará muitos erros mais tarde. Com isso salvo, vamos voltar e testar finalmente, nosso código, ver se funciona. Então nós pegamos os itens que tínhamos e vamos para os itens, vamos para a parte HP. Vamos clicar no jogador para ter certeza de que adicionamos ao Genie. Usamos o item que escolhemos, Jimmy e aí vai você. Então agora adicionamos uma velocidade ao Jimmy especificamente. Agora vamos tentar adicionar alguma maneira ao Jimmy. Muito ir. Então o homem foi adicionado ao Jimmy. Vamos tentar adicionar a Sarah. Vamos clicar sobre os curandeiros MPC. Vamos olhar. O atual é três. Vamos adicionar alguma maneira. Lá vai você. E Jimmy não teve mononucleose. Então finalmente terminamos com o uso desses itens. Agora ainda temos que usar as armas e a armadura. Espero que esteja gostando. Sei que não há muita ação nisso, mas estamos aprendendo informações de codificação muito valiosas e aprofundando a complexidade. Espero que estejas a gostar e vejo-te no próximo vídeo. 66. Usando armas e Armor: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos ser capazes de usar os itens e armaduras ou tudo que não os itens. Então seremos capazes de atribuir a armadura de ouro. Vamos escolher Jimmy e atribuir o prateado à Sarah, atribuir o machado dourado ao Jimmy e os atos prateados à Sarah. Se formos às estatísticas, verás que me deixas tornar isto maior. Você verá que Jimmy tem os ovos de ouro e a armadura dourada, e Sarah tem o x prateado e estes Alma prateado, nós também vemos o poder das armas aqui. Se Jimmy já tem o machado dourado, se quisermos dar-lhes um X prateado, podemos trocar isso. Veremos como tudo isso funciona daqui a pouco. Então não vamos perder mais tempo e vamos começar. Certo, então é hora de adicionar armas e armaduras. Vamos primeiro para as estatísticas do jogador. Onde estão as estatísticas dos nossos jogadores? Vamos subir. E aqui vamos adicionar algumas coisas. Então a primeira coisa é o nome público da arma equipado String . O segundo é o nome da armadura equipada. Então vamos adicionar mais dois, que são públicos e armas, poder ou destreza. E, finalmente, a defesa da armadura. Então isso vai ser um pouco diferente da destreza e defesa normais. Estas serão as armas específicas. Então vamos salvar isso. A próxima coisa que precisamos ter em mente que temos o menu Estatísticas. Então, se você se lembra, vamos voltar aqui. Vamos abrir o menu e você pode ver que tivemos o, vamos desligar os painéis e vamos ver o painel de estatísticas. Lá vai você. Então você se lembra que tínhamos a arma equipada. Aqui é onde vamos adicionar tudo nos valores do equipado para anexar o blindado equipado, o poder da arma e a defesa da arma. Agora chamamos de dobra e energia. Vamos mudar isso. Talvez devêssemos mantê-lo como estava. Então, quando o jogador estatísticas, vamos manter o poder da arma. Certo, então o poder da arma de volta ao nosso gerente de menu, também vamos levar tudo isso em consideração. Então aqui, vamos adicionar mais dois textos. Então era aqui que estávamos usando as estatísticas. Então isso vamos adicionar a arma equipada e armadura equipada. E também adicionaremos aqui textos para a defesa e textos 40 de poder da arma. E eu vou duplicar isso. Não quero deixar a fila muito longa. Então, equipar, arma, poder e estatísticas são mais caso de defesa, salvo isso. Acho que é tudo o que precisamos fazer aqui. E precisamos rolar para baixo onde atualizamos as estatísticas? Então, depois de definir não, o menu Estatísticas, atualizamos o menu Estatísticas. Então é aqui que devemos trabalhar depois de definir a imagem, também precisamos de algumas coisas aqui. Então o Stat, uma citação, armas, isso é obviamente errado. Então deixe-me mudar isso. Arma. Stat equipado para acontecer. Enter dot txt é igual ao nome da arma equipada com ponto do jogador selecionado. Duplicar isso. Stat são mais defesa ponto selecionado arma armadura equipado nome. Guarde isso. Agora precisamos mais aqueles que representarão o poder e a defesa da armadura. Então vai ser o poder da arma. O texto é igual ao jogador selecionado penhor selecionado. Esse poder de arma. Duplicar isso. Stat, são mais o que chamamos de defesa da armadura. Ok? Assim, o jogador de defesa stat ponto txt, o são mais defesa. Lá vamos nós. Guarde isso. Qual é o problema aqui? E é um inteiro. Oh, que bom corda, ponto dois. Então é isso. Lembre-se de alguns desafios atrás, isso foi uma dica. É por isso que é uma dica porque às vezes podemos esquecer qual é o problema. Agora é hora de adicionar as armas dos itens. Mas primeiro precisamos considerar o que acontece quando realmente equipamos a arma. Quando equipamos a arma, queremos soltar a arma que já estamos segurando e colocá-la de volta no inventário. Então precisamos manter o controle dos itens que o jogador tem, as estatísticas do jogador. Então, quaisquer estatísticas de jogador, vamos criar mais duas variáveis aqui, que serão do tipo gerenciador de itens. E vai ser o equipado. Sempre me equipo mal a palavra. Espero que não esteja completamente errado. Arma equipada e o equipado em sabão equipado e o equipado são. Ok, então vamos guardar isso. E agora é hora de um desafio. E seu desafio é a arma equipada e tudo mais. Então crie dois métodos para armas equipadas e armaduras. Cada um deve tomar um argumento das armas cortar armadura para equipado. Disse que a armadura da arma equipada definiu o nome da arma e a destreza corta a diferença. Então tudo isso deve ser feito nas estatísticas do jogador. Se não estou enganado, você também é um desafio para você. Pause o vídeo agora mesmo e vá fazer o desafio. Então, de volta às nossas estatísticas de jogadores, adicionamos XP, adicionamos HP, adicionamos mono. E também podemos equipar armas. Então, onde devemos fazer isso? Eu acho que sob demanda, vamos fazer isso aqui. Então vai ser uma arma de equipamentos vazios públicos. E vai ter um argumento do Gerenciador de Itens e vai ser a arma para equipar. E aqui vamos colocar a arma equipada. Por que eu escolhi nomes tão duros de quatro nossa variável. Assim, a arma equipada será igual à arma para equipado. O nome da arma equipada será igual ao equipado para acontecer. Deixa-me copiar isto. Nome do ponto da arma equipado e o equipado para o poder da arma. Vamos tentar o poder. Certo, então o poder da arma está equipado para abrir a destreza da arma. Salve isso, vai duplicar isso porque é praticamente o mesmo. Então, em vez de equipado para anexar vai ser a arma equipar Armen para equipar. Armadura para equipar. E a armadura equipada é igual ao braço para equipar. E os equipados. E vamos tentar. O hormônio esteroide. Talvez isto seja mais fácil. Tão equipado nome armadura, nossa Marie de France. Copie isto, cola-o aqui e cola-o aqui. Nome do item e são mais defesa salvar isso. Então tudo isso deve estar correto. Verificará mais tarde se temos algum tipo de erro. Agora, de volta ao gerenciador de itens, precisamos verificar as armas e sinais de armadura. Então aqui, verificamos o item. Se não for um item, então vamos criar um outro. Se o tipo de item é igual ao tipo de item ponto um e se o caractere selecionado ponto equipado item, enquanto que para que a arma equipada, quero dizer, é diferente do vazio. Então isso significa que temos algum tipo de arma aqui, equipado para acontecer nome. Então equipado nome da arma porque estávamos comparando um gerenciador de itens com uma string em branco. Vamos entrar no inventário. Vamos acessar a instância. E nós vamos adicionar um item, que vai ser este item. É o que estamos atualmente, e vamos adicionar o personagem selecionado ponto o equipado para acontecer. Arma tão equipada. Então o que isso faz é verificar. Primeiro de tudo, estamos tentando adicionar e uma arma? Sim, estamos. Será que o personagem já abriu sobre ele? Sim, ele faz. Isso significa que precisamos adicionar esse item ao inventário e, em vez disso, vamos substituí-lo pela arma equipada com ponto de personagem selecionado. E nós vamos definir isso para isso ou nenhum movimento para adicionar. Este deve ser o método. Tão equipado. Precisamos equipar a arma e precisamos passar um parâmetro e vai ser isso, então é o item atual em que estamos trabalhando. E, finalmente, precisamos adicionar um outro else-if. E vamos verificar se o tipo de item é igual ao tipo de item ponto ARMA. Se for, então vamos verificar, vamos copiar isso porque é praticamente a mesma coisa. Então, vamos verificar se o equipado, Vamos tentar este armadura equipado nome Armen. Se for, então vamos adicionar um item, o personagem selecionado equipado armadura. E então nós vamos equipar e Narmer e também vai ser isso. Então vamos salvar tudo isso. Vamos voltar ao nosso jogo. Vamos ver se isso funciona. E você sabe, nós também podemos precisar atualizar as estatísticas em algum momento, mas vamos nos preocupar com isso mais tarde. Então vamos executar o nosso jogo. Vamos desligar isto. Vamos olhar para o jogador e você verá que não temos armas equipadas, nenhuma armadura equipada. Então eu vou pegar alguma armadura. Vamos abrir o menu, ir ao item, selecionar a armadura de ouro que vamos usar. Vamos acertar o Jimmy. E sim, lá vamos nós. Então temos a armadura equipada no personagem Jimmy. Se formos para as estatísticas e há um problema porque não definimos a instância de valor. Vamos nos preocupar com isso. Mais tarde. Vamos adicionar um machado dourado ao Jimmy. Ok, então lá vai você. Se tentarmos adicionar os atos prateados ao Jimmy, o Machado Dourado aparece e nossa lista de itens. Excelente. E vamos acrescentar que Sarah. Selecione os atos de ouro em que Sarah, e você pode ver que já temos um pequeno problema e itens duplicados. Então, para acrescentar isso, Sarah, agora Sarah, os curandeiros devem ter uma armadura de prata e um machado dourado. Então, com isso feito, vamos voltar para, vamos ver nossas estatísticas. Precisamos ver os valores. Vá para Canvas, bloqueie isso, role para baixo, e o personagem do item, onde estamos? Certo, então a arma equipada, então agora equipado para acontecer, vamos ver. O poder da arma deve ir e ouvir. A defesa da armadura deve entrar aqui. A arma equipada deve entrar aqui, e a honra equipada deve entrar aqui. Vamos salvar tudo isso, vamos executar o código novamente. Vamos desligar o menu, falar algumas armas, e lá vai você. Itens Coppa. Use-o no Jimmy. Use o deus 14, Sarah, use a armadura de ouro para Jimmy, use esta armadura de prata para Sarah. Vamos às estatísticas e vamos dar uma olhada aqui. O que temos tão equipado para acontecer é que os atos de prata para equipar armaduras não são nada. Então, por alguma razão, a armadura equipada não está aparecendo corretamente, então veremos como lidar com isso em pouco tempo. Vamos ver qual é o problema. 0, ok, então aqui podemos ver que usamos a defesa da armadura, não a armadura. Como se chamava? Deixe-me voltar para onde eram estes que equipam armaduras. Então lá vai você, a armadura equipada stat, exceto que agora tudo deve estar funcionando bem. Vamos executar o nosso jogo. Vamos pegar os itens. Vamos dar a armadura prateada ao Jimmy. Volte para as estatísticas, escolha o Jimmy, aí está. Você pode ver que a armadura equipada é a prata e também tem uma armadura de defesa de seis. Então finalmente terminamos de criar nosso inventário. Finalmente terminamos de verificar nossos itens no inventário. Fizemos muitas coisas. Nós usamos os itens. Nós, esta era uma grande, enorme seção, então eu espero que você goste e eu vou te ver no próximo vídeo. 67. Seção 9: telhas de loja: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos apenas estabelecer as bases para a nossa loja. Então, primeiro de tudo, certifique-se de ir e aplicar tudo à sua tela pré-fabricada, porque já adicionamos muito. Não aplicamos a substituição de Prefabs ou Canvas. Certifique-se de aplicar tudo o que você tem para criar o gerenciador de jogos Prefabs ou simplesmente arraste o gerenciador de jogos. E aqui, certifique-se de aplicar também as alterações no jogador. E quando você terminar com isso, vamos em frente e criar uma nova cena. Vamos chamar isso de “Salve aquilo”. Então essa nova cena, podemos ficar com a câmera principal. Não precisamos de uma câmera de acompanhamento. Podemos ter uma loja estática onde não movemos a câmera é só um tiro e você se move e aquela loja. Ou se você quiser fazer isso diferente do que vá em frente. Então aqui estamos indo para, primeiro de tudo ir para os prefabs e nós vamos adicionar a grade. Então, vamos adicionar a grade, vai clicar com o botão direito do mouse e ir para o pré-fab descompactar completamente. Portanto, este é um ponto muito vital. Agora é hora de usar os azulejos. Eu lhe dei um conjunto de arquivos, então vamos para os recursos. Lá vai você, é interior. Deixe-me apenas adicionar este arquivo para que possamos clicar com o botão direito do mouse ou voltar atrás. Vamos fazer jag e o interior. E lá vai você. Lá temos o interior. Agora estamos criando uma nova paleta de mosaico será chamada de criação interna. E vamos criá-lo dentro da telha interior. Lá vamos nós. Então agora temos uma nova paleta de azulejos. Agora precisamos definir o modo sprite para múltiplo. Precisamos aplicar as mudanças. Precisamos ir ao Editor Sprite. E aqui, descobri que o tamanho perfeito é 16. Por 16 foi um deslocamento do topo. Vamos cortar tudo isso. Lá vai você. Então isso vai dar uma fatia muito agradável, exceto para a borda aqui em baixo. Então você vai notar que não há nenhuma fatia no local porque nós compensamos por um. Você pode vê-lo bem aqui. E porque nós compensamos por um, você pode ver que não há nenhuma fatia aqui em baixo. Lidaremos com isso mais tarde. Mas se cortarmos tudo, haverá um grande problema na janela da paleta de azulejos. Não nos vai permitir fazer tudo sem problemas. E se você tiver seus próprios sprites, então você precisará encontrar sua própria maneira de cortá-la. Você pode até fazer isso manualmente. Então vamos aplicar tudo isso. Vamos arrastar os pilotos. E aqui vamos nos certificar de que selecionamos o arquivo Endo para os ativos do bloco. Vamos selecionar isso. E lá vai você. Podemos começar apagando tudo. Então vamos criar um objeto ou selecionar vários arquivos. Excluir 0. Basta sair da edição, apagar. E vamos em frente e remover tudo e nosso mundo de objetos para o fundo. Para os objetos de fundo. Então, lá vai você. Agora podemos começar de novo. Então, por exemplo, teremos isso como pano de fundo. E lá vamos nós e apenas desenhamos isso. E você pode ver que precisamos torná-lo maior. Vamos tentar fazer 32. Aplicar. 16. Acredito que 16 será o bom número. Lá vai você. E agora podemos começar a adicionar tapetes e assim por diante. E para as bordas inferiores, vamos novamente para o Sprite Editor. Vamos criar uma caixa aqui que vai ser do tamanho. Então exatamente a mesma largura que a acima, mas uma altura um pouco menor, então é 16 por 15. Então vamos criar vários arquivos novamente aqui. E isso vai ser 16 por 15, 16, 15. E vamos colocá-la na posição correta. Este também? Não. Este também. 16 por 15. E acredito que precisaremos de outro. Este deve ter 16 anos. Lá vamos nós. Infelizmente, não encontrei uma maneira mais rápida de fazer isso. Então eu estou fazendo tudo manualmente. Tenho certeza que há uma maneira mais suave e fácil de copiar e colar. Mas lá vamos nós. Então nós cortamos aqueles acima, nós vamos aplicar. Mas certifique-se de que você não simplesmente arraste isso para dentro. Então precisamos obter os sprites específicos que estão na parte inferior. Precisamos diferenciar entre esses sprites. Então lá vamos nós. Vamos selecionar os últimos. Então são estes 123. Lá vai você, você pode vê-los bem aqui. Vamos arrastá-los para cá. Sim. Está no arquivo interno e, como você pode ver, eles não estão configurados corretamente. Então o que podemos fazer é aumentar um pouco mais. Primeiro vamos para o modo Editar. Então vamos selecionar esses dois. Por exemplo, clique no movimento, irá configurá-lo aqui. Novamente, selecione Mover. E como eu estou, lá vamos nós As, hum, e eu estou dizendo como eu sou porque você pode ver aqui que os EUA são uma tecla de atalho e VM como uma tecla de atalho também. Então, como eu estou, e lá vamos nós, nós montamos nossos azulejos agora podemos desenhar tudo. E está a perguntar-nos onde queremos salvar a cena? Vamos para as cenas, vamos criar um afiado aqui. E aí vai você, guarde tudo isso. Agora, é hora de um pequeno desafio. E seu desafio será criar sua própria loja. Então crie e configure sua própria loja usando os azulejos e baixe seus próprios ladrilhos internos e crie uma loja se você não quiser usar os que eu lhe forneci, você pode ir para Open game art ou qualquer outro e encontrar tudo o que você precisa lá. Por isso, antes de ir, vou-me embora. Você também precisará adicionar o player. Então, vamos precisar encontrar o player prefabs e nós vamos precisar ter certeza, é claro que nós mudamos para cima, por exemplo, o fundo. Você pode ver que é muito grande consulta para fazer os polígonos menores e certifique-se de adicionar as bordas, por exemplo, para ser uma parede que são sólidos eo jogador não pode sair de lá. Então eu vou deixar você para criar sua própria loja. E no próximo vídeo, mostrarei o que criei e continuaremos. Então, vejo-te depois. 68. Configurando uma loja: Bem-vindo de volta meus colegas desenvolvedores de jogos neste vídeo muito longo. Eu sei que são cerca de 20 minutos talvez, mas está tudo construindo IU. Então, como você sabe, isso é pessoal. Vou mostrar-lhe o layout e então você pode criar o seu próprio. Então, o que fizemos aqui, criamos um painel de célula por painel e saímos do botão Loja, uma moeda para usar o valor do item e assim por diante e assim por diante. Então não vamos perder mais tempo e vamos começar com o nosso menu da loja. Oh K. Vamos começar. Sinto que este será um dos nossos vídeos mais longos. Então, em primeiro lugar, precisamos cometer nossas mudanças. Precisamos ter certeza de que ignoramos tudo sob o estilo ativos do mar, estilos e acertar OK. Agora estágio de e agora vamos cometer nossas mudanças. Criou uma loja, comete-as. De volta ao nosso jogo. Lá vai você. Esta é a minha lojinha. E antes de esquecer, certifique-se de adicionar um gerente de nível e sentou telhas fundo fundo profundo que. Então, agora, quando executarmos o jogo, lá vai você. Então vamos ver. Lá vamos nós. Não podemos passar pelas paredes. Não podemos nos mover pelas cadeiras e objetos que criamos. Então não é muito chique, é muito básico, então nada muito chique aqui. Eu posso colocar para sair, então, ou um lugar para entrar, mas o jogador pode se mover através disso. Então agora é hora de começar a criar o manual da loja. Por isso. Vamos adicionar o Canvas à hierarquia. Lá vamos nós. E aqui vamos fazer algumas coisas. Então, estamos abrindo a Tela, podemos nos livrar da Paleta de Azulejos, fechar a guia. Vamos duplicar o menu e chamaremos isso de “D afiado”. Então, ementa da loja. E aqui vamos desligar o menu, manter o único menu aberto. E nós vamos fazer algumas mudanças aqui. Então a primeira coisa que vamos fazer são os botões. Então os botões vão mudar. Então, em vez de itens aqui, vamos ter o botão de compra. Em vez das estatísticas terá o botão de célula. E o último que vai ser o salvamento, vai ser o botão Sair. Não tão sexy, o botão Sair. E nós vamos excluir os dois últimos botões que são fechar e sair. Nós vamos para a compra. Vamos deixar-me minimizar. E, claro, tudo isso será alterado na célula, na saída, e assim por diante. Então a célula tem essas entidades onclick ou objetos. E nós vamos inserir o texto. O texto no botão vai ser por na célula vai ser célula. Na saída vai ser loja de saída. Pressione Enter. E vamos fazer este botão um pouco maior. Além disso, estamos trabalhando na grade. Deixe-me fazer a grade ficar um pouco maior. Então vamos aumentar o tamanho das células porque nós também vamos adicionar o dinheiro aqui para que nós não queremos que ele se encaixe ou tudo e nós vamos aumentá-lo no y também. E vamos ver, movê-lo para cima e o tamanho da célula, vamos aumentar ainda mais para a loja de saída. Então a loja de saída vai fazer isso um pouco menor, ou é muito pequeno agora, vamos aumentar o tamanho da caixa de texto. E como eu disse, sempre que estamos criando UI são recomendados deve fazer suas próprias criações. Porque tudo isso é muito subjetivo e você pode mudar o que quiser. E eu vou movê-lo para baixo. Então lá vai você. Saia da loja. Não. Saia das lojas, venda e compre. Agora que temos os botões principais, é hora de preparar tudo o resto. Então, o personagem e a queda vão, os painéis de estatísticas vão, só precisaremos do painel de itens e aqui, e também faremos algumas mudanças. Então deixe-me minimizar isso porque estamos trabalhando principalmente aparecem. Então, o que vamos fazer aqui? Bem, vamos ter dois conjuntos de painéis. Então nós vamos ter o painel de células ou o por painel importa por painel. E então teremos o painel celular. Então lá vai você, venda pan. Então, o que temos no painel da bicicleta? Vamos remover o botão de descarte, o botão dos EUA. Vamos mudar o nome para a compra. E nós vamos mudar o texto também aqui para comprar vai manter a descrição do item e os itens painéis de exibição. Então, tudo aqui vai ser o mesmo. O painel de escolha não precisa estar aqui. E provavelmente deveríamos ter feito isso e duplicado. Mas não se preocupe com isso. Nós vamos adicionar também aqui um texto Mesh Pro, ou simplesmente um texto. E vai ser o valor do produto. Então, valor. E aqui nós vamos apenas escrever valor e nós vamos ter apenas um deles vai mudar. Como sempre, precisamos defini-la como medieval. Precisamos torná-lo completamente preto. E vamos arrastá-lo para baixo ao lado do botão de compra. Então, sim, lá vamos nós, isso é tudo. E este será o valor do item que escolhemos comprar enquanto estiver no painel de células. Deixe-me apenas e estávamos trabalhando no celular ou a Bíblia deveria ter desligado isso. No entanto, estávamos trabalhando no celular. Então, em vez do botão Comprar, este vai ser o celular. E as palavras também vão ser células. Ok, então este era o painel celular. Tudo está configurado aqui e os botões aqui em cima, o grande BY e a grande célula nos levará, de painel em painel. Isto aqui nos permitirá vender um item. Isto será o que já temos no inventário e depois podemos vendê-lo. Enquanto no diodo de bypass terá algum tipo de lojista que abrirá o painel, removerá o C, o que temos usado. Este botão precisa ir, este será o adeus. E também aqui, o lojista, teremos alguns itens para comprarmos. Então vamos precisar do valor que temos aqui. Então duplique o valor. Coloque-o aqui em cima. Lá vai você. Então agora temos o valor do item, e tenho certeza que precisaremos fazer isso um pouco maior. Então deixe-me escolher as ferramentas certas e aumentar o tamanho o máximo que pudermos. Lá vamos nós. E no valor aqui em baixo também fará os mesmos ajustes. Então lá vamos nós. Então agora temos a célula painel por painel. Acho que é tudo o que precisamos, e também precisamos de uma etiqueta aqui no menu da loja. Então, vamos clicar com o botão direito do mouse e nova interface do usuário, adicionar o texto Mesh ou saber o que poderíamos ter simplesmente usado um desses valores. E vamos apenas nome e valor. E nós vamos, nós, nós, nós estávamos indo para duplicar o valor aqui. E vamos movê-lo para cima no menu da loja. E vamos movê-lo para cá. Então lá vamos nós. E este será V de moeda que vamos usar. Então você pode escolher qualquer moeda que você quiser. Vou usar Bitcoins. E isso é porque atualmente El Salvador acabou de ficar um pouco legalizado. Então é uma moeda legal. Podemos usar Bitcoins se você não estiver familiarizado com bitcoins são recomendados para ler sobre um débito, dizer grande tecnologia, especialmente para desenvolvedores de jogos que se movem e qualquer tipo de programadores honestamente. E esta será a quantidade de VDC. Vdc significa, mas são menos quantidade de Bitcoin. Certo, ótimo, então agora temos tudo pronto. Agora, é hora de começar a manter o controle do nosso ouro e assim por diante e assim por diante. E também, é claro, criando um gerente de loja. Primeiro, o que precisamos fazer é adicionar um gerenciador de jogos aqui. Lá vai você. Temos tudo preparado. Precisamos manter o controle de nossos bitcoins e como vamos fazer isso? E não devemos torná-lo um filho da tela vai colocá-lo aqui em cima. Como é que vamos fazer isso? Bem, poderíamos ter rastreado a quantidade de ouro que temos sobre o jogador. É uma boa ideia. Mas como temos um gerenciador de jogos com o inventário e assim por diante, acho que o melhor lugar para fazer isso é no script do gerenciador de jogos. Então vamos abrir o gerente do jogo. E aqui vamos criar um, outro público e cordas e jogo. Quero dizer, Bitcoins atuais. E vamos apenas manter o controle de tudo isso. Agora. Obviamente, não devemos torná-lo público porque não queremos que nenhum outro script tenha acesso a ele. Mas, por enquanto, vamos mantê-lo assim, já que temos um exemplo. E eu não sinto que é necessário criar uma outra função apenas para obter os Bitcoins atuais. Então vamos salvar isso, ok com essa configuração, a próxima coisa que precisamos fazer é ir e criar um gerente de loja. Então vamos para os scripts, esperar que para compilar qualquer dia agora, vamos para os scripts, vamos criar uma nova pasta aqui que vamos chamar de loja. E dentro da loja vamos criar um script C-sharp que vai ser chamado de gerente de loja. Carregue em Enter, aguarde a compilação. Vamos adicioná-lo à tela. Então, para a tela, como você pode ver agora, o Canvas terá o gerenciador de menus, o controlador de diálogo e um gerente de loja. Ok, ótimo. Vamos abrir o gerente da loja e o Visual Studio. E o que deveríamos estar fazendo aqui? Primeiro de tudo, vamos precisar criar uma instância desta classe. Então vamos criar uma instância pública de gerente de tiro estático. Vamos definir a instância para isso. E o que precisamos fazer aqui? Em primeiro lugar, precisamos de uma referência ao painel da loja, ao painel e ao painel da célula. Então vamos criar objeto de jogo público, e vamos ter o menu da loja. Então esta é a loja inteira muitos que temos terão acesso também ao painel de compra e venda. E precisaremos configurar tudo e unidade. Mas antes de fazer isso, precisaremos criar um método que abra o menu da loja. Então vamos criar um vazio público, menu aberto da loja. E aqui nós vamos apenas pegar o menu da loja e vamos definir o ativo como verdadeiro. Certo, ótimo, então você já sabe o que isso faz. Agora o próximo passo óbvio é que queremos parar o nosso jogador sempre que ele abrir as lojas ou quando começarmos a falar com o lojista e abrirmos a loja, queremos que o nosso jogador pare. Não precisa começar a se mover enquanto fala com os lojistas. Então, vai ser parte do seu desafio. Seu desafio é parar o jogador de se mover. Sim, de novo, então sempre que abrirmos a loja, o jogador deve parar de se mexer. Vou te dar algumas dicas. Primeiro, criar uma variável e Game Manager e atualizar fazer a variável para uma das condições e alterar a variável quando abrimos o menu da loja. Então, com isso dito, com todos esses, portanto, já fizemos isso antes. Pause o vídeo agora, e vá fazer o desafio. Ok, bem-vindo de volta. Então, onde estávamos? Primeiro de tudo, precisamos entrar no gerente do jogo. E precisaremos adicionar outro volume aqui, que será a loja aberta. Aberto apenas para ficar consistente novamente, muitas caixas de diálogo abertas abertas, loja muitos abertos. E onde estão as condições? Então vamos adicionar uma condição aqui se a loja for aberta. Agora, o que mais precisamos fazer? Criar variáveis, atualizar, alterar a variável quando abrirmos a loja. Então vamos voltar para o gerente da loja. E aqui quando dissemos que a loja ativa para verdadeira terá acesso, o gerente do jogo acessará a instância, acessará a loja aberta e nós o definiremos como verdadeiro. Oh, ok, ótimo. Então, isso foi feito. O que mais deveríamos estar fazendo? Bem, obviamente, precisamos ser capazes de fechar a loja, então vamos criar um cardápio público de fechar a loja. E sei que não estou testando tudo, mas já cobrimos a maior parte disso, então estou tentando passar por isso um pouco mais rápido. Então vamos usar essas duas linhas. E vamos definir o conjunto ativo como falso e o gerenciador de jogos instância Door ou loja aberta para false. Agora precisamos ter a capacidade de alternar entre os painéis. Então precisamos alternar entre o painel de anticorpos celular exigirá mais dois métodos. E poderíamos ter feito tudo isso no onclick, mas vamos tentar de uma maneira diferente e tentar usar apenas os métodos. O que eu quis dizer é que poderíamos ter ligado e desligado os objetos do jogo usando o onclick nos botões. Mas agora estamos criando um método ou métodos para fazer tudo isso. Então chega de falar, vamos aplicar tudo isso. Então vamos abrir por painel. E no painel da bicicleta acessará o por painel ativo para verdadeiro. E precisaremos definir o painel de células para definir ativo como falso. Vai duplicar isso porque é basicamente o mesmo. E vamos abrir o painel de células. Então, por painel falso, painel celular, verdadeiro. Ok, ótimo. E finalmente o que precisamos fazer é quando abrirmos a loja. Então, quando abrimos o menu da loja, também precisamos ter certeza de definir o Bitcoin rotulado corretamente. Temos uma referência? Não, nós não precisamos adicionar o impro, Então, usando o m por linha para que pudéssemos acessar o obviamente o texto Mesh Pro, vamos criar uma variável aqui que vai ser um campo serializado. E ele vai ter acesso aos nossos Bitcoins. Então vamos chamá-lo de texto Mesh pro GUI. E vai ser o texto atual do Bitcoin. Guarde isso. E agora onde está? Quando abrimos o menu da loja, queremos definir os textos atuais do Bitcoin. Então vai ser o texto atual do Bitcoin. O texto é igual a BTC dois pontos. E aqui vamos concatenar um gerenciador de jogo inteiro. Ponto de instância ponto acessará a corrente do Bitcoin, mas moedas. Acho que é o suficiente, ou precisamos adicionar uma corda de duas? Não, lá vamos nós. Guarde isso. Agora vamos abrir o nosso jogo e ver se alguma coisa funciona. Então, temos algumas coisas para fazer. Então abra o Canvas, abra a loja, compre o menu de entrega, e vamos adicionar o menu da loja. Vamos trancar isso. Nós adicionamos o bypass, o painel da célula, o texto atual do Bitcoin. Guarde isso. Agora precisamos abrir os botões e certificar-se de que configuramos tudo corretamente. O que é isto? Foi assim. Certo, então conserte isso. Certo, então agora o que precisamos fazer é adicionar algumas funcionalidades aos nossos botões. Então, primeiro estamos trabalhando no botão grande que abre o painel. Então vamos abri-la. Nós vamos adicionar a tela como o objeto. Vamos acessar o gerente da loja. E o que isso faz? Ele abre V por painel, irá para o próximo botão de célula grande. Nós também vamos adicionar a funcionalidade no Canvas. Vá ao gerente da loja. E vamos abrir o menu da célula. Então abra o painel da célula e o botão de saída. Então isto vai sair da loja. Nós estamos indo para, oops, fechar a loja. Então Gerenciador de Funções, fechar o menu da loja. Então lá vamos nós. Vamos guardar isso. O que mais precisamos fazer? Vamos ver, temos qualquer outro código aberto, abrir perto. Certo, e também precisamos fazer mais uma coisa. E isso é sempre que abrimos nossa loja, precisamos configurá-la apenas por menu. Então vamos acessar o menu ou o conjunto de pontos do painel da bicicleta ativo, verdadeiro. Assim que abrirmos a loja, vamos acessar o painel da bicicleta. Guarde isso aqui. Vamos esperar que isto se compile. Vamos correr o nosso jogo e ver se alguma coisa funcionou. Então, agora, uh, deixe-me ir ao gerente do jogo e nos dar capaz de Bitcoins. Vamos nos dar 32. Esse é um número muito bom, guarde isso, e vamos tentar. Vá para a cela. Estou a trabalhar aqui em baixo. Então, célula. Nada disso está funcionando porque, e você pode encontrar esse problema para, por que nossos botões não estão funcionando? Porque não temos um sistema de eventos. O que faz um sistema de eventos? Deixa-me mostrar-te o outro guião e a outra cena. Quero dizer, então vamos para a cidade dar um duplo clique. Você vai notar aqui que temos um sistema de eventos e isso é o que nos permite realmente interagir com os botões. Isto é o que mantém o controle do que clicamos no menu do nosso jogo. E como nesta tela e o sistema de eventos são separados quando adicionamos uma tela usando o prefab, não obtivemos um sistema de eventos. Então o que vamos fazer é arrastar no sistema de eventos a tela. Certamente não precisamos fazer isso porque se aplicarmos a tela aqui, tudo o que fizemos anteriormente e o outro no menu da loja será destruído. Então, de volta aqui com o menu da loja, vamos clicar com o botão direito do mouse e ir até seus olhos e adicionar um sistema de eventos. Guardaremos isso agora, se executarmos nosso jogo, tenho certeza que tudo deve estar funcionando. Então lá vai você. Vender, vendemos, comprar, comprar, sair da loja, saímos do Chop. E infelizmente ainda não temos uma maneira de atualizar Debussy, mas chegaremos lá. Então eu espero que você tenha gostado deste vídeo muito, muito longo e eu vou vê-lo no próximo. 69. Configurando o Keeper: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos ativar a loja e desativá-la com base em se estamos perto o suficiente do lojista. Como podem ver, temos a pequena caixa de gatilho. Se estivermos dentro dela, podemos abrir a loja. Podemos ir até a cela para saber o porquê. Claro, não podemos mover nosso jogador enquanto temos isso aberto, você pode ver que nosso BDC tem 32. Saímos da loja. Podemos nos mover de novo. Se tentarmos abrir em outro lugar, não podemos. Então não vamos perder mais tempo. E vamos em frente e montar um lojista. Então é hora de criar uma loja. Eu já adicionei um lojista. Então eu usei um desses sprites que eu forneci a você. Usei um dos da ruína. Eu o coloquei aqui e armei para ele, aqui em cima. Também me certifiquei de cortar o sprite e adicionar a imagem aqui. Ok, então agora com o nosso lojista, sprite terminou, é hora de ir em frente e criar um novo script na loja. E vai ser um guião C-sharp chamado o lojista. Carregue em Enter, aguarde a compilação. Lá vamos nós. Então, agora, se formos para o lojista, vamos adicionar o script aqui. E nós vamos adicionar também um par de coisas também. Então, primeiro de tudo, vamos adicionar um colisor a ele. Então, um colisor de caixa 2D apenas em torno deles. Vamos ver o quão grande isso é. Sim, lá vamos nós, isso é o suficiente. E adicionaremos outro colisor de caixa e isso será um gatilho. Então o primeiro é ser incapaz de passar por ele. O segundo será área V onde podemos realmente acessar a loja. Então vamos criar um. E aqui estávamos movendo o colisor errado. Então vamos tentar isso mais uma vez. E vamos fazer este menor, este um pouco maior. Então lá vai você. Bem, torná-lo um pouco grande para termos mais espaço para nos mudar. E lá vamos nós, certifica-te de que isto é um gatilho. O segundo, o isqueiro. O grande colisor de caixas. Sim. Ok. Agora vamos em frente e abrir o script da loja ou o script dos lojistas. E aqui, em primeiro lugar, precisamos criar um booleano que vai verificar se podemos realmente abrir a loja. Então é um bool privado pode abrir uma loja. Então não é um campo serializado. Nós não precisamos vê-lo, mas o que nós queremos ver é uma variedade de itens. Então vamos criar um campo serializado. Vai ser uma lista. E então eu digo array, eu quis dizer lista, e vai ser uma lista de itens. Então o gerenciador de itens, este é o tipo e vamos chamá-lo de itens à venda. E o único problema aqui com a criação de listas é que ele não vai aparecer no inspetor vai salvar isso. Voltaremos a uma unidade. E lá vamos nós. Você pode ver que no lojista nós temos os itens para dizer, ok, ótimo. Agora o que precisamos fazer é ser capazes de abrir o menu da loja e as roupas. E seu desafio é acionar a entrada e a saída. Então crie um em açúcar entrar e sair no lojista. Verifique se o jogador neles e disse que o pode abrir loja booleano para verdadeiro ou falso com base em, você deve saber com base em que. Então pausar o vídeo agora mesmo e ir criar o gatilho, entrar e sair. Ok, bem-vindo de volta. Então aqui vamos criar um próprio Trigger Enter. E vamos verificar a colisão FV. O DAG é igual a jogador. Então isso é algo diferente da tag de comparação. Na verdade, estamos acessando a etiqueta na colisão e comparando com o jogador. E se for o jogador, então pode abrir loja é igual a verdade. Vai duplicar ou Novak, não é duplicado na saída de gatilho para o e vamos apenas copiar isso. Lá vamos nós. Cole aqui. Pode abrir loja é falsa. Lá vamos nós. Então, agora se o jogador e a quinta-feira colisão, nós definimos isso para verdade, isso significa que podemos abrir a loja. Se estamos fora dele, então não podemos abrir a loja. Agora, precisamos obter uma entrada de um certo botão para poder abrir a loja. Então, uma atualização vamos verificar se podemos abrir a loja e ponto de entrada ficar abotoado. O fogo, acho que se chamava. Então. Mesmo que seja uma referência de string, vamos chamá-lo de firewalls. Se tivermos um erro ou algo não abrir, então vamos verificar de volta. E precisamos também ter certeza de que o jogador, modo que o script player com uma instância e o movimento de desativação está definido como false. Então precisamos ter certeza de que o jogador pode andar por aí e você verá mais tarde o que eu quero dizer com isso. E finalmente, precisamos ter certeza de que a loja ainda não está aberta. Então FV, gerente de loja, instância de ponto, ponto ativo, ponto ponto ponto GameObject ponto está ativo e hierarquia. Ativo e hierarquia. Então podemos adicionar uma entrada aqui. Lá vamos nós. Só não tenho essa longa fila. Por isso, temos de ter a certeza de que podemos abrir a loja. Precisamos ter certeza de que apertamos a tecla de entrada. Precisamos ter certeza de que o jogador é capaz de se mover. Então nós fizemos isso. Ainda não ativamos o movimento. E finalmente, precisamos ter certeza que o menu da loja ainda não foi aberto. Ok, ótimo. E aqui em vez de objeto de jogo, precisamos ser Shot menu porque as preferências do gerente de loja, sempre que escrevemos instância de gerente de loja ponto GameObject, estamos referenciando o objeto de jogo que tem o gerenciador de loja, que é a tela que precisamos para acessar o menu da loja. Certo, então com esse Don, o que vamos fazer aqui? Bem, é claro que vamos abrir a loja. Então, gerente de loja, instância de ponto, ponto, homens de loja aberta. Guarde isso. E antes de testarmos isso, há mais uma coisa que precisamos fazer, e que é definir uma lista de itens no menu da loja. Então, se formos para o gerente de loja, vai precisar criar aqui uma lista de cinco itens gerenciador. E serão os itens à venda também. Então, no lojista, abrimos a loja e, em seguida, estamos antes mesmo de abrir a loja, podemos acessar o gerente de loja, gerente de loja ponto instância itens ponto para venda. E vai ser igual aos itens à venda que colocamos aqui. Então este é o objeto que é então gerente de loja, enquanto este é o que estamos usando para o lojista, Vamos ir muito confuso para você. Recomendo que mude o nome. Vamos mudar o item dos lojistas para venda. Ok. Então lá vamos nós. Loja de itens para venda. Aplique isso. Então, agora os itens para venda na loja ou os itens de lojistas para venda. Então vamos salvar tudo isso. Vamos voltar para a Unidade. Vamos executar o nosso jogo e vamos ao lado do lojista e ter a chave de incêndio. E lá vamos nós, temos que comprar a cela e a loja de saída, e podemos sair da loja. Se abrirmos a loja, podemos nos mover? Não, não podemos. Quando sairmos da loja, lá vamos nós. Podemos nos mover. Tão excelente. Tudo parece estar funcionando. No próximo vídeo será realmente mostrando os itens que queremos comprar e vender. Então, com isso feito, te vejo no próximo vídeo. 70. Itens para comprar e vender: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos permitir a possibilidade de comprar ou visualizar os itens que queremos comprar e vender. Então, como você viu agora, eu peguei alguns itens. Eu fui ao lojista, clique no Menu e voila, eu posso ver imediatamente que eu tenho os atos e tudo o que está disponível no lojista para comprar e nós adicionamos tudo isso manualmente do lojista direito Aqui. Se eu desclicar nele, você pode ver que o item lojistas está à venda. Lá vai você, os atos de prata, a armadura dourada, e tudo isso. E agora, se eu for para o painel de celular, lá vai você. Estes são os itens que eu peguei e que eu posso. Atualmente, eles não fazem nada, mas por enquanto, nosso principal objetivo é visualizar todos eles. Então não vamos perder mais tempo. E vamos começar. Oh, então é hora de visualizar os itens que queremos comprar e os itens que queremos vender. Então isso vai ser muito semelhante à maneira como lidamos com os itens no menu de itens. Então vamos entrar no nosso código. A primeira coisa que precisamos são referências ao contêiner slot item, que vai ser o botão eo ícone slot container pai. Então vamos ao gerente do menu. E se nós rolar para cima aqui, podemos simplesmente copiar o recipiente slot item e um para os pais. Então vamos copiar isso, vamos colá-lo aqui. Vamos salvar isso. E quando abrirmos o painel bimanual, queremos ir em frente e atualizar tudo isso. Então, como atualizamos? Bem, também é muito parecido com o que estamos usando aqui. Então, no gerenciador de menus, onde atualizamos os itens no inventário vão copiar todo esse código. E vamos em frente e colá-lo aqui. Mas em vez de usar o inventário, então quando estamos olhando através de todos os itens no gerenciador de menu, nós usamos para olhar através do inventário e do gerente de loja, nós vamos ir em frente e olhar através dos itens para dizer, salvar isso. E mais uma coisa que precisamos mudar é a quantidade. Então vamos supor que o lojista sempre tem uma quantidade infinita de acesso. Nós não vamos sair do nosso caminho e implementar alguns tipos de quantidade limitada de armamento. Vamos mantê-lo como infinito por enquanto, apenas por uma questão de simplicidade. Então precisamos ter certeza de que isso é um vazio, vamos salvar isso. E se não criarmos esse tipo de if condition if declaração, você vai notar, você pode experimentá-lo, mas porque o estado padrão desta imagem é com 999 na parte inferior, precisamos ter certeza de que nós definimos de volta para uma string vazia. Então agora vamos para o lojista e vamos adicionar um par de itens aqui. Então, vamos adicionar um machado dourado, vamos adicionar uma armadura dourada. Vamos adicionar mais dois. Vamos adicionar uma prata aqui em cima e uma armadura de prata aqui em baixo, e um ato de ouro no final. Vamos guardar isso. Vamos rodar o nosso código. E vamos ver se isso funciona. Se formos até o lojista, vamos ao bimanual e lá vai você. Você pode ver que atualizamos nossos itens de compra e se clicarmos em um deles, nada acontece. Se tentarmos comprar, nada acontece e o menu da célula ainda não está funcionando. Então vamos em frente e consertar este painel celular. Agora, no painel de células, podemos realmente usar o escopo do gerenciador de menu exatamente como é y, porque estamos usando os itens no inventário que temos um pedido para vendê-los ao lojista. Mas há um pequeno problema. Se copiarmos este código e o colocarmos no gerente da loja no painel da bicicleta, vai funcionar perfeitamente. Você pode até testar você mesmo. Não há nenhum problema com. Mas como programador profissional, e à medida que estamos passando por este curso, é melhor começar a usar técnicas e hábitos mais avançados. E um desses hábitos é nunca ter código duplicado. Então, queremos uma maneira onde podemos criar algum tipo de método que pode fazer ambas as funções usando o pai recipiente item. Quero dizer os itens para venda sempre que estamos vendendo no painel da célula e, ao mesmo tempo, trabalhar para o painel da bicicleta. Então vamos em frente e fazer algo assim. A maneira que vamos fazer isso é vamos criar um método que tem dois argumentos. E um desses argumentos vai ser o inventário que vamos analisar. Então vamos rolar para baixo e aqui embaixo vamos criar um vazio privado. E vai ser chamado de atualizar itens e loja. E vai levar dois argumentos. Ele vai levar o item slot pai recipiente porque nós temos, como eu disse, ou talvez eu não tenho, nós temos dois tipos de pais recipiente item, um ND por painel e um nos painéis de célula. Então você pode ver aqui o painel de exibição de itens para o painel de células e o banner de exibição de itens para o painel bi. Então esta é a primeira parte do argumento que queremos enviar. Então é transformar o item slot recipiente pai. E o segundo é a lista de itens que vamos olhar através. Então, ele vai ser de tipo lista gerenciador de itens. E nós vamos chamá-lo de itens para olhar através. Então itens para olhar através. E agora vamos cortar esse código do painel aberto. E vamos colá-lo aqui. E em vez dos itens à venda, vamos olhar através dos itens para olhar através. E o recipiente slot item é o mesmo que n aqui. Então eu já programei isso. E quando abrirmos o menu da Bíblia, vamos em frente e chamar os itens de atualização e fazer compras. E o pai recipiente slot item. Vamos chamar isso de contêiner de slot de item, ou os itens pensados por contêiner ou contêiner. Vamos colocá-lo aqui em cima. Assim, os itens pensados por contêiner e o contêiner de célula de slot item. Então vamos guardar isso. Então, quando estamos atualizando a loja de itens a partir do bi, que estão indo para enviar o slot Item por pai recipiente. E a lista que estamos olhando são os itens à venda. Vamos guardar isso. Mas quando abrirmos o painel de células, vamos atualizar os itens e fazer compras. E, na verdade, eu vou mover isso para cima. Então segure Alt. Mova isso para cima. Sim, lá vamos nós. Salpicando aqui. E vamos usar o conjunto de itens de célula, pai recipiente ranhura. E a lista que vamos olhar através é a instância de ponto de inventário, ponto, obter lista de itens. Então lá vamos nós. Agora, tudo isso deve estar funcionando perfeitamente. Então vamos para a Unidade. Vamos em frente e adicionar alguns itens aqui. Então vamos adicionar um número de ouro que podemos pegar uma armadura dourada aqui só para que possamos vê-la em nossos itens quando quisermos vender. Então vamos correr de novo e você esqueceu algo. Precisamos ir para a tela, rolar para baixo. Vamos fechar isto. Vamos adicionar o contêiner do item, a compra e a célula. Então, a cela, esta aqui. Vamos trancá-lo. Os itens exibidos banner da célula irão para a célula e o painel de exibição de itens no comprador entrará no bye, salve isso, execute o jogo, e vamos testar isso. Vamos pegar os itens. Obrigado. Vamos falar com o lojista. Olá aí. Por Yep, lá vamos nós. Estes são os itens que estão disponíveis para compra. E se clicarmos no celular, lá vai você. Estes são os três itens que pegamos. Agora, isso ainda não faz nada, mas pelo menos está funcionando completamente bem e 100% com precisão. Oh K, ótimo. Então, com isso completo, no próximo vídeo, vamos realmente começar a vender e comprar nossos itens. Vejo-te no próximo. 71. Comprando itens: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, deixe-me mostrar o que acontece. Vamos recolher alguns itens. Vamos acessar o lojista. Quando clicamos em comprar, vemos que quando selecionamos um dos itens, obtemos a descrição, o nome e o valor desse item. Se clicarmos no, por exemplo, digamos que a armadura dourada, seu valor é 35. Se formos vendê-lo, podemos ver que temos uma esfera dourada, mas seu valor é 26 porque isso é sempre um pouco mais barato. Então, bem Dito isso foi mostrado? Isso não é perder mais tempo. E vamos começar. Oh, ok. Agora é hora de adicionar algumas funcionalidades aos botões que estamos instanciando e ao painel de compra e venda. Mas há um pequeno problema. Não podemos modificar o botão real. Por quê? Porque estamos usando o mesmo prefab na célula e comprar painéis que estamos usando no painel de itens. Então isso vai ser um pequeno problema. O que vamos fazer é entrar no botão de itens. E aqui vamos modificar. Então vamos verificar se estamos trabalhando no menu, se estamos trabalhando na loja. Se para trabalhar na loja vai verificar se há trabalho na célula ou no BI. Então vamos em frente e começar a implementar isso. Primeiro de tudo, quando pressionamos o botão, vamos verificar se o gerenciador de menu, instância de ponto, ponto, ativo e hierarquia. Quero dizer, o menu, precisamos acessar o menu antes de fazer isso. Então o temos acesso ao menu se você vai para o gerenciador de menus aqui em cima, então o Ganhando, então o menu não está acessível. Então vamos mudar isso para um público para que possamos acessá-lo. Então, aqui. Me. Então, se estamos trabalhando no menu, porque lembre-se que temos um menu de loja e um menu regular. Se estamos trabalhando no ponto de menu, ativo e hierarquia, então vamos abrir os colchetes e vamos usar o código que estávamos usando. E antes de continuarmos com essas duas linhas de código e elas não são tão boas. Então você não quer mudar nada no gerenciador de menus que você possa mudar aqui, é melhor enviar esta informação, os itens no nome do botão e os itens na descrição do botão para o Gerenciador de menus e mudar isso de uma maneira muito mais melhor. Mas eu vou manter isso e eu vou adicionar um comentário parecer que este é um código ruim. É melhor enviar o nome e essa corrupção para o script Gerenciador de menus. E assim também podemos ter certeza de que esses dois podem ser campo privado ou serializado. Ok, com isso feito, próxima coisa que vamos fazer é você vai verificar se o menu da loja está aberto. Então, se a instância de ponto do gerenciador loja, menu de ponto shop, ponto ativo e hierarquia, então vamos verificar outra vez se o bimanual está aberto. Então, se vamos copiar isso porque é praticamente o mesmo. Vamos colá-lo aqui. E vamos verificar se o painel VI está ativo. Eu estava ligando para pegar menu. Não importa, é praticamente a mesma coisa. Você sabe o que eu quero dizer? E o que vamos fazer aqui? Nós estamos indo para primeiro de tudo criar a declaração else. Else pode criar um outro se, se você quiser, apenas para ter certeza. Então, se copiar isso, colar isso aqui, se o painel de células estiver ativo na hierarquia, vamos fazer outra coisa. Mas o que vamos realmente fazer? Bem, sempre que clicamos no botão, o que queremos que aconteça? Em primeiro lugar, queremos que o nome do item seja preenchido. Queremos que a descrição do item seja preenchida. Queremos obter o valor do item. Isso é praticamente tudo. Acho que se precisarmos de mais alguma coisa, vamos pensar nisso. Faremos isso na mosca. Assim como desenvolvedores de jogos profissionais, mas não queremos que tudo isso seja tratado dentro do botão do item. Em vez disso, é muito melhor para largura e o gerente da loja. Então aqui, estamos atualizando, estamos abrindo, fechando. Vamos criar mais dois métodos aqui. Um deles será um anulo público selecionado por item. E ele vai levar em uma variável que vai ser o gerente de TI ou do tipo de gerente de item e o item para comprar. Então, sempre que estamos chamando o item selecionado a partir do botão Itens, vamos fornecê-lo com o item na parte inferior. Espero que esteja claro. Agora, o outro método que queremos usar é copiá-lo, colá-lo aqui, e é o selecionado. Item de célula que vamos usar e antes de continuarmos porque estamos usando os textos e a descrição e o valor para definir tudo, precisamos realmente de uma referência a eles. Então, no gerente da loja, vamos pegar algumas referências. Então, primeiro de tudo, vamos criar um campo serializado. Ele vai ser do tipo gerenciador de itens e é o item selecionado. Então isso é algo que nós fizemos para outro campo serializado que irá conter os textos. Então texto, Mesh, sonda, GUI, vai ser o por item, nome, O por item. Porque corrupção e o valor por item. E vamos duplicar esta linha e em vez de y, vamos vender, vender e vender. E estes vão ser diferentes e você vai ver o porquê daqui a pouco. Então, com isso salvar agora que temos referência a todos os diferentes textos e menu D-sharp. Vamos rolar para baixo e ver o que podemos fazer aqui. Primeiro, vamos acessar o item selecionado e ele vai ser o item a ser comprado. Em seguida, vamos acessar o texto do ponto pelo nome do item. E é igual ao item selecionado por esse nome, nome do item de ponto. Então nome e nome do item são muito diferentes. O nome é o nome real que colocamos aqui. Então, por exemplo, este é o lojista, mas o nome do item é algo que adicionamos aqui e o gerenciador de itens, então nome do item, Golden Axe. Então precisamos preencher a descrição. Então, por descrição do item, por item descrição do ponto texto selecionado item, essa descrição do item. Nós vamos salvar isso. E, finalmente, o valor. E isso vai ser o item da célula C. Vamos digitar e valorizar o valor do item. O texto é igual a. E aqui, deixe-me verificar se precisamos concatenar alguma coisa. Então deixe-me desligar a loja. O valor que c, Isto foi, ok, então é um único texto. Então, vamos concatenar valor dois pontos mais T selecionado caso item. Então selecione, não está tomando item selecionado, Pensamento, valor e moedas. Então nós já criamos essa variável quando estávamos criando os itens aqui no gerenciador de itens. Então o valor do item e a moeda. Ok, ótimo. Que não, vamos salvar isso. Agora vamos tentar chamá-lo a partir do botão Itens. Então, se ele estiver no painel BI aqui, vamos dizer-lhe que queremos acessar o ponto de instância de ponto do gerenciador de loja selecionado por item. E podemos ver aqui que precisamos do item para comprar. Então é o item na parte inferior, esse é o item que estamos procurando comprar. E aqui vamos chamar o outro método, que é o item, célula, item de célula selecionado. E agora é hora de um pequeno desafio. E seu desafio é terminar este menu de célula, assim chamado o item de célula selecionado do botão Itens. Eu já fiz isso por você. Complete o método no gerente de loja. É o mesmo que no by quase check para ver se tudo está funcionando usando o debug dot loc. E por que eu digo que é quase a mesma coisa? Bem, porque, você sabe, sempre que estamos trabalhando em um jogo ou qualquer jogo de RPG, quase qualquer jogo. Eu acredito que se você quer vender um item, seu valor é menor do que quando você quer realmente comprá-lo. Então, quando você quer vender algo, por exemplo, digamos que você quer comprar a armadura da placa dourada. Seu valor é 100. Mas quando você vende, seu valor é talvez 75. Portanto, não é o mesmo quando você quer vender algo versus quando você quer comprar vendido você vai precisar reduzir o valor quando você quer vender um item. Com isso dito, pausar o vídeo agora e ir fazer o desafio. Ok, bem-vindo de volta. Como você se saiu com isso? Então, é praticamente a mesma coisa. Nós vamos copiar isso, colá-lo aqui, e em vez de item para comprar, este vai ser o item para vender. Vamos colá-lo aqui para que seja o item a vender e o valor, em vez de ser apenas desvalorizando moedas, vamos multiplicá-lo por, digamos 0,75 eth. E isso vai funcionar? Será que isso nos dará um erro? Acho que pode. Então vamos manter como está. Talvez não vá. Então vamos salvar tudo isso. Vamos entrar na Unidade. Nós vamos para o Canvas e vamos colocar tudo isso. Então, o nome do item por. Portanto, certifique-se de adicionar o valor, o valor da descrição, os valores do item. Então está aqui, a cela. Então vamos fechar o painel de compradores que está aberto aqui. Então, o nome do item, a descrição e o 0 mais é o valor aqui embaixo. Vamos salvar tudo isso. Vamos executar o código e espero que não tenhamos nenhum erro ou vamos executar o nosso jogo. E vamos sair da afiada. Vamos pegar alguns itens. Vamos ao lojista, comprar. Se clicarmos na prata, lá vai você. Então você pode ver que temos uma armadura de prata. Fema, faça esta armadura de prata maior. Isso vai se defender de monstros e seu valor é 15. Se formos para a cela e selecionamos, ou vamos selecionar a armadura de ouro. Seu valor é 35. Se formos para vender esta armadura, clicamos nele e nada parece funcionar. Por que é isso? E isso é porque na loja e no selecionado oh, ok. Portanto, não alteramos a célula, o nome do item da célula, a descrição do item da célula, o valor do item da venda. Agora isto deve estar a funcionar. Então é por isso que você nunca copia e cola e apenas faz isso. Você precisa sempre ter certeza de que sabe o que está copiando e colando. Então agora vamos para o lojista que quer comprar a armadura dourada é 35, vamos para sólido. Seu valor é 26,25. Ok, então é por isso que precisamos convertê-lo em um inteiro. Então n aqui, vamos apenas adicionar os parênteses e vamos escrever int, fechar isso, salvar isso, e isso deve convertê-lo em um inteiro. Mas como você pode ver, 35 quando queremos, até 2006, quando queremos definir. Então, com isso feito, espero que goste. Espero que você esteja gostando do curso, mesmo que eu cometa alguns erros às vezes eu realmente gosto de mantê-los aqui. E porque eu acho que realmente, especialmente se você é um iniciante, você pode ficar muito sobrecarregado, mas pelo que está acontecendo. Então você pode pensar que, oh, como meu instrutor é tão bem, e onde ele consegue todo esse conhecimento e por que eu não posso ser assim? Gosto de te mostrar que sempre cometo erros. Eu sempre tenho que voltar e até mesmo às vezes cortar longas, longas demoras porque eu não tenho certeza qual é o problema. Eu vou testar, usar depuração. Eu sempre volto e vejo onde está o problema. Como você pode ver, às vezes até esquecemos o que, o que, qual é a variável que estamos usando. Por isso dito, espero que você esteja gostando se você está fazendo deixando um comentário em me ajuda muito e me deixa saber o que você acha do curso para que nenhum no próximo vídeo estará acessando nosso inventário e fazendo os botões de compra e venda, funcionando corretamente. Então, vemo-nos na próxima. 72. Trabalhos de compra e venda: Bem-vindo de volta meus colegas desenvolvedores de jogos para um novo vídeo. E neste, finalmente terminamos de comprar, vender itens. Então, se entrarmos no lojista, pegamos alguns itens. Claro, ainda temos um pouco de coisas para consertar. Como, por exemplo, no momento em que abrimos o menu da loja, tivemos o bypass e aberto. Precisamos desligá-lo. Mas esses são pequenos detalhes que não são tão importantes, especialmente quando se trata do código. Então, abrimos a célula, selecionamos o Machado Dourado, vendemos e ele desaparece e ganhamos 18. Então nós selecionamos, se tentarmos vendê-lo novamente, como você pode ver, nós não podemos. Se formos para a parte, são cinco, devemos ter 55 bitcoins. E se resolvermos isso, que é 26, acho que conseguimos 780 alguma coisa, 81, lá vamos nós. Não sou tão bom em matemática. Se tentarmos comprar, digamos que eu compre o Ax Ay dourado pela armadura dourada antes de vendê-lo. Lá vai você. Eu posso vendê-los novamente porque eles são adicionados ao meu inventário e não apenas aqui. Se eu sair, vou embora. Abri o menu de itens. Tenho-os aqui mesmo no meu menu de itens, prontos para trabalhar para lutar contra monstros. Então Jimmy agora pode ir a uma loja. Quão legal é isso? Um demônio pode finalmente comprar e vender coisas na loja. Isso é sem precedentes. Então nessa bomba, não vamos perder mais tempo e vamos começar. Tempo 40, última etapa da nossa loja. Queremos realmente comprar e vender itens. Então vamos falar com o gerente da loja aqui. E vamos criar dois métodos. Um para a compra e o outro, bem, obviamente para a Cimeira. Então vamos entrar aqui e vamos criar um público encaminhamento por item. E vamos verificar, em primeiro lugar, se temos a quantidade de Bitcoin necessária. Então, se o gerenciador de jogo ponto instância ponto, foi chamado de hip atual, Bitcoins atuais é maior ou igual ao valor do item selecionado ponto em moedas, então podemos proceder à compra e como compramos? Bem, antes de tudo, precisamos remover do Bitcoin atual. Então menos igual ao valor dos itens selecionados. Então, em primeiro lugar, você sabe, quando você compra algo, você precisa dar algo em troca. E então precisamos adicioná-lo ao nosso inventário. Então, instância de ponto de inventário , ponto, adicionar itens, e vamos adicionar o item selecionado a ele. Lá vai você, guarde isso. E isso deve terminar tudo no back-end da programação. Agora, na frente, queremos ter certeza de que atualizamos o ouro que ainda temos. Quero dizer, atualize os Bitcoins que temos. Que vergonha chamar Bitcoin de ouro. De qualquer forma, mesmo que seja muito melhor. Então vamos continuar. Então nós temos que atualizar o texto porque eu ainda me lembro, era apenas o valor? Deixe-me ver a quantidade de Bitcoin, ok, Então BTC dois pontos, ok, então BTC dois pontos, vamos concatenado com uma string, que vai ser a instância de ponto do gerenciador de jogo, dot bitcoin, bitcoins, e lá vai você. Acho que é tudo o que precisamos fazer. Vamos salvar isso. E agora precisamos atribuir esse método por item ao botão de compra. Então, no menu da loja, no painel da bicicleta e no botão de compra, se rolarmos para baixo, sabemos que não queremos abrir o personagem. O que é isso? Precisamos entrar aqui? O gerente da loja, por, por, por item. Lá vamos nós. Guarde isso, execute o jogo. Se você abrir o menu, vá para Itens. Você pode ver que nós não temos nada e ele ainda não fecha quando chegamos perto que tão fácil de fazer e nós ainda não fizemos isso. Então nós abrimos, você vai ao menu, nós compramos os atos, o Golden Axe. E podemos escrever, porque não temos fundos suficientes. Uma mensagem aqui seria muito legal, então podemos comprar doces pelo ouro. Então vamos comprar uma armadura de prata também, ainda temos sete Bitcoins. Saímos da loja, vamos aos itens e lá vai você. Então, quão legal é isso? Nós podemos realmente comprar itens e vê-los em nosso inventário. Isso é tão fixe. Ok, ótimo. Vamos voltar. Agora é hora de criar os métodos de botão de célula e haverá parte do seu desafio. Seu desafio é criar os métodos de botão de célula. Então atualize o ouro atual. Por que eu guardei como ouro? Deixe-me mudar isso. Bitcoin, bem-vindo ao backend do nosso mundo. Então Bitcoin atual com o valor dos itens, remova os itens da lista, atualize o texto e defina o item selecionado como nulo. E digo-te porquê daqui a pouco. Mas por enquanto, vá fazer o desafio. Ok, bem-vindo de volta. Então, item celular vazio público, eu realmente espero que você está fazendo os desafios porque eles são uma ótima maneira de aprender. Se até este ponto você ainda não fez pelo menos 50% dos desafios a partir de agora. Porque isso eu acho que é a seção final para o vídeo final. Nesta seção, você tem que colocar no esforço e fazer todos os desafios. Assim, o Bitcoin atual aumentará pelo valor. Então vai ser um int. Queremos convertê-lo para um fim. E vamos copiar isto aqui, porque é praticamente a mesma coisa. Então copie, cole aqui. Então item selecionado, valor do ponto e moeda vezes 0,75. Ok, ótimo. E, em seguida, vamos removê-lo do ponto de instância de porta inventário remover o item de remoção, o item selecionado. E, finalmente, precisamos atualizar. Então vamos pegar o texto, colá-lo aqui. E como eu disse, vamos definir o item selecionado para ser igual a nada. E por que estou fazendo isso? Salve e deixa-me mostrar-te porquê. Então eu vou comentar. Se você entrar aqui, se executarmos nosso jogo, pegamos um item, vamos vendê-lo. Podemos vendê-lo. Não está atualizando. Por que não está atualizando? Porque não designamos o botão da célula. O item da célula. Onde ele vende itens se que executar o jogo novamente. E isso é muito importante. Então chegamos à cela, hey cell, isto é para 2006. Nós vendemos. Lá vamos nós. Nós temos 58. E podemos resolver isso muitas, muitas, muitas vezes. Então, o que precisamos fazer aqui? Precisamos definir o item selecionado como nulo. E então vamos criar uma condição if aqui que garante que se houver um item selecionado ou não há um item selecionado, podemos fazer isso ou, ou somente quando há um item selecionado. Então, no, quando há um item selecionado, então podemos ir em frente e comprar. Então vamos tentar de novo. Certifique-se de executar o jogo. Esta loja que queremos vender, vender este item. Aí está, para que possamos vendê-lo. Mas se clicarmos novamente, mesmo que possamos clicar, Ok, então podemos, uma vez, lá vamos nós. Não podemos mais. E esta é a final, digamos, fenda na armadura. Não sei por que chamei a fenda na armadura. Vamos atualizar o menu. Como vamos fazer isso se formos um deles? Então aqui você pode ver que estamos atualizando os itens, então vamos apenas abrir o painel de células novamente. Então abra o painel celular. Agora você pode ver que quando vendemos um dos itens, lá vai você, vendendo, nós atingimos esta cela. Você não pode vendê-lo mais. Você não pode selecionar o item e você não pode pressionar a célula tanto quanto desejar. Isso é um sólido, uma vez que você obtém seus Bitcoins e você sai para ir conquistar outras aldeias e assim por diante. Espero que esteja gostando do curso. Espero que tenha gostado da loja. Sei que não há muita luta e mecânica de jogo, mas é muito, muito importante. Isso é mais focado na codificação, em como evitar certas coisas, em como criar ambientes interessantes se você quiser, e como lidar com reações entre vários scripts. Espero que você esteja gostando, espero que seu cérebro esteja começando a doer por causa de todas as maneiras que conectamos nosso gerente de loja e lojista e botões de item e o inventário e o gerenciador de itens e o menu gerente e tudo isso, tudo isso está conectado de uma maneira bonita que parece estar sempre funcionando. Então eu espero que você esteja gostando e eu vou vê-lo no próximo vídeo. 73. Seção 10: criando perguntas: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, como você pode ver, criamos um gerente de missões com algumas missões que temos nele e marcadores de Quest. Então, quando executarmos nosso jogo, você verá que para cada uma de nossas missões, temos um elemento ou um o k, tempo para algumas missões. Que RPG não tem testes? É mesmo um RPG? Se não há missões, talvez haja, não sei. Vamos criar um sistema de missões e mostrar um pouco como isso vai funcionar. Então este é um dos meus desenhos mais profissionais, como você pode ver. Então temos uma corda, uma estrada de terra, temos uma caverna com uma entrada e um pouco de grama. E temos Jimmy, onde o olho ficou vermelho. E nós temos as missões aqui. Digamos que temos três missões. 1, precisamos matar o dragão, pegar a espada, salvar a cidade. Ok, então nós vamos ter um tipo de sistema de caixa de seleção, então nós vamos ter que recolher Dragon vai verificar. Quando matarmos o dragão, algum tipo de caverna e outra cena vai se abrir e que deu vai ter uma espada nele para que possamos ir para a caverna, começar a classificar, e então talvez ir para outra cena. E foi por isso que criei esta flecha perfeitamente moldada, que diz que depois de matar um dragão, podemos vir deste lugar. Talvez a flecha devesse ter sido apontada para o outro lado. Mas de qualquer forma, viemos de outra cena. Encontramos a caverna onde precisamos pegar a espada. Pegamos a espada. Voltamos e vamos salvar a cidade. Eu não sei. De qualquer forma, vamos estabelecer-nos. Vamos em frente e, em primeiro lugar, começar a criar as marcas de busca e os pedidos, que terão. Então vamos para Unity e vamos para os scripts, vamos criar uma nova pasta aqui. E eu estou pensando, Onde devo colocar meu controlador de câmera, jogos e gerenciador de menu? Vamos criar uma pasta. Oh, isso é, isso é um script afiado em C. Excluir. Vamos criar uma pasta, que vamos chamar o considerando a pasta. Ok, então precisa de um pouco de tempo para processar a pasta. Vamos chamá-lo de gerentes. Gerentes. Então, o controlador da câmera também é um gerente. E vamos colocá-lo no Manager por enquanto, se você encontrar um nome melhor para a pasta ou um lugar melhor para os scripts, vai colocá-los lá. E vamos criar uma nova pasta. E os roteiros para as missões e y é a unidade. Missões tão lentas, eu fico vermelho. Vamos guardar isso. Sinto que a unidade está prestes a cair. Então dentro das missões, nós vamos criar um script C-sharp que vamos chamar o gerente. Entre, espere que ele compile, e o gerente de custos será adicionado no gerenciador de jogo porque obviamente esse é o melhor lugar para salvar um gerenciador de custos, já que vamos passar por várias cenas e precisamos manter o controle de solicitações. Ok, ótimo, com isso feito, vamos economizar, e agora vamos abrir o gerente de custos e Visual Studio e ver o que precisamos fazer aqui. Então, antes de tudo, precisamos dos nomes. Então vamos em frente e criar um campo serializado onde vamos criar uma matriz de strings. E porque não é uma lista, porque não vamos remover ou adicionar nada. Portanto, não é um problema mantê-lo como um array. E serão os nomes das missões. Nós vamos criar um, outro array, mas desta vez será de Booleans e serão os marcadores de busca completos. Então estes serão os marcadores, como já dissemos, teremos marcadores para cada uma das missões e teremos uma mira. Então vamos em frente e salvar isso. Guarde isso, volte para a Unidade, e vamos adicionar algumas missões. E vamos ver. Então, temos pedidos completos e pedidos nome. Vamos em frente e começar a adicionar algumas missões. Deixará o primeiro em branco. E teremos talvez quatro, talvez cinco. Vamos ver. Então, o que devemos ter aqui? Então, derrota, arrastando. Claro, por que não? Digamos que entramos numa caverna. Entrar numa caverna resolve uma das missões. Talvez isto deva ficar bem. A caverna ainda é uma geléia. Pegue o monstro, então pegue o monstro vendido. Certo, guarde isso. Agora a próxima coisa que precisamos fazer é criar esta missão marcadores completa matriz. E a forma como vamos fazer isto. E como podem ver, precisamos fazer disso um grande “C” que agora terá marcadores concluídos. Ok, então agora precisamos criar os marcadores de missão concluídos. E por que eu digo Criar e não apenas adicionar alguns marcadores aqui, assim como fizemos com os nomes. Bem, porque não queremos ir em frente e criar esses marcadores manualmente. Queremos que isso aconteça automaticamente. Então, queremos uma maneira sempre que começarmos, digamos que o gerente de custos dois, criar esses marcadores de missão completa e será o mesmo comprimento que o nome da missão. Então vai fazer parte do seu desafio criar uma série de touros. Então defina a matriz de marcadores de custo concluída como uma nova matriz e começar. Esta matriz deve ter o mesmo tamanho que a matriz de missões que criamos. Vou te dar uma dica. Se você não quer ouvir a mão, pause o vídeo agora e vá fazer o desafio. E menos chance, você precisará criar apenas uma sintaxe simples de igual novo booleano com o comprimento do nome dos marcadores de busca, ou este deve ser o nome do pedido, enquanto este era um nome antigo. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, como dissemos, e começar, os marcadores de missão concluída é igual ao novo negrito. O tamanho deve ser o custo. Nomes dos marcadores, comprimento dos pontos. Guarde isso. De volta à Unidade, executamos nosso código e devemos ter aqui, sim, lá vamos nós, quatro elementos para cada um dos pedidos que temos. Então este foi um vídeo muito simples. Estamos apenas estabelecendo as bases para começar a ir para o próximo nível cada vez com o nosso sistema de missões. Então eu espero que você goste e eu vou vê-lo no próximo vídeo onde nós estaremos criando código que vai realmente verificar para essas moléculas. 74. Marcando perguntas: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos apenas criar maneiras de verificar e desmarcar nossos marcadores de busca. Então, atualmente, se eu rodar nosso jogo, se verificarmos o, digamos, o segundo e o último, se apertarmos a tecla Q, você notará que o último foi desligado. O elemento três, que ainda é saltos, foi ligado e obtemos um falso. Mas se clicarmos no primeiro que teve desenfileiramento novamente, você notará que ficamos verdadeiros porque estamos verificando se a derrota Dragon Quest foi concluída. Então não vamos perder mais tempo. Nós só precisamos criar um par de métodos e vamos começar. Oh, ok, SOL, hora de verificar nossas missões por completo e incompleto. Como é que vamos fazer isto? Bem, deixe-me explicar com um desenho muito profissional. Então a primeira coisa que vamos fazer é verificar se há um número de missões. Então, queremos uma maneira ou um método onde podemos dar-lhe uma busca para pedidos nome. Ele vai encontrar a posição dessa missão em nosso registro de missões. E então vamos verificar se esse pedido está completo. Quando terminarmos de verificar se essa solicitação está completa, podemos concluir o mercado. Tudo o que podemos marcá-lo incompleto. Sei que tenho 18 anos aqui, mas é tudo o que precisamos saber com esse desenho legal. Então vamos começar a implementar isso em nosso jogo. Então a primeira coisa que vamos fazer é criar um método aqui que vai verificar, para realmente obter um número de solicitação get. Então isso vai levar uma corda e vai ser uma corda para a busca encontrar. E como vamos conseguir o número em que reside a missão? Isto vai fazer parte do teu desafio. Seu desafio é conseguir o número da missão. Então você vai precisar verificar todos os nomes que temos. Você precisará verificar se um desses ou um dos custos é igual à busca que queremos encontrar. Você precisará retornar a posição. E se não encontrarmos o custo que queremos, você precisa imprimir um aviso. E a maneira como você imprime um aviso é usando o aviso de log de pontos de depuração. Então, com essa informação, pausar o vídeo agora mesmo e ir fazer o desafio. Ok, bem-vindo de volta. Então aqui vamos criar um loop for. Vai ser int I igual a 0. Enquanto eu é menor do que os nomes de missão comprimento do ponto ou sim, nomes comprimento do ponto. E vamos aumentar a cada vez. Vamos abrir os colchetes e aqui vamos verificar se os nomes da missão na posição I são iguais à busca para encontrar, então nós vamos retornar I. E se em nenhum momento nós retornarmos em R, e alguns de vocês podem ter entendido isso problema. E aqui está todo o marcador Quest porque ele tem um tipo de retorno de int, precisa haver um retorno, e nem todos os caminhos de código retornam um valor. Então, por exemplo, digamos que percorremos todos os nomes da Quest e não encontramos nenhum que tenha o mesmo nome que as solicitações que precisamos encontrar. Não haverá retorno e isso é um grande não-não quando se trata de tipos de retorno usando métodos. Então o que vamos fazer é simplesmente retornar 0 e é por isso que temos a primeira missão como um EMT e depurar dot log warning quest para encontrar aqueles que não existem. Guarde isso. Ok, então agora este método deve percorrer todos os nomes e verifica se um deles é igual ao custo que queremos encontrar. Em seguida, vamos criar um método que verifica se a solicitação está concluída. Então vai ser um cheque público. Se completa. E vai precisar de um argumento de cordas. Isso vai ser também a busca para verificar. E o que vamos fazer aqui? Bem, vamos primeiro criar um inteiro. Então vai ser um fim, o número de custo para verificar. E vamos usar o método recém-criado, que é obter, GET número de solicitação, e vamos enviá-lo a missão para verificar. Então agora temos a posição da nossa missão para verificar. Então vamos criar uma condição. E se o número da missão para verificar é diferente de 0, porque se não tivermos qualquer retorno receberá algum tipo de aviso. Então aqui precisamos ter certeza de que é diferente de 0. Vamos devolver os marcadores de missão completos na posição do número dos marcadores de missão para verificar. E finalmente, se não conseguirmos nada, retornaremos falso. Então, se você ainda está confuso sobre como esse retorno funcionará, bem, digamos que começamos, obtemos o número usando o método que criamos aqui. Agora temos o número da missão a verificar. Em seguida, certificamo-nos de que é diferente de 0. Se for, então vamos devolver algo se não for. Então, o que acontece aqui quando devolvermos isto e aqui os marcadores de busca completam na posição que queríamos encontrar. Então, ou é verdadeiro ou falso. Quando voltarmos, é isso. O método pára de continuar. Se não o fizermos, o método continuará e retornaremos false. Então vamos guardar isso. E, finalmente, os dois métodos finais que são a missão completa ou onde vamos marcar a missão como completa ou podemos marcá-la como incompleta. Então talvez queiramos voltar atrás a pergunta. Talvez você de alguma forma reverta a busca por algum motivo. Não sei porquê, mas é bom ter um desses disponíveis. Então, finalmente, vamos ter dois métodos públicos que serão nulos. E se você quiser, você pode ir em frente e criá-los por conta própria. Eles não são muito difíceis. Marcar Completa. E ele vai ter também uma corda que vai ser busca para marcar. E nós vamos terminar aqui, vá em frente e pegue o número para verificar. E vai ser a busca para marcar. E nós estamos indo para Quest marcadores concluídos na posição Quest, número de missão para verificar. E vai ser igual a verdade. Isso é porque estamos verificando como completo. E vamos criar um segundo método aqui, que vai ser dois marcadores de busca ou marca Quest, desculpe, pergunta incompleta. O Mark. Tudo aqui é verdade, exceto isso, o que não deve ser falso. Ok, ótimo. Finalmente, eu sei que é um monte de código sem testar nada, mas todos nós valemos a pena. Não é muito complicado. Você pode olhar através dele novamente. Não há nada. Então estamos encontrando o número. Estamos checando se está completo. Se for, marcaremos como completo ou podemos marcá-lo como incompleto. É isso. Não há nada muito complicado aqui. Finalmente, precisamos criar uma maneira de verificar um dos métodos. Então vamos criar uma condição se aqui vai levar em um ponto de entrada get chave para baixo. E usaremos um código chave. O que devemos usar? Acho que Q de busca. E antes que eu esqueça, quando você quer construir seu jogo, você precisa remover todas essas entradas. Então vamos imprimir, em primeiro lugar, verificar se está completo. Então, vamos verificar se algumas missões que você quer que isso seja concluído. Então, quais os custos que queremos verificar? Vamos voltar para a Unidade e verificar se há detecção de derrotas. Então vamos copiar isso. Vamos colá-lo aqui, e isso é uma referência de string. Você precisa ter certeza de que está correto. Vamos marcar a missão como completa, e vamos enviá-la outra. Então vamos enviá-lo para a caverna de entrada ou ainda para o ginásio. Então nós vamos marcar estes ainda a missão de salto como completa e marcaremos um desses como incompleto ou completo quando começarmos o nosso jogo e, em seguida, vamos marcá-lo como incompleto vai ser o último. Bem, nós levamos o monstro vendido. Então Mark e completo, abra isso baseado em, aqui. Guarde isso. E vamos correr o nosso jogo e ver como funciona, está bem, só para ter a certeza de que vamos correr o nosso ganho. Então vamos verificar o último como completo, e vamos apertar o botão Q. Lá vamos nós. Você pode ver que antes de tudo, nós verificamos se o dragão derrotado está completo. Então não, não está completo. Aqui você pode ver que nós paramos a completude ou o monstro vendido ou tomar monstro soul quest estava completo, mas quando nós atingimos o Q frio, nós marcamos como incompleta enquanto o atolamento de aço, que está logo acima dele, foi marcado como completo. Agora, se tentarmos transformar o primeiro, devemos obter um verdadeiro aqui, e isso deve ser desligado. Então nós acertamos o Q, nós pegamos outro falso ainda porque nós deveríamos ter verificado este, não o último. Então agora devemos obter um verdadeiro espero. Sim, lá vai você. Temos que ser verdade, tudo está funcionando. Estamos verificando nossas missões. Espero que goste e vejo-te no próximo. 75. Objetos de busca: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Como podem ver agora temos um mapa e temos um salto. Mas enquanto o salto não há mapa geminal, como vai parecer? Bem, se rodarmos o nosso jogo, temos um botão especial que fará o salto aparecer. É o modo G, não está funcionando. Por que não está funcionando? Porque a geléia ainda não foi ligada. Então, se ligarmos e agora acertarmos o G. Sim, lá vamos nós. Acabou de ver a geléia aparecer. Então não vamos perder mais tempo. E vamos criar alguns objetos de missão. 0 caso. Então, como vamos usar objetos e todas as missões? E como vamos realmente implementar tudo isso? Primeiro, vamos ver se temos algo a cometer. Sim, lá vamos nós. Precisamos do que fizemos? Adicionamos a habilidade de verificar missões, isso, e vamos ver como tudo vai funcionar. Digamos que Jimmy está viajando por aí. Ele não faz ideia de onde está um certo objeto. Ele passa pelo mesmo lugar uma, duas, três vezes. Mas, finalmente, ele pega uma espécie de mapa. E quando ele pega um mapa, vai para o mesmo lugar, ele encontra um salto. Então o que vamos fazer, nós vamos, o que vamos fazer é criar uma maneira, criar objetos como o mapa que quando nós pegá-los, por exemplo, algumas missões serão marcadas como completas. E quando essa missão for marcada como completa, então o atolamento, por exemplo, aparecerá. Certo, então espero que não tenha sido muito confuso. Vamos começar. Então, vamos em primeiro lugar, abrir a Unidade. E em nossa cena vamos apenas adicionar um salto em algum lugar aqui. Então eu vou olhar através de alguns tipos de geléia. Sim, esta jóia vermelha vai fazer isso. E vamos torná-los privados como pano de fundo. Então suba. Jogador. Lá vamos nós. Então vamos escalá-lo até três. E sim, lá vamos nós. Podemos até torná-lo um pouco maior. Vamos fazer cinco. É um atolamento importante de encontrar. Ok, então esta geléia, como nas águas, digamos, ok. Não sei por que está na água, está debaixo d'água. E então vamos em frente e criar um script aqui, que vai ser o objeto de busca. Então, nos scripts, nas missões, vamos clicar com o botão direito do mouse criar um script C-sharp vai ser o objeto de missão. Espere isso compilar e vamos mudar isso para a academia vermelha. E vamos adicionar o objeto de custo a ele. E nós vamos abrir e o roteiro. Então, do que precisamos? E aqui, precisamos de três variáveis. Primeiro de tudo, precisamos verificar se o objeto é ativado. Precisamos de uma corda para a missão que precisamos verificar e um booleano para ter certeza se queremos que isso apareça ou desapareça quando pegamos algo. Então, por que precisamos desaparecer? Digamos, por exemplo, uma caverna esteja fechada. Quando, por exemplo, salvamos para a cidade, queremos que a caverna se abra ou que alguma rocha desapareça na frente da caverna e então podemos entrar nela. Então vamos criar um campo serializado. Vai ser um objeto de jogo e o objeto para ativar. Então criaremos outro campo serializado. E vai ser do tipo string e vai ser a missão para verificar ou para completar. Não sei se lhe podes chamar o que quiseres, o que te faz confortável para ti. E, finalmente, precisamos criar um campo serializado que irá ativá-lo e desativá-lo. Então, ative se completo, guarde isso. Ok, agora vamos criar uma instância do gerente de custos. Então vamos criar um gerenciador de missões estáticas públicas. E vamos criar uma instância. Salve isso e, em seguida, iniciar instância é igual a isso. Ok, ótimo. Agora de volta ao nosso objeto de missão, vamos criar um método para verificar a conclusão. Nós apenas excluir o início e atualizar por enquanto. Então vamos criar um vazio público, verificar a conclusão, e não precisamos de parâmetros. O que faremos aqui é criar uma condição. E aqui vamos acessar o gerente de missões não instância. E vamos verificar se está completo. Então, a busca para verificar, que já estabelecemos e aqui a corda. E vamos conseguir o objeto que queremos ativar. E vamos ficar ativos. Ativo, F completo. Então o objeto que queremos ativar, seja uma porta de caverna, o atolamento ou qualquer outra coisa. Então vamos criar e atualizar uma onda para nós. Então, acontece que precisamos de atualização e uma atualização para apenas criar algum tipo de chave. E se o ponto de entrada obter keydown, keycode. E geléia, geléia é, Gee, espero que não seja usado e em qualquer outro lugar, verifique se há conclusão. Ok, então o que acontece agora quando apertarmos a tecla G? Vamos verificar a conclusão, verificará se a solicitação está completa, então o objeto será definido como ativo. Então vamos voltar para a Unidade. E aqui, vamos ver o que temos. O objeto que queremos ativar será o regime. Agora, como você pode ver, este não é o melhor lugar para colocar este objeto. Vamos verificar ou ativar completo. Vamos configurá-lo como um ativo para que ele não apareça mais e solicitado. Precisamos verificar, vamos ver no Game Manager o que temos. Ainda salta. Claro, por que não? Então roube o ginásio. Certifique-se de que você copiou e colou corretamente. Agora vamos executar nosso software de jogo andando, estamos andando, estamos andando. E se apertarmos a tecla G, nada acontece. Isso é porque se olharmos para o gerente do jogo, o aço, a geléia não está funcionando. Então, se atingirmos o Q, ele vai ligar. E agora, se atingirmos o G, não, ainda não está funcionando. O problema é que a gema vermelha nem está ativa, então não podemos acessar o objeto de solicitação. Esse é o objetivo. Então está inativo. Precisamos configurá-lo para agir. Então vamos fazer algo diferente. Vamos adicionar um onde ele vai para os itens ou não os itens que eu quis dizer no ambiente sprites. Vejamos, temos um mapa aqui, em algum lugar. Aí está, tem um mapa. Vamos editar aqui. No mapa aqui, onde está? Alisar. Isso é definir a camada de classificação para o jogador. Escale para dois. Vamos adicionar um pequeno colisor de caixa em torno dele e vamos ter certeza de que é um gatilho. E vamos pegar a geléia vermelha. Vamos copiar o componente, vamos para o mapa. Vamos adicionar um componente que vai ser o objeto de custo, vai basear o componente como podemos colá-lo como num. Ok, então vamos apenas remover este componente. Lá vai você. Então agora o objeto a ser ativado é o atolamento vermelho. Ainda a ativação do salto, completa. E vamos remover isto daqui. Nós não precisamos dele. Guarde isso. Agora, se executarmos o nosso jogo, vamos tentar ligar o salto. Podemos testar porque no gerenciador de jogos, o elemento não está completo. Se completarmos, lá vai você, o elemento aparece. Agora, se apertarmos a tecla G, lá vamos nós. Então agora temos a geléia aparecendo. Muito agradável. Agora há alguns ajustes aqui que você pode fazer. Por exemplo, você pode ativar um objeto quando você realmente pegar o mapa, por exemplo, você o destrói. Você pode adicioná-lo ao seu inventário. Quando você o tem em seu inventário, você pode fazer coisas com ele, mas isso é apenas o básico de como nossos objetos de missão vão funcionar à medida que avançamos. Espero que tenham gostado deste sistema de objetos de busca muito simples, e nos vemos no próximo. 76. Concluir perguntas: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, como você pode ver, temos uma jóia escondida nó. Então, quando executamos nosso jogo, se você se lembra, o botão Q termina a busca da jóia de aço. Então, quando apertamos o botão Q, como você pode ver, uma gema desaparece, a outra aparece. Então, neste vídeo, vamos ser capazes de completar nossas missões de forma mais dinâmica usando o gerente de missões. Então não vamos perder mais tempo. E se você estiver curtindo o curso, como sempre, certifique-se de deixar um comentário. Isso realmente me ajuda e eu sei o que você acha do curso. Então não vamos perder mais tempo e de novo, e vamos começar. Certo, agora precisamos de uma maneira de verificar a conclusão automática e dinamicamente. Nós não queremos, toda vez que queremos verificar se algo está completo para acertar uma certa tecla. Para fazer isso, precisamos acessar o gerente de missões. Então, no gerenciador de solicitações, queremos passar por todos os objetos que temos e verificar a conclusão cada vez que marcamos como completo ou incompleto. Então vamos criar um novo método aqui vai ser um vazio público. Portanto, objetos de solicitação de atualização anulada pública. E isso garantirá que todos eles estejam aparecendo ou desaparecendo. Então, porque é tão fácil, eu vou dar a você como um desafio. Então encontrar todos os objetos de objetos de busca tipo. Certifique-se de que há mais de um loop através de todos eles. Verifique se eles estão completos ou não. Chame-os em ambos os métodos onde marcamos nossas missões. Então pausar o vídeo agora mesmo, ler o desafio novamente. Se você não conseguiu o que deveria fazer e ir fazer o desafio. Oh, ok, bem-vindo de volta. Então, aqui vamos criar uma matriz de objetos de solicitação de tipo. E vai ser chamado de objetos de busca. E vai ser objetos finos do tipo. Então objetos, não objetos, objetos do tipo. E vai ser do tipo, é claro, objetos de busca. Então, como dissemos, vamos verificar se há mais de um. Se não houver nenhum, então não precisamos fazê-lo e evitar erros. Então objetos de missão comprimento de ponto maior que um, maior que 0, quero dizer. E aqui vamos percorrer todos eles. Então, para cada solicitação, objeto, objeto de solicitação, apenas mantendo-o objetos simples e busca. Lá vamos nós. O que vamos fazer é acessar o objeto de solicitação. E vamos verificar se há conclusão. É isso. Lá vamos nós. E finalmente, o que precisamos fazer? Chame-os e ambos os métodos onde marcamos nossos custos. Então, onde marcamos nossos pedidos aqui? Qual era o método chamado custo de atualização? Portanto, atualize objetos de solicitação e atualize objetos de custo. Ok, com isso feito, finalmente, precisamos do Q2, ok, então em marcas tão completas que nós empatamos a GMP. Certo, ótimo, então vamos abrir. Vamos duplicar este salto. Nós vamos, whoops. Onde está o segundo salto? Vamos colocá-lo aqui em cima. Vamos ligá-lo. E o que vamos fazer é adicionar o, ok, então nós removemos, vamos adicionar o objeto de missão a eles. Então, no roteiro e nas missões, vamos escolhê-los novamente. Objeto de missão. O objeto em questão é este. E para o segundo, é este. O, onde está? Onde está o gerente do jogo? Ainda é jóia? Cole aqui. E este vai ativar o completo enquanto este deve desativar ou assim ele deve desativar quando concluído. Então, vamos salvar tudo isso. E quando apertamos o botão Q, se você se lembra, nós ajustamos ativo para o salto ainda. Então, quando corrermos, espero que isto agora, quando chegarmos ao Q, lá vamos nós. Um deles ligou e o outro foi desligado. Então, quão legal é isso? Agora temos uma maneira de acessar os objetos do jogo e sempre certificando-se de que eles funcionam automaticamente sem que tenhamos que pressionar quaisquer teclas extras depois de terminar o pedido. Espero que goste e vejo-te no próximo vídeo. 77. Como ativar perguntas: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Como você se lembra no vídeo anterior, tornamos nosso sistema de missões um pouco mais dinâmico. Agora é hora de passar para o próximo nível. Então, quando executamos nosso jogo, como você pode ver, um Jam tão bem, Podemos vê-lo, o outro desapareceu em algum lugar. Onde poderia estar? Bem, vamos tentar pegar este mapa Wo, como você pode ver, encontramos a segunda jóia. Quão legal é isso? Então não vamos perder mais tempo e vamos começar a automatizar nosso sistema de missões um pouco mais. Ok, então agora que podemos ativar e desativar ou ativar e desativar objetos de jogo baseados em missões dinamicamente, é hora de ativar uma missão quando entramos em um determinado espaço ou zona ou assim por diante. Então o que vamos fazer é criar perguntas. Então vamos em frente para o mapa que acabamos de criar aqui, o colisor de caixa que tínhamos. E nós vamos deletá-lo. Já vamos saber o que podemos ficar com ele, se quisermos. E vamos remover o objeto de solicitação por enquanto, remover componente. E lá vamos nós. E adicionaremos ao lado da zona de busca do mapa. Então este mapa é uma zona de busca e quando entramos nele, há coisas que acontecem. Então, crie um script C-sharp, e vamos chamar isso de missões ou esperar que ele compile. E vamos adicioná-lo ao mapa. E vamos abrir a zona quiescente. Então, o que estamos fazendo aqui? Estamos à procura de dois tipos de ativadores de custo. O primeiro é se o jogador simplesmente anda pelo lugar da luta, nós imediatamente começamos a missão. Então, por exemplo, digamos que caminhamos por uma determinada zona e os monstros aparecem. O segundo tipo é que queremos falar com um certo MPC e obter a missão deles, e então vamos começar o pedido quando pudermos estocar. Então estes são os dois tipos de custos que geralmente são encontrados em ganhos. Então vamos precisar de algumas variáveis aqui. Então campo serializado é do tipo string e vai ser o custo para marcar do que um outro campo serializado, que vai ser do tipo bool e vai ser Mark como completo. Em seguida, vamos criar outro campo serializado e isso vai verificar se sua marca em Enter. Então vai ser bool, mark on e TR. Então, digamos que temos uma missão onde temos a marca em Enter. Então, quando entramos, uma caverna, o pedido está completo, e então os pares de jama, por exemplo, está fora do topo da minha cabeça. E então teremos um booleano privado. E isso significa que podemos marcar porque, como dissemos, este é um Trigger Enter. Opa, apenas entregou o desafio. Quero dizer, é um gatilho. Então, de volta ao nosso código aqui, o que vamos fazer? Vamos apagar o início e a atualização. Eu digo isso toda vez e cada vez que acontece que precisamos deles. Então vamos começar. Em primeiro lugar, o que precisamos? Precisamos criar um método que marque a busca. Então é uma missão pública. E aqui vamos verificar se a marca está completa. Então vamos acessar o gerente de missões. Vamos acessar a instância. Vamos acessar a missão de marca como completa, como completa. E depois vamos dar-lhe o ponto de interrogação. E se não estiver marcado como completo, então vamos fazer o mesmo, mas em vez de Mark como completo, vamos ao mercado como incompleto. Então isso pode vir até não ser muito útil. Por que estamos marcando certas missões como incompletas? Mas, mais tarde, quando você jogar o jogo, você notará que algumas missões precisam ser verificadas como incompletas. Então, por exemplo, digamos, o que podemos dizer? Por exemplo, por alguma razão queremos deixar a área, então isso a marca como incompleta. Queremos remover qualquer tipo de saltos que estejam lá. Ou talvez queiramos, se pegarmos a espada errada ou algo assim, não tenho certeza, mas pode ser útil. É bom ter isso como um tipo de depuração e seu jogo. A próxima coisa é criar um empresário entrar que verifica tudo e eu vou mostrá-lo para você como um desafio. Então seu desafio é marcar uma missão. Então crie um empreendedor. Digite 2D, verifique a tag do jogador. Verifique se estes não estão tão marcados como concluídos. Algumas zonas precisam ser marcadas como completas, como já dissemos. Outros. Ou marque em Enter Amin e outros são marcados quando iniciamos o diálogo. Se é simplesmente marcação pedido deve ser simplesmente não simples. E se não, isso não deve ser, não. Agora, verifique o booleano pode marcar, bem isso é pausar o vídeo agora e ir fazer o desafio. Ok, bem-vindo de volta. Então, Trigger, Enter 2D, role para baixo e vamos verificar mais uma vez, eu acho que fizemos isso sete vezes maybe.com tag player. E aqui vamos verificar se a marca está em Enter. Se for, então vamos simplesmente marcar a busca, nosso método e aqui. E se não for, então vamos apenas dizer que pode marcar é igual a verdade. Guarde isso. E finalmente uma atualização que vamos ver. Eu já disse que precisamos estar sempre criando atualizações. Como eu rolar para cima e ver que eu novamente remover atualização. Então aqui vamos usar a marca da lata. Digamos que é algum tipo de alavanca que precisamos empurrar. O amante só pode ser interagido se estivermos em uma determinada posição e quando o fizermos quando estivermos na zona quasi, isso significa que podemos marcar. E se pudermos marcar e pressionarmos o fogo, então o custo está completo e algo ao nosso redor acontece. Então, se conseguirmos marcar e entrar ponto ficar abotoado, eu quero usar o fogo 151. Então vamos marcar igual a falso. Então não acionamos o custo de novo ou acontece alguma coisa estranha. E então a marca Quest funcionará. Lá vamos nós. E há mais uma coisa que devemos considerar que é se queremos desligar completamente a zona, ou no caso do nosso mapa, por exemplo, destruído. Então, quando temos o mapa, dissemos que não precisamos tê-lo em nosso inventário. Você poderia ter a nova história urbana, mas e se você quiser destruí-la? Então nós vamos criar uma variável aqui que vai ser um pool público e vai ser para desativar na marcação. Então isso ativará a zona na marcação. E na busca marca, depois de verificarmos se marcamos a missão completa ou a busca incompleta, o objeto do jogo. Os pontos estão ativos será o oposto e y é o oposto de desativar na marcação. Por que é o oposto? Porque se quisermos desativar na marcação, definimos como verdadeiro. E se for verdade, precisamos desativar. Isso significa que precisamos definir ativo como falso. É por isso que isso é negado com um ponto de exclamação. Guarde isso no nosso jogo. Qual cliente queremos? Queremos a geléia. Então ainda o JAM, copiar isso, colá-lo no mapa e marca completa de Barker em Enter e a marcação ativador salvar isso, executar o jogo. Vamos olhar para as nossas gemas aparecem, ver se elas desaparecem. Então agora andamos, andamos, andamos, e agora, quando entramos no mapa, essa chance deve desaparecer e essa deve aparecer. Então, espero, sim, lá vamos nós. O mapa desaparece, o congestionamento desaparece, o GM final não aparece por algum motivo. Por que é isso? Oh, Kay, por que não apareceu? Porque oh, o problema é que o congestionamento está inativo, então não estamos encontrando o objeto. Então, para contornar esse problema, o que vamos fazer é no engarrafamento vermelho ou no primeiro caminhão embaralhar com o botão direito do mouse, vamos criar um objeto de jogo vazio. Este será o objeto de missão, irá removê-lo da criança e, em seguida, adicionar o salto vermelho a ele. Então agora o objeto de busca está na mesma posição e vamos configurá-lo, vai apenas mantê-lo. Então agora o que acontece é que vamos copiar este componente, colar como novo, e vamos remover este componente de remoção. E isso é o que deveríamos estar fazendo com todos os nossos objetos de busca. Então agora, quando olharmos através de todos os nossos objetos, vamos encontrar este objeto de missão, e então vamos ligar ou fazer o atolamento vermelho aparecer. E, finalmente, precisamos ter certeza de que é a geléia vermelha que queremos ativar e aqui. Então, se guardarmos tudo isso, se agora corrermos o nosso ganho, o salto que não tem aparecido deve aparecer. Então agora caminhamos até o mapa e lá vamos nós. Um desaparece, o outro aparece, e tudo funciona perfeitamente. Espero que esteja gostando de como as missões estão funcionando. Estamos lentamente construindo do zero e fazendo tudo dinamicamente. A peça final do quebra-cabeça é ativar missões quando terminarmos o diálogo com certos MPC. Então, vemo-nos lá. 78. Ativando perguntas após o diálogo: Bem-vindo de volta meus colegas desenvolvedores de jogos para um novo vídeo. E este vídeo, quando rodarmos nosso jogo, você vai notar que temos um congestionamento aparecendo, um não está lá. Então vamos ao curandeiro. Ei, curandeiro. Conversamos um pouco. Lá vai você. Então, quando terminamos a conversa, o ginásio desaparece. Esta Gemma aparece e nós ativamos um objeto de missão depois que terminamos de falar com um curandeiro. Quão legal é isso? Então, como você pode ver, nós criamos um sistema de custo dinâmico realmente agradável. Então não vamos perder mais tempo. E vamos começar. Está bem, agora é hora de marcar uma missão como completa depois de terminarmos o diálogo com um certo personagem. Agora você pode adicionar uma outra opção onde você pode escolher entre aceitar solicitações ou não. Eu recomendo que você tente isso. Mas, por enquanto, vamos nos ater ao básico em que nos certificamos de que temos uma Missão no final. Então, o que vai fazer para eu te mostrar o plano bem rápido. Nós vamos adicionar ao RequestHandler uma maneira de verificar que no final da conversa nós ativamos algum tipo de busca e, em seguida, no controlador de diálogo irá realmente ativar uma determinada pergunta. Certo, então vamos começar. Primeiro de tudo, vamos para o nosso código e vamos para o controlador de diálogo. Onde está o controlador de diálogo? Não há nenhum controlador de diálogo que nós fechá-lo em algum lugar. Então você dialoga Controlador. E vamos abrir o controlador de diálogo. Ok, lá vamos nós. Então, um par de variáveis aqui, e todas elas serão privadas porque estamos obtendo todas elas do manipulador de diálogo, que está em um dos MPC. Então, digamos que busca de string privada para marcar do que um booleano privado, que vai ser mais da missão completa, Mark Complete e pode ser falsa se quisermos marcar a pergunta incompleta, por exemplo. E, em seguida, outro booleano que é v deve marcar oeste. Certo, agora precisamos descobrir onde terminamos o diálogo e começar a verificar e marcar as missões. Então terminamos o diálogo depois de todas as frases de diálogo terem sido concluídas. Certo, então desligamos o colisor da caixa. Desligamos a caixa de diálogo está aberta. Isso é para o jogador começar a andar novamente. E aqui vamos verificar se devemos marcar um custo. Então, se devemos marcar solicitação, em seguida, as solicitações de marca curta deve ser definido novamente como false. Assim como fizemos antes. Só paramos a marca da lata. Não queremos que continue. Em seguida, verificamos se queremos marcar a missão completa, vamos acessar a instância de ponto do gerenciador de jogo, marcar ponto como completo. E nós estamos chegando, é claro, dar a ele a instância de ponto do gerenciador de jogos 0. Então precisamos ir ao gerente de custos. Achei que ter um monte de gerentes pode ser muito confuso. Então, ponto de instância, obter ou marcar missão como completa. E vai ser o custo para o Mark. E outra coisa. Obviamente, poderíamos ter feito isso sem os suportes, mas não se preocupe. Vamos copiar isto. O Mark. Incompleto. Guarde isso. Ok, ótimo. Então, agora o que fazemos, verificamos se devemos marcar uma missão. Se o fizermos, desmarcamos. Não queremos passar por isso de novo. Se a marca estiver completa, verificamos o ponto de interrogação. Senão, verificamos como incompleto. Ok, ótimo. Agora vamos precisar de um método que se ative no final. Então vamos criar que importava, que ativa a Busca no final. E vai fazer parte do seu desafio. Seu desafio é ativar o Quest no final, Eu pensei que eu já disse esta frase três vezes. Crie um método, ative Quest no final que leva em dois argumentos, um nome de busca string e uma marca booleana completa e defina as variáveis que criamos. Então, o que esse método fará? Bem, porque como já dissemos, vamos ligar, vamos deixar as missões para completar para o NPC real com o qual não queremos lidar no controlador de diálogo. Queremos fazê-lo no manipulador de diálogo. Assim, isso nos permitirá falar com o manipulador de diálogo e definir todas as variáveis que são privadas. Então, com isso explicado, com o desafio na sua frente, pausar o vídeo agora mesmo e ir fazer o desafio. Ok, bem-vindo de volta. Então, aqui, vamos acrescentar. Método logo abaixo da atualização. E aqui vamos criar um vazio público. Ativar Missão no fim. E vai levar dois argumentos. Dissemos que seria preciso Quiz Nome e Mark Completo Booleano. Então o nome da missão e a Marca Booleana Completa. E aqui o que faremos é o ponto de interrogação será o nome do host. Então era Tamar é igual ao nome do host. A marca foi completa, é igual à marca completa. Então, se este for falso, mais completo será falso. Certo, então usamos o mesmo, marcamos o pedido como completo. Vamos copiar isto. Portanto, a nomeação de variáveis é muito importante. E, finalmente, isso deve marcar busca deve ser definido como verdadeiro. Porque se nós enviamos qualquer coisa na busca ativar em, e, em seguida, claro, o deve marcar missão deve ser verdade. Ok, ótimo. Agora precisamos ir ao manipulador de diálogo e fazer quase a mesma coisa. Então, enquanto o encarregado do diálogo, lá vai você, esse é o manipulador de cães. Então vamos criar três campos serializados porque eles serão dependentes do que escolhermos para este personagem para Sam durante a conversa. Então Boolean deve ativar busca e outro campo serializado porque vai ser uma string, que vai ser a busca para Mark. E finalmente, campo serializado com a marca booleana como completa. Completa. Lá vamos nós. E vamos atualizar quando passarmos as sentenças. Nós também vamos verificar se queremos realmente ativar a missão. Então, se devemos ativar uma missão, então vamos acessar o controlador de diálogo. Onde está tudo bem, Darla controlador de ponto instância, ponto, ativar. E leva em duas variáveis ou dois argumentos, parâmetros até mesmo você pode chamá-los para que o nome do host e a marca booleana como completa. Assim, o nome do host é o ponto de interrogação, e também a marca como completa. Guarde isso no nosso jogo. Enquanto Sarah, você esqueceu da Sarah. Mas, de novo, ela sempre tem um trabalho a fazer. Novamente. Então, onde está o encarregado do diálogo? Podemos mudar as frases, mas vamos mantê-las como estão agora. Então vamos fazer isso um pouco maior. Então deve ativar uma missão. Sim, você deveria. Deve marcar como completo. Sim, ela deveria. Nós, enquanto o gerente ainda as gemas. Passa para a Sarah. Sarah, da Sarah. Ok. Então o ponto de interrogação é o aço, o atolamento. Vamos salvar isso, vamos executar o jogo. Vamos torcer para que isso funcione. Vamos ter com a Sarah. Oi Sarah, sou uma curandeira que Ananda Taylor. Lá vamos nós. Como podem ver, não reparei, mas funcionou porque esta jóia desapareceu. Esta jóia aparece e é só porque terminamos a conversa com o nosso curandeiro. Então nós terminamos todo o sistema de custeio. Criamos uma dinâmica muito agradável que liga e desliga depois de conversas e depois de pegar objetos. Então só a sua imaginação é o limite aqui. Você pode usar isso para música, tantas coisas. Então eu espero que você esteja gostando deste curso. Eu não vou lembrá-lo novamente porque eu fiz isso alguns vídeos atrás. Então você sabe o que fazer uma revisão de literatura. Adoraria saber a sua opinião e verei você na próxima. 79. Seção 11: playerPrefs: Bem-vindos de volta meus colegas desenvolvedores de jogos a um novo vídeo onde fazemos algo muito dramático. Na verdade, quase destruímos o mapa inteiro com nossas novas habilidades incríveis. Então, e se tivéssemos a corrida nojenta para ele? Sim, isso foi salvo. Eu sei que é um pouco desanimador, mas não vamos perder mais tempo, e vamos começar. Então agora podemos fazer muito, muito, muitacoisa em nosso RPG recém-criado. Então agora podemos fazer muito, muito, muita Mas como você sabe, cada RPG tem um carregamento e economia. Então, qual é o ponto de construir seu personagem se você não pode nem salvar todo o progresso que você teve com esse personagem? Então salvar e carregar é uma parte muito, muito essencial de um jogo de RPG, e vamos fazer exatamente isso. Então, a primeira coisa que precisamos fazer é entender como salvar e carregar funciona em unidade, e isso é através da preferência do jogador. Então vamos explicar o que é a preferência do jogador. Deixe-me colocar no meu laser e o que é Player para referência ou prefs jogador. Ele nos permite armazenar certos dados como strings, inteiros e flutuadores. Então estes são os únicos três tipos que podemos armazená-lo em prefs de jogadores. Agora você pode estar perguntando, Bem, Michael, como vamos ser capazes de armazenar, digamos, por exemplo, itens ou marcadores de busca, Booleans. Como vamos fazer isso se estamos confinados apenas a cordas, inteiros e carros alegóricos. Bem, não se preocupe com aquele gafanhoto mais jovem, porque vamos encontrar maneiras muito criativas de resolver esse tipo de problema. Estes dados podem ser acessados entre sessões de jogo. Os dados são identificados por uma chave de cadeia de caracteres. E eu vou te dar apenas alguns exemplos apenas para envolver sua cabeça em torno disso e não ser muito assustador. Então nós apenas definimos um inteiro, nós damos a ele uma chave, assim como dissemos aqui, ele é identificado por uma chave do tipo string. E, em seguida, definimos o valor de um inteiro porque temos liquidação. E então como carregamos os prefs do jogador? Bem, nós usamos o get e usando a mesma chave de string que nós adicionamos para este NFO bem aqui. Então, vamos começar a implementar tudo isso e parecerá muito mais fácil e muito menos assustador. Então vamos abrir o Visual Studio e vamos para o gerente. Então vamos abrir o Visual Studio. Vamos para as lendas da conquista 2D. E tudo bem, ótimo. Nós vamos para o gerente de missões porque a primeira coisa que queremos é salvar nossas, nossas missões. Então, como vamos salvar missões de jogadores? Bem, em primeiro lugar, precisamos criar uma chave, e essa chave será o nome dos custos que queremos enfrentar. E então o valor será um inteiro ou um fim que representará um falso. Isso significa que não completamos a missão, ou um verdadeiro, que significa que completamos a missão, mas como vamos representar essa falsa e verdadeira? Vamos mergulhar fundo e ver como isso vai correr. Então, primeiro, vamos criar um método aqui. E vai ser um vazio público. Guarde dados de missões ou isso, não tenho certeza do que você quer chamá-lo. Então salve os dados da solicitação. O que vamos fazer aqui? Vamos passar por todas as nossas missões. Cheque. Então nós estamos indo para primeiro de tudo criar um loop indo de I igual a 0 enquanto eu é menor que v. Como foi chamado? Os nomes, eu acredito que os nomes da missão são os pontos de comprimento. Estes são todos os nossos custos que temos. E nós vamos aumentar em um, é claro. E aqui vamos verificar se os marcadores de missão foram concluídos na posição i. Então o que vamos fazer é chamar os prefs do jogador. E se você não tem certeza de como usar prefs jogador, eu recomendo que você vá para os cães da unidade. É um ótimo recurso. Já te mostrei várias vezes e não acho que indo de novo, são só para os prefs do jogador. Eu recomendo que você sempre faça sua própria pesquisa e não apenas confie em mim, talvez eu esteja mentindo. Quem sabe? Então vamos definir um inteiro. E no ano em que vamos primeiro criar uma string, uma chave e, em seguida, um valor. Então, o que faz a chave de cordas aqui? Vai ser o marcador de busca sublinhado. E então vamos concatená-lo com os nomes das missões. Na posição I. E qual é o valor aí? Bem, vai ser representado como verdadeiro. Isso significa que vamos definir como um. E depois, quando estamos carregando dados, usaremos isso para configurá-los como verdadeiro ou falso. Então deixe-me explicar de novo o que fizemos aqui. Por isso, estamos a percorrer todas as nossas missões. Estamos verificando se a missão está completa. Se for, então invocamos os prefs do jogador. Dizemos que queremos definir um inteiro. E então temos esta chave bem aqui. Então, para representar os marcadores de missão, ou você pode dizer defini-la como nomes de missão. Mas porque estamos definindo os marcadores de busca. Então, o marcador de busca, e queremos ser capazes de identificá-lo individualmente para cada missão. Então, para fazer isso, adicionamos um pouco de individualidade concatenando o marcador de solicitação sublinhado com o nome da missão. Então você terá uma tabela onde você tem o marcador de busca sublinhado. Digamos, por exemplo, matar o demônio, saber que estamos em Lehman, matar o dragão. Então marcador de busca sublinhado matou o dragão tem um valor inteiro de um. E então vamos traduzir isso de volta e criar os Booleans, seja eles verdadeiros ou falsos. Ok, então agora que definimos os verdadeiros marcadores de busca, é hora de definir os falsos, aqueles que não completamos. E isso vai fazer parte do seu desafio. Seu desafio é definir o marcador de missão usado prefs do jogador para definir as missões que estão incompletas. Mantenha a chave de cadeia de caracteres igual e somente o valor do int deve mudar. Então nós já, eu acho que cobrimos tudo. Mantenha a mesma chave porque estamos trabalhando, Vamos chamá-lo na mesma dimensão onde estamos salvando a missão para que você não precisa mudar a chave, apenas alterando o valor. Então pausar o vídeo agora, e a fim de defini-lo como falso igual a 0, esta é uma dica, eu não acho que eu li. Pause o vídeo agora, e vá fazer o desafio. Bem-vinda de volta. Então aqui vamos dizer que outra coisa, se não estiver completa, então vamos copiar esta linha. Vamos colá-lo aqui. Vamos manter o mesmo marcador de missão sublinhado nome da missão, mas em vez de um, porque está incompleto, vai ser 0. E vamos ver mais tarde e mais detalhadamente, como vai traduzir este 10, um verdadeiro e falso. E, finalmente, precisamos de uma chave para implementar isso. Então vamos subir e atualizar. E já estamos usando a fila. Então, se a entrada obter a tecla para baixo, código de teclado ponto e vamos usar algum botão que ainda não usamos. Eu acho que eu, então eu, e se clicarmos no eu vou depurar log ponto. E diremos aqui que o que foi salvo. Isso é apenas para fins de depuração. E então vamos salvar os dados da missão. E o que é o profissional? Então pegue o botão, substantivo, abaixe a chave. Isso. Tudo bem com você. Sim, lá vamos nós. Então salve os dados de custo, os dados de depuração foram salvos. Vamos voltar para a Unidade e deve ser compilado agora. Então vamos correr o nosso ganho. Vamos apertar a tecla I, e lá vai você. Os dados foram salvos. Agora, isso foi desanimador e nada muito óbvio aconteceu. Mas no próximo vídeo vamos ver como tudo isso funciona quando começamos a carregar os dados. Então eu espero que você tenha gostado do vídeo e eu vou vê-lo no próximo. 80. Dados de carregamento: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, quando executamos o código, nós realmente temos algo dramático. Se você olhar para as marcas de busca bem aqui, nós completamos algumas delas. Então, queremos carregar nossos dados. Não queremos rever todas essas missões e fazê-las novamente. Então vamos apenas carregar os dados. E você pode ver aqui que os dados foram carregados e essas missões foram concluídas. Então não vamos perder mais tempo e vamos começar a carregar nossos dados. Então, o tempo começa a carregar. Há um pequeno problema quando se trata de carregar dados. O que é, o problema é o que acontece se nós já salvamos todas as nossas missões, ok, então nós temos o ataque de missão agora, nós salvamos todos eles. Mas, em seguida, durante o jogo, adicionamos outra missão. Então, quando vamos carregá-lo e procurar por TI, Ops, não há nenhum e não podemos encontrá-lo. E isso nos dará um erro e nos perguntaremos, bem, o que diabos aconteceu. Portanto, precisamos evitar isso antes de tudo, verificando se há realmente alguma preferência do jogador definida usando esta chave certa. Então, apesar de eu ter dito que não vou entrar em cães da Unity, aparentemente eu vou. Então eu abri as ações pref do jogador e a documentação da Unity. E aqui você pode ler tudo sobre, você pode até ver onde isso foi salvo e você pode ir verificar isso, ver como os dados são armazenados e assim por diante. Então, se rolarmos para baixo aqui, podemos ver que temos vários métodos estáticos. E um deles, você pode ver que nós temos o pegar ND, obter, flutuar o cofre, o cofre falha, salvar, e, e assim por diante. E então temos algo chamado Husky. E isso retorna true se a chave dada existe e prefs jogador caso contrário retorna false. Então isso nos permite, antes de nos aprofundarmos em obter algo, isso nos permite verificar se há algo lá de qualquer maneira. Então vamos usar este que estamos carregando como um mecanismo de defesa contra erros. Vamos começar. Então, vamos abrir o nosso gerente de missões e vamos criar um método que vai ser os dados de solicitação de carga, dados carga vazios públicos. Ok, então nós vamos criar um loop exatamente como fizemos nos dados de economia de custo. Vou copiar esta linha porque é exatamente a mesma. Sim, vamos colá-lo aqui. Lá vamos nós. E vamos apenas remover um desses. Qual é o problema? Há algum problema? Então, aparentemente, quando colarmos apenas isso, então vamos mantê-lo como isso vai fechar os suportes aqui. Você precisa manter a contagem dos parênteses. Então, o que estamos fazendo aqui? Depois de vermos todos os nossos nomes? Nós vamos criar um inteiro que vai representar o valor 2 SAT. E vai ser igual a 0 porque precisamos dar algum tipo de valor quatro, continuamos um. E esta linha verde sinuosa significa um aviso. Assim, o valor definido como atribuído, mas nunca é usado. E porque as variáveis ocupam um pouco de espaço de memória no seu computador. Portanto, o Visual Studio sempre lembra que você tem uma variável não utilizada. Você pode excluir para economizar espaço. De qualquer forma, aquilo era um site. Agora aqui vamos usar os prefs do jogador. Vamos usar o Husky. E vamos usar a chave que adicionamos aqui. Então vamos copiar esta linha. Então, como eu disse, primeiro lugar, nós temos a chave. Então nós removemos isso aqui, e este também. Lá vamos nós. Então isto vai verificar se há um rei. E como eu disse, estas são as chaves para nossas missões, representadas por um marcador de busca de palavras sublinhado e então concatenado com o nome real da missão na posição I. Então nós verificamos, temos uma chave que tem o nome quest marcador sublinhado era o nome da missão na posição I. Se o fizermos, então o valor a definir será igual a prefs do jogador, desculpe por que o jogador prefs ponto obter ENT. E como conseguimos um número inteiro? Bem, usamos o marcador na partitura e no nome. Então lá vamos nós. É tudo o que precisamos fazer. Só precisamos dar a ele este mercado de busca. Ok, ótimo. Então, deixe-me falar mais uma vez. O que estamos fazendo aqui, estamos passando por todos os nossos nomes. Acabamos de criar uma variável aqui para manter armazenar o valor a ser definido. Nós acessamos os prefs do jogador e procuramos o Husky e verificamos se temos uma chave que tenha o nome da missão nele. Em seguida, definimos o valor usando prefs player dot get k0, e então usamos esta string aqui, que podemos realmente, deixe-me mostrar-lhe um dos muitos usos de variáveis. Então, como você pode ver, estamos usando este marcador mais hostname na posição i 2 vezes. Então, uma maneira melhor de fazer isso como escrever uma chave de seqüência de caracteres para usar, e vai ser igual a isso aqui mesmo. Então temos isso, cola-os aqui. E a forma como cortamos é usando o Controle X. E aqui podemos simplesmente usar a chave para usar. E aqui também chave para usar. Lá vamos nós. E isso deve estar funcionando bem porque a chave para usar está nesta posição e certifique-se de que está dentro do loop. Então ele sempre é atualizado. Ok, ótimo. Agora que definimos o valor, então quando obtemos o inteiro na chave para usar, que é isso aqui, verificamos, obtemos um ou um 0 em, com base nisso, vamos definir os marcadores como completos ou incompleto, ou o completo como verdadeiro ou falso, assim como estamos usando aqui. Vou te mostrar aqui. Então marcadores de busca, completos ou não completos, e isso vai fazer parte do seu desafio. Então o seu desafio é enviar os marcadores de pedido completo. Então, com base no valor que temos, defina o booleano dos marcadores de busca. E apenas um pequeno lembrete, 0 é falso, um é verdadeiro. Pausar o vídeo agora mesmo, ir para o desafio. Volte para trás. Então, depois de definir o valor aqui, vamos em frente e criar uma condição if. E se o valor definido é igual a 0 significa que temos um falso e podemos apenas remover esses colchetes. Não precisamos deles porque só temos uma linha porque estamos acessando o mercado de busca está completo na posição I e estamos dizendo que é igual a falso. E se não for assim. E você pode, se você quiser ser mais específico, você pode usar else-if conjunto de valores é igual a um, apenas no caso de termos algo diferente de 1 ou 0 por engano, mas eu acredito que você pode mantê-lo exatamente como ele é. Assim, as moléculas de busca completadas na posição I são iguais a verdadeiras. Vamos guardar isso. Qual é o problema da linha sinuosa? Não, sem problemas. Guarde isso de volta e atualizar usará algum tipo de chave. Então vamos duplicar esta linha. Nós vamos usar em vez de eu vou usar o 0. Então i, o e os dados foram carregados. E em vez de dados salvos, vamos carregar, carregar dados de solicitação, salvá-los de volta em nossa unidade. Agora, quando executamos o jogo na abertura, nos movemos. Vamos ver que tipo de no gerenciador de jogos, vamos definir tudo isso como verdade. Vamos acertar o nojento, então os dados foram salvos. Agora, se desligarmos todos, apertamos a tecla O. Muito ir. Quão legal é isso? Nós realmente armazenamos dados e depois carregamos. Quão legal é isso? E nem mesmo isso, temos algo muito mais legal se rodarmos o jogo novamente. Se olharmos para baixo aqui no gerente de missões, se apertarmos a tecla O, como não, sério, pensem um momento para pensar em quão legal é que nós realmente salvamos dados. E você pode ver claramente que nós não fizemos nenhuma manipulação. É simplesmente beta que foi salvo usando inteiros. E não só isso, nós convertemos inteiros em booleanos por apenas algumas linhas de código. Então, com isso feito, vamos em frente e encenar tudo. Nós vamos nomear este gráfico de camada usado para carregar dados. Carregue dados para ser específico, nós vamos cometer isso. E vamos olhar para os mestres. Olha o quanto já fizemos. Terminamos de criar a loja. Nós estabelecemos as bases para o sistema de busca. Adicionada habilidade criada objetos de missão afetados objetos de missão. Quero dizer, olha o quanto já fizemos e ainda temos muito para ir. Espero que esteja gostando. Espero que você esteja se divertindo e eu espero que você esteja animado como eu estou, apenas por uma questão de carregar alguns probabilidade usa dados. Vemo-nos no próximo vídeo. 81. Definir e a flutuante: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, quando executamos o jogo, quando apertamos a tecla O, sim, lá vamos nós. Somos transportados para a posição que salvamos em nossas prefs de jogadores. Então não vamos perder mais tempo, e vamos começar. Certo, então agora estamos salvando dados da missão. A próxima coisa que precisamos ser capazes de salvar como a posição do jogador, como você sabe, quando você andar através de seu jogo, Posição salva e assim é sua cena vai olhar para salvar cenas mais tarde, ou você simplesmente não pode fazê-lo por conta própria. É muito fácil. Você acabou de definir uma corda. Mas vamos nos concentrar em definir flutuadores e carregá-los agora, e especialmente quando se trata de posição. Então, se olharmos para cima aqui e o, e qualquer objeto que podemos escolher o jogador porque estamos focando no jogador. Você pode ver que ele tem uma posição no x, y e z. E todos eles precisam ser salvos para carregar a posição corretamente. Então vamos fazer isso. Mas primeiro, precisamos descobrir onde realmente queremos salvar esses dados? E eu acredito, e é realmente o melhor lugar para salvar dados, como a posição é no gerenciador do jogo. Então vamos clicar duas vezes no Game Manager, abri-lo e ver o que podemos fazer aqui. Então vamos criar um método chamado salvar dados. Então, aqui embaixo, sob a estatística do jogador, vamos criar um vazio público, Salvar. E vamos salvar os dados para cada posição. Então vamos chamar o jogador prefs dot set float. E por que estamos usando set float não end? Bem, obviamente porque se olharmos para trás em Unity e aqui você pode ver que a posição do jogador era 1.91.3. Então precisamos ajustar o carro alegórico. E vamos definir o flutuador e vamos dar-lhe uma chave única. Então vai ser o jogador sublinhado, pausa para posição e atos. Então, estamos salvando antes de tudo, o x. E como deve ser chamado? Quero dizer, qual é o valor que queremos enviar? Bem, eu vou te dar este mini desafio para tentar pensar nisso. Precisamos de acesso ao jogador. Você vai precisar de acesso à instância, vai precisar de acesso à transformação naquele jogador. Então, a transformação nessa camada. Agora, finalmente, precisamos do machado nessa posição. Então estamos acessando o script do jogador, a instância, a transformação do objeto do jogo, a posição na transformação e o x na posição. Ok, ótimo, então agora nós definimos o flutuador para a posição x do jogador, e agora nós precisamos te dar um desafio. Então veja aquele chegando. Então vamos terminar de definir a posição y e z. e lembre-se que cada eixo deve ter uma chave única para ele. Vamos criar um método para carregar os dados. Por que eu estou dizendo quando você está indo para criar um método para carregar os dados, você vai obter o flutuador, obtê-lo da posição do jogador, e carregá-los no vetor 3. E eu vou te dar uma dica de como você carrega no vetor 3. Se não quer ver, faça sozinho. Pausar o vídeo agora mesmo, ir para o desafio. Se não disse transformar o jogador igual ao novo vetor 3, x, y, e z, ou que. Pausa o vídeo agora e vai fazer o Shalon O K de volta. Então duplicamos esta linha usando o Controle D. Eu já expliquei isso. Não se preocupe. As teclas de atalho podem levar tempo para entender o porquê. E lá vai você. Então agora estamos salvando a posição do jogador em x, y e z cada um tem uma chave única, assim como eu disse aqui, cada eixo tem uma chave única, x, y e z. Agora vamos criar os dados de carregamento. Então, uma carga de dados vazios públicos. E aqui vamos acessar o jogador. A posição do ponto da instância do jogador, a transformação do ponto da instância do ponto. Desculpe. Então, primeiro de tudo, acessamos a posição do ponto de transformação e ela será igual a um novo vetor 3. E vamos abrir os suportes. Então aqui precisamos acessar as prefs do jogador e pegar o carro alegórico. E como essas linhas vão ser muito longas, nós vamos bater um Enter aqui, bater o Enter novamente, e vamos começar a adicionar tudo aqui. Então, primeira coisa, primeiro, estatísticas de jogadores, quero dizer, prefs de jogadores, ponto, obter, flutuar. Temos que fornecer a chave correta. O que é isso? O que aconteceu, desculpe por isso. Então precisamos adicionar uma vírgula, e aqui vamos precisar adicionar a chave. E qual é a chave? É a posição do jogador X. Vamos colá-lo aqui. Então vamos duplicar esta linha novamente, duplicá-la novamente, e certifique-se de invalidar o termo. Precisamos remover a última vírgula. Então y, z, e isso é tudo entre ele. Para fazer. Então vamos salvar tudo isso. Vamos entrar em atualização e criar uma chave para salvar e carregar, ou duas chaves para salvar toda essa descarga. Então e a atualização. E aqui estamos indo para ir em frente e verificar se entrada e essa entrada novamente. Abaixe a chave. Estou tão animada que posso apertar os botões corretos. Então o keycode usará o I porque já estávamos fazendo isso. E o gerente de missões e quer saber? Porque já estamos fazendo isso e o gerente de custos, deixe-me copiar as duas linhas. Coloque-os aqui. E eu não recomendo o verdadeiro código médio de copiar e colar. E vamos carregar os dados. Então carregue os dados de segurança de dados usando R, usando tudo salvar tudo de volta no Unity que C não precisa compilar. Mais uma vez, vamos caminhar até as águas aqui. Então lá vamos nós. Vamos apertar a tecla I. Dados foram salvos, voltar, data, morrer direito, data. De qualquer forma, agora queremos carregar os dados. Apertamos a tecla O. Sim, lá vamos nós. Quão legal é isso? Nosso jogador está sendo transformado automaticamente para o outro lado da página do, da sala do mapa de mosaico, você quiser chamá-lo, apenas usando chaves. Espero que estejas a gostar, espero que estejas a cometer todas as tuas mudanças. Alguns de vocês teriam olhado para isto. Meu Deus, esqueci-me. Não tenho me comprometido por sete vídeos seguidos, mas este é um bom lugar para começar. Vemo-nos no próximo vídeo onde guardaremos as estatísticas dos nossos jogadores. 82. Como carregar de jogadores: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, quando executamos nosso jogo, observe duas coisas. As estatísticas aqui para tudo e o curandeiro aqui em cima, ou você pode acompanhar isso na hierarquia. Quando tivemos o carvalho, não somos apenas o transportado para um lugar diferente, mas também temos as estatísticas de que temos este ato de prata começou a defesa, o HP atual, o XP atual mudou e o curandeiro desapareceu. Ela não está mais ativa. Então não vamos perder mais tempo. E vamos começar a salvar e carregar estatísticas do jogador. Jogador final, talvez. Vendeu tempo para salvar alguns prefs de jogadores. Como é que vamos fazer? O primeiro pedaço de dados que queremos salvar? Claro que estará salvando tudo fica salvo. método de dados é o, se o jogador ou qualquer personagem com as estatísticas do jogador é realmente ativo e a hierarquia. Então vamos criar um loop for. E eu igual a 0, eu atravessa o comprimento do ponto de estatísticas do jogador. E também vamos aumentar em um cada vez que as estatísticas dos jogadores estiverem aqui. Então, lá vai você. Temos uma série de estatísticas de jogadores disponíveis, então não precisamos realmente acessá-lo. Em qualquer caso, vamos verificar se as estatísticas do jogador na posição i dot GameObject ponto ativo na hierarquia. Se for, então vamos acessar as prefs do jogador. Vamos definir o número inteiro. E que tipo de chave precisamos dar a ela? Embora porque eles têm estatísticas de jogador, isso significa que eles são um sublinhado de jogador, nós vamos concatená-lo com o nome do jogador. Então isso vai ser, desculpe por adicionar isso. Isso vai ser as estatísticas do jogador na posição I. Esse é o nome do jogador. Lá vamos nós. Então, com o nome do jogador. E vamos adicionar finalmente, sublinhar ativo. Então isso irá diferenciar o jogador por, em primeiro lugar, usando obter o jogador no final ou no meio o nome do jogador. E finalmente, definimos como se estivesse ativo ou não. Então aqui se ele está ativo na hierarquia, então é um. Guarde isso. E você sabe o que fazer e aqui. Então, se quiser, pode continuar sem mim. Lá vamos nós. 0. Guarde isso. Ok, ótimo. Agora, as próximas coisas que queremos fazer aqui são salvas várias prefs de jogadores que temos. Então, por exemplo, queremos salvar, digamos o nível. Então o jogador prefs dot set nth porque Lovell são inteiros. E vamos em frente e usar o jogador e o nome. Cole aqui. E então vamos concatenar com ele algo diferente que queremos representar os níveis. Então é nível e vai ser as estatísticas do jogador na posição eu pontarei a esquerda. Então nível de jogador. Ótima. Mais uma vez, vamos duplicar isto. É o jogador pelo nome, e em vez de nível temos a XP atual. Então vamos salvar o raio x atual. E deixe-me, deixe-me apenas fazer este XP atual capitalizado. E você já sabe quais são as estatísticas do jogador. Vamos salvar todos eles. Então vou usar a magia da edição para nos levar ao lugar onde terminei todo esse trabalho. Então, vemo-nos daqui a pouco. Ok, bem-vindo de volta. Espero que tenha feito esse mini desafio. Como você pode ver, eu defini todos os inteiros e também as cordas que você pode ter chegado a este ponto e enfrentar este desafio você mesmo. Então, como você pode ver, temos tudo em Max, HP atual, HP maxima atual maneira, destreza defesa, nome da arma, nome armadura e poder da arma, armadura defesa. E salvei o poder da arma e a defesa da armadura. Mesmo baixo. Isso deve ser óbvio pela arma que equipamos. Mas porque talvez em algum momento você queira adicionar, digamos power-ups para sua arma ou talvez, eu não sei, ir forjá-la em algum lugar, aumentar o poder das armas, a defesa do armistício. Então você também pode economizar aqui. Ok, ótimo. Agora é hora de carregar todos esses dados. E novamente, vamos ter uma longa lista. Então o que eu vou fazer é eu vou apenas fazer as primeiras linhas e então eu vou dar-lhe a oportunidade de terminar por si mesmo. Então, primeiro de tudo, precisamos criar um loop. Então vamos pegar isso aqui, roubá-lo do cofre, colá-lo nos dados de carga. E vamos começar. Veja o que precisamos fazer aqui. Ok, então estamos checando se o jogador prefs Get Int e estamos usando, e vamos usar, vamos copiar a chave aqui. E vamos colá-lo aqui. Então estamos recebendo o número inteiro. Se for igual a 0, significa que o jogador não está ativo. Então estatísticas do jogador na posição I, pensamento jogo objeto ponto definido ativo como falso. Senão. Estamos definindo isso como verdadeiro. Agora podemos ligar e desligar o jogador se ele estivesse ligado e desligado quando salvamos o jogo. Então agora é hora de carregar as estatísticas do jogador. Então a maneira que nós vamos fazer isso é nós vamos para as estatísticas do jogador, vamos acessar a posição em i dot jogador. Digamos, lá vamos nós. Então, primeiro, talvez baixemos o nome. Então nome igual a prefs do jogador. Então, os revendedores dos jogadores. E vamos pegar uma corda que salvamos o jogador. Também não salvamos o nome, então nível de camada ponto, obter. Desculpe por isso. E eu estava pensando que foi por isso que me levou. Eu estava pensando, o que, o que nós realmente precisamos dele? Nós salvamos o nome. Por que guardamos o nome? Então talvez pudéssemos salvar o nome. Por que não? - Não? Uma péssima ideia. Vamos colar a chave aqui, e isso é tudo o que precisamos fazer. Então eu vou usar novamente o poder da edição, mas antes disso, eu vou te ensinar esse truque bacana. Então vamos copiar tudo isso, colá-lo aqui. E basicamente, tudo o que precisamos fazer é pegar isso, movê-lo para a direita em um sinal de igual ou sinal e remover estes e, em seguida, obter um int. Não sei se é mais rápido. Acho que é mais rápido. Vejo-te daqui a pouco, por isso espero que não demore muito. Levou-me, não sei. Talvez 30 segundos, um minuto, dois minutos, e amadurecer de qualquer maneira, vamos salvar tudo isso e vamos testar tudo isso em Unity. Então vamos voltar para o nosso jogo, e agora vamos em frente e executar o nosso jogo. Vamos levar o nosso jogador para algum lugar. Vamos dar-lhe um pouco de experiência. Então 68, XP atual, mês atual, 33, Eu estou no HP atual 33, atual 10, 22, destreza, digamos que é 45, defesa 88. Eu quero lembrar esses números, mas espero que você lembre. E vamos equipar algumas armas. Então vá ao Items, use para Jimmy, use para Sarah aquele machado dourado. E se a arma está funcionando, tenho certeza que o fazendeiro está trabalhando. E vamos ver. Assim como você pode ver a arma equipada no jogador para o curandeiro, vamos ver o que vamos fazer. E para a curandeira, vou desligá-la. Então eu vou remover o curandeiro na hierarquia. Então vamos testar se estamos economizando ou não. E finalmente, vamos acertar o nojento. Então lembre-se desses números para que não fiquemos baratos. Acho que temos tudo preparado para o jogador. Então, esses números são os que queremos. Número irá bater I novamente para salvar os dados. Nós vamos voltar. Vamos comandar o jogo. Então agora, quando carregamos, podemos ver que não temos nenhuma arma equipada ou nome de arma, nem no jogador nem nos curandeiros. Então, quando apertamos a tecla O, lá vamos nós, Somos transportados a arma equipada como a prata atua com um poder de arma com 68 XP atual com tudo configurado e o curandeiro desapareceu, mas ela ainda tem o machado do cólon. Então, como você pode ver, estamos salvando os prefs do jogador. No entanto, há um pequeno problema. Se você notou que a arma equipada, onde está? Não podemos encontrá-la. Então, como vamos armazenar itens enquanto os itens são do tipo, gerenciador de itens, eles são listas. Como vamos salvá-los? Bem, no próximo vídeo, vamos encontrar uma maneira muito inteligente de fazer isso. Então, cometa as tuas alterações, e vejo-te no próximo vídeo. 83. Como salvar listas de itens usando o Ativos com itens: Whoa, whoa, whoa, whoa, whoa. Eu sei que este é um vídeo longo, mas sempre que você tem recursos limitados, você precisa criar algo muito inteligente para cantar, contornar. Então, atualmente, quando executarmos nosso jogo, você verá que quando apertarmos a tecla M, vamos para os itens. Nós não temos nada. Se eu fechar o menu, eu comi o carvalho. Isso significa que eu carrego os dados. Você pode ver que não pegamos nenhum dos nossos itens. Mas quando vamos ao menu de itens, você pode ver que temos um monte de itens que podemos usar no Jimmy, na Sarah, e assim por diante. Então não vamos perder mais tempo e vamos começar. Ok, então agora é hora de salvar nosso inventário. Por inventário, queremos dizer que precisamos salvar nossos itens. E como vamos salvar nossos itens? Bem, nós só temos os prefs do jogador para o inteiro, a corda e o flutuador. Como vamos salvar itens, que são objetos complexos que têm muitas características e digamos diferentes tipos de variáveis dentro deles que precisamos salvar. O que vamos fazer. Vamos ser muito espertos sobre isso. Criaremos o script de ativos de um item. E esses itens como um script serão colocados no Game Manager e ele irá conter todos os itens possíveis que podemos ter um jogo de hora. Em seguida, vamos criar um método que usando uma string passa por esses ativos de item, obtém o item e, em seguida, adicioná-lo ao inventário sempre que carregar. Não entendo nada, nem eu. Vamos começar e ver o que podemos fazer sobre isso. Então, a primeira coisa, primeiro, criar o ativo de um item. Então, vamos para os scripts, vai para o onde devemos colocá-lo no gerenciador de itens de gerenciamento nível. Isso é colocá-lo aqui. Claro, por que não? Clique com o botão direito em criar script C-sharp Itens. Ativos, pressione Enter, aguarde a compilação, e agora eles foram adicionados ao gerenciador do jogo. E vamos em frente. Aplique apenas o item de ativos para que possamos aplicar as alterações à pré-fabricada, apenas as que queremos. Nós não queremos aplicar o gerente de missões também, você sabe, nós podemos aplicar tudo isso, mas no outro, os gerentes, os outros gerentes de jogo terão os mesmos custos. Podemos não querer isso. Mas de qualquer forma, vamos nos concentrar nas tentativas de tarefa. Abrimos o gerente de ativos. Primeiro de tudo, vamos fazer disso um padrão simples porque não queremos que ele seja replicado em qualquer lugar. Então, itens estáticos públicos, ativo, instância e, em seguida, iniciar se a instância é diferente de nulo, e a instância é diferente deste, então vamos destruir este objeto. E então, então, vamos apenas definir a instância igual a isso. Ok, então isso vai garantir que nós só temos um item, ácido, nós não temos muitos deles. Segundo, precisamos dos itens. Então, vamos criar um campo serializado do gerenciador de itens de tipo. Vai ser uma matriz porque temos vários itens e vai ser chamado de itens disponíveis. Labile. Guarde isso. E nós vamos criar o método irá remover a atualização, tenho certeza que não vai usá-lo, como dizemos toda vez e, em seguida, usá-lo. Vamos criar um método que retorna o gerenciador de itens ou o script Python. E ele vai ser chamado get item asset. E ele vai levar em uma string, que vai ser o item para obter o nome. Então ele vai ser o item que queremos obter usando seu nome. E vamos usar para cada um. Por isso, vamos estar a percorrer todos os itens disponíveis. Então item e itens disponíveis. E se pegarmos um item, o nome do item é igual ao item para obter, então vamos retornar o item. E se terminarmos este ciclo inteiro e não encontrarmos o item, como sabem, precisamos ter um retorno. Vai retornar nulo. Guarde isso. Sei que passei por isso muito rápido, mas são coisas muito básicas. Então vamos guardar isso. Voltaremos para a Unidade. Vamos abrir os itens disponíveis e vamos para os itens Prefabs. Vá ao gerente. Vamos bloquear isso, selecionar todos eles, arrastá-los para os itens e não para a lista dos itens disponíveis. E lá vai você. Salvamos tudo isso. Podemos até aplicar as mudanças e agora temos todos os itens, ativos disponíveis. A próxima coisa é realmente salvar nossos itens e os dados salvos do gerenciador de jogos. Então, vai ser parte do seu desafio. E nós vamos salvar nossos itens e eu vou te dar o processo passo a passo. Então você precisará definir a contagem de nossa lista de itens usando o set end. Você precisará percorrer todos os itens e definir o nome dos itens e a ordem correta. Por ordem correta, quero dizer, vamos passar por quatro loops. Vamos definir a string e a chave tem que ser representada pela posição I. Então, em cada item. E deixe-me explicar de uma maneira melhor. Vamos ter cada item porque já temos o item e o nome para torná-lo único, você precisará configurá-lo ou representado usando a posição como estamos passando pelo loop for. E, finalmente, você também precisa economizar a quantidade do item que temos. Não há necessidade de verificar se é empilhável, certifique-se de que a quantidade é maior do que um e defina o número inteiro. Então eu te dei tudo, pausar o vídeo agora e ir fazer o desafio. Oh, ok. Então, como você se deu com esse desafio muito, muito difícil aqui, nós vamos em frente e chamar o jogador prefs. E porque já temos um monte de codificação aqui, vamos escolher todo o repreender. Sim, tudo, tudo, tudo. Vamos terminar, exceto pela posição que vamos clicar com o botão direito do mouse. Vamos clicar nas ações rápidas e refatoração, e vamos extrair este método. Então lá vamos nós. Agora, isso vai ser chamado de ter estatísticas de jogador salvar isso. Então, como você pode ver agora, nós só temos uma linha para representar salvar todas as estatísticas do jogador. Podemos minimizar isso. Podemos até fazer isso para o cargo. Então clique com o botão direito do mouse em ações rápidas e refatoração, método de extração, Salvar, posição do jogador, Enter. E então, como você pode ver, nós temos um método muito limpo e nós vamos fazer um monte dessas ações rápidas e refatoração de métodos mais tarde, como você verá, você pode facilmente fazer isso no gerenciador de menus. Então eu recomendo que você passe por cima especialmente o jogador. Então, como você pode ver, o jogador e a atualização fazem um monte de coisas. Então este é o lugar perfeito para começar a refatorar você em métodos. Então, temos uma atualização clara. Nunca gosto de me atualizar assim. Eu sempre gosto de refatorar. E sempre que você tem um monte de código, como dados salvos, o que ele faz? Você tem que olhar através de todo o código. Agora podemos ver claramente os dados salvos, salva a posição do jogador, salva as estatísticas do jogador. Excelente. De volta à tarefa em mãos. Vamos para as prefs dos jogadores. Vamos definir o fim. Vamos salvar a contagem da lista. Então vai ser o número sublinhado, sublinhado itens. Esta é a chave e o valor será o inventário. Instância de ponto, ponto obter item, ponto obter itens, lista, contagem de pontos. Guarde isso. Em seguida, vamos criar o loop for. E vai estar no inventário Porta instância ponto cutlass, ponto count. E vamos adicionar um de cada vez. E aqui estamos indo para primeiro de tudo obter o item e para uma variável. Então, o item é do tipo gerenciador de itens, o item no inventário. E vai ser igual à instância de ponto de inventário, ponto obter lista na posição. Então, agora que temos uma referência a ele, a próxima coisa a fazer é definir as prefs do jogador da string usando, digamos que vamos chamá-lo de itens ou sublinhado do item. E vamos concatenar com a posição. Então agora é único. E finalmente, vamos adicionar um sublinhado e garantir que sabemos que é o item 1, 200, qualquer que seja o nome. E o valor será o item no inventário. Nome do item. Lá vamos nós. Então agora temos o nome do item. E então vamos verificar porque precisamos obter o valor. Vamos verificar se o item no inventário é empilhável. Se é, whoops, desculpe, se for, então nós vamos salvá-lo usando o jogador prefs ponto definido e sublinhado concatenado com um I. E espero que eu não esteja indo muito rápido. Estou indo rápido demais? Se estou, por favor, me pare. Obviamente, você não pode. Mas se você quiser, você pode sempre, sempre consultar a seção de perguntas e respostas sob os vídeos. Então, o que estamos economizando? Esqueci-me de todas as contas. Então o item o item no inventário, a quantidade que eu digo contar, FMI, quantidade, grade. Então agora estamos economizando, estamos primeiro verificando a contagem. Estamos salvando o número de itens que temos. Estamos fazendo loop em todos os itens no inventário. Estamos salvando o item em cada posição e para o item variável no inventário, estamos salvando esse nome desse item usando string set com uma chave exclusiva e aqui que é representado pelo nome do item e eu, novamente, por que estamos salvando o nome ? Como os ativos de itens, criamos um método que obtém um ativo de item usando o nome. Então, isso será usado mais tarde quando carregarmos. E finalmente, onde estamos? Ok, então, e finalmente nós estamos verificando se ele é empilhável e estamos economizando a quantidade que temos para também carregá-lo. Agora, o próximo passo óbvio é também carregar esses dados. Então vamos deixar isto um pouco mais limpo. Então vamos refatorar este método de extração e ele vai ser chamado de posição do jogador de carga. Todos estão carregando as estatísticas do jogador. Então Extrair Método. E agora vamos começar, deixem-me só os mínimos, está bem? E agora você pode ver claramente o que fazemos em dados de carga? Estamos carregando a posição do jogador, carregando estatísticas do jogador. É muito limpo. É muito bom. Vamos carregar nossos itens. Como é que vamos fazer isso? Primeiro, vamos criar um loop. Um loop. Se você quiser, você pode pausar o vídeo agora e tentar carregar os itens você mesmo. Eu recomendo. É muito importante para você tentar isso sozinho. Então pausar o vídeo agora mesmo, ir para o jogador desafio prefs dot GetInt. E você pode realmente começar a fazer isso em qualquer ponto que você quiser. Então deixe-me apenas pegar o número de itens. Isso é muito crucial que você não estrague tudo. A chave. Cole aqui, contagem de pontos. E eu nem sabia, desculpe por isso. Temos de ter a certeza de que sou menos do que isto e estamos a aumentá-lo. Eu mais, mais. Ok, ótimo. Agora vamos criar uma variável que vai ser o nome do item, e ele vai ser igual aos prefs player, a string get. E vamos usar sublinhado do item, copiar isso, colá-lo aqui, e lá vamos nós. Guarde isso. Então, agora que temos o nome do item, vamos criar o item. Então o gerenciador de itens vai ser o item a adicionar. Ele vai ser igual aos itens Ativos ponto instância, ponto obter ativo item usando o nome do item. Guarde isso. E também vamos criar uma variável para o valor do item e vamos defini-la como 0. 0. Ótimo, então o que estamos fazendo aqui? Estamos carregando os prefs do jogador, obter int, o número de itens. Estamos a usá-lo para percorrer o foreach. E em cada posição que estamos, primeiro lugar, recebendo o nome. Depois de obter o nome, estamos recebendo o ativo e, em seguida, estamos recebendo a quantidade, e então estamos verificando o jogador prefs ponto tem uma chave que é quantidade V e isso deveria ter sido quantidade não nome. Desculpe por isso. Vamos copiar o esqui aqui, colá-lo aqui. Então, se isso acontecer, então o valor do item é igual aos prefs do jogador. Isto é exactamente a mesma coisa, excepto o Husky. Nós pegamos o int. E nós nos fechamos, guarde isso. Ok, então agora nós também estamos recebendo o valor para mim, separar estes e disse isso. E finalmente, finalmente, precisamos adicionar esses itens ao inventário. Então inventário, por exemplo, pensado em itens. E adicionamos o item a adicionar. E não só isso, precisamos também verificar se o item a adicionar como empilhável e onde está e a quantidade do item é maior do que um, então vamos obter o item para adicionar valor em dólar e ele vai ser igual à quantidade do item. Guarde isso. Então, quais são os passos finais depois que criamos o valor do item, verificamos se ele realmente tem um valor, verificando a chave. Se tiver, então vamos definir o valor do item para o valor do item e vamos para o inventário, irá adicionar o item para adicionar. Vamos verificar se é empilhável. Se for, então vamos verificar se tem uma quantidade maior que uma. Se isso acontecer, então o valor do ponto do item é igual ao valor do item. Então vamos salvar isso e vamos ver se alguma coisa funciona e nosso ganho, algo está errado. E está me dizendo que errei. O que eu perdi? O que é isso é o jogador de poupança. Opa, o que é isso? Deveria idealmente, ele, eu não deveria excluí-lo? Vamos deletar e ver o que acontece. Não tenho certeza do que era isso. Esperemos. Não, eu não. Acho que não. Deixe-me checar de novo. Então não temos torta. Pense Não, não há nada de errado. Espero que, se houver, então saberemos, guarde isso. Volte para a Unidade. Nada mais errado. Executar o nosso jogo, acertar o, onde está? Vamos ver que itens temos. Então, itens atualmente não temos nada. Então, quando pegamos esses itens, lá vamos nós. Nós pegamos esses itens. Itens. Aqui vamos nós. Estes são os nossos itens que vamos acertar I, por isso foi salvo. Excelente. Vamos parar de comandar o jogo. Vamos executar o jogo de novo. Verificamos os itens. Nós não temos nada. Saímos, apertamos a tecla O. Lá vamos nós. Então agora podemos ver que os dados foram carregados. Nós não pegamos nenhum item, certo? Todos os itens estão aqui. Eu sou itens. Quão legal é isso? Então, mesmo que não possamos salvar itens usando prefs de jogadores, criamos uma maneira muito, muito inteligente, contornando isso e realmente salvando nossos itens usando os itens solicitados. Quão legal é isso? Estou tão feliz por isso ter funcionado. É uma maneira incrível de salvar diferentes tipos de dados com o mínimo. E mesmo que você possa pensar que os prefs dos jogadores são muito simples e limitados, mas como você viu, podemos usá-lo para muitas coisas. Então eu espero que você tenha gostado deste vídeo. Espero que esteja gostando do curso. Espero que queira um instrutor. Se você sabe o que fazer, por favor vá rever o curso. Pode significar muito para mim. Isso me ajudaria muito com Procreate, mexendo com o curso. As pessoas verão que é um bom curso. Ele vai entrar lá. Vai se beneficiar do que estou ensinando e isso vai me ajudar muito. Muito obrigada. Vejo você no próximo vídeo. Não se esqueça de confirmar suas alterações. 84. Seção 12: áudio na Unity: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, estamos investigando o áudio. O que, como adicionar uma fonte de áudio? O que é um ouvinte de áudio? As muitas, muitas músicas de fundo e efeitos sonoros que adicionamos. Agora, quando executamos nosso jogo, sei que você não pode ouvir nada, mas se pressionarmos a tecla F, lá vamos nós para ouvir o som de botões descartados. E à medida que você vai até o fim, certifique-se de que você ignora tudo sob a música porque é muita informação que nós realmente não precisamos fazer as mudanças. Então, quero dizer, podemos ignorar isso, mas até você chegar lá, não vamos perder mais tempo e vamos começar. Oh, ok, bem-vindo de volta. Então agora queremos adicionar um pouco de sabor ao nosso jogo, e fazemos isso adicionando áudio. Então o áudio é uma parte muito central quando se trata de jogos e especialmente RPGs. Então, como vamos adicionar música? Primeiro de tudo, precisamos entender o que todas as suas necessidades para estar disponível. Precisa de uma fonte. Então você precisa de algum tipo de pássaro, por exemplo, uma fonte. E então você vai precisar de um ouvinte, que às vezes é você. Então onde todos os ouvintes e as fontes. Primeiro de tudo, vamos falar sobre o ouvinte. Então o ouvinte está na câmera principal. Você deve ter notado que ao cavar os componentes da câmera e assim por diante, você notará que temos um ouvinte de áudio. E se sairmos do 2D, eu coletei para o botão aqui, você verá que temos o ouvinte de áudio bem aqui na câmera. Reduza o zoom. Podemos fazer a câmera, mas maior. Infelizmente, podemos ver a extensão do ouvinte, mas o ouvinte está na câmera e é onde ouvimos qualquer tipo de som ou música que aparece, a propósito, talvez você não tenha notado, mas é muito legal para olhar para o nosso jogo 2D a partir desta perspectiva e a forma como fundos mais longo. Agora é hora de pensar sobre como vamos adicionar 0, 2. Então eu lhe dei algumas músicas aqui. Você verá que eu forneci um arquivo para a música e um arquivo para os efeitos sonoros. Então vamos criar uma nova pasta nos ativos. E vai ser chamado de áudio. Vamos clicar duas vezes aqui e vamos arrastar a música e efeitos sonoros e aqui. Então, como você sabe, você pode adicionar seus próprios efeitos sonoros e música de arte de jogo aberto. Tudo o que estou usando aqui é de lá. Então eu recomendo que você tome um tempo, vá procurar alguma música, alguns efeitos sonoros, adicione o seu próprio que você quer que seu jogo se sinta como, para soar como também. Que tipo de objetos você deseja interagir com que fazem um som. Talvez queiras fazer um som de bombeamento. Toda vez que seu jogador colide com algo, escolha é sua, vá em frente. Então podemos ver aqui que temos várias músicas para o caminho, o escuro. Alguns deles serão para as lutas de chefe para o tema da cidade. E também temos efeitos sonoros aqui. Então, por exemplo, temos o item de descarte, o monstro de fato de fogo, e talvez adicionemos alguns mais tarde à medida que avançamos pelo curso. Mas, por enquanto, vamos adicionar uma fonte de áudio. Como adicionamos isso? Bem, podemos simplesmente arrastar, por exemplo, o tema do talento para a hierarquia. E você pode notar aqui a contagem agora como um componente ou tem um componente que é a fonte de áudio onde podemos mudar o volume, o tom, as configurações de som 3D, embora estejamos em um jogo 2D, não vai usá-lo. E também temos opções aqui para silenciar por efeito de passagem, ignorar efeitos de ouvinte, assim por diante e assim por diante. E um deles está ligado. E os dois mais importantes são o loop onde quando a música termina, nós repetimos e ela começa de novo. Ou podemos tocar acordado, que vai tocar o som assim que a cena carregar. Então, se agora executarmos nosso jogo, espero que você possa ouvir através do microfone, mas há som saindo do jogo e podemos ajustar o volume e desligá-lo. Agora, se desligarmos a peça, executamos o jogo. Lá vai você. Não há som para ser ouvido. Agora. Tudo está funcionando. Você pode dizer, ok, bem, ótimo, na cidade, vamos adicionar o tema da cidade. Muito bom, mas há um pequeno problema. Como paramos isso? Bem, vamos sempre para a cena do crime? Está bem. Como é que um jogador que está a jogar o nosso jogo, que não tem acesso aos objectos na hierarquia? Bem, nesse caso, precisaremos de um antigo seu empresário. Então vamos apagar o tema da cidade aqui. Remova isso. E nós vamos entrar em nossos roteiros. Vamos criar, ou podemos criar na verdade, e os gerentes criarão um novo script C-sharp, que será o Audio Manager. Hit Enter também criará um objeto de jogo vazio e a hierarquia, que será o Gerenciador de Áudio. E podemos separá-lo pelo espaço. Podemos redefinir a posição para 00. Você não tem que fazer isso. Gosto de fazer isso. E nós vamos arrastar o gerenciador de áudio e para o gerenciador de áudio. Aqui também irá criar dois objetos de jogo vazios, que vão ser a música e os efeitos sonoros, ou os efeitos para abreviar. E então vamos para a pasta Áudio. Arrastaremos tudo isso, exceto os links. Do jeito que escolhi todos eles. Eu cliquei no primeiro, mantive a tecla Shift pressionada, cliquei no último, e para remover o link, mantenha pressionada a tecla Control, clique neste. Isso é tudo que você precisa fazer. Arraste-os para a hierarquia. Isso criará uma fonte de áudio para cada música, música, o que quer que você queira chamá-los e certifique-se de desligar a reprodução acordada, a menos que você queira que seus tambores de ouvido explodam. Então vamos arrastá-los para a música e vamos fazer o mesmo para os efeitos sonoros. Não sei o que é esta área de trabalho. Bem, arraste-os e aqui vamos desligar a peça acordada e vamos arrastá-los como filhos do efeito sonoro. Então agora vamos salvar isso quando executarmos nosso jogo. Lá vamos nós. Não ouvimos nada a não ser que liguemos um deles, mas não queremos que aconteça por conta própria. Queremos fazer com que aconteça através do nosso guião. Então vamos em frente e abrir o script e começar a codificar como k. Então, o que precisamos? E aqui, antes de tudo, precisaremos de uma referência a todos eles. Então vamos criar dois campos serializados, vamos criar uma matriz de fonte de áudio para conter toda a nossa música ou os artefatos e toda a nossa música. Então tudo isso será fontes de áudio e eu vou chamá-lo para referência extra, a música de fundo. Assim saberemos que não é apenas música, é música de fundo. Em seguida, vamos criar uma instância deste objeto. Então, entraremos em público, estático ou seu gerente, ou sua instância de gerente. E esta instância vai ser igual a isso. Guarde isso. E não queremos destruir este objeto em carga. Mais tarde, talvez precisemos ter certeza de que este é um padrão singleton porque não queremos duplicatas, não temos muitos sons ao mesmo tempo. Vamos, por enquanto, focar apenas em Criar. E agora vamos criar um método que vai tocar um certo efeito sonoro baseado em um parâmetro que enviamos, que vai ser um inteiro. Antes de fazermos isso, vamos entrar aqui. No Audio Manager, devemos ter duas listas. Então vamos arrastar Will antes de tudo, confinamento. O Gerenciador de Áudio arrasta a música e a música de fundo. E vamos arrastar os efeitos sonoros e para os efeitos sonoros. Vamos salvar isso. E eu vou te dar um desafio. Então eu estava tão ansioso para coletar todos eles agora, criar um método que leva um argumento inteiro sobre qual música deve tocar. Use esse argumento para reproduzir o efeito sonoro. Claro, acessando o array usando o parâmetro que acessamos. E certifique-se de que a entrada nunca está fora dos limites da matriz de efeitos sonoros. Então, digamos que atualmente temos nove. Então lá vamos nós. Temos nove opções. Então não queremos uma entrada de, digamos 100 e não está disponível e efeitos sonoros. Portanto, esta será uma solução ou um problema para o qual ela precisará encontrar uma solução. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como conseguiu tudo isso? Sei que não te ensinei a tocar músicas, mas neste momento do curso, acho que já tens a capacidade de te tornares num solucionador de problemas sozinho. Espero que não se sinta enganado. Acabei de te deixar. Então vamos criar um vazio público, jogar como efeitos. E ele vai tomar em um parâmetro inteiro para que o som para reproduzir. E porque não queremos que ele esteja fora dos limites, vamos verificar se o som para tocar é menor do que o comprimento do ponto dos fatos ASA. Então aqui vamos acessar a matriz de sufixos no som da posição para reproduzir essa reprodução. Então é bem fácil. Não acho que muitos de vocês foram tropeçados se estivessem e não tivessem certeza de como tocar um som, poderiam ter entrado na documentação da Unity, que espero que tenham feito. Espero que não tenha ficado apenas olhando para a tela, pensamos que eu deveria fazer tudo. Então, com isso feito, vamos salvar isso. Também precisamos de uma atualização para testar isso. Então nós vamos verificar se temos um ponto de entrada, obter chave para baixo, que obter chave para baixo. Keycode, o que devemos usar? Acho que o F não foi usado para nada. Ou talvez o P de qualquer maneira, vamos mantê-lo em F. e vamos tocar o efeito sonoro na posição. Vamos ver em que posição queremos jogar. Então, a partir de 0, se quisermos três itens de descarte, claro, vamos descartar um item, salvar isso, voltar para o Unity. Execute nosso jogo, aperte a tecla F. Deixe-me aumentar o som. Talvez consigas ouvir isso. Então, como você pode ver, este é o som de descarte de ervas daninhas, mas pelo menos temos indicação do que está acontecendo. Então eu espero que você tenha gostado deste vídeo. Eu recomendo que antes de você ir para o próximo, esse é o nosso teste para fora de tudo. Tente reproduzir música no despertar, tentando desligar a música e acordar. No próximo vídeo, vamos aprofundar a forma como podemos tocar a música e pará-la e usar diferentes em cenas diferentes. Então, vejo-te depois. 85. Como tocar música: Oh, hey, bem-vindos de volta, meus colegas desenvolvedores de jogos neste vídeo, quando rodarmos o nosso jogo, se apertarmos a tecla F, lá vai você. Você pode ouvir a música tocando em segundo plano. Então, neste vídeo, vamos aprender a tocar música e, mais importante, como podemos evitar que várias músicas interfiram umas com as outras. Então não vamos perder mais tempo, e vamos começar. Certo, agora podemos tocar efeitos sonoros. É hora de tocar música de fundo. Então vamos abrir nosso roteiro aqui. Vamos rolar para baixo e vamos criar um método para tocar a música de fundo. Tão vazio, tocar música de fundo. E também vai tomar em um parâmetro que vai ser a música para tocar. O que é isto? Certo, o que vamos fazer aqui? Bem, como fizemos no efeito sonoro, vamos verificar se a música para tocar é menor que o comprimento do ponto da música de fundo. E nós vamos simplesmente acessar a música de fundo na posição da música para tocar, adotar a reprodução. Ok, então você pode estar pensando, bem, ótimo, vamos em frente e testar isso no nosso jogo. Mas você precisa perceber algo. E se quisermos tocar um som diferente? Bem, o que acontece? Então? Você vai ter que sons em cima um do outro. Um tocando efeitos sonoros. Isto não é um problema porque os efeitos sonoros são muito curtos. Raramente você tem um efeito sonoro muito longo. Então você viu como quando jogamos o botão de descarte, é um segundo de tempo. E se tivermos, por exemplo, descartamos dois itens ao mesmo tempo. Ou digamos, por exemplo, não sabemos, pegar um item e descartar item ao mesmo tempo, não será tão ruim. Mas se começarmos a tocar uma música enquanto a primeira não parar, isso vai ser um grande problema. Então, antes de tocarmos qualquer música, primeiro precisamos parar a música. E este é um método que o sapato vai criar. Então, por favor, pare a música se sabe qual era a referência. Se você não criar um método que pare toda a música, você precisará pesquisar como você pode fazer isso em cães Unity, eu adicionei isso porque eu não valorizei no último vídeo e usar o loop ou foreach para percorrer toda a música e parar todos eles porque não temos certeza de qual deles está jogando atualmente. Então pausar o vídeo agora mesmo e vá criar esse método. Oh, ok, bem-vindo de volta. Então aqui vamos criar o, parar a música. Se clicarmos aqui, podemos gerar o método imediatamente. Lá vamos nós. Quão legal é isso? Nós economizamos cerca de 23 segundos. Isso é ótimo. Tempo é dinheiro. Então, para cada fonte de áudio, porque estamos passando por uma música em segundo plano na música. E é do tipo fonte de áudio. E aqui vamos pegar a música e vamos pará-la. Então isso é muito óbvio. Não queremos que jogue. E agora, sempre que queremos tocar uma música, qualquer música, paramos a que já está lá, e depois seguimos em frente. Então vamos testar isso. Oh, eu quis dizer aqui, se conseguirmos uma entrada e tirarmos a chave ou quer saber? Vamos apenas testá-lo. E aqui. Tocar música de fundo. Qual deles devemos jogar? A última às cinco, porque é a contagem e estamos na cidade, não estamos? Então cinco, guarde isso em Unity. Aguarde a compilação, execute o nosso jogo. Qual era o botão? Foi eu disse o espero que salve o jogo. O que era isso? F Ok. Desculpe. Então lá vamos nós. E toda vez que eu pressionar Enter, você vai notar que ele pára e toca novamente. Vamos tentar alguma coisa. Vamos comentar isso e ver o que acontece. Então, agora, se fizermos o nosso jogo, tínhamos a tecla F. Vamos tentar acertar de novo. Deixe-me diminuir um pouco o som. Acerte de novo. Bem, porque é a mesma música, obviamente está parando. Então vamos dizer que queremos tocar o, tocar música de fundo na posição. Digamos que para salvar isso de volta no nosso jogo, executar o jogo, bater no F. Então você pode ouvir que temos duas músicas em cima da outra. Então, um livre parar a música. Deveríamos ouvir apenas uma música tocando, uma única música tocando. Não tenho certeza se você consegue ouvir. Lá vamos nós. Só temos o avião Battle Music porque paramos todos os outros sons. Então agora nós nos protegemos contra múltiplos antecedentes para música tocar juntos. Espero que goste. Espero que você esteja cometendo todas as suas mudanças e eu vou vê-lo no próximo vídeo. 86. Como reproduzir áudio do código: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos adicionar efeitos sonoros. Vamos adicionar música de transição. Então, agora, quando pegarmos itens, vai ser muito fraco. Espero que estejas a ouvir. Lá vamos nós, para que possamos ouvir um som quando pegamos um item. Se apertarmos a tecla M, vá para os itens. Se usarmos um dos itens do Jimmy, lá vamos nós. Você pode ouvi-lo. Se descartarmos um dos itens. Lá vamos nós, você também pode ouvi-lo. Vamos fechar o menu e nós apertamos o botão fechar trabalho mesmo que seja uma linha de código. Quando formos para a próxima cena. Lá vamos nós, você pode ouvir a mudança de música e para uma melodia muito agradável que me lembra de quais são três, se você já jogou esse jogo, é incrível. Então, com isso dito, não vamos perder mais tempo e vamos começar. Ok, então agora é hora de levar nosso áudio tocando para o próximo nível. Não queremos pressionar um botão para começar a tocar música. Queremos que isso aconteça automaticamente em cada nível. Mas a questão é, onde devemos dizer escolher qual música tocar no Lovell? Bem, eu pensei sobre há muitas maneiras de fazer isso, mas eu acredito que uma das melhores maneiras é no menu principal no teatro controlador de câmera que é. Então, no controlador de câmera, cada nível tem seu próprio controlador de câmera, talvez não na loja. Podemos mudar isso. Veremos o que podemos fazer. Mas acredito que este é um lugar perfeito para acrescentar. Então aqui vamos criar um campo serializado, que vai ser um inteiro. E vai ser a música a tocar. Então saberemos qual música precisamos tocar, vamos escolhê-la aqui. E nós também vamos criar um booleano privado, que iria verificar se uma música já está tocando. E isso é apenas para um passo extra de precaução. Então, uma atualização, vamos verificar se já está tocando música. Em seguida, vamos definir em primeiro lugar, a música já tocando como verdadeira. Por que estamos fazendo isso? Bem, porque é uma atualização. Estamos olhando através de cada quadro. Então o que vamos fazer é defini-lo como verdadeiro, então só entramos uma vez. E então vamos pegar o gerenciador de áudio. Então, já temos uma instância disso. Então nós estamos indo para ir gerenciador de áudio, ponto instância , ponto, tocar música de fundo e vai ser a música para tocar. Lá vamos nós. Então, vamos salvar isso. Vamos pré-fabricar nosso gerenciador de áudio. Então, um prefabs, que é Prefab o AudioManager. Certo, ótimo, então vamos guardar isso na câmera virtual. E aqui vamos ver música. Devemos jogar? Se formos para a música do gerenciador de áudio, o que temos no Audio Manager e para baixo tema? Então é o 5, termine aqui. Cinco, guarde isso. Vamos para o próximo nível. Onde é que está? Então cenas, montanhas. Montanhas. Montanhas para sim, lá vamos nós. Montanhas para adicionar aqui vamos adicionar vamos ver, temos a câmera virtual? Sim, temos. E a tela foi atualizada. Claro que temos aqui o menu curto que não liga. Talvez precisemos adicionar outras coisas como, por exemplo, o gerente do jogo. Então vamos para a Prefabs. Gerente de Jogo. Onde é que está? Certo, gerenciador de áudio. Lá vamos nós. Agora podemos tocar sons aqui. E qual devemos escolher? Acho que escolhi um heróico caminho de morte do lago. Você pode até ouvi-lo para que possamos clicar duas vezes para abri-lo e ouvi-lo. Acho que é uma música muito boa, me lembra o Witcher 3. É muito bom. Até mesmo vibração para ele. Se você quiser um pouco de vibração para a música. Eu não sei. Então, de qualquer forma, é onde ele está? Eu me distraí. Elemento três. Role o elemento 3 para baixo, salve isso. E você não quer sobrescrever isso, nós não queremos sobrepor as câmeras. É isso. É tudo o que precisamos fazer. Porque se o substituirmos, então se aplicarmos as alterações e aqui e a câmera a sobrepor, aplicamos a câmera. Todos os outros níveis terão a mesma música para tocar. E acabei de notar que a peça é errada, mas não queremos isso. Então, tenha isso em mente. Nós não queremos ter a mesma música tocando em cada nível. Então vamos voltar para a cidade. Então, onde estão as cenas? Desceu para salvar isso? Vamos executar o jogo. O jogo. Lá vai você. Você pode ver que a música está tocando. Se andarmos para o próximo. Ok, então obviamente há algo errado. Já está tocando música no fundo. Então vamos precisar consertar isso. E o problema aqui é que quando executamos nosso jogo, não é que tenhamos algo errado com o código. É que quando formos para o próximo nível, não destrua o antigo seu empresário. E ainda assim temos um velho seu empresário aqui. Então, se você se lembra no primeiro vídeo desta seção, eu disse que precisamos fazer isso um padrão de singleton. Então, para fazer isso, vamos abrir a camada. Então o jogador era um padrão singleton vai apenas copiar isso. Vamos colocá-lo no Audio Manager. E isso deve corrigir tudo porque nosso código está correto. Então voltamos, executamos nosso jogo. Caminhamos em direção à borda. Sim, lá vamos nós. Para que possamos ver que mudamos nossa música. Mas infelizmente ainda não corrigimos o problema que nossas câmeras, e aqui na câmera virtual, você pode ver que ele não segue ninguém. Onde está na câmera virtual? Então a seguir está faltando. Não estamos seguindo o jogador. Sei que é um pouco frustrante. Não chegamos aos loops de tempo, mas não se preocupe com isso. Vamos consertar isso na hora dos judeus. Então espero que tenha gostado. Antes de irmos, precisamos fazer mais uma coisa, e isso é um desafio. Então, reproduza efeitos sonoros quando descartamos o item, quando pegamos um item, e se você tiver outros sons que deseja adicionar. Aplique também esses. Eu só vou aplicar os dois primeiros por enquanto. Pause o vídeo agora mesmo e vá fazer o desafio. Ó K. Bem-vindo de volta. Então, no AudioManager aqui você pode ver que nós temos o efeito sonoro de reprodução e nós escolhemos qual efeito sonoro queremos reproduzir. Então, se formos ao gerente do menu em algum lugar aqui. Então gerente de menu não, Como ele aqui, Não. Parece que precisamos abrir do Canvas. Então Gerenciador de menu, vamos clicar duas vezes no script. Não tenho certeza se a 12ª. Então, quando queremos usar algum tipo de botão ou descartado. Então lá vamos nós, descartamos o item aqui quando pressionamos, então atualizamos o inventário e acessamos o Gerenciador de Áudio. Por exemplo, tocar efeito sonoro. E qual deles devemos jogar? Se abrirmos a unidade, vamos ao gerenciador de áudio. É os EUA ou o item marcado. Lá vamos nós. Elemento três. Abra e aqui às 15h, guarde isso. E agora quando usamos o item aqui, ou porque já estamos descartando o item, não tenho certeza se essa é a melhor idéia para fazê-lo aqui. Então, da maneira que configuramos, estamos descartando o item. Então estamos tocando o efeito sonoro aqui. Não é uma boa idéia, mas em qualquer caso, vamos apenas tocar o efeito sonoro. Então vamos copiar isto, colá-lo aqui. O que faz o efeito sonoro para usar o item, seu próprio elemento 8. E lá vamos nós, tocar o elemento de efeito sonoro 8. Como você pode ver, nós colocamos aqui que isso deve ser movido. Então, por causa da forma como estamos montando o nosso antigo agora você terá que copiar esta linha aqui. E vamos colá-lo aqui. Portanto, não queremos ouvir o efeito sonoro do item de descarte. Vamos guardar isso. Se você quiser realmente salvar algum código, podemos realmente ir em frente e rápida ação e refatoração e criar um método apenas para essas duas linhas e, em seguida, chamar esses métodos aqui. Não acho que seja muito necessário, mas é claro que é uma prática melhor. É muito feio e não muito profissional quando você realmente vê essas duas linhas aqui. Mas não se preocupe com isso. Vamos poupar, vamos testar isto para o nosso jogo. Vamos rodar o código. E poderíamos ter adicionado também talvez para o item pick-up colocar ter sido uma boa idéia. Vamos pegar alguns itens. Para itens, clique em Descartar. Lá vamos nós. Não tenho certeza se você ouviu. Está um pouco fraco. Então agora vamos usar isso no Jimmy. Lá vamos nós. É um som muito pequeno, mas isso é tudo o que você precisa quando se trata de efeitos sonoros, especialmente com a música e o fundo. Tão bom com isso feito, eu parei de novo. Vamos também adicionar quando pegamos um item. Então, onde lidamos com a coleta do item? Está no “onde “está? Onde está o gerente de TI? Está aqui dentro? Sim. Lá vamos nós. Então, quando adicionarmos o item, vamos reproduzir o efeito sonoro. Então AudioManager, instância de ponto, ponto, jogar como efeitos. E qual deles pega o item. Elemento cinco. Lá vamos nós, guarde isso. E a única coisa que me preocupa é que quando pegamos um item é destruído e espero que o fato de som, teremos tempo para jogar. Então, ou pode não importar. Vamos executar o nosso jogo. Então você pode ouvir o som. Lá vamos nós. Excelente. Espero que esteja gostando. Espero que tenha se divertido adicionando música ao nosso jogo. Você pode ver que ele adiciona muito mais, digamos, campo dinâmico para o jogo. Então, se você está gostando do curso, se você é como eu como um instrutor, mesmo que eu possa ter alguns erros às vezes, não se preocupe. Eu gosto de mantê-los só para você entender o processo de criação porque ninguém é perfeito. E mesmo que eu tenha preparado as pontuações, então eu já preparei este jogo. Grande choque. Às vezes cometo erros e quero que entenda isso porque o processo não é fácil. Você não vai apenas, importa quantas horas você tem, não importa quantos anos de experiência, você sempre vai chegar a algo e dizer, por que isso não está funcionando? Como eu conserto isso? Você precisará usar muito depurações. Então só queria ser o mais autêntico possível. Com isso dito, se você tiver tempo, deixe-me um comentário e eu vou vê-lo no próximo vídeo. 87. Seção 13: Menu principal de UI: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, estamos criando ou exibindo nosso menu principal. Então, você gosta? Acho que parece bom. Então lendas de conquista e grande fonte medieval vermelha e ousada. E temos três botões para continuar a começar um novo jogo e sair do nosso jogo. Então, obviamente, eles não fazem nada, nada faz nada atualmente. Acho que parece bom. Eu gosto disso. Espero que goste. Espero que encontre seus próprios recursos. Então não vamos perder mais tempo. E vamos começar. Oh, então é hora de um menu principal. Vamos entrar no arquivo, criar uma nova cena. E vamos nos certificar de que é 2D. E aqui vamos guardá-lo para as cenas. E então vamos chamá-lo de menu principal. Lá vamos nós. Guarde isso. Oh, ok. Agora a próxima coisa é vamos clicar com o botão direito do mouse e adicionar uma tela. Ou podemos imediatamente ir em frente e adicionar uma imagem. E isso adicionará uma tela automaticamente. E nós vamos para o Canvas e certifique-se de que o scaler de tela. E aqui está a constante Nope física, escala com tamanho de tela. E vamos nos certificar de que é 1920 por 1080. Aperte enter. Ok, lá vamos nós. Agora a imagem, o que vamos fazer sobre a imagem que vai para as sprites? Vamos clicar com o botão direito do mouse e criar uma nova pasta, chamá-lo de imagens de fundo em Enter. E eu lhe dei algumas imagens agora eu recomendo esse sapato. Vá procurar o seu, porque os meus estão tão bem. Como eu sempre disse, eu continuo dizendo para você não fazer o mesmo que eu. Vá encontrar o seu próprio. E eu vou clicar na imagem. E vamos ver, vamos arrastar este. E vamos definir para o tamanho nativo. E vamos mover a imagem para o centro. Então, lá vai você. Acho que esta é uma boa imagem. Talvez, talvez não, talvez você odeie. Isso está tudo bem. Toda a gente tem a sua opinião. Então vamos em frente e adicionar um par de coisas aqui. Agora, o que um menu principal tem? Bem, principalmente tem três coisas. Primeiro, ele tem o continuar, o novo jogo, o sair, e as opções. Então vamos em frente e fazer tudo isso. Então a primeira coisa em primeiro lugar é que vamos ver o que adicionar aqui agora, opções, eu não tenho certeza se é importante ter opções. Vamos apenas adicionar opções virtuais apenas para ver como podemos ir de uma tela para a próxima e assim por diante. Então vamos em frente e adicionar um par de botões aqui. Então vamos até você, vou adicionar um botão. Então este botão, é claro, vamos para os nossos sprites. E estamos bem, então materiais, elementos de interface do usuário, vamos adicionar isso ao nosso botão Sprite. E vamos remover o texto, adicionar um texto Mesh Pro. E é claro que vai ser o medieval e vai ser Continuar. Lá vamos nós, continue. E vamos fazer esse botão um pouco maior. Então vamos fazer este botão um pouco maior. Nós vamos saber o que esse fundo realmente não parece bom. Eu só notei. Bem, vamos mudá-lo mais tarde. Então este vai ser o botão Continuar e no texto Mesh Pro vai torná-lo completamente preto. Lá vamos nós. Vamos torná-lo ousado. Vamos colocá-lo na posição correta só um pouquinho. E vamos posicioná-lo no meio. Aumente o tamanho novamente. Continuar. Lá vamos nós. Então continue. E acho que não vamos acrescentar mais nada. Só precisamos de um segundo botão. E eu acho que este botão é realmente muito grande, talvez. Novamente. Então esta será a saída. Este será o, então o botão Sair. Saída. Novo jogo. E nós continuamos. Ok, então eu acho que isso é praticamente tudo o que precisamos para criar. Podemos criar opções se você quiser adicionar. E eu vou mudar esse fundo porque eu realmente não gostei. Então fundo, vamos adicionar o frio. Oh, isso parece muito melhor. Ok, ótimo. Então a saída, o continuar Ultra para definir que podemos usar um layout de fundo ou um layout de grade para garantir que todos eles estão perfeitamente alinhados. Acho que não vamos precisar disso por enquanto. E nós vamos em frente e adicionar um texto Mesh próton aqui, um grande. E este vai ser o título de ganho. Título e vamos chamar-lhe as lendas da conquista. Conquista vai torná-lo ousado, vai fazer no meio, no meio. E completamente preto era a cor. Certo, lá vamos nós, a cor. Vamos em frente e adicionar um pouco de cor e certifique-se de que sua festa medieval. Não sei como se chama isso. Mas de qualquer maneira, enquanto isso tudo bem, então lá vamos nós. Vai ser deste tamanho. Talvez devêssemos mudar a cor. Veremos daqui a pouco. Vamos aumentar o tamanho. Então, lendas da conquista, e vamos ver o que podemos fazer com isso. Oh, sim, então eu acho que vermelho é uma boa cor. Esse é o branco. O que também não é sobre cor, mas eu acho que eu li completamente ler tanto manteiga. E não, acho que vamos expandi-lo ainda mais e torná-lo ainda maior. Sim, podemos até chamar de lendas de conquista, essa é a segunda que criamos. Mas, de qualquer forma, lendas da conquista, isso é bom o suficiente. Eu acho que este fundo combina com a sensação do jogo. Depende da sensação do jogo. Então, como seu jogo um pouco escuro, eu acho que o meu será porque temos um demônio vagando por aí. Se você quiser que seu jogo se sinta mais. Digamos que seja pacífica. Você pode usar a peça. Se for mais uma aventura, você pode usar a peça. E você também pode encontrar seus próprios antecedentes, arte de jogo aberto ou qualquer tipo de fundo para esse assunto. Ok, vamos ver. Podemos adicionar um monte de coisas aqui, talvez o underlay, podemos mudá-lo. Vamos ver se o deixamos branco. Se alguma coisa afecta o nosso, na verdade, parece pior. Vamos manter isso assim. Vamos guardar isso. Ótima. Então agora temos três botões e agora é hora de um pequeno desafio. E esse desafio é definir o seu próprio menu principal. Configure seu próprio menu principal usando sua fonte e fundo, etc. E divirta-se com ele. Leva o teu tempo. Então, o menu principal é a primeira coisa é que um jogador vê que você precisa fazer um impacto nesta posição. Então eu recomendo que você se lembre de alguns jogos que você já teve, olhou através deles, ver como eles funcionam e o que você pode fazer. Pause o vídeo agora mesmo e vá fazer o desafio , faça suas mudanças, e eu te vejo no próximo vídeo. 88. Gerente de menu principal: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós realmente adicionamos funcionalidades ao nosso botão, mas como você pode ver, removemos o botão Continuar. Já não precisamos mais. Então, quando executamos nosso jogo, lá vai você. Bem, oh meu Deus, um botão Continuar apareceu. Bem, isso é porque nós realmente temos algum tipo de chaves realmente prefs jogador que podemos carregar nosso jogo. Então, quando batemos no “Continuar “, não faz nada. Ganho líquido nos diz que acabamos de fazer. Se tivéssemos o novo jogo, começaríamos um novo jogo. Quão conveniente? Então não vamos perder mais tempo e vamos começar. Ok, então agora é hora de dar funcionalidades aos nossos botões e insensível ao piche hoje. Então, eu só vou te dar o desafio. Crie um manuscrito principal. Então, crie o script do menu principal e anexe-o à tela do menu principal. Crie uma variável que acompanhe o botão Continuar. Vou te dizer o porquê daqui a pouco. E um para a nova cena do jogo. Porque você sabe, quando começamos um novo jogo, precisamos ir a uma nova cena de jogo. E então vamos precisar criar dois métodos para o novo botão do jogo e o botão Sair. Finalmente, novo jogo deve nos levar para o novo GameScene e saídas devem simplesmente imprimir algo. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, ok, volte. Como conseguiu tudo isso? Então, em nossos scripts vai entrar em scripts irá para onde devemos salvar TI? Gerentes. Sim, claro por que não nos gerentes vai clicar com o botão direito do mouse, criar um script C-sharp e ele vai ser chamado de menu principal. Pressione Enter. Aguarde até que ele compile isto como o novo botão do jogo. Então, novo botão do jogo, ou movendo-se aqui, vamos para o Canvas. Vamos chamar isso de tela do menu principal. E vamos adicionar o menu principal ao menu principal Canvas. E nós vamos, ok, Então nós adicionamos o errado, nós adicionamos gerenciador de menu, Remover componente, menu principal. Ok, ótimo. Vamos fechar tudo isso e vamos abrir nossos homens, homens. Então, aqui dentro, o que vamos fazer? Bem, dissemos que precisamos de referências. O primeiro é um campo serializado do tipo string, e vai ser a nova cena do jogo que estamos indo para ir. E então vamos criar um outro campo serializado que vai ser do tipo de objeto de jogo e ele vai fazer referência ao botão Continuar. Por que estamos fazendo isso? Bem, obviamente, porque se nós nunca criamos ou se nós nunca jogamos este jogo e não podemos continuar, então obviamente nós não devemos ver o botão Continuar. Só devemos ver o novo jogo e a saída. Então, o próximo passo é ir em frente e criar um método para o novo botão do jogo. Então público anular novo botão jogo. E aqui estamos indo para acessar o gerente de cena. Mas antes de fazermos isso, precisaremos acessar a gerência da cena. Ou antes mesmo de fazer isso, precisamos acessar o motor Unity, em seguida, o gerenciamento de cena, muito bom. Gerenciador de cena ponto uma cena de carga e vamos simplesmente passar lá a nova cena do jogo que queremos. Lá vamos nós. E então vamos precisar criar um método para o botão de saída. Botão de saída de anulação pública. E, em seguida, aqui vai simplesmente imprimir no log de depuração saber, apenas log erro. Acabamos de sair do jogo. Então acabamos de sair do jogo com alguns pontos de exclamação só para ter certeza de que isso é algo estranho. Ok, então a próxima coisa que precisamos fazer é ter certeza de que desligamos o botão Continuar sempre que não for necessário. Então, e começar assim que abrirmos o menu principal, vamos verificar se temos alguma chave nos prefs do jogador. Então, se tivermos, por exemplo, a posição do jogador em x, isso significa que já salvamos nosso jogo anteriormente. Isso significa que o botão Continuar pode ser ativado. Então, no começo, assim que começarmos, qual o acesso que os prefs do jogador verificam se temos ou temos alguma chave, e entraremos no gerenciador do jogo. Lá vamos nós. Quando salvamos as estatísticas do jogador, quais devemos escolher? Acho que a melhor opção para escolher está aqui, a posição. Então, é a cópia mais fácil que vamos colá-la aqui. Então, se ele tem bom, isso retorna verdadeiro. Isso significa que o botão Continuar que disse ativo como verdadeiro. contrário, se não tivermos nada, então o botão Continuar, falso ativo. Agora não há como testar isso porque já salvamos várias vezes. Como podemos ter certeza de que podemos realmente desligar o botão Continuar? Então nós vamos desligá-lo e então vamos ver se ele realmente funciona. Então, na tela do menu principal, temos o botão Continuar, que é este, e a nova cena do jogo, que vai ser a cidade, digamos que a cidade para copiar isso. Cole aqui, guarde isso, ok, e antes que façamos isso também, precisamos ir para o botão. Então, o botão Continuar por enquanto não faz nada que vamos adicionar. Então lembre-se de quantas vezes eu esqueci de fazer isso antes. Agora estamos nos movendo. Então você vê, nós sempre podemos aprender com nossos erros e novos jogos. Para a saída. Vamos adicionar um evento onclick no menu principal. Vá para o botão de saída do menu principal, salve isso, execute o jogo. Lá vamos nós. Temos o botão Continuar, mesmo que o desativamos, se clicarmos na saída, você pode ver aqui o console imprime com apenas com o jogo continuar, não faz nada. Mas se clicarmos no novo jogo e lá vai você, quão legal é isso? Então tudo está funcionando perfeitamente bem. Há apenas uma coisa que é o carregamento. No próximo vídeo, vamos realmente começar a carregar nosso jogo criando uma cena separada para o carregamento, que vai ser muito emocionante. Vemo-nos no próximo vídeo. 89. Continuando o jogo: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, quando executamos nosso jogo, quando batemos no continuar, aparecemos em nosso jogo. E se apertarmos a tecla M, vamos para os itens. Podemos ver que temos os itens mesmo que não pegamos nada, nós os carregamos. E se você não pode ouvir nenhuma música, é porque eu mudei o áudio para que você possa me ouvir claramente e nós não temos que gritar com o som. Então não vamos perder mais tempo e vamos começar a carregar nosso jogo. Está bem, está na hora de usar o botão Continuar. Como é que vamos fazer isso? Bem, o botão Continuar é essencialmente um mecanismo de carregamento. Portanto, há várias maneiras de carregar um jogo, mas uma das melhores é realmente criar uma cena separada para o carregamento do nosso ganho como a de adicionar tudo em nosso menu principal. Então, e vamos para novo ou criar uma nova cena. Vamos criar isto. Vamos guardar isto nas cenas e chamaremos isto de cena de carregamento. Lá vamos nós, guarde isso. Antes de esquecer, vamos para as Configurações de compilação e vamos adicionar o onde está? A cena de carregamento e o menu principal. Lá vamos nós. Então, dentro das configurações de construção, ok, ótimo, guarde isso. Agora, o que vamos fazer aqui? Bem, há algumas coisas que precisamos acrescentar. Então, primeiro de tudo, vamos precisar adicionar, o player precisará adicionar o Gerenciador de Áudio. Na verdade, não vamos ver tudo isso. Isso fará a transição perfeita através da cena de carregamento. Vamos adicionar um gerenciador de jogos. Finalmente, também precisamos da tela de interface do usuário. Considerando a tela da interface do usuário, não consigo ver a tela da interface do usuário. Ok, então lá vai você. Via Canvas. Por alguma razão, eu não conseguia ver. Não se preocupe com isso. Agora temos tudo pronto. A próxima coisa a fazer é criar um objeto de jogo aqui. Vai ser chamado de ou não, simplesmente o carregador. É anther. Vamos redefinir sua posição. Clique duas vezes sobre ele. E vamos em frente e criar um script separado. Onde devemos criar talvez nível de gestão ou gerentes, Vamos criar dentro de mantras. Eu sinto que os gerentes, eu gosto do lixo, tudo o que nós não precisamos ou não sabemos onde colocá-lo dentro dos gerentes. Então carregar a cena ou cenas deveria ter sido chamado de Cenas. Não se preocupe com a cena de carregamento. Vamos adicioná-lo ao carregador e vamos abri-lo. Então a primeira coisa que queremos é realmente ter um peso para o tempo de carga. Não quero que o carregamento seja instantâneo. Só queremos alguns segundos antes de carregarmos. Então, e aqui vamos criar um campo serializado onde podemos determinar quanto tempo queremos esperar. Então flutua, maneira de carregar, tudo bem. Ok, ótimo. Agora a próxima coisa a fazer é queremos carregar a cena correta em que estamos. Mas se me lembro, se formos ao gerente do jogo, dados salvos. Sim, nas posições de jogadores seguros, estatísticas de jogadores seguros. Mas não salvamos a cena em que estamos em lugar algum. E vai fazer parte do seu desafio. Então, seu desafio é ir ao gerenciador de jogos e definir a cena atual e o método de salvar dados em nosso rendimento de co-rotina. Eu não disse que queríamos criar uma co-rotina? Oh, sim, eu fiz. Eu disse que vamos esperar para carregar em nossa co-rotina, produzir o tempo usando a variável que criamos. Acesse o gerenciador do jogo e carregue os dados, acesse as missões e carregue as missões 2. Então pausar o vídeo agora mesmo e ir fazer esse tipo de grande desafio. Ok, bem-vindo de volta. Então, em nosso gerenciador de jogos e aqui, e eu vou apenas mantê-lo nos dados salvos e palavras sobre isso. Então, prefs de jogadores, conjunto de pontos, e em que estamos trabalhando? Ok, então definir string, estamos criando a cena de sublinhado atual. É isso. Acho que é uma chave suficiente. E então vamos acessar o gerente de cena. E esta é a parte complicada. Se acessarmos a cena, não podemos usar o gerente aqui. Então Unity engine dot cena gerenciamento, salve esse caso. Então de volta aqui, gerente de cena Dot. E como vamos, ok embora, há isso, vamos obter a cena atual ativa. E nós vamos obter o nome porque estamos definindo uma string. Vamos guardar isso agora na nossa cena de carregamento. E aqui estamos indo para ir em frente e acessar o enumerador de olhos públicos e cena de carga, nós vamos chamá-lo. E aqui vamos ceder imediatamente o retorno. E uma nova maneira. Por segundos. Espere quatro segundos. Onde o tempo para esperar, tempo ou tempo para carregar? Aguarde o tempo de carregamento. E o que vamos fazer aqui? Bem, em primeiro lugar, vamos carregar a cena. Portanto, o Scene Manager, não o temos, precisará adicionar TI. Cena de carga do gerente. E nós vamos acessar o jogador prefs dot getString. E nós vamos obter o onde está o GameManager visto copiar isso, colá-lo aqui. Feche isso, guarde isso. Agora vamos acessar os dados de carregamento de ponto da instância do gerenciador de jogos. E a instância de ponto do gerenciador de missões de carga de dados. Lá vamos nós. É tudo o que precisamos fazer. Mas, finalmente, vamos verificar se realmente temos alguma espera para o tempo de carregamento e, em seguida, chamar o revestimento. Então, se o tempo de espera para carregar é maior do que um ou maior do que 0, então vamos começar uma co-rotina que vai ser a cena de carga, e é isso. Guarde tudo isso. E finalmente, precisamos ir para o menu principal, o popular voto botão Continuar. E aqui vamos chamar essa cena de ponto de gerente de cena. E nós podemos realmente nomear isso e aqui a carga vista copiá-lo do nosso jogo ou podemos, como fizemos anteriormente, criar uma string aqui. Mas, por enquanto, vamos apenas copiar as cenas de carga ou cenas, a cena de carregamento, copiá-lo, colá-lo aqui. Guarde o carregamento salvo porque eu copiei dele. Não se preocupe com isso. Vamos salvar este. Também vá para Configurações de compilação de arquivos e vamos adicionar também, já adicionamos a cena de carregamento e o menu principal. Certo, guarde isso. E agora vamos considerando o menu principal, lá vamos nós, MainMenu. Vamos abrir os botões. O continuar. Vou clicar na tela do menu principal jaggedy, ir para o menu principal, botão Continuar, salvar isso, executar o jogo. Mais uma coisa, eu acho que isso vai nos dar um erro porque nós realmente não salvamos um jogo onde nós temos a moeda. Então, se clicarmos em Continuar, abriremos a carga. E nada acontece. Porque em nosso carregamento, se formos para o carregador, o tempo de espera para carregar como 0, nunca vamos chamá-lo. Então, novamente, vamos tentar isso mais uma vez, mesmo que eu tenho certeza que vai haver algum tipo de erro. Continuar. Certo, então lá vamos nós. Temos um erro porque não temos uma cena atual. Então vamos precisar parar com isso, descer para executar nosso jogo. Os dados não foram salvos. Sair do Menu Principal. Executar o nosso jogo. Continuar. Sim, lá vamos nós. Mas por alguma razão não temos um jogador onde z. enquanto o nosso jogador está bem. Como ele aparece, podemos nos mover? Sim, podemos. Mas como ainda não implementamos isso, acabamos de fazer isso. Vou silenciar o áudio porque ainda não implementamos a câmera de seguimento encontrando nosso player. É por isso que podemos encontrá-los. Mas como podem ver, temos todos os nossos itens. Se acertarmos os itens M, sim, lá vamos nós. Oh, isso porque nós pegamos. Salvamos algum item? Eu não tenho certeza. Está bem. Mas estamos carregando dados. Sabemos que os dados do gerenciador de jogos funcionam. Então não, na verdade, se voltarmos para a cidade e executarmos nosso jogo, haverá um pequeno problema. Então, se pegarmos alguns itens, tínhamos a chave para salvar dados, saímos, corremos. Deveríamos ver agora se nós, oh, eu sou itens. Lá vamos nós. Temos os itens, temos vários itens. Mas se formos agora para o menu principal, execute nosso jogo e clique em Continuar. Temos que corrigir esse problema onde realmente vemos o jogador. Não queremos que isso aconteça, queremos mantê-lo. Certo, agora se apertarmos a tecla M, vá para os itens ou não. Ok, então os itens estão carregando corretamente. Isso é bom. Então isso foi apenas um pouco de um depurador na minha mente. A última coisa que precisamos consertar e o carregamento precisamos realmente ter certeza de que não vemos o jogador ou nada disso. Nós podemos realmente ir para a câmera principal e mudar isso para completamente preto e remover o jogador. Esta é uma maneira. Então lá vamos nós. Nós os colocamos lá fora, salvamos isso, vamos para o menu principal, executamos o jogo, continuamos. As esposas são jogadoras no meio, não se preocupe com isso. Por alguma razão, o jogador vai para o meio. Vamos mover nossa câmera para cá, guarde isso. De volta ao menu principal. Dirija o jogo. Continuar. Não vemos o jogador. Ótima. E depois pagamos o nosso jogo. Podemos nos mover? Nós podemos ter um item? Sim. Lá vamos nós. Nós temos tudo e é isso. É o nosso mecanismo de carregamento. Então, espero que gostem. E se você foi muito animado sobre o que estava acontecendo no último par de seções, eu sei que não é a coisa mais emocionante a fazer, mas é muito crucial ter uma boa interface do usuário, especialmente quando se trata de jogos de RPG, porque vamos ficar ao longo do tempo na interface do usuário e ter menus e assim por diante e assim por diante. E na próxima seção vamos começar com o nosso sistema de batalha, que é o núcleo da nossa jogabilidade. Então, vejo-te depois. 90. Seção 14: criando uma Arena de Batalha: Bem-vindo de volta meus colegas desenvolvedores de jogos para um novo vídeo e uma nova seção, e uma seção muito, muito emocionante. Então, como você pode ver, eu criei um mundo e aqui com um pouco de lava usando sprites que eu deixei para nos recursos, você também pode entrar em jogo aberto off. Foi aí que consegui os meus recursos. Você pode ver no considerando que o arquivo, os azulejos, o calabouço, por isso está sob o nome caverna apenas deu. Você pode encontrar o que quiser. Então, quando executamos nosso jogo, agora o que me deixa maximizar tudo e aumentar o volume para que você possa ouvir a música assustadora em segundo plano. Então dirija o jogo. Sim, lá vamos nós. Então andamos por esta caverna úmida com aqueles buracos nela. Então aqui vamos ter nossas batalhas com alguns monstros. Temos um pouco de lava em necessidade desumana para consertar isso aqui porque podemos passar e temos esses penhascos aqui agora nossas asas cortadas, isso é um pequeno problema, mas não se preocupe com isso. Também podemos entrar aqui. É aqui que a batalha do chefe será travada. Aqui, Gollum quer jogar o anel ou não, não. Column quer manter a chuva, mas Frodo quer jogar o anel, mas ele também não. Então vamos ver o que acontece lá. E aqui podemos andar por aí. Também podemos travar algumas batalhas aqui. Então talvez batalhas fáceis aqui. Esta é a entrada da caverna, por isso precisamos sempre de interesses. Então, como é que o teu monstro chegou aqui, ou o teu personagem? Como você chegou aqui através da porta? É muito importante não quebrar a imersão. E vamos ver e ouvir vai lutar talvez batalhas médias aqui, uma dura batalha, e aqui vamos encontrar os robôs finais. Então deixe-me pausar o vídeo. Quero dizer, pare o jogo. Vou falar sobre o início do combate por turnos. Então, não tenho certeza se você já jogou combate por turnos, mas é muito parecido com isso. Então temos, digamos, três personagens que pegamos ao longo de nossa jornada. E temos alguns inimigos que colocamos no mundo. Nós não teremos nenhum tempo. Teremos os nomes do nosso personagem, teremos o HB do nosso personagem, o AMP ou o mono. Esta é a magia e nós estaremos lutando, atualizando, e cada personagem terá história, e daí a palavra combate baseado em turnos. E é, na verdade, uma forma muito moderna de jogar jogos. Não acho que é meio velho e não bom. Sei que alguns de vocês podem estar pensando que por que não estamos usando garfos e arremessos? Bem, na verdade esta é uma forma muito moderna de jogar jogos. Muitos jogos modernos, como, Eu não tenho certeza do que o nome deste. Acho que é algo que esqueci da ExComm. Desculpe. E isso também eu esqueci, mas é um jogo muito estimado. Tem uma vista muito alta. Você pode ver que você pode usar itens durante a batalha, que é muito bom. E este também é um maduro que eu, eu esqueci de cima da minha cabeça. Talvez seja Persona 5. Oh, sim, aqui é Persona 5. Então, como você pode ver, é uma maneira muito moderna de jogar jogos e uma maneira muito tática. Além disso, dá um jogo em profundidade. Eu tentei fazê-lo usando garfos, mas honestamente, quando você está jogando um RPG, um top para baixo para o RPG, não é tão divertido, especialmente quando se trata de batalhas de chefes. Não há muito espaço para pular e brincar. Então, o combate baseado em turnos é o sistema de combate perfeito para isso novamente, que estamos criando. Então vou deixá-los com um desafio para criar seu próprio layout. Use as peças que você tem ou baixou para criar a arena. Certifique-se de que o jogador não sai dos limites e a câmera nunca sai dos limites. E, finalmente, deixe-me mostrar-lhe o que você precisa fazer aqui, como dissemos, você adiciona a grade, você uma pré-fabricada. Você adiciona as câmeras, o gerenciador de jogos, o player, o gerenciador de níveis e o gerenciador de áudio na música aqui para a câmera virtual, para o gerenciador de níveis em segundo plano. Eu não acho que vamos precisar disso, mas certifique-se de que sempre que você está definindo suas telhas que você tem uma fronteira onde o jogador não pode atravessar, para que ele não apenas andar sobre, amante e assim por diante. Então eu vou deixar você com sua criatividade, com todo o seu pensamento. Certifique-se de confirmar todas as suas alterações no final. E eu não deveria estar no palco ou vou ignorar todas as peças que criamos. E é isso. Então eu vou deixar você com isso e eu vou te ver no próximo vídeo. 91. Interface de cena de batalha: Bem-vindo de volta meus colegas desenvolvedores de jogos para um novo vídeo. E como você pode ver, eu criei o layout. Eu sei, mais uma vez, um longo e chato vídeo de deitar-se no olho. Mas como sempre, é muito importante se você quiser, você pode ir em frente e implementar seu próprio layout de cena de batalha. Eu realmente recomendo que você faça isso. Este é o seu jogo. Você precisa adicionar seu próprio sabor nele. Mas até lá, não vamos perder mais tempo e vamos começar. Certo, agora que montamos nossa tangente, é hora de montar nossa cena de batalha. E como vai parecer esta cena de batalha? Então vamos dizer que estamos andando por aí. Chegamos a uma certa zona de batalha que criará mais tarde. E vamos começar uma batalha. Vamos mudar o plano de fundo. Primeiro de tudo, vamos definir nossos personagens ao redor. E então teremos algumas opções. Em primeiro lugar, podemos atacar, usar magia, usar nossos itens ou fugir da batalha. E então precisaremos de um painel separado que mostre todas as estatísticas do jogador. Então, quanto vendemos cada um dos jogadores com quem estamos jogando? E eu vou te mostrar o que quero dizer com os outros jogadores. Mas antes de tudo, vamos começar criando o painel ou toda a camada de batalha. Então vamos criar um objeto de jogo vazio aqui. Vamos redefinir sua posição e vamos chamar esse objeto de jogo de cena de batalha. Vamos criar duas camadas. Então vamos para a camada Editar. Vamos criar duas camadas. O primeiro será o fundo da batalha, e o segundo será os personagens da batalha. Então, agora que temos isso feito, a próxima coisa a fazer, agora que terminamos com isso, vamos em frente e importar o fundo. E eu encontrei esta lava fresca e aqui, então eu vou usá-la. Você pode ir em frente e usar o plano de fundo que quiser. Então lá vamos nós. Esta é a lava. Eu vou arrastá-lo aqui e eu vou definir a camada de classificação como o fundo da batalha. Lá vamos nós. Se você não gosta, não se preocupe, você pode usar qualquer outro. Então eu vou definir a escala para ser dois por dois para que possamos cobrir toda a câmera. Isto é muito importante ou podemos fazê-lo talvez 1,8 por 1,8. Lá vamos nós. Então precisamos de uma imagem grande o suficiente para cobrir toda a câmera em todos os lados. E nós vamos levar esta lava para a cena da batalha e aqui, e vamos chamá-la de fundo da batalha. Lá vamos nós. Agora a próxima coisa que vamos fazer é clicar com o botão direito do mouse na cena de batalha objeto jogo vai para I, e nós vamos criar uma tela apenas para a cena de batalha. Então esta será a batalha Canvas, eu acho. Lá vamos nós. Vamos clicar duas vezes e ver como ele se parece. Aqui vamos criar um painel. Então vamos clicar com o botão direito do mouse, vá até você, eu clico no painel. Este será o nosso menu, menu onde escolhemos o que fazer com cada personagem. E vai ser um pouco pequeno. Vamos colocá-lo aqui em baixo. Vamos entrar em nossos sprites, sprites, elementos de interface do usuário. Este será o nosso painel padrão. Vamos aumentá-lo do caminho. E eu posso vê-lo aqui em baixo corretamente. Por quê? Oh, aí está. Ok, então este será o painel que detém todos os ataques que queremos fazer. Então nós vamos adicionar alguns botões no menu, então vamos clicar com o botão direito do mouse no menu, ir para, I, ir para um botão e nós vamos para o texto primeiro de tudo, excluído em um texto Mesh Pro. E vai ser chamado, digamos ataque. Vai ser ousado, ousado, completamente negro. E a fonte obviamente vai ser a festa medieval. E o fundo do botão será aquele que estamos usando o tempo todo. E lá vamos nós. Então este será o nosso botão. Vamos torná-lo um pouco maior. Precisaremos de quatro botões para caber aqui. Então precisamos nos certificar de que ajustamos tudo. E como eu disse, esta é sempre a parte mais tediosa de criar nosso layout de interface de usuário de jogos, mas é muito importante ter um bom. Então deixe-me fazer isso um pouco menor e eu vou estar ajustando o texto para caber corretamente. Lá vamos nós. Então este será o nosso primeiro botão. Agora precisamos duplicar porque precisaremos de botões. E vamos ao menu. Vamos adicionar um componente aqui, que será o grande grupo de layout de grade. E vamos ajustar tudo daqui. Então vamos aumentar o tamanho da célula. Lá vamos nós. Vamos adicionar um pouco de estofamento à esquerda, um pouco de estofamento do topo. Talvez aumentar o tamanho da célula pela altura o máximo que pudermos. Talvez diminuir o tamanho da célula em um pouco de espaço entre elas. E lá vai você. Isso é bom o suficiente. Eu acho. Como eu disse, isso é tudo subjetivo. Você pode criar seus próprios layouts da maneira que quiser. Então estes são os nossos quatro botões. Talvez vamos aumentar o tamanho da célula no Y acho que é o máximo que podemos fazer. E vamos mudar isso para o botão de ataque. Este será o botão mágico. Então teremos magia para cada um de nossos personagens. Estes vão ser os itens. E este será o botão Executar. Ou vamos chamar isso de itens dos EUA. Botão Usar itens. E vamos mudar o texto de cada um deles. Então isso é um ataque. Este é a magia. Este vai ser os itens. E finalmente, teremos a corrida com alguns pontos de exclamação. Lá vamos nós. Então agora temos nosso botão configurado. Agora é hora de criar o painel de exibição. Então eu vou duplicar o menu. Eu vou mover o menu e aqui torná-lo maior para todos os lados. E vamos apagar todos os botões porque não precisamos deles por enquanto. Vamos chamar isso de estatísticas do jogador. E então aqui vamos criar três nomes de texto para cada um dos nossos jogadores. Então, jogador um, jogador dois, jogador três. E sob cada um desses jogadores terá controles deslizantes para, em primeiro lugar, cuidar do manose ou quanto mana ainda temos e seguida, quanta saúde cada um dos nossos jogadores ainda chapéu. Então vamos em frente e adicionar um texto Mesh Pro. Em primeiro lugar, estes serão os nomes. Então, vou parar a visualização da grade por enquanto. Desligue-o, talvez até redefina-o e depois desligue-o. Talvez até removê-lo completamente. Mas vamos ficar com ele por enquanto. Então este será o nome do texto. Por exemplo, digamos que é o nome do jogador um. E vai ser, claro, a mesma coisa, colocar tudo completamente preto. Lá vamos nós, o jogador nomeia um. E sob o ano vamos adicionar os dois controles deslizantes. Então vamos clicar com o botão direito. E primeiro de tudo, deixe-me criar um objeto de jogo vazio para o jogador. Um no texto aqui embaixo. Ou o jogador deve ser realmente mover-se aqui e o texto deve ser redefinido. Então nós redefinimos a posição do texto em relação ao objeto do jogo do jogador para que possamos configurá-lo aqui e vamos apenas torná-lo um pouco maior. Então é sobre o tamanho onde queremos definir o jogador. Claro, vamos mudar esta. Nós dissemos a visualização da grade, então o jogador nomeia um, por exemplo. E agora vamos clicar com o botão direito do mouse e aqui em um controle deslizante de interface do usuário. Então este será o Slider de saúde. E, obviamente, há algumas coisas que precisamos mudar para a alça possa ser completamente removida. O plano de fundo será o plano de fundo deslizante que adicionamos. E a área de preenchimento, ou o preenchimento, o preenchimento real será o slide vermelho. Então lá vamos nós. Então, agora, se formos para o controle deslizante de saúde, aumentamos. Lá vamos nós, está funcionando, mas há algumas coisas que precisamos mudar. Então, o fundo mantenha pressionado Alt, clique neste botão no canto inferior direito. Em seguida, vá para a área de preenchimento. Clique aqui. Segure em. Tudo. Abra isso. Não, isso não é bom o suficiente. Deixe-me ter certeza de que tudo está funcionando bem. Então lá vai você. Como você me viu fazer, basta clicar no Fill Hole, clicar nas âncoras aqui, manter pressionada Alt para que todos eles vão para as bordas. E agora precisamos fazer alguns ajustes para caber tudo dentro do controle deslizante corretamente. Sei que é um pouco tedioso, mas não é necessário. Infelizmente. Não tudo o que você faz, algo que você ama, mas às vezes é necessário. Então lá vamos nós. Agora temos nosso controle deslizante de saúde. Vamos clicar aqui. Vamos arrastá-lo e torná-lo um pouco maior. Então lá vamos nós. Parece legal. Nós vamos duplicar o controle deslizante de células e vamos colocá-lo aqui embaixo. Este será o controle deslizante de mana. E vamos mudar o filme. Então o preenchimento aqui vai ser o azul. Lá vamos nós. Como está configurado corretamente. Sim, acho que é bom o suficiente. Então, agora, se formos para o controle deslizante menor e eu vou apenas torná-lo um pouco mais grosso. Então adicione um pouco de espessura, para que seja mais óbvio. Lá vamos nós. E no Health Bar, também um pouco de espessura. Lá vamos nós. Certo, isso parece legal. Talvez precisemos torná-lo um pouco menor mais tarde. Vamos ver como vamos fazer isso. Mas por enquanto, digamos, lá vamos nós, jogador 1. Vamos duplicar o jogador um. Este será o jogador dois. E se nós movê-lo para a direita, lá vamos nós jogador para duplicar isso novamente. E tudo bem, então não se encaixa. Nós já sabíamos que se adicionássemos o layout da grade aqui, isso seria muito complicado. Então, se tentarmos aumentar o tamanho da célula e talvez aumentar o tamanho assim. Então, novamente, estou ajustando tudo de acordo com o que precisa ser feito. Então, como você pode ver, eu posso escolher a saúde eo controle deslizante de saúde e exigir um controle deslizante e torná-los apenas um pouco menor. Podemos até escolher a largura que temos aqui e copiá-lo e colá-lo para o controle deslizante Saúde no segundo. E no terceiro 1 quarto o mana para o mono, e para o resto de tudo. E vamos movê-lo. Ok, então eu acho que isso é bom o suficiente. Deixe-me apenas alterar alguns valores no controle deslizante de saúde para que saibamos que eles estão realmente funcionando. E no mana, deixe-me mudá-los para sabermos que são distintos. Agora que temos o jogador um, temos o jogador dois. E temos a Camada 3 com seus nomes, com suas barras de saúde, com suas barras de mana. No próximo vídeo, podemos começar a expor nossos personagens. E você pode ver aqui no modo de jogo ou na vista de jogo como isso vai parecer. Então vamos ter os inimigos. E aqui, por exemplo, 1, 2, 3, 4, 6 inimigos podem ser. E aqui três jogadores, mais se você quiser, se você quiser adicionar, por exemplo, para jogadores, cinco jogadores, você precisará ter certeza de adicionar um segundo painel ou apertar tudo aqui. E teremos várias opções. Podemos atacar normalmente com uma espada ou algo assim. Podemos usar magia. Se temos magia ou mono, podemos usar itens ou podemos fugir e itens podem ser, por exemplo, equipamentos equipando uma determinada arma. Talvez isso possa nos ajudar a derrotar um certo tipo de inimigo, ou talvez apenas tomar uma poção, aumentar nossa mononucleose, aumentar nossa saúde, e deixar para lutar mais alguns segundos. Espero que goste. Eu sei que esses vídeos são muito longos e chatos. Isso porque tudo se baseia na subjetividade. Foi assim que eu me preparei. Talvez queiras expor o teu mundo de forma diferente. Por isso, obrigado por me acompanhar e vejo-te no próximo vídeo. 92. Personagens de batalha: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Então, como você pode ver, criamos um monte de personagens assustadores e também endurecidos e prontos para lutar contra jogadores. Então temos Jimmy, Draco e a avó, e temos um mestre major, bruxos de fase azul e um mmh regular. Então vamos aprender a criar tudo isso. Então não vamos perder mais tempo e vamos começar. Oh, ok, então é hora de adicionar alguns personagens de batalha. Primeiro, precisamos desses primatas. Então vamos entrar aqui, clique com o botão direito do mouse e criar uma pasta para os jogadores, pois os jogadores em potencial colocarão tudo isso na pasta do jogador. E vamos para os recursos e adicionar os inimigos. Então estes serão os inimigos vão apenas arrastar essas planilhas e aqui. E vou mudar o nome para os inimigos. Então lá vamos nós, lá você pode ver que temos um par de inimigos. Vamos em frente e cortá-los. Então eu vou aplicar isso, ir para o modo sprite e eu vou cortar, Vamos tentar 64 por 64. Não, isso não funcionou. Então vamos tentar 120 já sabe o que a maneira que fazemos isso geralmente é que vamos fazer isso um pouco maior. Veremos que o tamanho é 342 por 220. Então vamos pegar nossa calculadora. E aqui vamos pegar 348 e dividi-lo por quatro. Lá vai você. Então é 987. E então vamos pegar 202, o 0 dividido por 2, que é 110. Vamos cortar isso e lá vamos nós. Temos fatias perfeitas, fatiar isso, aplicar. Lá vamos nós. Então agora temos esses espíritos inimigos cortados. Muito bom. Agora queremos definir as posições padrão para o jogador e os inimigos. Então eu vou voltar aqui. Vamos fazer isso um pouco menor. E eu vou desligar a tela de batalha por enquanto para que possamos ver tudo mais claramente aqui. Então, primeiro, vamos em frente e clique com o botão direito do mouse criar um objeto de jogo vazio que vai ser o jogador, Digamos jogador 1 ou algo assim. E onde ele está? Lá está ele. Então vamos movê-lo para cá. E então nós vamos criar um, outro objeto de jogo. E eu vou te mostrar porque é que uma criança vai ser a posição um e nós vamos desmarcar isso e, em seguida, criamos o jogador para ele. E por que fizemos isso? Bem, porque queríamos que a posição um fosse exatamente sobre o jogador. Então o que fizemos foi criar uma criança no jogador que nos deu a posição exata e depois removemos isso. Então esta é apenas uma dica rápida se você quiser uma maneira mais rápida de fazer as coisas. Então nós vamos para o player em um renderizador sprite. Renderizador de sprite. Lá vamos nós. Nós vamos para os personagens. Os jogadores rolam para baixo e vamos adicionar o jogador parado a este. E vamos garantir que ele seja um personagem de batalha. Então lá vamos nós ou podemos, se você quiser, fazê-lo enfrentar os inimigos nessa direção. Eu acho que este é muito melhor e certifique-se mover a posição para onde você deseja definir o seu jogador. Vamos duplicá-lo. Duplica-os de novo. Então lá vamos nós. Agora temos três posições para os jogadores começarem a atacar à frente. Mas isso para dois. Esta também a duas horas, quero dizer três, desculpa, desculpa, desculpa, lá vamos nós. Agora temos a posição um, a posição dois, posição três com um jogador em cada um deles. Claro, vamos mudar o sprite mais tarde. Mas agora vamos em frente e criar um objeto de jogo vazio aqui, que vai ser chamado de posições do jogador. E vamos definir essas posições do jogador sob o objeto do jogo de posição do jogador. Vamos em frente e duplicar este. Vamos movê-lo para o outro lado. E estas serão as posições inimigas. Assim, as posições inimigas. E aqui nós vamos, claro, mudar esses nomes aqui para os inimigos. Vamos ver se isto funciona ou o inimigo entra. Sim, lá vamos nós. Funcionou perfeitamente honestamente. E nós vamos, é claro, mudar nos sprites. Então eu vou apenas adicionar em apenas um que nós temos por agora. Então, qual é esse tipo de não ter certeza do que é? Este monstro estranho vai pô-lo aqui. E é um pouco pequeno porque precisamos ter certeza de que é, vamos tentar 30 para ver o quão grande isso é aplicável. Ele é um pouco sombrio. Sim, ele é um pouco sombrio. Muito escuro para o nosso gosto. Talvez queiramos mudar isso. Ele não é completamente? Vamos nos certificar de que ele é um “sem filtro”. Aplique isso. Eu acho que este é um como uma manteiga e talvez vamos tentar fazer ele 16 com isso. Ok. Não, não, não, 1632 não. Aplicar. Ok. Não se preocupe. Talvez mudemos a posição desta cópia, mas na verdade vamos ter seis ou quatro inimigos. Vamos ter quatro. E lá vamos nós. Então este é o quarto. E ele vai estar aqui. O terceiro estará aqui. Você pode adicionar seis se quiser. Isso não é problema. Então este, este. Vamos movê-lo um pouco para cima. E este vai estar aqui em cima. Vamos mover o quarto para que ele não esteja completamente no escuro. E o terceiro, lá vamos nós. Agora temos os inimigos, os jogadores. Agora precisamos criar um script que dê, digamos, caráter aos nossos personagens de pétalas. Então vamos para os nossos scripts e vamos criar uma nova pasta aqui. E vai ser a pasta do sistema de batalha. Então sistemas de batalha Enter, abra isso. Vamos em frente e criar um script C-sharp. E vai ser a batalha. Personagens. Carregue em Enter, aguarde a compilação. Certo, então clique duas vezes aqui. Abra o Visual Studio. Lá vamos nós. Então agora estamos prontos para a batalha e ainda não o fizemos. De qualquer forma, primeiro, precisamos estabelecer se este é um jogador ou este é um inimigo, porque dissemos que este é um personagem de batalha. Inimigos também são personagens. Então é um, ele vai ser um campo serializado, um booleano e é jogador. Então isso vai ser, bem, se ele for um jogador, isso será verdade. Se não, vai ser falso. Então vamos criar outro campo serializado, que vai ser uma matriz de strings. E serão os ataques disponíveis para esse personagem. Então não vamos ter muitos ataques. Acho que fogo, gelo, talvez algum tipo de ataque de planta. Eu não sei. Vamos ver. E depois os ataques regulares de corte. Então vamos ter algumas características para nossos jogadores ou personagens. Então vai ser uma string pública, o nome do personagem. Claro que precisamos do nome. Então vai ser um inteiro público. HB atual. Então é o HP atual do personagem, o HP máximo desse personagem, vk, atual Mano do personagem, e o homem máximo do personagem. Mas não só isso, também precisamos da destreza que esse personagem tem. E vamos usar isto. Vamos usar a destreza para determinar quanta força podemos aplicar. Vamos perceber a diferença. Vamos conseguir o poder da arma. E nós vamos ter, é claro, a diferença de armadura. E todas estas serão características que irão melhorar ou mudar. Ou como posso dizer? Influenciar a forma ou a quantidade de dano que cada personagem causa ou a quantidade que ele pode suportar. E finalmente, vamos criar um booleano público, que vai ser assim e quando os personagens que ele morrer. Certo, então vamos salvar isso. E agora vamos voltar para Unity o k. Então agora o que vamos fazer é pegar um desses jogadores, ou vamos pegar o, ou qualquer jogador, não importa. Vamos arrastar o personagem de batalha para este jogador. E vamos colocar um par de coisas aqui. Então, por exemplo, isto é, um jogador irá adicionar o nome. Então vamos dizer que isto vai ser, este é o Jimmy. Então este será V Jimmy. E o resto será adicionado automaticamente à medida que obtemos as informações de cada personagem com que estamos jogando a partir das estatísticas do jogador. Mas aí vem os inimigos. Os inimigos não têm estatísticas de jogador sobre eles. Então vamos ter que fazer isso manualmente para cada um deles. Então, arrastamos, colocamos no inimigo, e agora vamos começar a aplicar todas as mudanças no inimigo. Então eu vou emitir com você como um desafio para criar um inimigo estatísticas. Então adicione script para os inimigos e o pré-fabricá-los e definir um par de estatísticas para esses inimigos. E obviamente eu te mostrei alguns sprites. Vá em frente, use seus próprios sprites se você tiver inimigos que você deseja adicionar ao seu jogo em características a eles. E o pré-fabricá-los porque vamos usá-los mais tarde. Então pausar o vídeo agora mesmo e vá criar seus inimigos. Ok, bem-vindo de volta. Então, como você pode ver, eu criei para, vamos chamá-los de monstros. Temos os Bruxos, o mago, o mestre e o rosto azul. E esta é a fase azul, esta como o mestre dos bruxos e o major. E eu também criei três jogadores. Então temos o Jimmy, temos o Draco, e temos o sombrio. E Grim é uma referência a Billy e Maddie Grant na Cartoon Network. Se você não assistiu. Não sei o que fez na sua infância. Mas de qualquer forma, criamos três personagens. E se os jogadores não têm nenhum status especial, será atualizá-los automaticamente. E eles são jogadores, mas os inimigos têm seu próprio status. Então você pode ver, por exemplo, o mago mestre tem todos os 66 seis porque ele é, eu não sei, algum tipo de demônio. Então temos os Bruxos. Ele tem mais mana do que HP e digamos menos destreza e defesa, mas muito mais poder de arma, por exemplo. E temos o major que tem defesas normais e assim por diante. Defesa não, ele não tem muitas diferenças porque eu sinto que ele tem um corpo fraco por alguma razão, mas ele tem muito poder de arma porque ele tem essas bolas, eu não sei. E a fase azul, que é muito, deve ser um personagem muito fácil de lidar. Então isso é apenas fora do topo da minha cabeça, como eu estou pensando, como eu estou fazendo. Espero que você crie seus próprios personagens em suas próprias estatísticas para cada um dos inimigos. E eu espero que você esteja se divertindo porque no próximo vídeo nós estaremos realmente começando uma batalha. Então, vejo-te depois. 93. Começando uma batalha: Bem-vindo de volta meus colegas desenvolvedores de jogos a um novo vídeo onde nós estaremos realmente começando nossa batalha. Então vamos executar o jogo. Digamos que estamos andando por aí então chegamos a esta posição e oh não, uma batalha começa. Bem, eu fiz isso manualmente. Eu pressionei a pressão arterial, mas como você pode ver, começamos a batalha e não só isso, não podemos mais mover Jimmy até que a batalha esteja terminada. Então não vamos perder mais tempo e vamos começar. Oh, ok, então agora é hora de começar algumas batalhas. A primeira coisa a fazer, obviamente, é ir em frente e criar um gerente de batalha. Mas antes de fazer isso, vamos criar um objeto de jogo vazio aqui, e ele vai ser o gerente ruim. Vamos redefinir sua posição. E vamos traçar a cena da batalha para o gerente de batalha. E nós vamos para o fundo da batalha e certificar-nos de que a sua posição é 00. Não se preocupe com isso. Nós vamos mover tudo mais tarde ou simplesmente pulá-lo por agora e aqui e vamos ver que vamos lidar com tudo e apenas ficar menos 0 caso. Agora, de volta aos nossos roteiros e ao sistema de batalha, vamos criar um gerente de batalha. Então gerente patho, aperte Enter, espere que ele compile. Não, não precisamos abrir isso. Ok, e nós vamos arrastá-lo, é claro, e para o objeto de jogo do gerenciador de batalha. E vamos abrir este grupo. Então vamos precisar de algumas coisas. Então eu vou passar por eles e te contar tudo. Primeiro de tudo, vamos precisar de um exemplo. Então público, estático, mas Manager Instance, salve isso. Então precisamos de uma variável que acompanhe se uma batalha está ativa ou não. Então vamos torná-lo privado porque ele vai ser dinamicamente alterado. E vai ser, batalha ativa é verdade? É ativo, falso, não está ativo. Então precisamos de uma referência à cena da batalha. Então vamos criar uma cena de batalha de objeto de jogo serializado. Então precisamos de uma referência à posição do jogador. Posições. Então ele vai ser do tipo transformado. E, claro, vai ser uma matriz porque temos vários desses e vai ser as posições do jogador ou posições do jogador. É um nome melhor. Claro que precisamos também as posições inimigas. Posições inimigos, e vai precisar de uma referência para todos os personagens de batalha disponíveis, os inimigos e os jogadores. Então eu vou criar um campo serializado aqui, que vai ser do tipo caracteres de batalha. Vai ser um array, e vai ser os prefabs do jogador, porque nós vamos instanciá-los. Não queremos ter sempre os mesmos jogadores, sempre aqui jogando. Queremos instanciá-los dinamicamente com base em onde vamos. E nós vamos criar prefabs de jogadores e os inimigos. prefabs precisam de um ponto-e-vírgula aqui. E poderíamos ter colocado tudo isso na mesma linha. Então eu vou excluir e adicionar uma vírgula. Então nós economizamos um pouco de espaço porque este vai ser o nosso maior roteiro até agora. E, finalmente, precisamos e começar a definir a instância para esta instância é igual a isso, salve aquilo. E então não vamos destruir a carga. Talvez nem precisemos disso porque veremos daqui a pouco, mas vamos ficar com ele. Próximo. Queremos um método para começar a batalha. Então eu vou criar um vazio público. Começar a batalha e o que precisamos e começar o bastão? Bem, primeiro de tudo, precisamos de parâmetros para saber quais inimigos iriam detectar, detectar, detectar. Não sei como se chama. Que inimigos vamos instanciar? Assim, os jogadores já estão todos disponíveis. Digamos que estamos caminhando por uma masmorra. Não queremos gastar jogadores aleatórios. Já sabemos quem fizemos na jornada conosco, mas não sabemos quais inimigos vão sair e tangentes. Então vamos criar uma string. E vai ser uma série de cordas e os inimigos para detectar. Ok, então nós vamos fazer o check-in aqui. Se não houver batalha. Então, se não houver batalha, então vamos definir a batalha ativa como verdadeira. E também queremos impedir o nosso personagem de se mover ou fazer qualquer coisa. Estamos a trabalhar com o Jimmy. Começamos uma batalha. Abrimos a cena da batalha, mas não queremos ser capazes de nos mover com o Jimmy. Então, novamente, nós vamos entrar no gerenciador de jogos e nós vamos adicionar mais um booleano aqui, que vai ser a batalha, está ativo. Guarde isso. E se estiver ativo. Então aqui vamos adicionar uma condição de que a batalha esteja ativa. Vamos salvar isso agora de volta. E nosso gerente de batalha, quando dissemos a batalha ativa como verdadeira, vamos acessar a instância do ponto do gerenciador de jogos. A batalha está ativa para ser igual a true, ou pode ser igual a batalha ativa. Ou podemos acessar o gerente de batalha daqui. Mas vamos apenas dar ao gerente do jogo o mais simples possível. Então, vamos salvar isso. E finalmente, precisamos realmente ligar a cena da batalha. Então cena de batalha que definir ativo para verdadeiro. Guarde isso. E agora, finalmente, precisamos começar a batalha depois de pressionar alguma tecla. Então eu vou emitir isso para você como um desafio. E seu desafio é começar a batalha. Então pegue uma chave de entrada e atualize e chame o método de início da batalha. E para criar uma nova matriz de string, porque você estará adicionando uma matriz de string, você precisará escrever dentro do parâmetro nova string, adicionar os colchetes e os nomes de string. Pause o vídeo agora mesmo e vá fazer o desafio. Oh, hey, bem-vindo de volta. Como conseguiu tudo isso? Então aqui vamos criar uma condição se e vamos verificar se há um ponto de entrada, get key. E, claro, obter keydown e, em seguida, keycode dot, Eu acho que B é uma letra apropriada para pressionar ou tecla para pressionar. E então vamos convocar o início da batalha. Então as batalhas começam ou botão Iniciar. Claro, por que não? Podemos começar a batalha. E aqui vamos precisar de uma corda. Precisamos enviar uma matriz de cordas. Então vamos criar uma nova string. E nós vamos abrir os colchetes exatamente como eu mostrei a vocês na sintaxe, enquanto os colchetes. E aqui vamos escrever os nomes dos inimigos que queremos acrescentar. Mas uma pequena coisa a ter em mente que precisamos de nomes 100% corretos. Então nós vamos entrar aqui e para a unidade assim que nos permitir o caso. Obrigado. Então, onde estão os nossos prefabs? Mas dois personagens, inimigos, mago, o mestre major, nós copiamos isso, nós colamos aqui, e então novamente nós copiamos o, Adicionar um Bruxo, copiar isso, publicá-lo aqui, salvar isso. E agora vamos para a Unidade e testar isso. Então vamos primeiro desligar a cena da batalha. Precisamos atribuir todas as variáveis para que o jogador posicione. Vamos abrir isso e bloquear esta janela para baixo, selecionar as posições do jogador, arrastá-los para as posições do jogador. Selecione todas as posições inimigas, arraste-as para as posições inimigas. Vamos selecionar todos os pré-fabricados inimigos, arrastá-los para os prefabs inimigos, e ir para os jogadores. E faremos exatamente o mesmo. Então, como podem ver agora, temos tudo preparado aqui. E, finalmente, precisamos da cena da batalha. Lá vai você. Essa é a cena da batalha. Nós vamos em frente e virar todas as posições de todos os inimigos dentro daqui, fora. Lá vamos nós. Por que tudo chegou a um O? Porque tudo bem. Então, como você viu, porque eu coloquei o gerente de batalha aqui, quando eu cliquei, eu pensei que eu tinha desligado apenas os inimigos. Então, tudo foi desligado. Este é um dos, você pode pensar que isso foi estúpido e foi, mas confie em mim, você vai cair nessa de vez em quando. De qualquer forma, tudo foi desligado no fundo da batalha. Está bem. Então, gerente cena de batalha, eu vou desligar a cena de batalha. Eu vou executar o jogo e há um erro, que é um ponto-e-vírgula. Ok, desculpe por isso de volta no nosso jogo. Qual é o problema aqui? Acho que não há nenhum problema. Vamos executar o nosso jogo. Esta é uma flecha que acabou de aparecer. Lá vamos nós. Andamos por aí quando apertamos a tecla B. Certo, como pode ver, não posso me mexer mais. Nossa cena de batalha foi ativada, mas não está na posição correta. Então vamos em frente e movê-lo. Então, no início da batalha, ligamos a cena de batalha ou secamos antes de ativar a cena de batalha aqui, vamos em frente e obter a transformação. posição do ponto será igual ao novo vetor três. Qual é a posição que queremos ir? Bem, é a câmera porque temos uma contagem de seguidores. Então, onde quer que o nosso jogador esteja, queremos colocar o objeto do jogo do gerenciador de batalha em cima dele. Então vamos acessar o domínio do ponto da câmera. Então câmera ponto principal, esta é a câmera principal e é a que estamos realmente precisando acessar a posição transformada x vírgula duplicada, duplicada. E você sabe o que fazer. Por que z e com, acho que nem precisamos disso. Podemos mantê-lo como a posição transformada, z transformar posição. E, na verdade, não só isso, não, precisamos, temos que ter certeza de que não colocamos o Zed da câmera. Porque se voltarmos aqui, olharemos para a câmera, olharemos para onde está. Então está em 12.4 e a câmera principal está em menos 1.33. Então certifique-se de que eu estou no Zed está em menos dez. Então precisamos ter certeza de que não acessamos que o componente z ou este componente aplicativo, vamos salvar isso. Bem, tinha um Enter guardado isso no nosso jogo. Nós comandamos o jogo. Nos movemos, vamos para outro lado. Então estamos aqui quando apertamos a tecla B. Ok, nós não vemos nada por algum motivo, enquanto a câmera principal. Então vamos tentar de novo mais uma vez. Por que nos mudamos para uma posição muito ruim? Então B, C, é em torno das câmeras principais, 1013, chave NDB. Ok, então algo não está correto. A posição transformada da câmera. Ok, então o problema é que se clicarmos no fundo da batalha, você verá aqui que o fundo da batalha é às 11.06. Então, o que precisamos fazer é configurá-lo como 0. Então, agora, quando executamos nosso jogo, movemos nosso personagem. Digamos que passemos aqui e acertamos o bico. Lá vai você. Está bem na nossa frente. Claro, ainda não temos jogadores ou inimigos, mas faremos isso no próximo vídeo. Então, se você está gostando do curso, se você gosta de mim como instrutor, se você está se divertindo, por favor me deixe um comentário. Ajudou-me muito e vejo-te no próximo vídeo. 94. Adição de jogadores: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos e este vídeo e nós executar o nosso jogo. Você pode ver que temos Draco e aqui temos o gradiente aqui podemos até movê-lo. Precisamos consertar isso. Precisamos também flexionar os colisores em ambos. Então, quando apertarmos a tecla B, comece a batalha. Lá vai você. Você pode ver que todos os personagens ativos em nossa cena agora estão prontos para a batalha. Então não vamos perder mais tempo e vamos começar. Oh, ok, então agora é hora de começar a adicionar jogadores e inimigos. Então vamos começar adicionando os jogadores. Quem são os jogadores? Bem, eles são. Deixe-me levá-los para onde, como nossos prefabs, personagens de batalha jogadores, estes são nossos jogadores. Então o que vamos fazer é criar esses jogadores em nosso jogo. E então vamos encontrá-los usando o gerenciador de jogos e adicioná-los às estatísticas do jogador, que está aqui. Então nós vamos encontrá-los, adicioná-los às estatísticas do jogador, então chamar o gerente do jogo, obter as estatísticas do jogador dele, e adicioná-los em nosso gerenciador de batalha. Então, primeiro, precisamos ir para o Prefabs no jogador. E aqui vamos colocá-lo bem aqui. Vamos adicionar o monstro negro. Não sei qual é o nome dele. Oh, Draco. Draco. Ele tem algumas estatísticas de jogador seu nome como Draco. E Draco aqui entra e ele tem, vamos ver, XP atual, eu não sei, talvez 72, Max HP, talvez 250 com um HP atual de 250, maxmin é 10, 10, 10. Vamos ver a destreza. Acho que ele tem mais destreza, vendeu 40 defesas. Ele tem uma armadura grande, então acho que são dez. E é isso. E mais tarde veremos o que acontece que ele pode empunhar, então vamos guardar isso. E agora vamos adicioná-lo e à pré-fabricada. Então vamos criar uma pasta para os jogadores. Bem, esse é o jogador e para os jogadores. E então pegamos o Draco e o adicionamos aqui e criamos uma pré-fabricada original. Então aperte Enter. Agora temos Draco que é adicionar um segundo que vai ser o 0. E antes que esqueçamos Draco, temos o renderizador de sprite. Nós não queremos ter o script do player nele, então nós vamos remover o script do player, remover o animate dois, e pronto. Acho que é o suficiente. E vamos mudar o Draco para cá. Então ao lado é um pouco grande demais, talvez nossas incógnitas, mas não se preocupe com isso o colocará aqui. E então o segundo jogador, onde ele está? Jogador? Lá vamos nós. Ele está aqui. Vai ser o esqueleto. Então vamos procurar o esqueleto. Oh, e antes que esqueçamos, a imagem do personagem também deve ser alterada. Então vamos nos certificar de que esta é a imagem do personagem e vamos aplicar essa mudança. Acho que é tudo o que precisamos fazer pelo Draco. Vamos fazer o mesmo com os esqueletos. Então, onde estávamos? O jogador ganhou. O sombrio. Copie isso. Cole aqui. Entrar. Vamos ver, precisamos escolher uma das imagens. Quem devemos escolher este? E vamos adicioná-lo também aqui, vai mover a grama que aparece ao lado de Draco. E o que devemos acrescentar aqui? Então, qual é o HP máximo? Acho que deve ser infinito, já que ele é um esqueleto. Ou vamos fazer algum tipo de esqueleto mágico. Então, o HP vai ser baixo. Então vamos fazer 7070, digamos 120. 120 de destreza. Digamos 30 ou não, não. Vamos fazer 50. E a diferença é a garantia. E lá vamos nós, guardamos isso. E também removeremos o animador e removeremos o componente player. E vamos criar uma pré-fabricada dele. Então vamos para as camadas e vamos adicionar o sombrio como um antigo prefab original vai salvar isso. Certo, ótimo, então agora estamos prontos. Vamos entrar em nossos roteiros, no gerente de batalha. E nós vamos extrair este método aqui apenas para manter tudo limpo. Porque, como eu disse, será um dos roteiros mais longos que vamos criar. Então esta será a batalha de configuração, aperte Enter, e podemos até fechá-la para salvá-la, mas espaço, manter tudo muito limpo. Então aqui nós vamos, em primeiro lugar, como eu disse, passar por todas as estatísticas dos jogadores no gerenciador do jogo. Então vamos criar um loop for que vai e eu é igual a 0, I é menor que v0. Instância de pontos do Game Manager, estatísticas do jogador de ponto, comprimento do ponto. Este é um comprimento de ponto método e aumentará em um a cada vez. Aqui vamos verificar se a estatística do jogador que estamos tentando acessar ou o objeto do jogo dos jogadores que está realmente ativo na hierarquia. Então vamos verificar se uma instância de ponto de gerente, estatísticas de jogador de ponto. Na posição eu ponto é ato ou ponto, objeto de jogo, ponto, ativo e hierarquia. Então vamos percorrer nossos prefabs e ver se temos esse personagem disponível. Então vamos criar novamente um loop dentro porque não queremos realmente instanciar o prefab. Temos a pré-fabricada e deixa-me mostrar-te outra vez. A pré-fabricada aqui é diferente do personagem de batalha que fomos instanciar. Então, queremos saber o nome. E com base nesse nome, queremos ir para os Prefabs que estão no gerente de batalha. Então nós somos z os prefabs do jogador. Lá vamos nós. E então queremos verificar se temos essa pré-fabricada disponível. E então vamos colocá-lo com um personagem de batalha nele. Então essa é a diferença entre o jogador regular e um personagem de batalha. Então nós estamos, estamos fazendo loop. Então, porque já estamos usando AI, vamos usar j. e você pode usar qualquer tipo de variável que quiser. Você pode até chamá-lo de algo que é mais sofisticado e mais indicativo do que estamos passando, mas eu não acho que seja necessário por agora. Assim, para j é igual a 0 e j é menor do que os prefabs do jogador. comprimento do ponto prefabs do jogador. Isso é porque estamos fazendo loop através dos prefabs do jogador e isso deve ser j. Nós vamos verificar se o jogador prefabs na posição j que estamos olhando através, o nome do caractere ponto é igual ao gerenciador do jogo, por exemplo, estatísticas de jogador de pontos. E eu acho que nós poderíamos realmente ter dito que este jogador estatísticas em algum lugar aqui e realmente tornar isso muito mais simples. Não se preocupe com isso por enquanto, Vamos procurar através de uma certa posição que vai estar no olho. Porque lembre-se, o I está percorrendo as estatísticas do jogador no nome do jogador do ponto do gerenciador do jogo. E se houver um desses, então vamos criar um novo personagem de batalha, novo jogador. E vai ser igual a um fim aqui que vamos instanciar. Mas não só vamos instanciar com previamente instanciado sem adicionar qualquer rotação ou posição. Mas desta vez precisamos de uma certa posição para colocar o nosso novo jogador. E então vamos instanciar. E instanciar abrirá os parênteses. Pressione Enter. Em primeiro lugar, anote o prefab do jogador na posição j. Então, se você não se lembra do formato da Instância, você pode vê-lo aqui. Você pode ver que temos muitas variações. Então, podemos adicionar um pai com uma posição e a rotação e também um pai. Então, estamos olhando para definir o original. E aqui é o objeto que queremos instanciar a posição que vamos colocar como a posição que criamos para os jogadores no vídeo anterior, a rotação, que vai ser muito simples e então o pai . Então, qual é a posição? Vai ser a posição do jogador. Na posição I, a posição. Então vamos acessar a posição do jogador na posição I na matriz. E vamos apenas configurá-lo como a rotação, o que nos dará a rotação padrão da transformação. Não quero mudar isso. E, finalmente, queremos definir o pai como a posição de ponto do jogador. Lá vamos nós. Nós guardamos isso. Espero que saibas o que estamos a fazer aqui. Estamos pegando o objeto, o prefab que queremos instanciar. Estamos definindo-o para a posição que estabelecemos em nosso jogo com a configuração para o, deixe-me mostrar-lhe o que quero dizer. Então lembre-se quando criamos as posições aqui, posição de jogador 1, 2, 3, nós as adicionamos aqui. Lá estão eles na posição do jogador, então nós estamos configurando-os para ser o mesmo que aqui, como configurá-los com a mesma rotação e o mesmo pai e certificando-se, quero dizer, desculpe que o pai é a posição em. Então, por exemplo, isso se tornará o pai do jogador que estamos instanciando. Ok, ótimo. Então, estes estão desligados. Podemos até apagá-los. Não precisamos deles, mas os mantemos só para ter certeza de que estamos na posição correta. Bem, isso explicado completamente. Agora queremos rastrear nossos personagens e para isso vamos criar uma lista. Então, queremos manter o controle dos personagens ativos. E isso vai ser, claro, um desafio para você. E seu desafio será criar uma lista. Então crie uma variável que é uma lista de caracteres de batalha tipo. Esta será a lista que mantém o controle dos caracteres ativos e você precisará inicializá-lo. Finalmente, adicione camadas à lista no método que criamos. Então crie a lista e instanciá-lo usando nova lista. Claro que já sabe disso. E finalmente, depois que terminamos de criar o jogador ou configurar o jogador ou adicionar o jogador como você quiser chamá-lo, certifique-se de adicioná-lo à lista de atos de personagens. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Espero que não tenha sido tão difícil. Vai subir. E aqui vamos nós, vamos criar um campo INR, tão serializado. É uma lista de personagens de batalha. E vai ser chamado de personagens ativos ou solteiros ativos ou o que você quiser chamá-los. E vai ser uma lista de personagens de batalha. Então foi aqui que instanciamos. Agora é hora de adicionar a essa lista. E depois que terminarmos de criar, instanciar e configurar tudo, então vamos adicionar este novo jogador que criamos à lista. E vamos fazer isso chamando os caracteres ativos dot add. E isso, como você pode ver, anúncios, qualquer elemento ou qualquer item do tipo, personagem de batalha. Então, ponto adicionar. Lá vamos nós. Você pode vê-lo. Digite abrir os colchetes e adicione o novo jogador. Então, vamos salvar isso. Vamos voltar aqui. Vamos executar o nosso ganho e vamos ver se eles instanciam. Como podem ver, temos os personagens aqui. Podemos movê-lo porque, porque estes são ainda tem um corpo rígido, removê-los. Isso é engraçado. Então, e é claro que precisamos mudar a cor que existe, mas por enquanto não vamos nos preocupar com isso. Então, se formos a este ponto, atingimos a PA e temos os personagens sendo atualizados aqui em cima. Por que é isso? Porque vamos ao gerente de batalha e à cena da batalha. Posição do jogador V. Então, a posição do jogador por algum motivo é lá em cima. Mesmo que deveria ter sido aqui. Isso desliga. Pare com isso. Assim, a posição do jogador está em 000. Vamos ver o que está acontecendo. Então a posição do jogador está na posição 0, mas a posição um está aqui em cima. Então vamos precisar mudar um pouco. Então vamos nos certificar de que a posição do jogador. Vamos ver, vamos ver. Então estamos colocando a transformação dessa posição na posição da câmera, e é o gerente de batalha. Então é todo esse gerenciador de batalha que está atualmente em 0. A cena de batalha está em 0, a posição de batalha é em 0. Então agora todas essas três posições precisam ser movidas aqui para 0. Isso mudará todos eles, então vamos movê-los como um objeto. E agora lá vamos nós, estes estão aqui. Vamos guardar isso. Vamos tentar de novo. Talvez devêssemos modificá-lo mais tarde. Então eu só vou apertar a tecla B. Lá vamos nós. Como você viu, precisamos modificar um pouco mais. E vamos colocá-los para baixo um pouco. Dirija o jogo. Vamos nos mover apenas para ter certeza que não é sobre a posição do jogador. Lá vamos nós, então eles estão na posição correta. Nós os carregamos. E você pode ver bem aqui o sombrio Draco e Jim. Então, espero que gostem. Espero que tenha arrumado tudo. Talvez suas posições ainda precisem de um pouco mais de modificações, mas eu acho que isso é bom o suficiente por enquanto. E no próximo vídeo estaremos adicionando nossos inimigos ao jogo. Então, vejo-te depois. E a propósito, antes de eu ir, há um pequeno truque que podemos fazer aqui. Então, digamos que escolhemos todas essas posições. Nós queremos colocá-los aqui, ok, então qual é a posição aqui para aqueles jogadores? Podemos escolher um deles ou escolher. Por exemplo, deixe-me ver. Clique aqui e copie a posição. Saia do jogo. Escolha estes novamente. Clique aqui, cole as posições. E espero que isso funcione. Não tenho certeza se isso vai funcionar. Vamos executar o jogo. Talvez você deveria fazer para cada um deles tinha sido maiúscula. Obviamente, isso não funcionou. Então agora cada um deles deve estar em uma posição separada. E vamos movê-lo um pouco para a direita, a direita e para cima. Diga isso de novo. No copo. Sim, lá vamos nós. Acho que é bom o suficiente por enquanto. Então, cometa as tuas alterações, e vejo-te no próximo vídeo. 95. Adição de Entrarias: Bem-vindo de volta meus colegas desenvolvedores de jogos para um novo vídeo. E neste, quando executamos o jogo, você vai notar que quando começamos uma batalha, 00, agora há inimigos que resolve carregar. Então agora não estamos mais sozinhos com nossos jogadores e o passado. Nós também temos nossos inimigos bloqueados e carregados para começar a nos matar, mas eles não vão nos faltar. Até lá. Não vamos perder mais tempo e vamos começar. Agora que estamos adicionando jogadores, é hora de começar a adicionar inimigos. Mas antes de fazermos isso, há uma coisa muito importante que precisamos fazer e que é queremos importar as estatísticas do jogador. Então vamos em frente e fazer isso. E logo após adicionarmos o novo jogador ao ato de personagens, vamos importar parte as estatísticas do jogador. Então aqui vamos criar as estatísticas do jogador. Esta será uma variável que vamos chamar o jogador. Precisamos de uma variável para acompanhar tudo. Por isso não continuamos a escrevê-lo todas as vezes. E vai ser igual à instância de ponto do gerenciador de jogo, que as estatísticas da camada na posição i. Então agora temos referência às estatísticas do jogador do GameManager um. Então vamos somar tudo. Então, se você quiser, você pode ir em frente e fazer isso sozinho, ver quem pode fazer isso mais rápido. E vamos começar. Então, o HP atual, Eu não vou dizer muito porque nós já sabemos o exercício aqui. Eu poderia até pular a faísca. Ok, lá vamos nós. Então importamos todas as estatísticas. Mas como podem ver, estamos começando a ter uma batalha muito feia. Então vamos extrair estas linhas aqui. Vamos clicar com o botão direito do mouse em ações rápidas e refatoração. E nós vamos extrair o método. E reparem como é inteligente, porque estamos usando o Íon aqui, obviamente, e o I só está disponível através deste loop aqui. O que acontece agora é Visual Studio irá realmente criar um método que leva em um argumento I. Então isso é super útil e vamos chamar isso de camada de importação. Estatísticas apertam Enter, e lá vamos nós. Então agora temos as estatísticas importantes do jogador. E então, novamente, nós vamos escolher todo o código aqui, certo? Clique em ação rápida e refatoração, extraia o método. E esta vai ser a adição de camadas. Então, quão legal é isso? Agora, quando a batalha começa com a configuração da batalha, devemos ter configurado a batalha, adicionando jogadores. E então, dentro da adição de jogadores, nós fazemos loop through, escolhemos os prefabs, nós os instanciamos, nós os adicionamos ao personagem ativo. Em seguida, importamos as estatísticas do jogador que está aqui, e fazemos tudo isso e assim por diante. Então, como você pode ver, tudo é limpo, cortado e compreensível. É muito fácil de ler. Mas o próximo passo é realmente começar a adicionar os inimigos. E mais uma vez, já estou cansado demais para fazer isso. Então vai ser o seu desafio, não se preocupe, é muito parecido com a forma como adicionamos os jogadores. Então você precisará percorrer os inimigos que você quer. Você precisa ter certeza que o campo não está vazio porque nós não queremos nenhum vazio e aminas. Então você precisará criar um segundo loop para percorrer os prefabs inimigos, assim como fizemos no anterior. Quando quisemos adicionar, os jogadores precisarão comparar os prefabs do nome do personagem, os inimigos geram. E você precisará instanciar o inimigo se houver um jogo e se nós, se cairmos por algum motivo, colocarmos a posição dos inimigos no lugar errado, o que nunca aconteceu. Em seguida, você também precisará ajustá-los manualmente no Unity. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então vamos começar por fazer um loop. Igual a 0. Eu menos do que os inimigos geram o comprimento do ponto. Então, estamos fazendo com que os inimigos apareçam aqui mesmo. E nós vamos adicionar um a ele todas as vezes. Então vamos verificar se os inimigos não estão vazios. Na posição i, claro, porque não queremos verificar tudo. Queremos verificar se há uma certa posição. E é assim que verificamos se uma string está vazia ou não. Espero que não tenha sido tropeçado no local. Então vamos criar um loop e lado de J que vai percorrer todos os prefabs. E J plus. E então vamos verificar as câmeras da máquina central desligadas. Se o inimigo prefabs na posição j ponto nome do caractere é igual aos inimigos geram na posição I. Isso significa que podemos instanciar um novo inimigo, que vai ser do tipo caracteres de batalha. E chamaremos de novo inimigo. Vai ser igual a instanciar. Em seguida, ela porta, abrir os suportes, adicionar uma entrada aqui. Vai ser, o objeto vai ser o inimigo prefab na posição j, e a posição inimiga na posição do olho. O que é isto? Uma amina? Uma amina é posição Eu tenho rotação de posição. E, finalmente, os pais devem ser a posição inimiga no olho. Lá vamos nós, guardamos isso. E também vamos adicioná-los aos personagens ativos. Então os personagens ativos ponto adicionar como o inimigo, é o novo inimigo. Lá vamos nós. Feche isso, guarde isso em Unity. Espero que tenha entendido isso. É quase 100% o mesmo que adicionar um jogador. Passamos por diferentes tipos de prefabs inimigos. Verificamos se é diferente de 0 ou diferente de vazio. Então, porque não queremos adicionar algo que esteja vazio. E este é apenas um pequeno cheque aqui. Então, de volta à Unidade, guarde isso. Vamos executar o jogo. Então começamos a batalha, mas ela quer, oh, bem, começou o vazamento. Lá vamos nós. Não há nada. Há inimigos? Tem alguém lá fora? Sim, lá vamos nós. Temos os Bruxos, a página principal, e nada mais. E onde eles estão? Onde você está? Onde diabos é isso? Oh, então eles estão lá em cima. Ok, ok, ok, ok. Então vamos precisar mover tudo isso para baixo. E vamos ver a posição inimiga. Por que está lá? Então, esta é a posição inimiga. Talvez deva ser ajustado de volta para 0. Vamos ajustá-lo de volta para 0. 0, não, não, não, não, não deve ser em 0. Ou talvez devesse, por que não deveria? Então vamos mover toda a posição do jogador para o piloto. Mas então nós vamos talvez movê-los para baixo, executar o jogo. E isso deveria ter sido mais bem organizado, mas não se preocupe com isso. Vamos movê-los para baixo. Eu estou me movendo apenas segure, mude, clique em todos eles, mova-os para baixo em algum lugar. De alguma forma, execute o jogo. Tinha a pressão arterial. Opa, ainda estão lá em cima. Sim, lá vamos nós. É assim que eles devem estar parecendo. Então vamos sair do jogo. Aqueles novamente, mova-os para baixo, mas mova-os para a direita. Dirija o jogo. Tinha que ser, lá vamos nós. Estes são os nossos inimigos mesmo à nossa frente. Então, espero que gostem. Espero que tenha feito o desafio. Espero que não tenha sido muito difícil. Espero que você não esteja irritado com as razões pelas quais estes não estão muito bem alinhados. Talvez haja uma solução mais rápida, talvez a encontremos mais tarde. Espero que estejas a gostar, espero que estejas a cometer as tuas alterações e vejo-te no próximo vídeo. 96. Colocando a volta no sistema de combat em turno: Bem-vindo de volta Meus desenvolvedores de jogos favoritos para um novo vídeo e este, quando executamos o jogo. Quando começamos a batalha, temos os inimigos, temos os botões, podemos atacar, obter itens, executar a magia, Muito legal. Você pode ver que temos uma volta aqui. Então, quando tivemos o Anki uma, duas vezes, quando se trata da terceira vez, porque agora os inimigos estão atacando, não temos acesso à balança. Então agora só os inimigos nos atacam. Lá vamos nós. E então quando terminamos, porque temos cinco caracteres, começamos a curva, claro, em 0. Então, agora, quando queremos ir para o cinco, voltamos para o 0. Estamos de volta ao esqueleto e podemos novamente acessar nossos botões e itens de ataque, executar magia e assim por diante. Então não vamos perder mais tempo, e vamos começar. Ok, agora é hora de colocar a vez em combate baseado em turnos. Isso é uma piada de mau gosto. Vamos começar. Em primeiro lugar, houve um pequeno problema aqui quando estamos preparando a batalha. Na verdade, colocamos esta condição dentro daqui. Mas precisamos ter certeza, e precisamos saber também que quando começamos uma batalha, precisamos ter certeza de que há uma batalha ativa para todos eles. Então vamos remover a condição daqui. Vamos somar isso aqui. E nós vamos remover este colchete e pressionar Shift tab. Lá vamos nós. Mude a limpeza de todos os espaços em branco aqui. E lá vamos nós. Tudo deve estar correto agora. E finalmente, vamos adicionar mais um destes aqui. E tudo é bom que eu faço. Menor, na verdade. Ok, então você pode ver isso claramente? Ok. De qualquer forma, vamos continuar. Vamos extrair esse método também. Esta é a adição de inimigos. Então clique com o botão direito, clique em Ações e refatoração, método de extração adicionando inimigos. E como você pode ver, nós também obter os inimigos geram enviados para este método e aqui e até mesmo cria tudo. Então, quão legal é isso? Eu acho que isso é muito legal. Você pode ver que eles estão todos aqui em baixo importando, adicionando, definindo, etc. Ok, para negócios. Agora precisamos colocar a vez e combate, combate baseado em turnos. Vamos criar, em primeiro lugar, um inteiro que mantém a contagem, então é o termo atual. E então vamos criar um booleano, que vai estar acompanhando se estamos esperando por nossa vez como jogadores. Então, esperando por uma volta. Se estamos esperando por volta, há um par de coisas que podemos fazer. Nós vamos salvar isso. E, finalmente, precisamos também obter um campo serializado de um objeto de jogo, que é o suporte do botão da interface do usuário. Então UI botão mais velho. E por que precisamos disso? Bem, porque quando não é a vez do jogador, nós queremos, nós não queremos que os botões estejam disponíveis para que eles pressionem. Então esta é uma vaga que vamos preencher. E, a propósito, essas duas variáveis não precisam ser campos serializados, mas queremos colocá-las como tal porque queremos ter certeza de que tudo está funcionando corretamente. Então, agora uma atualização, vamos verificar se ele está ativo em batalha. Então estamos em uma batalha ativa. E se estamos esperando por sua vez, então foi, então vamos verificar se o personagem ativo no turno atual é um jogador. Mas não podemos saber se é um jogador porque o jogador aqui é um campo serializado. Então talvez possamos torná-lo público. Mas não, temos um jeito muito melhor. E vai ser um desafio que é devolver o jogador. Então crie um método no script de caracteres de batalha que retorna se o personagem é um jogador. Então pausar o vídeo agora mesmo. Faça o desafio. E se você quiser ir uma milha extra depois terminar de verificar se o personagem ativo na popa. Como jogador, em seguida, ligue os botões. Se não, desligue-os. Bem-vinda de volta. Esse foi um desafio bastante simples, acredito que vamos criar um bool público. É jogador, retorno, é jogador. De volta aqui. É o jogador. Se for verdade, é justo. Isto. E se for verdade, então o suporte do botão da interface do usuário 0 verdadeiro. Else suporte do botão UI. Mas triste, ativo, falso. Guarde isso. Ok, ótimo com isso feito o próximo passo é ter uma maneira manual de adicionar uma volta. Então vamos terminar aqui, verificar se há entrada. Se entrada, mas obter chave para baixo. Código de tecla, que código de teclado ainda não foi usado. E acredito que não usamos e isso representará o próximo mandato. Então aqui, o que fazemos toda vez que vamos para o próximo semestre? Na verdade, vamos criar o método. Então, em seguida, vire. E nós vamos criá-lo aqui. Onde devemos adicionar o início da batalha? Deve ficar com estes quatro. Vamos adicioná-lo aqui. Então vai ser privado ou talvez público. Vamos mantê-lo privado se precisarmos dele e outro script, podemos facilmente torná-lo público, mas acho que não. Tão privado, vazio. Próxima curva. E o que estamos fazendo aqui? Bem, antes de tudo, precisamos definir o termo atual mais, mais. Estamos aumentando em um. Mas há mais uma coisa que precisamos acompanhar. E isso é se a curva atual para obter algum maior do que a contagem de caracteres ativos. Então, se a curva atual, por favor, é maior ou igual ao ato de contagem de pontos de caracteres. O que vamos fazer agora? Vamos configurá-lo de volta para 0. Então, o que está acontecendo em tudo isso? Em primeiro lugar, começamos verificando se estamos em uma batalha ativa e estamos esperando nossa vez. Então, esperando por turno pode ser aplicado tanto para os personagens ativos, que são jogadores e inimigos, modo que eles não atacam, eles esperam por sua vez para chegar lá. Estamos verificando o ato de caracteres sobre o termo atual. Então, o termo atual passa por todos os jogadores, em seguida, todos os inimigos. Por quê? Porque estamos em primeiro lugar, eu acho que os jogadores, e nós adicioná-los aqui na lista de personagens ativos. Em seguida, adicionamos os inimigos, o que fazemos mais tarde. Primeiro de tudo, temos uma lista de todos os jogadores. Então, sob eles, imediatamente temos todos os inimigos. Então estamos passando por eles. Verificamos usando o turno atual. Obter o personagem ativo. Se ele é um jogador, então temos o suporte do botão. Se não é um jogador, é um inimigo, não podemos atacar. Não devemos ver o suporte dos botões para evitar problemas. E vamos para a próxima curva todas as vezes. Como fazemos isso aumentando em um? E então, se ultrapassar um certo limite, nós paramos. Mais uma coisa que precisamos levar em conta é que quando começamos nosso jogo, quando estamos começando a batalha, precisamos ter certeza de que esperar por volta é verdade. E esse é o termo atual. Agora aqui dentro. Você pode dizer que é 0. Então lá vamos nós. Começamos imediatamente com um jogador com o personagem principal, o jogador principal. Ou podemos criar um intervalo aleatório. Tão aleatório que alcance, e assim por diante. Vai ser entre 0 e o caracters.com ativo. Agora, eu acredito que esta é uma maneira muito melhor de começar uma batalha e quando se trata do jogo real. Mas para fins de teste, prefiro que comece em 0. Assim, podemos sempre ter certeza de que podemos pressionar a tecla End para ir para onde quisermos e não apenas fazer com que comece em algum lugar aleatoriamente. Então, com isso feito, nós vamos salvar, eu vou manter isso aqui como um comentário para aqueles de vocês que querem ter um personagem aleatório começa a atacar quando a batalha começar, nós vamos para a Unidade. Vou respirar fundo. Ok, agora vamos executar o nosso jogo. Vamos falar com o gerente de batalha. Temos o termo atual como 0. Não estamos à espera de nenhum termo. Temos o bico. Agora estamos esperando por uma volta. Quando atingimos o Anki, vamos virar o número um, depois o número 2345678. E obviamente não vemos a batalha de Canvas porque a desligamos. Lá vai você. Então, agora vamos tentar de novo. Nós não adicionamos o suporte. Por que a batalha Canvas foi desligada que eu só notei aquele menu. Vamos ligar o Canvas de batalha. Cena ligado e os EUA, enquanto o menu. Então este é o menu, ele tem todos os botões. Agora, podemos desligar todo o menu, mas eu acho que é melhor apenas criar um objeto de jogo. Mas temos o menu que tem a grade, certo? Certo, então o layout da grade, vamos desligar o menu inteiro. Isso não é nada demais. E vamos apenas adicionar o menu quando é a nossa vez, os gerentes desaparecem. Você pode, porém, mas você precisa mover o layout da grade, certifique-se de fazer isso. Então vamos guardar isso. Vamos acabar com a cena da batalha, executar o nosso jogo. Vá para a batalha. Lá vai você. Então, agora, onde está o gerente do banheiro? Então vire para 0. Quando chegarmos a virar um, talvez tenhamos começado no esqueleto agora estamos no senhor, eu não sei. Depois um Jimmy, depois lá vamos nós. Não podemos mais clicar nos botões. Novamente. Vamos passar por estes dois. Estamos de volta às 0 no esqueleto e podemos usar o nosso botão. Então tudo está funcionando. Espero que esteja gostando deste curso. Espero que aprenda uma lição valiosa hoje. Não tenho certeza do que era. Algo sobre talvez mudar as voltas. De qualquer forma, vamos cometer as nossas mudanças. Agora. Nós, a vez em vez de combate baseado, combate de nossas mudanças. E vejo-te no próximo vídeo. 97. Como fazer mudanças: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Não tenho nada para te mostrar. Só fazemos algumas coisas. Atualizamos o batalhado, verificamos se os jogadores são que perdemos se os inimigos ou que fomos e não podemos implementar ainda porque nenhum de nós pode atacar. Mas no próximo vídeo, nós também vamos garantir que o inimigo pode atacar e garantir que ele funcione. Mas este é um vídeo muito crucial e que requer muita concentração dele. Então coloque suas tampas de pensamento, coloque sua zona de concentração de genes. Isso é mesmo uma palavra? E vamos começar. Oh, ok, então agora estamos nos movendo de uma vez em outra. Mas o que realmente está acontecendo? Bem, nada. O que estamos fazendo entre turnos atualmente nada. Mas nós estamos indo para cada termo atualizar a batalha. Então vamos em frente e atualizar a batalha. O que eu quero dizer com botão Atualizar? Passamos por todo o ato de personagens. Verificamos quem tem algum HP atual que é 0. Se tiver 0, vamos matar aquele personagem. E então nós também vamos verificar se todos os, digamos que inimigos estão mortos, então nós vencemos a batalha. Se todos os jogadores estiverem mortos, perderemos a batalha. Então vamos começar. Vamos abrir nosso roteiro. E aqui, no próximo semestre é onde atualizamos a batalha. Mas antes de fazermos isso, precisamos ter certeza de que a espera de volta está definida como verdadeira. Então, estamos realmente esperando por uma volta. E então vamos atualizar a batalha, fechar isso. E agora vamos gerar esse método. Lá vamos nós, atualizar batalha. Então, o que estamos fazendo aqui? Primeiro de tudo, vamos criar duas variáveis. E digo-te quando os criarmos ou forem eles. Então bool inimigos ou vamos chamar de tudo. Inimigos são isso e é igual a verdade. E um segundo. Todos os jogadores são isso. Então, pode sair do caminho, por favor? Obrigado. Todos os jogadores são dívidas. E por que isso é verdade? Bem, à medida que descermos, verá que no final desta batalha de atualização será um grande método. Você verá que vamos passar por todos os HP dos personagens ativos. E se um deles tem um HP que é diferente de 0, então vamos definir um desses como falso e não vamos entrar na condição. Vamos ver como isso se parece enquanto continuamos por enquanto. Precisará confiar em mim. Então vamos criar um loop for, que é um int de 0 menos do que o comprimento de ponto de caracteres ativos, contagem de pontos porque não é uma matriz, é uma lista. E nós vamos adicionar um a ele todas as vezes. Então vamos verificar se os caracteres ativos na posição I, o HP atual, é menor que 0. Se for, então vamos defini-la como 0. Por que estamos fazendo isso? Bem, porque se olharmos aqui, nada aqui, na verdade , você, quando ligamos o painel, você se lembra que temos a barra dos jogadores. Não queremos que se torne negativo. Portanto, queremos ter certeza de que quando chegar a menos de 0, porque às vezes o dano que aplicamos pode levar o HP a menos de 0. Queremos ajustá-lo de volta para 0. Então personagem ativo na posição I, o que há sempre API ele porque os colchetes ao lado dele não pode HP é igual a 0. Em seguida, continuamos em f V, caráter ativo ponto AHP é igual a 0. Então vamos matar o personagem aqui. Então eu vou apenas adicionar um comentário, matar personagens ou personagens ou qualquer outra coisa. Ok? Mas se não for, então se o ponto de caractere I dot atual HP não for igual a 0, então vamos criar um outro aqui. E vamos verificar se aquele personagem que não tem um H B igual a 0 é um jogador. Então, se o ponto de personagem ativo I dot é jogador, vamos definir v todos os jogadores que para falso. E se é o outro, se S é o inimigo, que todos os inimigos são iguais a falso. Eles não são tudo o que ainda há um deles vivo. Então, por que estamos passando por todo esse problema? Porque nós, nós não queremos passar toda vez por todos os inimigos e depois verificar se eles estão todos vivos. Achamos que todos eles estão mortos. E então, se um deles está vivo, então eles não são mais isso. E podemos continuar o jogo porque precisamos ter todos os jogadores que perderem o jogo ou todos os inimigos que para vencê-lo. Ok, então novamente, vamos ver mais uma vez como este código está funcionando. Estamos passando pelos personagens. Estamos em primeiro lugar, verificando se é menor que 0, estamos definindo como 0. Não queremos números negativos. Vou remover os suportes, manter simples. Então estamos verificando se é igual a 0. Então essa condição deve ter passado por isso. Ou, por exemplo, talvez por uma coincidência que não vá abaixo, é exatamente 0. Não se preocupe com isso. Matamos o personagem. Senão. Se não for isso, então estamos verificando se é um jogador ou se é um inimigo. Se for um jogador, dissemos que todos os jogadores estão nisso ainda, se for um inimigo, que todos os inimigos estão nele. Ainda assim. Agora aqui, depois de terminarmos o loop, precisamos verificar os inimigos e os jogadores e decidir se ganhamos ou perdemos. E isso vai fazer parte do seu desafio. Verifique a dívida. E antes de tudo, você precisará criar uma condição que verifica se todos os inimigos ou todos os jogadores são que, então você precisará imprimir uma mensagem vencedora ou perdida. E eu vou te dar uma dica sobre como você pode adicionar um ou. Você precisará verificar todos usando esses dois símbolos. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Primeiro, verificamos se os inimigos são isso ou todos os inimigos estão mortos, ou todos os jogadores ou aquilo. Então entramos nessa condição. Verificamos se foram todos os inimigos, então vamos imprimir que ganhamos. Senão. Isso significa que são todos os jogadores. Vamos imprimir. Nós perdemos. Ou nós também podemos, eu acho que se todos os jogadores são que, então nós vamos imprimir que perdemos. Isto é apenas para um passo extra de segurança. E finalmente, o que acontece depois de terminarmos? Vamos sair do lado de fora de você. Vamos acessar a cena de batalha e desligá-la. Então precisamos adicionar o ponto-e-vírgula. Cena de batalha. Os pontos estão ativos, falsos. E nós vamos acessar o gerente do jogo e garantir que o jogador pode andar novamente. A batalha está ativa como igual a false. Então agora o jogador pode andar novamente. E finalmente, a batalha está ativa está definida como falsa. Ótimo, então vamos guardar isso. E infelizmente ainda não há como testar isso até que um de nós, ou nós ou o inimigo ataquemos. Então, no próximo vídeo, vamos nos certificar de que o inimigo pode atacar. Vejo-te naquele vídeo e certifica-te de que comprometes todas as tuas alterações e adeus. 98. Atacar com inimigos: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, tornamos o combate baseado em turnos mais automático e dinâmico. Então, quando começamos a batalha, podemos ver que o termo 0 transforma um determinista para agora quando determina 3, ele desliga e você pode ver que a curva passa por sua própria e, em seguida, novamente por sua própria e volta para 0 porque os inimigos têm terminou de atacar. Então, quão excitante é isso? Ele tem? Eu sei, eu sei. Não vamos perder mais tempo e vamos começar. Então queremos esperar entre cada ataque inimigo. Isso significa que precisamos de um co-working. Por que fazemos isso? Bem, porque nós não queremos fazer o inimigo atacar como popup, pop e então ele se foi. Não, queremos um popup. Agora queremos ter o Papa do que perceber o que acontece. Ver a nossa vida ficar um pouco menor, ver onde o dano foi causado. E 10 de novo. Então é isso que queremos fazer. Para isso, vamos precisar criar uma co-rotina. E por isso, vou te dar um desafio. E seu desafio é criar um revestimento. Então configure a ponderação para transformado em falso. Isso define a ponderação denominada false. Isto está no início da co-rotina. Então você terá que esperar por um segundo. Então você vai precisar chamar método de ataque inimigo são criados mais tarde. Então você terá que esperar mais um segundo e então você vai ligar para o próximo mandato. Então, com toda essa informação, pausar o vídeo agora mesmo. Você pode até adicionar mais um ponto aqui. E se você quiser pensar em um passo extra que você quer dar, onde você chama isso de cortejar? De qualquer forma, por enquanto, seu desafio é criar a rotina de pontuação. Pause o vídeo agora, e vá fazer o desafio. Ok, bem-vindo de volta. Então, onde estamos? Fecharemos o próximo semestre, encerraremos a batalha de atualizações. E aqui vamos criar a co-rotina. Então é um enumeração de olhos públicos. E vai ser a co-rotina de movimento inimigo porque é a jogada do inimigo. Então vamos em primeiro lugar, definir a ponderação para falso. Então vamos ceder, voltar. Novo. Espere quatro segundos, um segundo. Então vamos para NMI, que irá criá-lo e apenas um pouco. Então vamos ceder retorno, esperar por novo novamente. E então vamos para o próximo semestre. Ok, ótimo. Vamos em frente e extrair isso ou gerar este método. Então aqui vamos fazer algumas coisas. Primeiro, queremos uma lista de todos os jogadores que podemos atacar. Então vamos criar uma lista de tipos. E porque estamos passando pelos índices por agora, vou mostrar a vocês o que quero dizer em pouco tempo. Assim, os jogadores equivale a uma nova lista de int. E agora queremos ir para um intervalo aleatório. Agora, nós não queremos ir, por exemplo, sempre para o 0. Então queremos ter uma gama aleatória de jogadores. Então vamos criar uma variável aqui que vai ser a camada selecionada para atacar. E vai ser igual aos jogadores que temos em um intervalo aleatório de pontos. Aleatório aleatório esse alcance. Por que não está me dando o alcance? Esperança. Ok, bem-vindo de volta. Então aleatório. Randrange. Fiz funcionar à força. Qual é o problema aqui? Foi confuso entre, como você pode ver, Unity motor ponto aleatório eo sistema de uso, System.out aleatório. Então eu apenas comentar o sistema fora espero que não terá muitos problemas com isso. Vamos continuar em random.randrange. Temos o mínimo. Então, qual é o mínimo? É o 0 porque começamos em 0 a partir do número de jogadores e, em seguida, os jogadores. Mas conte. E nós fechamos isso e se você esqueceu o que os jogadores são, onde está? Colocamos em algum lugar aqui onde criamos a lista. Ok, então a lista aqui, nós escolhemos entre os jogadores que temos. E agora o que vamos fazer é passar por um loop for. E vai passar pelos personagens ativos, contagem de pontos, aumentando eu cada vez. Vamos verificar se é um jogador. Então personagem ativo na posição i ponto como um jogador, e seu HB é maior do que 0. Então vamos adicionar aos jogadores VI. Então, o que temos agora? Temos uma lista de jogadores que podemos escolher aleatoriamente para atacar adicionando sua posição a esta lista de inteiros selecionando um deles para ser atacado. Com isso feito, a última coisa que precisamos ter certeza é que chamamos o inimigo de co-rotina. E isso vai acontecer aqui. Depois de definir o botão para ser falso, podemos ir em frente e abrir os colchetes aqui. E nós vamos em frente e chamar o revestimento. Então comece a co-rotina do inimigo, cortejando. Então, quando desligamos o botão, temos o revestimento e vamos extrair este método apenas para manter tudo limpo. Vai ser chamado de botões Ativar camada. É um bom nome? Ou verifique a ativação dos botões do Player ou dos suportes dos botões de verificação, os titulares dos botões da camada de verificação tinham entrado. E eu vou mover este método. Onde devo mover um ou devo mantê-lo aqui? Vamos mantê-lo aqui. Vamos mantê-lo aqui. Temos a batalha inicial, a jogada inimiga, Curtin, salve tudo isso. Certo, então vamos entrar no nosso jogo e vamos testar isso. Abrimos a batalha. E o, By the way, também podemos criar algum tipo de ter algum tipo de música tocar de forma diferente quando entramos em uma batalha. Então vamos tentar ir para o próximo termo, 1, 2, e agora manter o controle do termo atual. Então, quando tivemos os três, esperamos um pouco, 1, 2, trabalhando também algo deu errado como clique duplo não deve ser negativo. Ok, então índice fora do intervalo, índice deve ser não-negativo e menor que o tamanho do parâmetro. Posso, por favor, saber? Onde quer dizer? Oh, ok, então eu sei qual é o problema. O problema estava aqui. Então criamos uma lista, ela está vazia, e então tentamos passar por um intervalo na contagem. Isto é um grande “não-não”. Então o que precisamos fazer é colocá-lo aqui. E agora, quando executamos nosso jogo, não temos mais esse problema. Executar o jogo, acertar o nerd. E agora você pode ver, então gire um 0, nós aumentamos em 1, 2 , 3, ele sai, procura, e depois volta para 0. Quão legal é isso? Então agora estamos de volta esperando pela sua vez, então esperando por nós jogarmos. Então eu espero que você tenha gostado e eu espero que você crie a co-rotina. Não foi muito difícil. Espero que todo esse código não seja muito confuso. Se for, eu recomendo o verdadeiro olhar para trás em um cheque cada linha única, certifique-se de entender o que está acontecendo porque à medida que avançamos, as coisas vão ficar cada vez mais complexas. Isso é muito importante para entender o que está acontecendo. Por que estamos chamando certas coisas e certas posições? Por que estamos chamando este fim aqui? Bem, como este é o lugar perfeito para chamá-lo, podemos iniciar imediatamente a co-rotina assim que o botão for desativado. Então eu vou vê-lo no próximo vídeo onde nós realmente entender onde o inimigo está atacando criando efeitos sobre os jogadores que estão sendo atacados. Então, vemo-nos lá. 99. Efeitos de ataque: Bem-vindos de volta meus colegas desenvolvedores de jogos. E neste vídeo vamos criar alguns efeitos de ataque. Então temos o relâmpago, temos o fogo azul, e temos uma barra. Sim, esses são os ataques que vou criar o resto. Vou deixar-te a encontrar o teu próprio ataque. Gorduras, crie todas elas, e não vamos perder mais tempo. Todos eles estão disponíveis em arte de jogo aberto e vamos começar. Certo, então agora nossos inimigos estão atacando. Eles estão escolhendo qual jogador eles querem atacar. Mas não há efeito, e precisamos de algum tipo de efeito para tornar o nosso jogo bom. Então vamos em frente e criar alguns efeitos. Então podemos ver bem aqui e os personagens inimigos, sprites que já temos essa grande bala e esses tentáculos que podemos usar e as bolas de fogo são especialmente agradáveis. Então eu vou usar estes e eu também vou para os sprites e criar uma nova pasta aqui. Isto vai ser o efeito de ataque. E eu forneci a vocês alguns efeitos de ataque, como sempre, estes são todos de arte de jogo aberto, então eu vou adicionar este aqui. Isto é para a barra regular, para o ataque regular. Então temos a bola de fogo cintilante de volta, e vamos usar esta aqui. Vamos adicioná-lo aqui. É um pouco grande. Então podemos dizer que este é um relâmpago porque já temos talvez fogo ou podemos usar efeitos diferentes terá eu acho que fogo. Vamos ver. O que temos aqui. Então os personagens, deixe-me tirar tudo. Então este fogo e este é fogo. Então podemos usá-los. Se você quiser. Você pode criar um imposto para os inimigos separadamente e 40 jogadores separadamente. Eu acho que podemos usar ambos podem ser alguns especiais como o mago ou os tentáculos podem ser usados apenas para os inimigos e os outros podem ser entrelaçados. Você sabe o que eu quero dizer? Então vamos em frente e movê-los para os sprites do fato de ataque. Então lá vamos nós. Aqui temos essas bolas de fogo. Vamos colocá-los todos em uma única linha para criar uma animação. Então vamos em frente e fazer isso. E se eu colocar isso, oops, vamos para o local. E aqueles parecem no jogador. Vamos adicionar isto aqui. E é, vamos torná-lo o fundo. E é um pouco pequeno. Então eu vou escolher todos estes e torná-los 32. Vamos ver o quão grande isso é. Sim, isso é grande o suficiente, eu acho. Agora vamos em frente e criar uma animação. Então vamos para a nossa janela. Ou vamos criar um objeto de jogo vazio aqui. Ou, você sabe, vamos manter esta animação barra. Ou apenas cortar o que você quiser. É no fundo, deve estar no fundo da batalha ou personagem de batalha, personagem de batalha um. Guarde isso porque queremos que esses ataques estejam no topo dos personagens. Ok? Então nós vamos para a janela, ir para as animações. As animações serão encaixadas ao lado do nosso jogo. E aqui vamos clicar neste, clique em Criar. Se formos para as animações Ativos, passou um tempo desde que fomos para as animações. Animações, você provavelmente deveria fazer sua lição de casa agora. Então, corte e certifique-se de lembrar como as animações funcionam. Então estamos criando uma animação de barra. Vamos selecionar todos estes e vamos arrastá-los para aqui. Então, agora, quando executamos, sim, lá vamos nós. Esta é a nossa animação. Talvez torná-lo um pouco mais lento. Então vamos ver. Sim, eu acho que isso é bom o suficiente agora há muitos outros que você pode adicionar. Então aqui você pode ver que, além da bola de fogo e do tudo, há alternativas, cores diferentes, diferentes tipos de barras. Aí está o clássico, estou usando o clássico. Há este e aqueles e os outros usam o que achar que lhe convier. Isto é puramente para demonstração e eu acho que é um bom exemplo o suficiente. Mas há mais uma coisa que queremos fazer, e que no final você pode ver aqui. Então este primeiro 1, segundo, terceiro, quarto e o quinto. E depois quero desligá-lo. Então, neste ponto, eu quero apertar o botão Gravar e eu quero que o renderizador de sprite nesta barra seja desativado. Então, como é que isto parece? Então, quando executamos nosso jogo, como você pode ver no final, ele é desligado e então vamos começar tudo de novo. Lá vamos nós. E agora nós também podemos ir para as animações e eu quero ter certeza de que ele não está looping. Então a barra não faz loop, guarde isso. Ele corre. Lá vamos nós, e ele desliga no final. Lá vamos nós. Ok, ótimo. Agora a próxima coisa a fazer é querer adicionar um script a esses ataques. Então vamos entrar nos roteiros. E notei o quanto já fizemos isso, tão incrível. Então, quando o sistema de batalha, nós vamos criar um script C-sharp chamado Tech Fact. Quero dizer, você se lembra quando só tínhamos algumas pastas? Apenas um par de pastas, alguns scripts C Sharp. Agora veja o quanto temos e o quanto organizamos e também o quanto adicionamos aos mestres. Quero dizer, olha o quanto precisamos rolar para baixo. Sinto-me muito orgulhoso de mim mesmo e da vista, é claro. Mas de qualquer forma, vamos voltar aos negócios. Vamos anexar o ataque, afetar a barra de animação. Vamos clicar duas vezes. E então aqui vamos fazer algumas coisas. Então vamos serializar um campo, e este será o, um flutuador que vai ser o tempo de efeito. Então, quanto tempo há e quando o destruímos. Então não queremos manter a animação lá dentro. Queremos destruí-lo depois que o tempo de efeito acabar. Isso será exclusivo para cada uma das animações. Então vamos adicionar outro campo serializado 40 efeito sonoro para jogar. Então, quando professor como afeta o número para jogar, porque é claro, cada animação vai exigir algum tipo de efeito sonoro. E no início vamos acessar o gerenciador de áudio instância Door. O leigo como afeta o número S f x para jogar. E acho que não temos efeitos sonoros para todos os ataques. Tenho certeza que você vai encontrar todos eles. Então vamos atualizar. E vamos destruir o objeto do jogo, mas não apenas destruí-lo, vamos acertar uma vírgula. E você verá que se adicionarmos um T, é uma quantidade opcional de tempo para atrasar antes de destruir o objeto do jogo, e será o tempo de efeito. Então, por que estamos fazendo isso? Porque não queremos que o objeto do jogo fique por aí. Queremos instanciá-lo, desligá-lo em algum momento depois de terminarmos. Então eu vou mudar isso para 25 aqui. E eu acho que nós queremos apenas manter o tempo de efeito. Quanto é isto? Como sabemos a amatura? 25. Então 30 é o meio, então isso é 1234. Eu não sei. Vamos ficar com ele por, não sei, 0,5 segundos. Isso é, eu acho que 30. Então este é um segundo para 35 e isso é um pouco menos. E este é o ataque de corte. Temos algum ataque de barra e os efeitos sonoros do AudioManager? Vamos ver os monstros do diálogo cicatriz, feitiço. Cheque. Acho que devemos querer, vamos usar o diálogo por enquanto. Qual é o diálogo? Então podemos tocá-lo aqui. Então este é o modificador de ataque, que é muito bom, dissipar ataque, o que é muito bom. Vamos usá-lo para o mago. Sinto que é mais assustador. Mas assim, este é o monstro. Podemos usá-lo. E a transição da área, podemos usá-la. E eu vou usar o diálogo ou o ataque de barra. Quão conveniente você pode ir para Open game ofs e baixar o seu próprio. Por favor, não use o que estou fazendo. Sou uma escola de elite. Considerando que os efeitos sonoros de fundo, diálogo também. Então é elemento para cortar, para salvar isso. Ok, ótimo. Agora vou lançar um desafio. E esse desafio é ir em frente e criar todos os outros efeitos. Então defina todos os outros efeitos que você pode querer adicionar ao ataque. E é isso. Isso é tudo o que você precisa fazer neste desafio. O fogo, os feitiços, os ataques maiores, o que quiser, crie quantos cônjuges quiser. E pausar o vídeo agora mesmo, ir para o desafio. Ok, bem-vindo de volta. Então, agora que temos o efeito barra, vamos para os prefabs. E lembre-se do que eu disse, como estou feliz. Estou ficando um pouco irritado. Vamos criar uma nova pasta aqui para os fatos tecnológicos. E provavelmente também deveríamos gerenciar tudo isso, mas não agora, vamos adicionar a barra. Vamos chamá-lo de barra sem animação, então corte. E agora vamos criar um outro efeito. Então nós vamos para os sprites perto. E os fatos de ataque, e vamos ver o que temos. Vamos clicar duas vezes. Este é o que acabamos de fazer. Então, os fatos de ataque, vamos fazer a bola de fogo múltipla dobra Editor Sprite. E vamos ver como devemos cortar isso. 64 é muito grande. 32 por 32 fatias para cima. Lá vamos nós, aplicar. Agora temos nossos firewalls. Vamos nos certificar de que é um filtro. Nenhum ponto nos dá melhor qualidade. Vamos arrastar este aqui. É muito pequeno. E nós vamos colocá-lo no personagem de batalha um. E vire. Azul para bola, azul, bola. Pressione Enter. Vamos fazer este maior. Então eu acho que este precisa de 16. Aplicar. Sim, lá vamos nós. Este é o 16. Vamos adicionar um, como se chamava? Foi chamado de efeitos de ataque F. Oh, sim, efeito de ataque. E vamos criar uma animação. Onde você foi? I animações, animações de ataque. Azul, bola de fogo. Guarde isso. Jaguar. Estes. Coloque-os aqui. Vamos correr muito rápido. 20, devagar 15. Sim, lá vamos nós. Acho que isso é o suficiente. E no último, então vamos para 5555, acessamos o objeto do jogo e desligamos o sprite. E vamos definir o tempo de efeito para 0,4 segundos, e o efeito a ser reproduzido será o AudioManager, fato de incêndio quatro. Então, quatro, guarde isso. E o pré-fabricar tudo no final. O que mais temos? Este aqui? E aqui esta é a fatia, vamos chamá-la de brilho ou vamos chamá-la de brilho ou iluminação de múltiplas camadas Sprite Editor. Esta é uma grande imagem que você pode ver aqui. Então acho que precisamos do 256 por 256 fatiar isso. Sim, lá vamos nós. Bom palpite. E vamos adicionar este parque aqui. Vou colocá-lo aqui. Onde está a bola de fogo? Oh, espere. Fizemos algo errado? Sim. Desligamos o sprite sem bater o recorde. Desligue isso e salve esse stop run. Então desligue no final. Está bem, Excelente. Então o último quadro desliga-se. Precisamos ter certeza de que todas as animações não serão loop. Então o fundo da batalha de fogo brilhante, um, 32. Sim, lá vamos nós. É um belo efeito relâmpago. Então, efeito relâmpago. Vamos criar a animação. Relâmpago enquanto efeito de iluminação. Vamos apenas mantê-lo no relâmpago. Escolherá todos estes e arrasta-os para aqui. Então vamos ver. É capaz de primeiro, vamos torná-los um segundo. Sim, lá vamos nós. Acho que esta é uma boa. Vou adicionar o efeito de ataque. O ataque afetar o tempo será 1 para o áudio, vai soar o fogo também. Para que foi o fogo? Não é? Sim, para quatro e no último, que é por aqui, aqui cima, por aqui, e corremos as curvas. Pare de gravar, guarde isso. Então ele desliga no último. Vamos colocá-lo de volta aqui. Então agora temos o efeito de iluminação. O que mais deveríamos acrescentar? Os tentáculos? Então sabemos que há um par de mais que queremos acrescentar. Cada um terá seu próprio tempo de efeito, cada um terá seu efeito sonoro. Vou fazê-las fora da tela só para não perder mais tempo. E vemo-nos na próxima, quando começarmos a usá-los em jogadores. Então, vejo-te depois. 100. Como selecionar ataques: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós realmente fizemos um monte de impostos que realmente funcionam. Então, quando tivemos o apicultor, começamos a batalha. Tivemos o N e os inimigos atacaram. Lá vamos nós. Então, como você viu, eles escolhem jogadores aleatórios. Assim, cada um dos sapatos do inimigo, jogadores aleatórios e escolher ataques aleatórios. Então vamos tentar isso mais uma vez. Sim, lá vamos nós. Jogador aleatório. Um jogador aleatório. Vamos tentar de novo. Lá vamos nós, The Lightning, quão legal é isso? Então estamos usando a barra, o clareamento, os ataques roxos. É tão incrível. É tão fixe. Estamos escolhendo jogadores aleatórios. É muito divertido. Então não vamos perder mais tempo. Este vídeo é longo o suficiente e vamos começar. Todas as animações têm um tempo de loop de 0 ou eu desmarquei o tempo de loop. Então agora podemos ir em frente e apagar todos eles. Vamos salvar tudo isso. E então vamos em frente e criar um novo script chamado de movimentos de batalha. Então, em nossos roteiros, na seção de batalha e no sistema de batalha, vamos criar um script C-sharp. Batalha, movimentos, acertar, Enter, esperar que ele para compilar. E esta vai ser uma classe muito especial , porque ainda não fizemos uma dessas. Vamos remover o comportamento matinal. Então você verá agora que a atualização e o início não podem mais abusados. São funções regulares e vamos excluí-las. Por que estamos fazendo isso? Porque nós não queremos realmente anexar, mas move-se para qualquer coisa. Nós simplesmente queremos mantê-lo como uma fonte de informação. É como os itens ativos que criamos. Então, em algum lugar aqui, os itens Ativos, você pode ver, embora tenhamos o começo aqui, então é meio diferente, mas movimentos de batalha não serão ligados a nada. Só será usado para fazer algumas coisas. E nós vamos acrescentar aqui que é um ponto de sistema serializável. E isso indicará que podemos usá-lo em qualquer lugar. Então vamos criar um ataque público de String Move. Vamos duplicar isso quatro vezes porque teremos quatro tipos de variáveis. E aqui vamos ter um inteiro para o poder MOOC. Vamos ter um número inteiro para o custo de mana. Porque lembre-se que todos estes são feitiços que têm mono, não o ataque embora nós vamos definir para 0. E finalmente, teremos aqui o efeito que queremos usar. Então efeito de batalha, onde está? Batalha, batalha, batalha. Movimentos de batalha que chamamos de movimentos ou efeito de batalha? Não, lá vamos nós. Aí está o fato de lutar. Então efeito de batalha pública ou um fato de tag. Desculpe por isso. Oh, meu Deus. Ok, então o efeito a ser usado, e nós vamos adicioná-lo. Agora vamos voltar para o gerente de batalha. Então, onde está o gerente de batalha? Para onde foi? Sério? Para onde foi? Então, mas gerente, aqui estamos por alguma razão com fechar isto. Então vamos para a maior parte da matemática novamente e eles começam, mas também. E aqui vamos criar um campo serializado, que vai ser os movimentos de batalha. E vai ser uma lista de jogadas de batalha. Lá vamos nós. Agora, se formos para a Unidade, vá para o gerente de batalha. Você pode ver agora que a batalha se move quando clicamos sobre eles. Quando adicionamos um elemento, este elemento tem várias variáveis dentro dele já esperando por nós adicionar. Então vamos fazer exatamente isso, vamos fechar isso. Vamos para a Prefabs. O ataque se move, e nós vamos em frente e adicionar o fogo azul. Então esta será a bola de fogo azul, o poder de movimento, digamos que é 15. Nem sei quais serão esses números. Estes precisam levar muito tempo e certificar-se de que todos eles estão corretos. Então temos seis. Então o poder de movimento laser , digamos que é dez, custo de mana é seis. E acho que as algemas devem ser muito mais. Então o custo de mana será 100. E a bola de fogo azul, os custos de mana devem ser 200. O pesado vai. A bola de fogo azul. Vejamos, temos o raio. E acho que escrevi um relâmpago errado. E o ataque será, digamos, 25. E o custo de mana será 120. E estes números são muito estranhos. Eu não tenho certeza se eles vão ser bons quando realmente tentarmos usá-los. E eu vou adicionar a barra e os tentáculos. E nós vamos adicionar aqui roxo. Então os tentáculos roxos terão um poder de ataque. Tudo o que eu realmente estou fazendo tudo isso fora da minha cabeça. Um custo de 300, a barra um mais, digamos 10 e quantidade de custo de 0. E o movimento dos tentáculos terá um poder de movimento de seis com um custo de mana de 360. Certo, ótimo, então agora temos todos os nossos ataques configurados corretamente. Vamos guardar isso. Então agora o que vamos fazer é, em vez de simplesmente remover dez pontos de vida do jogador selecionado e do ataque inimigo, nós realmente vamos acessar nosso personagem ativo no turno atual irá gerar um ataque aleatório que o inimigo real tem. Então, se formos a um dos prefabs inimigos e aqui você pode ver que temos os ataques disponíveis. Então agora podemos gostar dos elementos e adicionar os nomes dos ataques que temos disponíveis. Escolha um deles para atacar o inimigo, para atacar o jogador com, e ele vai escolher aleatoriamente. Então, vamos. Primeiro de tudo, vamos criar o código para isso. Vamos voltar aos nossos roteiros e ao ataque inimigo. Depois de selecionarmos um determinado jogador, vamos criar outro inteiro aqui e será o ataque selecionado. E vai ser um intervalo de pontos aleatório. E vai ser entre 0 porque começamos 00 e caracteres ativos na curva atual, estamos fazendo loop porque queremos o personagem ativo atual, então o inimigo atual que estamos usando e vamos acessar o movimentos de ataque. Então jogadas de ataque disponíveis não é acesso a nós porque isso é ir para os personagens de batalha aqui, nós queremos voltar. Então vamos criar um método, um conjunto público de cordas chamado de toupeiras de ataque falhável. E aqui vamos simplesmente devolver os movimentos de ataque disponíveis. Vamos voltar para o gerente de batalha. Então ataque movimentos disponíveis, o comprimento. Então ele vai escolher entre 0 e o número de ataques movidos que temos. Então vamos criar um loop. Então, vamos percorrer a lista de jogadas de batalha. Então, quando eu for igual a 0, eu sou menor que a lista de jogadas de batalha que acabamos de criar. Comprimento I mais, mais. E então aqui vamos verificar se a batalha se move menos na posição I dot move nome seria não adicionar um nome de movimento. Então este é o nome Move. Por que eu chamei isso de ataque de movimento? Eu não sei o nome do movimento e esta vai ser a lua. Mova o nome. Obrigado. Então, estou um pouco fora do meu jogo. Não se preocupe com isso. Michael, vamos, concentre-se. Vamos acessar o personagem ativo no turno atual com o movimento de ataque disponível. Então eu vou copiar esta linha. Cole aqui, e em que posição vamos acessar isso? Vai ser no ataque selecionado. Então, se há uma semelhança entre eles, então estamos procurando o ataque aleatório que temos desses ataques selecionados aleatoriamente, e então estamos comparando. Temos aquele movimento de batalha dentro do nosso gerente de batalha? Se sim, então vamos instanciar. E vamos abrir isto. Não precisamos atribuí-lo a nenhuma variável. E nós vamos acessar a lista de jogadas de batalha na posição Eu ponto o efeito para usar comum. Este será o objeto. Agora a posição e rotação personagem ativo v Jogador Selecionado para atacar a transformar a posição e transformar a rotação. Então isso vai encontrar, e nós não queremos adicionar nenhum pai, nós realmente não precisamos. Então, o que está acontecendo aqui? Estamos selecionando aleatoriamente um jogador. Estamos selecionando aleatoriamente um ataque. Estamos passando por todos os ataques disponíveis que podemos ter. Estamos verificando se temos o ataque e os movimentos de batalha atacam quando o encontramos, então instanciamos esse efeito sobre a posição do jogador com sua rotação. Então vamos salvar tudo isso. Vamos voltar para a Unidade. E estamos usando os senhores da guerra e a página principal quando começamos uma batalha. Deixe-me apenas verificar se estamos sim. Oh, o mestre mago. Então, o mestre principal, mestre da minha idade. Ok. Então, que tipo de movimentos tem o mestre mmh? Vamos para os efeitos de ataque da Prefabs. Então, o que você acha que um mestre bloqueou? Acho que ele tem tentáculos. Ele tem o relâmpago e provavelmente também tem o laser. Então, porque ele é uma imagem mestre, eu vou olhar quanto heme tem mono e eu acho que o roxo também é algo que ele tem, os tentáculos roxos. Certo, então vamos salvar isso. E então vamos escolher outro mordomo, o inimigo, os Bruxos. Vamos prendê-los. E quanto mais sorte deve ter um pouco menos de imposto. Então os prefabs, ele terá o azul distante, mas claro, ele não tem o raio, não tem o laser, você terá os tentáculos. E digamos que ele também tem a barra, copie que colá-lo aqui. Então ele também tem a barra mesmo que eu acho que nós não precisamos do lodo, vamos mantê-lo aqui. Vamos salvar isso e vamos testar nossas batalhas. Então vamos executar o jogo. Vamos começar uma batalha. Vamos falar com o gerente de batalha para vermos o que está acontecendo aqui. Feche isso. Então, apertamos as teclas N para três. Certo, então nada está acontecendo. Oh, caso. Então o problema é que quando mudamos de ataque de movimento por algum motivo por causa da minha falta de concentração, eu nomeei esta variável aqui e começo com o nome movido, mover ataque. Então mudamos o nome da variável e alterando o nome da variável, excluímos o nome aqui. Então, quando estamos procurando e o gerente de batalha e aqui, então o nome do movimento de batalha, é igual a qualquer um dos disponíveis? Claro que não porque os disponíveis são todos, ou os movimentos de batalha nome do ponto são todos strings vazias. Então precisamos fazer isso de novo. E vamos para os prefabs e copie e cole tudo isso. Então o ataque se move. Vamos ao gerente, vamos fechar isto. Bola de fogo azul, o laser, o raio. Precisamos ter certeza de que eles são exatamente os mesmos. Caso contrário, não os encontrará. Como você sabe, estamos trabalhando usando referências de string. Guarde isso e agora tenho quase 100% de certeza lá. Então eu queria te dizer como eu realmente depurar isso. Então eu tinha um impresso aqui e eu passei. Então eu só queria ter certeza se nós não estamos chegando a este ponto e aqui. Então eu adicionei uma impressão digital. Eu vi que sim, nós estamos realmente indo para o loop. Então eu adicionei uma segunda impressão aqui que estamos instanciando ou instanciando. Não importa o que se adapte às suas necessidades. Então eu vi que nós não estamos realmente entrando nesta condição se. Então eu imediatamente soube que a condição aqui não está sendo cumprida. Por quê? Olhei em volta e reparei que estavam vazios. Então esta é uma pequena dica profissional para você. Agora devemos ter tudo funcionando bem. Então comanda o nosso jogo. O bico é algo fora de ordem aqui. Clique duas vezes, Qual é o problema? Tentará passar por três quadris o LIGO, o Laser. Sim, lá vamos nós. E ambos atacaram o esqueleto. Tão legal. Como você pode ver, tudo está funcionando corretamente com seus efeitos sonoros. Há um pequeno problema aqui. Assim que começarmos o jogo no despertar. Eu acho que isso não é nada muito assustador. Sim, acho que provavelmente isto não é nada muito assustador. Espero que tenham gostado deste vídeo. Espero que você goste de ver os erros que seu instrutor comete, a falta de concentração e onde ele pode levá-lo durante o desenvolvimento do jogo. Então, se você está gostando da pontuação, você sabe o que fazer, deixe-me um comentário. Isso me ajuda muito. E vejo-te no próximo vídeo onde começaremos a atacar com os nossos jogadores. 101. Seção 15: quantidade de dano: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, nós realmente vamos estar adicionando dano dos inimigos para os jogadores. Então, quando executarmos nosso jogo, aperte a tecla B, vá para o inimigo Stearns. Lá vamos nós, um ataque, ataca. E você pode ver aqui que nós realmente tivemos um hit crítico. Então, em vez de 127, temos 254. E você pode ver aqui todos os danos que estavam causando bem. Então, primeiro de tudo, tivemos o mestre que negociou 127 e depois o senhor da guerra 93. Mas em vez disso, porque eles tiveram acertos críticos, eles são duplicados. Então não vamos perder mais tempo e vamos começar. Agora, antes de avançarmos para os jogadores atacando, precisamos estabelecer controle de danos. Então precisamos ter certeza de que temos uma maneira de aplicar dano do inimigo, do jogador, e assim por diante. Então, como é realmente galo danificado para funcionar? Deixa-me mostrar-te e falar um pouco sobre o cálculo do dano. Temos duas variáveis para o dano. Temos a destreza e temos as armas, poderes, armas íngremes que pegamos. Tem algum tipo de atributos. Podemos usá-lo com a destreza que já está disponível no jogador, o que aumenta cada nível. Então também temos duas variáveis para a diferença. Temos a defesa, que está em cada jogador. Pode ser a pele que ele tem, as roupas que ele usa, o tipo de estrutura que ele tem, etc. E nós temos a defesa da armadura, então é a armadura que ele pega. Quão boa é a diferença nisso, etc. Não complicar as coisas, só adicionará o poder e a diferença. Nós não vamos estar indo muito para ele. Assim, a quantidade de dano será a potência dividida pela diferença vezes o MOOC alimentado. Então, porque dissemos que cada feitiço ou corte ou o que quer que seja, teremos um certo poder de movimentos. Então estamos adicionando isso em conta, e então vamos apenas adicionar algum tipo de constante aleatória. E, finalmente, adicionaremos uma pequena quantidade de dano crítico com uma certa porcentagem de trabalho. Então vamos em frente e fazer isso. Então vamos para o gerente de batalha. Vamos abrir os scripts e vamos criar um método para causar danos. Então eu vou fechar o inimigo. Olha como o nosso método já ficou grande. Quer dizer, o nosso guião já conseguiu. Então aqui vou criar um vazio privado, causar dano aos personagens. E isso vai ser usado tanto no inimigo ou usado pelo inimigo e pelos jogadores. Então nós estamos indo para primeiro de tudo obter um parâmetro que vai ser o personagem selecionado para atacar. Então isso nos dará o inimigo que nós realmente já jogamos que nós realmente precisamos atacar. E outro inteiro que vai ser o poder de movimento. Então, quanta força é o movimento que estamos usando para causar dano a um determinado personagem. Então agora vamos primeiro calcular o poder de ataque. Então vamos flutuar o poder de ataque. E vai ser igual aos personagens ativos, que está na curva atual, destreza. Então, estamos levando em conta a destreza. Então também estamos tomando um poder de armas do condado que ele tem. Então personagem ativo, poder de arma de ponto atual. Guarde isso. Agora vamos calcular o valor. Então flutuar a quantia arriscada, eu quis dizer a quantidade da diferença. Então vamos calcular a quantidade de defesa que temos. Então vamos verificar os personagens ativos. Mas desta vez estamos usando o personagem selecionado para atacar. Então temos o ato de personagens em batalha. Estamos escolhendo o personagem selecionado que queremos atacar. Então, neste lugar, se estamos atacando com um jogador, então queremos atacar um inimigo. Se estamos atacando com o inimigo, então queremos atacar um jogador. Então vamos calcular a defesa do jogador ou do personagem que queremos atacar. E nós também vamos levar em conta, eu acho que você já sabe o que queremos levar em conta. E essa é a defesa da armadura que ele tem contra o Nope. Defesa da armadura. Está bem. Como podem ver agora temos o ataque, temos o poder. Agora precisamos calcular a quantidade de dano. Então quantidade de dano, e será igual à fórmula que estabelecemos. Então será o poder de ataque dividido pela diferença que temos. Vamos então multiplicá-lo pelo poder de movimento. E nós também vamos multiplicá-lo por algum intervalo aleatório. E aqui, depende mesmo de você. Quanta aleatoriedade você deseja adicionar? Eu acho que 0,9 F e 1,1 f é uma boa quantidade. Então isso nos dará cerca de 90 por cento ou 110%. Então este é o alcance básico dos danos que causamos. É um pouco de aleatoriedade. É bom porque levamos em consideração, por exemplo, digamos que o MAE faz algum tipo de magia e não atinge o jogador completamente. Então é um belo toque, eu acho. E você pode mudar a fórmula se você pode encontrar uma fórmula melhor. Este é um dos tipos mais básicos de fórmulas que você também pode, se você tem suas próprias estatísticas de jogador, você pode adicionar o seu próprio para este. Seguindo em frente, o que queremos fazer agora? Queremos converter essa quantidade de dano em um inteiro porque nós o temos como um flutuador. Então vamos digitar a variável, que vai ser o dano a dar. E nós vamos convertê-lo em um inteiro. E por que estou fazendo isso em uma linha separada? Porque acredito que é muito mais claro à medida que avançamos. Então você entende que estamos calculando ataque, calculando defesa, calculando a quantidade de dano, e calculando o dano que queremos causar. Ok, ótimo. Agora porque não temos nenhuma maneira de indicar como vamos ou quanto dano estamos causando. Nós vamos usar o log de pontos de depuração. Então, depurar o log de pontos. E queremos saber qual personagem está causando o dano. Então, o ato de caráter no termo atual, nome do ponto. E nós vamos concatenar e dizer que ele apenas negociou, negociou, negociou. É assim que se escreve Delta, creio eu. Sim. E então vamos concatená-lo com a quantidade de dano. E nós também vamos realmente mostrar o quanto realmente o dano vai ter um efeito. Então quero dizer, com isso, vamos concatenar também os danos a dar. E vamos fechá-lo entre esses dois colchetes. Está bem? E também vamos adicionar aqui algo mais que eu quase esqueci. E diremos isso aqui também. Então, por exemplo, o dragão apenas causou uma certa quantidade de dano. E então novamente concatenado com o personagem ou os caracteres ativos, o personagem selecionado para atacar. Então agora podemos ver claramente qual é o dano, quem está causando e a quem ele está sendo tratado. Finalmente, vamos sofrer danos. Temos esse método e nossos personagens, os personagens de batalha aqui vai precisar criar um dano take. Tão público, vazio, receber dano HP. E este será o dano inteiro a receber. E aqui vamos simplesmente remover o danificado do HP atual. Portanto, HP atual menos é igual ao dano a receber. E, obviamente, quando o HB atual, se o HB atual é menor que 0, então vamos definir o HP atual para ser igual a 0. É isso. Nós guardamos isso. Acho que temos um lugar para cuidar disso, mas vamos nos certificar de que adicionamos essa condição aqui, caso não queiramos ir abaixo de 0 com nosso HP atual. Então, finalmente, temos o ato de personagens. Vamos para o personagem selecionado para atacar. Tomamos dano HP e o dano que queremos receber como o dano a dar, que é um inteiro porque nos certificamos de que o parâmetro aqui é um inteiro porque o HB atual é um inteiro. E finalmente, vamos chamar esse método. E de onde lhe chamamos? Bem, chamamos-lhe depois de terminarmos o ataque. Então aqui vamos precisar causar dano ao personagem que precisamos enviar ao personagem que queremos atacar. Então já temos aqui, o jogador selecionado para atacar. Então selecione o jogador para atacar e qual é o poder de movimento? Bem, vamos trazê-lo aqui depois de instanciarmos. Então vamos criar uma variável que vai ser um inteiro. A jogada. Poder. E vamos definir para 0 por enquanto. E depois de verificarmos, certificamo-nos de que a jogada está disponível do que a maior potência, haverá igual à lista de jogadas de batalha. Na posição eu ponto o poder de movimento. Nós guardamos isso. Se mandarmos a variável aqui, guardamos isso. E agora vamos em frente e testar tudo isso. Então vamos voltar ao nosso jogo. E atualmente o poder ou o ataque só funciona no, usando o inimigo no jogador. Então vamos em frente e começar a batalha. E vamos para a próxima curva. E por alguma razão não temos a tela aparecendo. Então, a cena de batalha do gerente de batalha, a tela de batalha. Quando executamos o nosso jogo, isso é apenas ver onde o problema é, é o BK, enquanto a cena da batalha, onde está o menu? Então novamente, se você encontrar um problema em que tudo é destruído, precisamos entrar aqui e ter certeza de que é 19 por 20, 1920 por 1080. Então agora deixe-me desligar esta cena de batalha. Lá vamos nós. Dirija o jogo. Aperte a tecla B. Lá vamos nós. Então vamos ao gerente de batalha. Isso disse o N, e agora os inimigos estão atacando. Sim, lá vamos nós. Então já perdemos porque fomos mortos por alguma razão. Isto não é muito bom. Então deixe-me voltar aqui no console, parar o jogo de correr e vamos ver o que está acontecendo. Então o mestre principal distribuiu 128 para o grama, que é o personagem de batalha. E depois os Bruxos del 251 para Draco. Certo, então perdemos. Obviamente ainda tínhamos um deles disponível. Há algo um pouco errado, vamos corrigir isso mais tarde, mas por enquanto estamos causando dano foi apenas muito bom. Então a próxima coisa a fazer é ir em frente e adicionar algum tipo de dano crítico. Então, no Battle Manager, vamos fechar a batalha de atualização. Precisamos voltar e verificar por que morremos assim. Precisamos criar agora um pouco de danos ou cálculos de danos críticos. E vai fazer parte do seu desafio. Seu desafio é criar danos críticos. Você precisará criar um método que retorna um fim para calcular o dano crítico com um argumento, você precisará usar o valor de ponto aleatório dentro de uma instrução if e retornar o valor danificado vezes 2. Portanto, o dano crítico é um dano que é vezes 2. Finalmente imprima a quantidade e o log de pontos de depuração e você precisará, é claro, chamá-lo de dano causado e atribuí-lo a uma variável. Então pausar o vídeo agora mesmo e vá criar um método de dano crítico. Primeiro, onde calculamos os danos? Bem, e aqui vemos que temos os danos para dar. Nós podemos realmente sob ele, ir em frente e dizer que o dano a dar vai ser igual para calcular Crítico. E vamos dar-lhe o estrago a dar. Agora vamos em frente e criar esse método. Então vamos gerar o método. E aqui, o que vamos fazer é criar este f, que vai para um valor aleatório. E você pode ver que isso retorna um valor aleatório entre 01. Então isso nos dará, se você quiser uma certa porcentagem e se for menor que, digamos 0,1 f. Então temos 10 por cento de chance disso funcionar. Nós vamos usar o log de ponto de depuração horas. E nós vamos dizer aqui, cócegas na carreira. Em vez de danos para dar pontos. Quantos pontos ou quantos pontos de dano estamos causando? Nós causamos dano para dar 2 vezes. E aperte a tecla Enter aqui e comece a concatenar novamente. Foi lá vamos nós. Dano crítico em vez do dano regular a dar ou pontos, o dano a dar vezes 2 foi causado. E nós vamos devolver o dano para dar 0 vezes para salvar isso. E vamos apenas colocar estes entre parênteses apenas porque 44 para ter certeza de que ele funciona. Senão, se não funcionar, então vamos simplesmente devolver o dano a dar. Então o que está acontecendo aqui é que estamos verificando. Estamos recebendo um valor aleatório. E se esse valor for menor que 0,1, valor de ponto aleatório nos dá, como já dissemos, um número entre 01. Então, se for menor que 0,1, isso significa que tem 10 por cento de chance de funcionar, então vamos devolver o dano para dar tempos 2, e vamos atribuí-lo aqui ao dano a dar. Senão. Se não for inferior a 0,1, então ele simplesmente retornará o dano a dar. E por causa do teste, vamos definir isso para menos de 0,8. Isso nos dá 80 por cento de chance. E vamos dizer aqui, isso precisa mudar para um ponto zero 1 f. Salve isso. Vamos voltar e o nosso jogo. Vamos executar o jogo. Vamos apertar a tecla B que está no final. E tudo bem, então lá vamos nós. Então acerto crítico, acabamos de ter uma cabeça crítica. Então, em vez de 211 pontos, 422, tudo bem? Muito bom. Então eu espero que você tenha gostado Eu espero que você esteja entendendo como tudo está funcionando e eu vou vê-lo no próximo vídeo. Também fizemos um golpe crítico aqui. Então, vejo-te no próximo vídeo. 102. Qual inimigo: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, vamos aprender sobre sistemas de partículas e vamos realmente usá-los. Então, quando executamos nosso jogo, lembre-se de quando um dos inimigos atacou e não sabíamos qual deles está atacando. Claro, usando o console poderíamos ter sabido, mas visualmente, como sabemos? Bem, como você pode ver, agora sabemos que o inimigo que está atacando tem esse pequeno brilho vermelho ao redor deles. Não é perfeito. É bom o suficiente e dá-nos uma forma de saber. Assim, por exemplo, o major atacou primeiro do que a guerra não tinha ataque em segundo lugar. Então não vamos perder mais tempo. Comprometa suas alterações no final deste vídeo e vamos começar. Oh, ok, bem-vindo de volta. Então nós morremos anteriormente, se você se lembra no vídeo anterior muito rápido ou perdemos muito rápido, Isso é porque o jogador, Jimmy tem um HP atual de 0, então vamos configurá-lo para 100. E também o esqueleto dos dados e um golpe. Então talvez devêssemos aumentar para talvez 200 por 200. E fazemos isso para a grama também. Então vamos definir isso para duzentos, duzentos , salvar isso, aplicar as mudanças. E isso é tudo o que precisamos fazer. Então vamos guardar isso e voltar ao verdadeiro problema aqui. E isso é que nós realmente não vemos visualmente qual inimigo está atacando nosso jogador. Como é que vamos saber isso? Bem, há uma maneira muito simples e que é criar talvez um pequeno círculo ou faísca ou talvez algum tipo de povo em torno do inimigo que acabou de atacar um dos jogadores. Como é que vamos fazer isto? Bem, vamos usar o sistema de partículas da Unidade para criar um efeito. Não vou aprofundar muito os sistemas de partículas porque eles podem ser um curso por conta própria. Eu só vou rever o básico e mostrar-lhe um sistema de partículas predeterminado que não são necessariamente criados, mas tem a idéia de. Vou clicar com o botão direito do mouse aqui. Vou usar resistente aos efeitos e ao sistema de partículas. Lá vamos nós. Então, como você pode ver, nós já temos um sistema de partículas irá definir a posição do conjunto para 0. E se desclicarmos o 2D, vocês podem ver que estas são as nossas partículas e eu vou movê-las para a frente. Então lá vai você. Você pode ver agora que temos essas partículas saindo, deixe-me movê-las mais e lá vai você. Então eu vou fazer isso maior e nós vamos dar uma olhada nessas partículas. Então, como você pode ver, eles não são renderizados na frente porque eles estão classificação camada é diferente. Rendered podemos escolher em qual camada de classificação eles estão. Então camada de classificação, vamos colocá-los nos personagens de batalha e ordem camada um para que possamos vê-los claramente. Como podem ver, estas são as nossas partículas. E a maneira como eles funcionam é à medida que nos movemos, você pode ver que estas são pequenas imagens 2D que sempre enfrentam a maneira como estamos olhando, seja no modo Cena ou no humor do jogo. E isso é porque eles querem economizar um pouco de memória e espaço e renderizar tantas partículas é muito, muito confuso e coração. Então vamos em frente ao inspetor e fazer algumas coisas. Como você pode ver, há centenas e centenas de coisas que você pode mudar o joelho de ruído para forças externas para rotação de velocidade e tudo isso. E como eu disse, não vou entrar em cada um deles, mas vou tentar explicar as coisas que vamos fazer. Então a primeira coisa em primeiro lugar é que vamos fazer disso uma emissão de explosão. Então aqui podemos adicionar a explosão. Você pode ver a taxa de emissão. Você pode ver que podemos diminuí-lo, aumentá-lo e assim por diante. Vou adicionar uma explosão. Eu vou para as formas e torná-lo um círculo para que possamos mudar formas para uma esfera, por exemplo, eu vou torná-lo um círculo. Eu vou, claro, tentar girá-lo. Não há portas que imprimem Warm, Não preciso disso por enquanto. Eu vou girá-lo. Então lá vamos nós ou podemos colocá-lo em 0. Então agora está meio explodindo, como você pode ver. Quando o vemos daqui a pouco. Sim, lá vamos nós. Essa é a explosão. Podemos mudar a explosão dos ciclos e as contagens. Vamos acabar com a taxa ao longo do tempo. Agora podemos ver uma explosão. Lá vamos nós. A probabilidade, o intervalo pode ser talvez um. E isso realmente não importa porque nós vamos fazê-lo aparecer apenas uma vez e depois desaparecer. Não queremos estar o tempo todo. Podemos adicionar 60 partículas e assim por diante. Veremos mais tarde como tudo isso vai mudar. Então 60, círculo 60, a explosão, e então vamos passar para o tamanho ao longo da vida. Então aqui temos uma opção. Que é o tamanho ao longo da vida. Certifique-se de ativar esta caixa de seleção e isso determinará qual é o tamanho ao longo da vida útil. Podemos clicar no gráfico aqui. E podemos mover este sistema de partículas. E aqui temos essa opção. Quando clicamos no gráfico, podemos escolher qual o tamanho ao longo da vida, pois podemos diminuí-lo, aumentá-lo, fazer o y maior ou menor, como você pode ver como eles estão se movendo. E esta é a velocidade em que eles mudaram o tamanho. Então, se colocarmos quatro aqui, por exemplo, lá vamos nós. Se aumentarmos, eles levam tempo até ficarem menores. Mas o que vamos fazer é conseguir. Então. Então lá vamos nós. Eles começam em um muito grande e, em seguida, eles ficam menores e menores até chegar a cerca de 0 em um minuto. Sim, lá vamos nós. Acho que isso é bom o suficiente. Vou fechar isto. Em seguida, vamos definir a duração. Então aqui temos opções que são muito, muito pequenas. Então, a duração aqui nós queríamos menos de um minuto. Então lá vamos nós. Agora temos uma espécie de explosão de massa. Então precisamos definir o início da vida útil. Então vamos definir a vida de início para dois. E lá vamos nós, você pode ver que eles desaparecem mais rapidamente. Precisamos ajustar a velocidade de partida. Vamos definir para 0 que C. Então, como você pode ver, isso se torna uma espécie de sopro de fumaça. E quando o definimos como 0, você verá que isso acontece apenas na posição que queremos. Não queremos que exploda por todo o lado. Quando um dos personagens faz algo, vamos adicionar uma ação de parada para destruir. Então aqui temos a ação de parar e isso vai ser destruído. Isso destruirá todo o objeto porque não queremos mantê-lo e sempre tê-lo repetindo e repetindo sobre o jogador que é o inimigo que acabou de fazer o movimento ou algo assim. E, finalmente, você pode mudar as cores. Então podemos colocá-lo para vermelho, por exemplo, se você quiser ou tipo de uma sensação laranjada, talvez avermelhada. E eu recomendo que a pausa do sapato agora e vá olhar por todo o seu sistema de partículas. Há tantas coisas para brincar e se divertir. Há as luzes, o ruído de colisão. Há tantos. A cor ao longo da vida é uma das minhas favoritas. Você pode mudar as cores ao longo da vida entre dois valores, por exemplo, o que é muito, muito agradável e realmente poderia ser útil neste caso, eu faço. Se você quiser, você também pode criar um desses sistemas de partículas e enviá-los para mim usando os vídeos no Google Drive. Eu adoraria, adoraria ver o que você inventa porque eu não sou uma pessoa muito criativa. Eu paro esse trabalho e deixo as partes criativas para as pessoas que sabem fazer isso. Então eu recomendo que você realmente saia do seu caminho. Tome o seu tempo se você está na taxa de pessoa e criar algo realmente bonito. Mas por agora eu acho que este sopro de fumaça, ler sopro de fumaça é suficiente para mim por agora para nós demonstrarmos como isso vai funcionar. Eu vou mudar isso, vou apenas mantê-lo no nome do sistema de partículas ou talvez nomeá-lo para o personagem. Atacando partículas. Agora vamos pré-fabricá-lo. Então vamos para a Prefabs. Vamos fazer isso um pouco maior. Os fatos de ataque, e vamos adicionar aqui e os fatos de ataque, vamos salvar isso. E vou apresentar-vos um desafio, que é instanciar as partículas. Então você precisará obter uma referência ao sistema de partículas. Use a variável adequada que é para você descobrir. Então você precisará instanciá-lo antes de causar dano. E eu vou te dar algumas dicas. Posição e ou se você quiser fazer isso por conta própria, esqueceu sobre isso. De qualquer forma, a posição e a transformação devem ser a do personagem ativo no termo atual. Então este sistema de partículas indica qual personagem está atacando, então precisamos de instanciação para além desse personagem. Se você quer um pouco de uma atualização na instanciação, vá procurá-lo nos cães da unidade com isso dito, pausar o vídeo agora e ir fazer o desafio. Ok, bem-vindo de volta. Então vamos rolar até aqui. Vamos criar um campo serializado que vai ser do tipo sistema de partículas. E vai ser o fato de ataque ou o fato de caráter. Nós vamos rolar para baixo e o inimigo atacar aqui. By the way, há algumas coisas que podemos realmente refatorar e aqui, então, por exemplo, a escolha do movimento e a seleção do personagem são muito importantes para se tornar, ou podemos mantê-lo como um único método. Você quer que seu jogo seu tempo para criar seu próprio código? E aqui vamos em frente e instanciar. E instanciar o ataque ou o efeito de ataque de personagem. Vamos instanciá-lo no ato da corrente de caráter, transformar a transformação, essa posição. E o ato de personagens atual transformar a rotação de transformação. E não precisamos fazer nada de criança. Isso é bom o suficiente. E vamos dizer aqui, instanciando o fato. Personagem de aderência. Guarde isso. De volta ao nosso jogo, vamos apagar isto. E antes de nós, ok, nós apagamos e então vamos para o personagem aqui que é posições receptivas aqui para 0. Enquanto o gerente de batalha, o fato, lá vamos nós, salvamos isso. Fazemos o nosso jogo. Fizemos parecer maior. Começamos a batalha. E vamos em frente e acertar o Anki. A Anki. A Anki. Sim, lá vamos nós. Mas como você pode ver, continua looping e loop e loop e loop. Então, qual é o problema aqui? Então eu vou entrar no personagem e ver qual é o problema. Bem, fazer loop, guardar isso, executar o nosso jogo, apertar a tecla B. quão legal isso parece? Do ponto de vista 3D? É legal. E ataques. E vai embora. E você pode ver o inimigo atacando partícula. Sul é destruído depois de 1 segundo. Agora sabemos qual personagem está atacando. Novamente. É o padre ou a sarna, e depois o bloqueio de guerra novamente. Então, como você pode ver, porque nós fizemos o Jimmy ter HP atual, ele não está fazendo imediatamente. Na verdade, ele também está sendo atacado. E lá vamos nós. Espero que tenham gostado da entrada do sistema de partículas. Se você quiser um próximo desafio de estrutura, eu recomendo que você vá em frente e extraia todos estes em métodos separados. É muito divertido. Dá-lhe uma noção de como tudo funciona e dá-lhe algum subconsciente organizacional. Eu não sei o que ele faz de qualquer maneira, eu espero que você goste e eu vou vê-lo no próximo vídeo. 103. Visualizando uma quantidade de danos: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, quando executarmos nosso jogo, podemos começar a batalha. Nós podemos. Lá vamos nós. Então, como você viu agora, nós, não só sabemos qual camada está sendo atacada, não só sabemos qual inimigo está atacando, também sabemos a quantidade de dano que está sendo causado ao personagem que está sendo atacado. Então vou te mostrar de novo. 109 de dano foi causado, 73 de dano foi causado. E podemos confirmar isso do console bem aqui. Então não precisamos mais de nenhum log de pontos de depuração. Algures por aqui. Vamos apagá-lo mais tarde. Mas por enquanto, não vamos perder mais tempo e vamos começar. Agora que estamos visualizando qual inimigo está atacando, o próximo passo é visualizar a quantidade de dano que está sendo causado. Agora que estamos visualizando qual inimigo está atacando, Então, para fazer isso, vamos criar uma pequena tela. Teremos um texto sobre ele. E nós vamos preferir pouco. E toda vez que ficarmos danificados por um jogador ou um inimigo, vamos criar este texto instanciado no ar com um pouco de agitação e movimento para cima e depois fazê-lo desaparecer. Então vamos em frente e fazer isso. A primeira coisa que precisamos fazer é criar uma tela. Então eu vou clicar com o botão direito do mouse na tela e vamos chamá-lo de dano recebido. Como vamos torná-lo pequeno? Vamos para o Canvas e vamos para o espaço mundial dos sapatos. E assim podemos torná-lo tão pequeno quanto quisermos. Certifique-se de mudar o dano aqui, não o dano. Quero dizer, a tela dos danos sofridos. Deixe-me chamar isso de “Canvas de Pensamento danificado”. E vamos reduzi-lo para 0,010.01. Vamos clicar duas vezes aqui, ou isso é o que, movê-lo para baixo ao lado dos jogadores. Clique duas vezes nele novamente. Mova-se, pivô. Lá vamos nós. Então esta será a nossa tela. Podemos até torná-lo menor. Mas, por enquanto, vamos em frente e adicionar um texto. O que eu não vou adicionar o texto Mesh Pro porque estes vão ser números. Então um texto normal que eu acho que era da Phi. E nós vamos escrever aqui 99. Nós vamos saber o que, Vamos adicionar o texto muito sonda. Por que não devemos desistir, não nos dar a chance de usar o texto Mesh Pro? Vamos colocá-la para a festa medieval, se isso nos permitir. E vamos ancorar em todos os cantos. Então segure Alt, clique neste, e lá vamos nós. Então agora está ancorado em todos os lados. O que faz o ano de mensagens de texto danos. Não consigo vê-lo. Devo torná-lo maior ou menor? Não está mostrando ousadia. Também pode ser porque deixe-me ver o que está acontecendo. Movê-lo aqui é o problema. Certo, então lá vamos nós. Então, por trás disso, não estamos vendo. Por que é isso? Porque precisamos ter certeza de que estamos na camada de classificação correta. Então, classificando personagens de batalha de camada. Um, certo, ótimo. Então, danos sofridos. Lá vai ele. Então, sobre os jogadores, ele deve aparecer sobre os jogadores. Vamos torná-lo um pouco menor. Então eu vou escolher o Canvas, ir para as ferramentas ROC e torná-lo grande. E então nós vamos fazer a fonte um pouco menor também. Então eu acho que isso é o suficiente. Nós também vamos reduzi-lo para ser quase o tamanho exato que precisávamos ser. Vamos mudá-lo para vermelho. E acho que é isso. É tudo o que precisamos fazer. É bem simples. Não vamos fazer muito disso. E então vamos arrastá-lo e preferir pouco. E agora temos essa quantidade de dano, então ele aparecerá em cima do jogador e depois vai embora. Nós vamos excluir isso e vamos criar um novo script para controlar todo o tremor e o desaparecimento e o movimento e assim por diante. Então, nos scripts, no sistema de batalha, clique com o botão direito do mouse em criar um novo script C-sharp que será a saúde do personagem ou o dano do personagem. GUI, GUI, interface gráfica do usuário. Mesmo que não seja isso. Interface, mas fará o trabalho. E nós vamos ter, nós deveríamos ter adicionado aos Prefabs, não se preocupe com isso. Considerando que os prefabs ataque, dano, tendo tela, adicionar um componente que vai ser o personagem GUI, personagem danificar GUI, salvar isso. Feche tudo isso, clique duas vezes, abra os scripts. Certo, então o que precisamos aqui? Primeiro de tudo, precisamos de uma referência ao texto, então precisaremos do para usar o TMP Pro. E aqui vamos criar um campo serializado que vai ser a malha de texto pero Gui, o imposto de danos. Então vamos criar um carro alegórico que representará a vida toda. E vamos ajustá-lo para 1.5. Vamos criar outro flutuador para a velocidade de movimento. Então mova a velocidade. E finalmente vamos criar vibração de textos. Então, vibrações de texto. E você vai ver como nós vamos aplicar isso em apenas um pouco e vamos ajustá-lo para 0.5. Estes são valores que eu já tentei e pensei, e vamos definir a velocidade de movimento também para ser um. Guarde isso. Ok, ótimo. Agora uma atualização, vamos destruir o objeto do jogo depois de uma certa vida. Então destrua objeto do jogo após a vida ter terminado. E também vamos acessar a posição e mudá-la ao longo da velocidade de movimento. Então transformar a posição é igual a um novo vetor 3. E eu sinto muito, eu não quis dizer igual. Deve ser mais igual. Por que é isso? Bem, porque deixe-me explicar. Vamos instanciá-lo. Então. Queremos movê-lo lentamente para cima. Então, estamos adicionando movimento lentamente usando a velocidade de movimento e apenas no eixo zed. Então aqui vamos definir o movimento X para 0. E o movimento y será o ponto de velocidade de movimento time.DeltaTIME ou vezes time.DeltaTatime. O que é Time.deltaTatime? Bem, é algo que, e se você notou, desculpe por me interromper. Estes em 0. É por isso que não precisávamos adicionar um componente z. De qualquer forma, a velocidade do movimento vezes tempo.deltaTimo. Estamos, sempre que estamos lidando com um objeto, movendo uma atualização, ou sempre que estamos lidando com qualquer coisa que está aumentando ao longo do tempo, precisamos ter certeza de multiplicá-lo por time.deltaTatime. E o que isso nos permite fazer, ele separa os quadros por segundo em nosso jogo da velocidade de movimento. Por que isso é importante? Porque uma atualização que estamos chamando a cada quadro quando se trata de chamar métodos e fazer coisas, está tudo bem quando se trata de receber entrada, não é problema. Mas quando se trata de movimento, se tivermos um computador muito forte e quadros rápidos por segundo, então a velocidade de movimento será muito, muito rápida. E não queremos isso. Então o que fazemos, e o oposto é verdade. Se tivermos um PCI lento, a taxa de quadros é muito baixa e a velocidade de movimento é muito lenta. Então o que fazemos é multiplicá-lo por time.deltaTatime. E isso desanexa a taxa de quadros da quantidade ou de V vezes este atualizações e time.DeltaTatime é realmente o tempo entre cada quadro e você pode vê-lo e ouvir o tempo de conclusão em segundos desde o último quadro. Então isso nos permite ter um movimento suave apesar de quantos quadros que temos uma hora. Novamente, este é um componente muito importante, especialmente quando se trata de jogos 3D. E finalmente, vamos criar um vazio público, causar danos. E ele vai ter um parâmetro aqui que vai ser a quantidade de dano ou o dano a exibir ou o que quer que seja. Então vamos acessar o texto de danos. Texto de dano. O texto é igual à quantidade de dano ponto toString porque este é um inteiro, então precisamos convertê-lo. Então vamos criar uma quantidade de tremulação. E vai ser um intervalo aleatório. E está indo entre a vibração menos tributada e mais vibração de texto, que são o mínimo e o máximo. Então ele vai se mover entre menos 0,50.5 da esquerda para a direita apenas um pouco, apenas para adicionar um pouco de diversão a ele. E, finalmente, a posição transform.py será mais igual ao novo vetor 3. E vai ser. Uma quantia. E este é o valor no x e, em seguida, a quantidade geral no y. E nós vamos deixá-lo em 0, ou nós podemos até removê-lo e usar o único da mesma maneira que fizemos aqui em cima. Então, adicionando o 0 no componente set, vamos salvar isso. E se você ainda está um pouco confuso, estamos acessando o texto. Estamos definindo-o como a quantidade de dano que estamos acessando ou estamos definindo uma quantidade geral que vai ser entre a vibração do texto menos e positiva. E, finalmente, estamos adicionando essa quantidade à posição do nosso texto quando ele é instanciado. Então agora a última coisa a fazer é realmente obter uma referência a ele no gerenciador de batalha e usá-lo sempre que o dano é aplicado e ele vai ser o seu desafio. Seu desafio é mostrar o dano. Portanto, obtenha uma referência à GUI de integridade do personagem instanciada toda vez que um personagem sofre dano ou dano de personagem entra aqui. Instanciado toda vez que um personagem sofre dano e descobrir quais as posições e rotações que devem ser. Tenho certeza que você já sabe como fazer isso. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, em nosso gerente de batalha aqui em cima, nós vamos obter uma referência, um campo serializado de tipo, dano de personagem, GUI, dano, textos vão chamá-lo simplesmente. E então, quando rolamos para baixo, quando recebemos o dano para que o dano seja causado, podemos chamar o ataque inimigo ou podemos chamá-lo aqui. Vamos chamá-lo e o inimigo atacar. Então, depois de causarmos o dano ao jogador, vamos entrar no personagem na GUI de dano do personagem. Vai ser um personagem chamado texto de dano de personagem. E vai ser igual à instanciação. E por que estamos configurando isso em uma variável? Porque só um pouco nós vamos usar o método de dano SAT nele. Então é por isso que precisamos de uma variável ou podemos apenas usá-la no instanciado, mas isso é mais limpo. Então o texto de danos que temos uma referência lá em cima. E onde vamos colocá-la? Bem, é sobre os personagens ativos, mas não sobre o termo atual, mas sobre o selecionado para ser atacado. Então jogador selecionado para atacar ponto transformar. Sabe o que eu acho que é um lugar melhor para adicionar isso? Porque nós vamos usá-lo também quando o jogador atacar. Então não queremos que cause dano quando o inimigo ataca. Nós também queríamos fazer isso quando qualquer dano. Então, em vez do jogador selecionado, vamos usar o personagem selecionado para atacar a posição da caixa de transformação. E finalmente, personagem ativo, eu, apenas duplicar este, este, rotação. Guarde isso. Então, novamente, por que eu movi isso do ataque inimigo para o dano causado ao personagem? Porque o dano causado ao personagem também será chamado pelo jogador. E queremos aplicar o mesmo dano aos inimigos que fazemos, como você verá agora aos jogadores. Então, é melhor usá-lo em um método que é mais, vamos chamá-lo de universal e disponível para ambas as partes. Agora instanciamos o texto sempre que causarmos dano ao personagem selecionado para atacar. Então vamos guardar isso. Vamos voltar para a união e ver o que acontece. Então execute nosso jogo e recebemos um erro. E a unidade desliga-se sozinha. Oh, ok, bem-vindo de volta. Eu queria te mostrar o que acontece se, no caso de você conseguir esse tipo de layout, basta ir para o layout dois por três e nós estamos de volta, baby. E antes que eu esqueça, isso era um problema. Foi por isso que me aconteceu há uns vídeos atrás. Então, novamente, precisamos ter certeza de ajustá-lo para 1920. Decidi que aqui vai mudar. Infelizmente, não há nada que você possa fazer sobre o esmagamento da unidade. É por isso que você sempre salva e sempre cria compromissos e repositórios. Então agora vamos ao nosso gerente de batalha. Temos o texto danificado. Vamos para os Prefabs e para as batalhas. E nós não preferimos bit 0. Fizemos pré-fabricar o nosso assustado, portanto, mas então vamos pegar o texto de dano adicionado aqui. Lá vamos nós, o dano que está levando Canvas, vamos salvar isso e vamos tentar isso. Então, fazemos o nosso jogo e eles agora começamos a batalha. Nos movemos através dos jogadores. Oh, lá vamos nós. Então, pelo menos, está funcionando. Temos os textos funcionando corretamente, tudo está funcionando. Agora, a última coisa que nos esquecemos de fazer porque eu estava distraído explicando, o que estamos fazendo. Então, o caráter do texto de dano que disse dano. Set. Danos? Sim, por favor. E o que enviamos para cá? A quantidade de dano. Então, o dano a dar, guarde isso no nosso jogo, precisamos definir uma referência ao texto aqui. Então, como vamos fazer isso? Vamos clicar duas vezes e abrir o prefab. E vamos arrastar o texto aqui para o texto. Nós guardamos isso. E a maneira como abrimos o pré-fabricada, nós simplesmente clicamos nele. Não é nada demais. Volte para trás. Agora temos o conjunto danificado, texto, dano sat executar o jogo, pára a batalha. Sim. Lá vamos nós. 2159. E isso está correto? Deixe-me abrir o console para que possamos ver aqui que o primeiro ataque foi 21. Sim, estava correto. E o segundo foi 59. Vamos tentar de novo. 63, lá vamos nós. 220 ou 212. Excelente. Vamos tentar de novo. Dominância DLT. Certo, ótimo, então tudo está funcionando perfeitamente. Pode haver um pouco de ajuste, como eu disse, se você quiser adicionar um pouco mais de sabor ao texto, adicionar sua própria fonte, eu acho que é uma ótima idéia. Você pode fazer muitas coisas. Você pode mudar o jitter. Talvez você queira aplicá-lo em uma posição ligeiramente variada, não imediatamente em cima do jogador. Espero que goste. Espero que esteja cometendo suas mudanças. E eu vou te ver no próximo vídeo. 104. Stats de batalha: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, executamos o código, começamos uma batalha, vamos até o fim, mas vocês notarão que temos o sombrio Draco e Jimmy e suas vidas se deterioram quando sofrem danos. Então você pode ver suas vidas indo embora lentamente, mas certamente. Lá vai você. O Graham morre, o Draco morre. Só o Jimmy sobrevive. Mas se Jimmy morrer, o que acontecerá? E quando Jimi morrer, nós perdemos, oh meu Deus. Não vamos perder mais tempo. E vamos começar. Oh, ok. Agora sabemos quem está causando o estrago. Sabemos quanto dano ele está causando. Ainda há um pequeno problema, um pequeno probleminha. Quando executamos nosso jogo, apertamos a tecla B e tudo parece estar funcionando corretamente. Mas o problema é que temos o nome do jogador um, o nome do jogador um. Quem é o nome do jogador um? E por que a saúde não está sendo mudada? E por que temos tanta maneira? Então é hora de começar a atualizar nossas estatísticas de batalhas. Vamos entrar no nosso gerente de batalha e fazer exatamente isso. Vou fechar o negócio deles como ataque inimigo. Tenho certeza que já fizemos tudo isso. Se precisarmos, voltaremos para eles. Mas, em primeiro lugar, precisamos de uma referência aos textos. Então, aqui estamos indo para ir em frente e criar um campo serializado que vai ser do tipo texto Mesh pero Gui. O que, o que, o que temos? Oh, ok, então usando o MPI pero, eu estava me perguntando qual é o problema. Então malha de texto por linha, você GUI. E nós vamos ter um, e aqui vamos precisar de um controle deslizante, mas precisamos definir a interface do usuário. Então eu guardo isso. E deixe-me ajustar isso. Era 133, creio eu. Está bem. Então, um controle deslizante, 14, o controle deslizante de vida camada e jogador controle deslizante de mana. Guarde isso. Ok, ótimo. Vamos colocar tudo no inspetor antes que esqueçamos. Então, gerente de batalha, cena de batalha. há oh não, foi a batalha Canvas, as estatísticas do jogador. E deixe-me ligar a cena da batalha para que possamos ver claramente as estatísticas do jogador. Ok, lá vamos nós. Então eu vou abrir isso. Vou falar com o gerente de batalha. Vou fechá-lo e os textos do jogador serão escolhidos e arrastados para os lugares. Os controles deslizantes de saúde serão arrastados para os lugares corretos. E o mana também vai fazer o mesmo. Guarde isso. Lá vamos nós. Então tudo está pronto, vai fechar tudo isso e nós vamos desligar a cena da batalha. Voltem e unidade, nós nos certificamos de salvar tudo isso. Oops. Oh, não, não, não, não agora. Então, pelo menos agora você sabe que você tem um desafio, mas antes disso vamos criar nossas estatísticas de jogadores de atualização. E se você quiser, você pode pausar o vídeo e atualizá-los por conta própria. Mas vamos primeiro de tudo, criar um é igual a 0 enquanto eu é menor do que o ar. Os jogadores nomes comprimento do ponto de texto e, em seguida, eu mais, mais. Então estamos nos movendo através de todos os jogadores chamados taxed. Estamos verificando se a contagem de pontos de caracteres ativos é maior que um, desculpe, ponto I. E isso, por que estamos fazendo isso? Porque precisamos ter certeza de que há mais personagens do que os textos do jogador que estão disponíveis. Se não houver, isso significa que não podemos prosseguir, podemos actualizar o texto. Você verá que isso não é muito, muito importante, mas é importante para evitar alguns erros. Então nós apenas verificamos se temos mais caracteres, então temos nomes de texto de jogadores. Então vamos verificar se o personagem ativo é um jogador. Claro, obviamente, precisamos atualizar os jogadores. E aqui é onde as coisas divertidas começam. Então vamos criar uma variável de personagem de batalha, que vai ser os dados do jogador. E vai ser igual ao personagem ativo. Então temos uma referência a ele porque tenho certeza que vamos usá-lo muito. Então vamos acessar o texto do nome. Então o texto nome do jogador na posição I, o texto. E vai ser igual aos dados do jogador, o nome do personagem. Então vamos usar os controles deslizantes. Então controle deslizante de saúde do jogador na posição i. Vamos definir o valor máximo como sempre fazemos para o ponto máximo de dados do jogador, HP e o valor atual. E o valor, quero dizer, e aqui o valor atual do HB. Vamos duplicar essas duas linhas. E vamos usar o controle deslizante. E o controle deslizante. O valor máximo é o máximo e o valor é a maneira atual. Então vamos salvar tudo isso. E agora vamos para o desafio, algo que surpreendeu. Então tudo que você precisa fazer é ter certeza de que não mostraremos nenhuma informação a menos que tenhamos um jogador ativo. Então você precisará criar uma declaração else To else para ter certeza de que não vemos nenhum ponto vazio quando não temos um jogador ativo lá. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, então há dois lugares que precisamos ter certeza de desligar o objeto do jogo do imposto. Então o primeiro está aqui. Temos o personagem ativo é jogador. Se não for um jogador que o nome, texto, ponto, ponto, objeto de jogo, que sat active é false. E também se tivermos caracteres mais ativos ou amina, se tivermos menos ato de caracteres do que a quantidade de imposto que temos, então o resto. Vamos fazer o mesmo aqui. Salve, copie isso, cole aqui, salve isso. E agora a última coisa que precisamos fazer é ver como chamamos as estatísticas de atualização do jogador. Enquanto há alguns lugares primeiro, quando causamos dano. Então podemos fazer isso no inimigo. Aqui, vamos atualizar as estatísticas do jogador. Onde mais devemos fazer isso? Podemos fazê-lo quando formos para a próxima curva. Então atualize a batalha, atualize, estatísticas do jogador. E também fazemos isso quando começamos a batalha. Então, quando começamos a batalha, também atualizamos as estatísticas do jogador. E acho que é tudo o que precisamos fazer. Então vamos salvar tudo isso. Vamos entrar na Unidade. Vamos esperar que o script se reúna. Nós vamos executar o jogo. Vamos começar a batalha. E por alguma razão, sou incapaz de começar a batalha. Isso é porque, por alguma razão, vamos tentar isto mais uma vez. Oh, ok. Então o que o gerente de batalha foi desligado? Deve ser a cena de batalha que está desligada. Oh, e nós temos. Nós temos isso trancado. Então lá vamos nós. Não. Quero dizer, lá vamos nós. Certo, agora vamos fazer o jogo. Isso foi tão estranho. Então começamos a batalha e, e, e então nós temos o sombrio Draco. Meu Deus, quão legal é isso? Sério? Quão legal é isso? Vamos tentar isto mais uma vez. Estou surpreso que funcionou desde o primeiro passo. Então Jimmy, Jimmy, Jimmy, o sombrio. - Legal. Vamos ver o que acontece. Draco para baixo dados. Vamos ver de novo. Jimi morre os dados sombrios e perdemos porque todos os nossos personagens têm um HP atual de 0. Mas a próxima coisa que precisamos fazer é lidar com as camadas mortas quando atualizamos a batalha, se você se lembra, nós matamos personagem em. Então eu vou vê-lo no próximo vídeo e certifique-se de confirmar suas alterações. E se você está gostando do curso e gosta de mim como instrutor, eu adoraria saber sua opinião. Então deixa-me uma crítica sempre que puderes, quando quiseres, quando quiseres, quando quiseres. E vejo-te no próximo. Ei, Mike, líder do futuro. Sei que queria se livrar de mim, mas aqui estou eu de volta. Há um pequeno problema. Então, quando executamos o jogo, você pode ver que desligamos o grama, mas não podemos apenas ver o nome dele. Então este é um pequeno problema e aqui estamos apenas desligando o nome do texto do jogador. Não é isso que queremos. Então o que vamos fazer é obter uma referência aos jogadores. E aqui, em vez de apenas obter o nome, vamos fazer referência também aos objetos do jogo. E vai ser um objeto de jogo. E vamos chamá-lo de estatísticas de jogadores ou de estatísticas de batalha de jogadores. Vamos guardar isso. Vai ser uma matriz. E usaremos as estatísticas de batalha dos jogadores aqui. Então, estatísticas do jogador, posição I, e batalhas de jogadores, essa é a posição I. Considerando que jogadores batalham isso. Isso foi tão difícil. Então vamos guardar isso. Voltaremos aqui, precisaremos fazer referência a eles. Claire Battle Stats vai escolher, vai bloquear isso. Escolha o jogador de um a três, coloque-os aqui no salvamento que desliga o grama ou Draco, executamos o jogo agora não devemos vê-lo aparecer. Então lá vamos nós. Não vemos toda a estrutura dos Grimms, que é muito melhor. Sinto muito por interromper. Talvez quisesse descansar. Você estava dizendo que finalmente Michael, é semana do solucionador. Não preciso mais ouvi-lo, mas ele volta. Vejo-te no próximo vídeo onde vamos matar os nossos personagens. Muito divertido. 105. Tratando batalhões mortos: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, estaremos pulando sobre os jogadores que são isso. Então, atualmente precisamos de três termos para os jogadores. Mas quando um deles morrer, você verá. Então agora Draco morre. E você pode ver agora, determinar um 0 quando tivemos o Anki uma vez, ele vai imediatamente para dois, então ele pula sobre a vez de Draco. Vai imediatamente para os inimigos. Apenas dois termos são tomados. Então agora, se tivéssemos os Anki, atacamos com Jimmy imediatamente ir para a vez dos inimigos. Então não vamos perder mais tempo e vamos começar. Oh, ok. Então, atualmente, tudo parece estar funcionando bem, mas há um pequeno problema. Não tenho certeza se você notou. Se reiniciar a batalha, digamos que temos Jimmy e Draco. Tínhamos o Anki e a chave. Lá vamos nós. O Jimmy. Jericho de novo, vamos tentar isso. Então Jimmy Draco. Draco acabou de morrer. Está bem. Dre pode simplesmente morrer. Isso significa que ele não tem que ter uma vez. Então, agora devemos, em teoria, quando pressionamos a tecla Enter, só ter Jimmy jogar e depois seguir em frente para os inimigos. Então chegamos ao fim. Tivemos o “n “de novo. Então, obviamente, você pode ver que nós tomamos uma volta e se não foi obviamente eu ligar a grama. Então o problema aqui que mesmo que alguns de nossos personagens estejam mortos ou nossos jogadores estejam, eles ainda estão se revezando. Então, no Battle Manager novamente, 123, então três deles estão atacando. Espero que um deles morra 3123. Queremos que um deles morra. 2, 3. Isto vai demorar uma eternidade. Ok, então agora Draco morreu 1, 2, 3. Mais uma vez, estamos passando pelos termos. E lá vamos nós. Então você pode ver que a vez ainda está jogando para Draco Jimmy e cada jogador que os dados. Então este é um problema que não queremos ter. Então o que vamos fazer é toda vez que estamos verificando se todos os inimigos ou jogadores são dívidas, se eles não estão. Então isso significa que não perdemos o jogo ou quando o jogo. Queremos pular o personagem Stearns que tem um HP atual de 0. E vamos fazer isso usando um loop while. Então, o que é um loop while? É semelhante ao for loops onde ele executa um bloco de código várias vezes. Mas em vez de determinar o número de vezes antes da mão, então, em vez de definir o ILS do que, digamos o comprimento de um array, esperamos até que uma determinada condição seja atendida. Então, a estrutura dele, temos um loop while. Temos uma certa condição que é verdadeira. Se for, então entramos no código e esse colchete. E continuamos fazendo isso de novo e de novo e de novo e de novo até que finalmente, temos essa condição de ser falsa. E quando se torna falso, paramos de passar pelo loop e esses dois pontos aqui não devem estar presentes. Deixe-me removê-las. Bem-vindo ao back-end. Lá vamos nós. Portanto, certifique-se de entender como enquanto os loops funcionam se quiser, vá verificá-los em lugares diferentes, procurá-los, certifique-se de que você sabe o que fazer, porque em pouco tempo, você tem um desafio para pular os personagens. Então, uma batalha de atualização. Se agora todos os inimigos são, todos os jogadores estão mortos. Depois de verificarmos se nenhum deles. Isso é o que eu quero dizer. Então você vai precisar adicionar uma instrução else, vai precisar criar um loop while que mantém loop. Enquanto o personagem ativo HP é 0, aumentado determinado por um quando ele é. E se o turno for maior do que o número de caracteres ativos precisará redefini-la de volta para 0. É um desafio difícil, especialmente porque você está usando uma nova arma que acabamos de entender, que é o loop while. Não se preocupe. Faça o seu melhor. Pause o vídeo agora, entenda o desafio. Entenda enquanto loops, e vá. Faça isso. Ok, bem-vindo de volta. Então, vamos subir. Onde está a nossa batalha de atualização? Lá vamos nós. Então, se todos os inimigos e todos os jogadores estão mortos, ou vamos ganhar ou vamos perder. Mas se nenhum deles são, então vamos criar uma instrução else irá criar um loop while, e isso vai manter loop enquanto o ato de caracteres no turno atual. Dot atual, HP é igual a 0. Assim, no termo atual, enquanto temos um caractere que tem um HP atual de 0, queremos aumentar o turno atual imediatamente. E vamos verificar se o termo atual é maior ou igual à contagem de pontos de caracteres ativos, então vamos definir o turno atual de volta para 0. E é isso. Então, o que está acontecendo aqui? Como estamos atualizando os combatidos, verificamos se temos agora que não lidamos com personagens matando. Faremos isso mais tarde, não se preocupe. Então, se todos os inimigos ou todos os jogadores estão nisso, isso significa que podemos ter um deles que tem um HP 0 atual, mas ainda se revezando. Então, o que fazemos? Criamos um loop while que continua verificando todos os caracteres no termo atual. Se eles tiverem o HP atual de 0 , o termo atual é aumentado em um. Se o termo atual for maior do que o ato de contagem de caracteres do que o termo atual voltará a 0. Então olhamos para trás, vamos para o próximo personagem porque aumentamos o turno e isso enquanto a condição não foi atendida. Então, verificamos se o próximo caractere também tem um HP atual de 0, então nos movemos novamente, insira a condição, insira o loop while. Aumentamos determinado, continuamos um, então voltamos para este loop enquanto. Então finalmente chegamos a um dos personagens que não tem um HP 0 atual e nós paramos a batalha ou ele faz sua jogada ou o que quer que seja. Então, vamos salvar isso. Você vai ver isso em ação pode ser compreendê-lo melhor se você ainda está confuso. Guarde isso, execute o jogo. Espero que um dos jogadores morra imediatamente. Então, e lá vamos nós. Quão legal é isso? Draco acabou de morrer. Então agora, quando apertamos a tecla End uma vez, bem lá vamos nós. Assim, o termo atual imediatamente salta para dois. Então, agora batemos duas vezes. Ótima. Então agora o Draco não tem uma vez. Então, de novo, tivemos o Anki assim que nos movemos imediatamente para o segundo, terceiro, Jimmy morreu. Então agora tecnicamente só devemos acertar o Anki uma vez. Taxa de garotas. Então, tudo está funcionando corretamente. Jogadores que são, que não estão se revezando. E agora eu vou cometer minhas mudanças, jogadores e personagens, porque isso funcionará em ambos os sentidos, não mais se revezam quando forem mudanças cometidas. Vá até o mestre e veja o quanto passamos. Já passamos por tanta coisa e ainda há um pouco mais para ir. Vemo-nos no próximo vídeo. 106. Seção 16: Ataque para jogadores: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Lembra-te quando os nossos inimigos costumavam atacar-nos enquanto não tínhamos forma de nos defendermos. Mas agora tudo isso muda porque quando começamos a batalha, não pulamos nossa vez. Podemos mesmo atacar. Então atacamos o esqueleto, atacamos com Draco e atacamos foi Jimmy. Agora levamos uma surra. Não tenho certeza se deveria. Eu poderia ter dito isso. De qualquer forma, você pode ver que ele está atacando devagar, mas seguramente. Mas nós estamos. Então não vamos perder mais tempo. E vamos começar. Certo, agora que temos nosso inimigo atacando, temos as estatísticas das batalhas se atualizando. Sabemos qual jogador, qual inimigo está atacando, qual jogador ele está atacando. Se o jogador morrer, ele pode se revezar para que tudo esteja se juntando. Mas agora o próximo passo é boom, fazer o jogador começar a atacar. Como é que vamos fazer isto? Bem, vamos criar outro método que permite que o jogador ataque. Então vamos abrir o roteiro. E no gerente de batalha, como podem ver, temos muito. Agora é hora do ataque do jogador. E eu vou adicionar um comentário camada empilhamento métodos. E vamos começar. Então, primeiro de tudo, eu vou criar um ataque público de jogadores vazios. E nós vamos dar a ele duas variáveis. O primeiro vai ser um nome de movimento de string. Então é o movimento que vamos executar e um inteiro que é o selecionado, um Emmy. Então aqui, em primeiro lugar, é muito parecido com o ataque inimigo. É quase a mesma coisa. Então a primeira coisa que precisamos no ataque inimigo pegar o jogador. Então, não há necessidade disso. Vamos em frente e primeiro de tudo, obter o poder de movimento e, em seguida, selecionar um certo movimento. Então aqui vamos criar uma potência int mov igual a 0, e vamos continuar. Mas a diferença, ou a mesma coisa aqui é que estamos usando basicamente o mesmo código. O que fazemos é criar mais poder. Já temos o inimigo selecionado que queremos atacar. Então aqui embaixo, procuramos a batalha mais inútil. Verificamos se as batalhas se movem. Lista, ponto move é igual ao nome do filme que enviamos através do ataque jogador e assim por diante e assim por diante. Deixa-me mostrar-te, porque sinto que estraguei tudo. Então o fim I é igual a 0. Enquanto eu é menor do que os movimentos de batalha lista o comprimento. E eu mais. Por isso, estamos a percorrer os movimentos de batalha. Em seguida, verificamos se a lista de movimentos de batalha na posição I, que o nome do movimento é igual ao nome do movimento que está sendo enviado aqui. Então nós abrimos e então nós vamos instanciar o efeito, que é praticamente o mesmo que este aqui. E aqui podemos copiar isso. Podemos copiar até o poder de movimento, copiar isto, colá-lo aqui. E está no alvo inimigo selecionado e no alvo inimigo selecionado. Agora o que podemos fazer aqui é que podemos realmente criar um método usando isso. E é muito útil porque podemos usá-lo aqui e aqui dentro, o que eu acho bastante razoável. Então, vamos em frente e selecione estes clique com o botão direito do mouse em ação rápida e refatoração. Vamos extrair o método. E leva no olho e no alvo inimigo selecionado. Então vamos chamar isso de obter mais poder e instanciar efeito. Não tenho certeza se devemos fazer tudo isso. E instanciação de fatos. Meu Deus, gracioso. Caso. Então, sendo movido poder e instanciação de efeito. Como você gosta disso? Então vamos usar este método aqui. Então vamos usar a instanciação do efeito. E quais são as variáveis que ele absorve. Então, é preciso o alvo inimigo, que vamos chamar de alvo do personagem. Vamos guardar isso. E então vamos enviar aqui o jogador selecionado para atacar com o I. Salve isso e podemos remover a instanciação daqui. Vamos deletar. E é claro que vamos testar isso de novo. Nós podemos realmente ir e testá-lo agora mesmo. Nós também temos que extrair este porque nós vamos usá-lo em apenas um pouco. Você vai ver. Então lá vamos nós. Vamos testar isso. Certifique-se de que o método que extraímos ainda funciona. Então isso instancia o efeito dos ataques e agora eles executam o código. Então, e eles agora a unidade vai começar e ainda assim está funcionando. Excelente. Então guardamos isso. Agora temos um método que obtém o poder de movimento e a instanciação do efeito, sendo movido poder e instanciação do efeito. Muito sutil. De qualquer forma, vamos continuar. O que devemos fazer a seguir? Primeiro, precisamos adicionar os efeitos no ataque ou no inimigo que está sendo atacado. Então, e seu desafio é adicionar o efeito. Então você precisará chamar o método que instancia o efeito que nos diz qual inimigo está atacando ou qual jogador está atacando. E você também precisará chamar o método para causar dano com os argumentos apropriados. Então, com essa informação, pausar o vídeo agora mesmo e ir fazer o desafio. Ok, bem-vindo de volta. Como você se saiu com isso? Então nós temos mais poder e aqui tudo deve estar funcionando bem. Então vamos extrair este método do ataque inimigo. Bem, clique com botão direito. E estes são os fatos de ataque de personagem. Então este é o sistema de partículas, como você pode ver aqui. É a coisa do tiro vermelho. E nós vamos extrair, ele fará um método de extração. E este método de extração instanciar fato sobre tacking caráter. Então hoje não é o meu melhor dia para dar nomes aos métodos, mas pelo menos eles são realmente afiados e você sabe o que você está chamando. Então, depois de escolhermos qual filme vai fazer, adicionamos o poder a ele. Vamos instanciar o efeito sobre o personagem atacante. E o que ele faz é escolher o termo atual, então ele escolhe o caractere ativo nos turnos atuais. Então ele vai escolher o jogador que está atacando, o que é bom. E, finalmente, precisamos causar danos. Então vamos causar danos aos personagens. Vamos escolher o nosso alvo, que é o alvo inimigo selecionado. E então vamos dar a ele o poder de movimento que determinamos. Então vamos guardar isso. E ainda temos o último pedaço de código, que é ir em frente e fazer o próximo mandato. Poupe isso, volte, termine nosso jogo. E aqui vamos correr. Nós vamos também primeiro antes de fazer isso, nós precisamos realmente chamar este método. Então, onde chamamos o ataque do jogador? Bem, vamos chamá-lo pelos botões. Então vamos ligar a cena da batalha e vamos para as cenas. E precisamos selecionar um desses. Vou selecionar o fundo do ataque. Então o botão de ataque, se eu rolar para baixo, se eu adicionar uma condição no gerente de batalha, vá para o gerente de batalha. O que podemos fazer aqui? Precisamos do ataque do jogador por alguma razão. Não tenho o ataque do jogador. É uma chave pública? É gerente público de batalha. Gerente. Como podem ver, por alguma razão, não conseguimos encontrar o ataque do jogador. E por que isso? Bem, porque se olharmos aqui, podemos ver que leva em dois argumentos. Isso é um grande não-não. Não podemos ter dois argumentos. Então o que vamos fazer é adicionar um parêntese aqui. Vamos comentar isso. E então vamos criar um inteiro aqui. E vai ser o alvo inimigo selecionado. Então nós vamos copiar isso, colá-lo aqui, e vamos apenas selecionar o alvo que é 0. Vamos guardar isso. E agora devemos ser capazes de vê-lo aqui. Então, quando atingimos o gerente de batalha função, e lá vamos nós, ataque jogador que leva em uma corda. E por que isso? Bem, porque você não pode chamar um método aqui que leva em dois argumentos. Encontraremos uma solução para isso mais tarde. Não se preocupe com isso. Isto é apenas para fins de teste. Então, qual é o ataque? É a barra. Vamos copiar o gerente de batalha, quero dizer botão de ataque. E o botão de ataque normalmente faz a barra vai salvar isso. Excelente. Então agora é hora de executar o nosso jogo. Então nós vamos correr ou precisamos desligar a batalha da cena de batalha em torno do jogo tinha a PA. Então agora podemos atacar, podemos escolher atacar. Então lá vamos nós. Nós atacamos a nós mesmos, o que não é bom. Então você pode ver que nós três pelo menos sabemos que podemos atacar. Então, se atacarmos, digamos ataque, Draco ataca o esqueleto. O jogador ataca o esqueleto. Também. Correto. Agora precisamos corrigir o que fizemos incorretamente no dano causado ao personagem o k. então a coisa que eu não levava em consideração é que a lista de inimigos começa no terceiro porque porque temos o esqueleto, o que quer que você Chame de “O Negro”. E Jimi solo, os inimigos começaram no terceiro e quarto inteiro. Então, no, pode escolher aqui três ou quatro. Vamos escolher 3. Nós guardamos isso. Agora atacamos o inimigo adequado. E eu não levei isso em consideração. Agora, quando atacarmos, um dos nossos jogadores deve ter o sistema de partículas nele e isto deve ter o efeito de barra nele. Lá vamos nós. Lá vamos nós. Lá vamos nós. E você pode ver que estamos sendo atacados e determina, se você notou que estão sendo atualizados por conta própria. Espero que goste. Não se preocupe, tudo será automatizado nos próximos vídeos. Quando eu te ver, então. 107. Escolhendo alvos: Bem-vindo de volta meus colegas desenvolvedores de jogos para um novo vídeo onde eu esqueço de fazer um monte de coisas. Mas, eventualmente, conseguimos fazer isso. Então, quando executamos nosso jogo, tivemos DBT. Nós escolhemos atacar. Quem queremos atacá-los para atacar um senhor da guerra? Ou você quer atacá-los idade, votar nele agora mesmo porque estamos atacando o senhor da guerra do que estamos atacando o major, então estamos atacando o major novamente, mas depois o eixo maior. Então não vamos perder mais tempo e vamos começar a escolher nossos alvos. Ok, então obviamente não queremos ter que escolher um inimigo pelo código. Isso é um completo absurdo. O que queremos fazer é ter uma maneira de escolher um alvo da nossa interface do usuário. Então vamos fazer isso. Vamos ligar a cena da batalha. Vamos ao menu. Vamos duplicar este menu. Vamos chamar isso de alvos inimigos e alvos inimigos. E nós vamos, eu acho que mantê-lo aqui. Isso não é problema porque quando escolhemos ou atacar item mágico ou correr, quando abrimos o alvo inimigo, ele deve cobrir o ataque anti magia, não devemos ser capazes de então para qualquer outra coisa. Então aqui, o alvo inimigo, vamos em frente e vamos ver. Vou escolher estes três botões. Vou deletá-los. E eu vou remover o, desculpe, o ataque barra e aqui, e isso vai mudar do botão de ataque para um, digamos botão inimigo. E o texto aqui vai mudar para, digamos Target. E vamos fazê-lo de modo que ele se encaixa tão auto tamanho e aumentar o máximo. Talvez. Eu não sei. Então queremos que seja grande o suficiente. Lá vamos nós. Vamos colocá-la logo abaixo. Mas então lá vamos nós. Então é o alvo. Lá vamos nós em tamanhos de automóveis e eu vou torná-lo um pouco menor nas bordas. Ok, lá vamos nós. E correto. Agora vamos duplicá-lo. Então vamos duplicar uma, duas, três vezes, e só temos um máximo de quatro inimigos. Então vamos mantê-la assim. Agora a próxima coisa que vamos fazer é criar um script para os botões de destino de batalha. Então nós vamos e para os nossos roteiros para as batalhas. Vai fazer isso um pouco maior com o botão direito do mouse criar um script nítido em C que vai ser chamado de batalha. Batalha. Alvo. Botões pressionam Enter. Aguarde isto para compilar. E eu vou anexá-lo a cada um desses botões. Então eu vou escolher todos eles. Vou adicionar um componente. Vou escolher os botões do alvo da batalha. E vamos abrir o roteiro. Lá vamos nós. Então agora é hora de adicionar um par de variáveis. Então agora queremos antes de tudo, um nome de filme, então é público, String, mover nome, e você verá por que precisamos de um nome de filme aqui. Nem deveria ser público, mas vamos mantê-lo público para sabermos o que está acontecendo. Então criaremos um público e será o alvo de batalha ativo. Alvo. E, finalmente, vamos criar uma malha fiscal pública Pro. E vai ser o “Onde está?” Um teste de malha de texto, o nome de destino. Vamos guardar isso. Agora começa, vamos atribuir todos estes e podemos fazer isto, ou vamos simplesmente atribuir esta pilha smash bro. Então, vamos dizer que o nome do alvo é igual para obter componente e texto filhos Mesh pro indo. E lá vamos nós. Então ele retorna um texto muito pro e Stalin GST pro GUI GUI. Então agora isso está funcionando. A próxima coisa que vamos fazer é criar um método aqui para pressionar. Então, o que acontece quando apertarmos o botão? Vai ser um público. Imprensa do vazio. E o que fazemos aqui é simplesmente chamar o gerente de batalha e obter a instância. E nós atacamos foi o jogador, então gerente de batalha, instância ponto, ataque jogador ponto. E o que enviamos para cá? Enviamos o nome do filme e também enviamos o alvo de batalha ativo. Então agora podemos ir para o gerente de batalha. Podemos remover os comentários aqui e podemos parar isso agora isso vai parar o fundo de funcionar, mas não se preocupe, vamos lidar com isso em pouco tempo. Então aqui enviamos o alvo de batalha ativo. Nós guardamos isso. E a próxima coisa que precisamos fazer é ter o controle desse menu de alvo, ou esse é o painel de alvos inimigos. Vamos chamá-lo de painel de alvos inimigos. E desligamos e ligamos com base em quando pressionamos o ataque ou os botões mágicos. Então vamos fazer isso. Vamos voltar ao nosso roteiro, voltar ao nosso gerente de batalha, vamos manter isso como um comum, como um lembrete de que mudamos algo aqui. Deixe-me fechar os danos. O traficante vai para baixo o inimigo. E aqui, isso acabou de ser criado sob o ataque inimigo ou o que você quiser. Vamos criar um vazio público, menu de destino aberto. E vai pegar o nome do movimento da string. E isto é o que vai ser anexado ao botão de ataque. Então aqui vamos simplesmente obter uma referência ao painel de destino. Então vamos criar um campo serializado. Vai ser do tipo objeto de jogo. E vai ser o alvo do painel alvo inimigo. E vamos definir esse painel como verdadeiro. Então aqui, painel alvo inimigo, reativo, verdadeiro. Ok, ótimo. Agora o próximo passo, 0, e vamos definir a referência aqui. Então, o gerente de batalha, o menu alvo, o inimigo alvo, qualquer que seja o painel alvo inimigo. Agora definimos isso como verdadeiro quando queremos atacar. Agora, o próximo passo óbvio é mudar os nomes aqui para os nomes do inimigo. E isso vai fazer parte do seu desafio. Então seu desafio é carregar o inimigo em uma lista, lista inteira. Então crie uma lista do tipo int para os inimigos. Loop através de todo o ato de personagens. Se o personagem não for um jogador, adicione-os à lista e imprima o comprimento da lista no final apenas para ter certeza de que cortamos todos eles. Então pausar o vídeo agora mesmo e ir criar o inimigo. E vamos voltar. Então, quando abrirmos o painel, vamos em frente e obter uma lista de ints. Vamos chamar-lhe os inimigos. E nós vamos criar, certifique-se de que é uma nova lista de ints. E o que estamos fazendo aqui? Bem, obviamente estamos passando. E R é igual a 0 I menor que o ato de caracteres comprimento de ponto, contagem de pontos, porque é uma lista I mais, mais. E aqui, se os personagens ativos na posição do olho como um jogador. Então é por isso que eu disse que se não for um jogador, e então nós vamos acessar a lista de inimigos e nós vamos adicionar isso lá dentro. E finalmente, quando terminarmos o loop, vamos para o log de depuração e obteremos o enemies.com. Guarde isso em Unity. Nós vamos virar para onde os alvos inimigos. Por enquanto, vamos ficar com todos os botões. Mais tarde, vamos desativá-los e ativar apenas os botões que precisamos. Deixe-me ficar com dois deles. Porque sabemos que temos dois jogadores, dois inimigos, e precisamos desligar. O painel inteiro irá para o menu. O botão de ataque que estamos indo, você pode ver aqui que ele está faltando porque nós mudamos. Então de nós vamos para o gerente de batalha e vamos abrir o menu alvo com uma string que vai ser a barra. Nós vamos salvar isso. Vamos desligar a cena da batalha, executar o jogo, acertar o ataque da tecla B. Agora temos o alvo um, o alvo um. Infelizmente, não mudou, mas podemos ver que temos dois inimigos aqui. Então vamos continuar. O que devemos fazer a seguir? Bem, obviamente precisamos mudar os nomes nos botões do alvo. Então nós vamos adicionar um comentário aqui, comum isso fora. E 4 e eu é igual a 0. Então você pode ver como os loops são úteis. Acho que criámos uns 20 grupos até agora. Então os botões de alvo, os botões de alvo lutados, precisamos criar essa referência. Então aqui vamos criar um campo serializado do tipo. alvo, botões de alvo de batalha. Lá vamos nós. Vai ser um array, e vai ser chamado de botões de destino. Vamos rolar para baixo novamente. Nós vamos percorrer o comprimento do ponto botões de destino, e adicionar i em cada turno. E se os inimigos são maiores do que eu assim como fizemos aqui em algum lugar, onde está? Onde nos certificamos de que tínhamos? Nas estatísticas de atualização do jogador? Certificamo-nos de que o número de caracteres ativos é maior do que a contagem. Então nos certificamos disso aqui. Também. Os botões de alvo, posição eu tenho objeto de jogo. Isso é triste, ativo, verdade. E não queremos instanciá-lo. É um pouco difícil e já sabemos que temos um máximo de cinco, então não se preocupe com isso. Podemos ligá-los e desligá-los. O botão alvo. Na posição i ponto mover. Nome é igual ao nome do filme que determinamos aqui. E aqui que passamos usando o alvo aberto. Então temos o botão alvo. Precisamos definir o alvo de batalha ativo. Então, o alvo de batalha ativo e ativo é igual aos inimigos na posição I. E, finalmente, precisamos dos botões de alvo. I dot name, dot dot text é igual aos caracteres ativos. E o que devemos estar acessando aqui? São os inimigos na posição i. Isso é porque é um nome de caractere de ponto inteiro. Oh, desculpe-me. O ponto deve estar fora do nome do caractere. Então, o que estamos fazendo aqui e o que fizemos de errado? Certo, então o que estamos fazendo aqui? Em primeiro lugar, estamos percorrendo os botões de destino. Estamos nos certificando de que temos os inimigos, para isso. Estamos configurando como true e o botão de destino como true. Estamos definindo o nome do humor. Por que estamos fazendo isso? Porque vamos enviar o nome do filme e o jogador. Então estamos definindo o alvo, que é o inimigo na posição I. E finalmente, estamos recebendo o nome do personagem ativo nos inimigos na posição I. Ok, então porque estamos pegando os inimigos, É uma lista int. E então obtemos a posição do inimigo dentro dessa IntList. E então estamos usando tudo isso para colocá-lo dentro do ato de caráter e obter o nome dele ou dela. Vamos guardar isso. E a última coisa que precisamos fazer é depois que o jogador terminar de atacar, queremos obter o menu alvo. Considerando que o menu alvo, como lhe chamamos? Então, o nosso painel alvo inimigo e depois eu, o painel alvo pontos diretriz falso. Então, depois de terminarmos o ataque, queremos fechar o painel. Vamos entrar na Unidade. O que devemos colocar aqui? Eu esqueci. Então vamos guardar isso. Vamos entrar nos botões do alvo inimigo e vamos desligá-los todos. Nós guardamos isso. Nós comandamos o jogo. Abrimos a batalha, fazemos um ataque. Não temos nomes. Por que é isso? Porque não definimos os botões e aqui, os botões alvo. Sabia que havia algo que nos esquecíamos de fazer. Salve isso errado novamente, agora tudo deve estar em teoria funcionando muito bem. Então ataquem, temos um problema de novo. Vamos clicar duas vezes em abrir. Qual é o problema aqui? Ok, então se clicarmos em um desses, podemos ver que não demos o alvo para ele. Oh, ok. Está bem. Está bem. Então, clicamos neste botão, arrastamos o texto, clicamos neste botão, arrastamos o texto, clicamos neste botão, arrastamos o texto, clicamos neste botão, arrastamos o texto, salvamos tudo isso. Nós comandamos o jogo. E agora espero que quando tentamos atacar, temos o mestre mágico e o registro de guerra. Vamos tentar maximizar o tamanho. Começamos a batalha, atacamos o major ou o tipo de guerra. Vamos tentar atacar a guerra Locke. Obviamente, nada acontece porque de novo, eu esqueci de definir o onclick em todos estes. Perder o gerente de batalha, gerente de batalha ou não o gerente de batalha, quero dizer, o alvo inimigo real. Então nós vamos, em cada um deles. Lá vamos nós, os botões, selecione todos eles. Batalhou, alvo, imprensa, guarde isso, execute o jogo. Então esta é a terceira vez que tentamos executar o nosso jogo quando atacamos, o que mostra o bloqueio de guerra que luta contra os principais bruxos mestre, ok, então estamos atacando o mesmo inimigo. Precisamos corrigir isso também 0. Então eu descobri o problema. Se executarmos o nosso jogo, começamos a batalha, atacamos o ataque. Podemos ver que o primeiro representa o botão. Ele tem um corte e o alvo de batalha ativo é três, o segundo é quatro. E eu estava tão perplexo. O que está acontecendo? Por que não está funcionando? Toda vez que queremos atingir o Borlaug, ainda atingimos o major aqui. Então o problema era, é que eu fiz uma coisa muito, isso é chamado de movimento estúpido. Quando escolhemos um botão, escolhi todos eles e defini um único alvo. Devemos escolher cada botão, arrastar o script sobre ele, arrastar o script sobre ele. Arraste o script sobre ele e arraste o script nele. Então agora escolhemos a imprensa para cada um dos botões. Lá vamos nós. Então, agora devemos. Finalmente. Sim, lá vamos nós. Como podem ver, agora, quando atacamos a página principal, atacamos o diário de guerra. E lá vamos nós. Agora podemos escolher qual inimigo queremos atacar. Quão legal é isso? No próximo vídeo, veremos como podemos usar magia. Então, vejo-te depois. Não se esqueça de cometer suas mudanças toda vez que fizermos algo incrível. 108. Configurar uma interface mágica: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Nós não fizemos muito no front-end do nosso jogo, mas no backend, nós criamos um monte de código com um monte de botões e um monte de funcionalidades intrincadas e detalhadas. Então não vamos perder mais tempo, e vamos começar. Boa hora para usar magia com nossos jogadores. Agora, como vamos fazer isso? Nós não queremos ter magia aleatória acontecendo e escolher para nós que é bom com os inimigos, não tão bom quando se trata de o jogador, porque queremos escolher qual soletrado MEU quer usar. Então vamos em frente e fazer isso. Primeiro, vamos desligar a cena da batalha. Onde é que vamos para o Canvas? Vamos escolher o menu ou os alvos inimigos, não importa. Vamos duplicá-lo. Vamos torná-lo um pouco maior porque podemos adicionar muito mais cônjuge aqui. Nós vamos usar a grade para movê-lo do topo apenas um pouco e da esquerda apenas um pouco. Este vai ser o, como devemos chamá-lo, o painel de escolha de feitiço, eu acho que o painel de escolha do bico. Chame de algo mais inteligente, se quiser. E agora vamos torná-lo um menor, vamos torná-lo assim. Então, duas filas, duas fileiras. Vamos duplicar o EBIT, o botão Executar. Então depende de quantos feitiços você tem atualmente. Não temos tantos cônjuges. Mas à medida que você passar por sua jornada e jogos de RPG, você sabe que você pode coletar cônjuge, aprender novos, aumentar suas estatísticas de personagem. Então eu acho que ter, digamos, por oito feitiços, sim, é bolas, eu acho que é o suficiente. E vai fazer a caixa yay grande. Vamos nos mover usando o débito de grade, então mova-os para cima ou para o meio, ou talvez adicionar espaçamento. Sabe, isso é perfeito por enquanto, vamos apagar todos esses botões, só precisaremos de um deles, que é o botão de ataque. E vamos mudá-lo para algum tipo de botão de feitiço. Lá vamos nós. Vou remover o ataque de barra daqui. E o que vamos fazer? Bem, quando apertamos o botão mágico, é semelhante ao modo como usamos o botão de ataque. Apertamos o botão mágico. Temos opções para escolher um dos cônjuges que temos no jogador. Quando escolhemos um desses feitiços , temos a opção de escolher em qual inimigo queremos usá-los. Então vamos criar esta estrutura em todo o nosso painel de escolha de bico. Vamos começar. Primeiro de tudo, vamos ao nosso gerente de batalha. E segundo, onde está o gerente de batalha? E aqui precisamos de uma pequena referência. Vamos fechar isto. Uma pequena referência ao menu de feitiços. Então serializado campo, objeto de jogo, o menu mágico ou painel de escolha mágica. Vou continuar ligando para pegar menu porque eu continuo esquecendo. E precisamos de um método aqui, que é o vazio público, abra o menu. Então público aberto, painel mágico ou painel de escolha mágica. E nós vamos simplesmente obter o painel de escolha mágica tão seletivo, verdadeiro. Guarde isso. Agora vamos para os personagens de batalha e dar cada um seus próprios movimentos para atacar. Então, onde estão os personagens de batalha? Em unidade? Nós vamos para os Prefabs, personagens de batalha jogadores. Então o Draco tem os ataques disponíveis. Podemos adicionar quantos ataques ele tem, o grama e o Jimmy. Então vamos ver, Draco, o que ele ganha? Vamos fechar isto. Nós vamos para os ataques. E aqui podemos ver todos os ataques disponíveis. E vamos fazer isso um pouco maior. Então, o que Draco pode fazer? Bem, eu acho que como ele é um pouco escuro, ele pode usar os tentáculos, ambos. E talvez não os roxos. Não os roxos, só os tentáculos. Talvez ele possa usar iluminação. Claro. Por que não? O relâmpago e o fogo azul. Acho que são boas para o Draco usar. Nós vamos salvar que vai destrancá-lo, vamos e vamos escolher um outro mordomo. Então, a grama, o que o sombrio pode fazer? Então vamos ver. Ele pode ter laser. E iluminando. Então acho que é o suficiente para o Gram. Ele não é um personagem muito dominado, é meio que uma semana. E depois temos o Jimmy. Então Jimmy, o que Jimmy pode fazer? Jimmy pode fazer tudo para que ele possa usar ok, então precisamos prender Jimmy. Jimmy, o demônio, para que ele possa usar o fogo azul, o laser, os tentáculos roxos, os tentáculos negros, e o relâmpago. Aí está, Jamie, acho que não terá painel suficiente para tudo isso, o que fará parte do seu desafio, não agora. Não se preocupe com isso. Gerente de batalha. Precisamos definir o painel de escolha mágica. Então escolha de feitiço, escolha mágica, escolha feitiço. Eu não sei. Aqui atrás, precisamos de duas órbitas, desculpe. Precisamos ficar aqui e criar um script de botões mágicos de batalha. Cada botão aqui que vamos criar em apenas um pouco terá seu próprio script nele. E vamos fazer coisas parecidas com a forma como lidamos com os alvos inimigos. Então, em scripts na batalha estavam com o botão direito do mouse, criar um script afiado C que vai ser os botões mágicos de batalha. E vamos adicioná-lo a este botão de arquivo. E vamos abri-la no Visual Studio. E aqui precisamos de algumas variáveis. Então, primeiro de tudo, uma String pública, nome de soletrar, depois um público, e custo de feitiço. Então precisamos de mais duas variáveis para os textos. Então, texto público sonda Mesh. E há uma coisa que eu esqueci de fazer, e que é o custo deste PAL. Precisamos ter certeza de que o jogador que está usando nosso feitiço sabe quanto isso vai custar. Então eu vou dar o nome a este feitiço e torná-lo grande. E talvez definir algumas coisas. Torná-lo maior. Lá vamos nós. E eu vou adicionar um texto muito profissional aqui. E onde estamos? Texto Mesh Pro. Este será o custo do feitiço. Este é o nome do feitiço. E os custos de descarte devem ser estabelecidos aqui no fundo. Vai ser a forma a que estamos acostumados. Vamos dimensioná-lo automaticamente. Vamos torná-lo ousado e vamos ajustá-lo para três noves. Espero que isso pareça bom o suficiente por trás. Então espero que isso não vai parecer muito ruim. Lá vamos nós. Vamos pô-lo ali mesmo. Este é o tamanho adequado para ele. Não queremos que cubra muito o nome do feitiço V. Sim, lá vamos nós, guardamos isso. Vamos para este botão. E agora vamos ter uma referência a ele também aqui. Então o texto do nome do feitiço e o texto do custo ortográfico. E então vamos criar o precedente aqui. Então, vamos remover o início e a atualização. Podemos precisar deles mais tarde. Tão público, vazio, imprensa. E a instância de ponto do gerenciador de batalha, menu de alvo aberto ponto. E o que requer aqui? Requer o nome do filme, por isso vai ser o nome do feitiço. Guarde isso. Mas não podemos fazer isso. Precisamos ter certeza de que o jogador tem mana suficiente para usar este feitiço. Então eu vou te dar um desafio. E seu desafio é certificar-se de que o jogador tem mana suficiente. Então, como sabemos que o jogador tem mana suficiente vai precisar acessar o personagem ativo no botão de feitiço. Então, a primeira coisa que você precisa fazer é acessar a variável do mana atual no personagem de batalha. Então você vai precisar de um método que retorna o personagem do gerente de batalha. Em seguida, quando você pressiona o botão, crie uma condição if que chame esse método e verifique se é suficiente para o local. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, no gerenciador de batalha, vamos retornar o personagem ativo atualmente, então personagem de batalha pública. E aqui vamos obter o caráter ativo atual. Eu queria chamá-lo de mordomo ou personagem, e simplesmente retornará o personagem ativo no termo atual. E isso é tudo o que precisamos fazer. Vamos guardar isso. Voltaremos para o botão mágico. E aqui, antes de lançarmos um feitiço, criaremos uma condição. Nós vamos para o gerente de batalha, ponto instância ponto obter personagem ativo. E nós vamos acessar o mana atual sobre ele. E vamos verificar se ele tem mais do que o custo do feitiço. E então vamos mover a instância de batalha para aqui. E o que mais devemos fazer depois de apertarmos esse botão? Bem, antes de mais, queremos fechar o menu. Então, gerente de batalha, a opção de menu mágico ou painéis de escolha de feitiços, algo assim. Vamos ver. Então instância de ponto do gerenciador de batalha, mágica de ponto. Não, vamos ao gerente de batalha. Temos de ter a certeza de que é o painel de escolha mágica. Podemos criar um método para alternar ou podemos torná-lo público por enquanto. Só para tornar as coisas um pouco mais fáceis, nós guardamos isso. Então instância mágica, painel de escolha que definir ativo como falso. E então também precisamos remover o mana do personagem. Então, instância de ponto do gerenciador de batalha , ponto, obter personagem ativo , ponto mono atual é menor ou igual do que o custo do bico o k. ótimo, então agora nós salvamos isso, vamos voltar para o nosso jogo. Vamos salvar tudo isso. E no próximo vídeo, vamos realmente atribuir os scripts ao nosso botão e alterá-los ao redor. Preciso cortar o vídeo agora, já é muito grande e há muito mais passos para fazer. Então. Vejo-te no próximo. 109. Usando mágica: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, como você pode ver, eu ganhei uma batalha. Estou tão orgulhosa de mim mesma. Quando executamos nosso jogo, apertamos a tecla B. Usamos magia. Como você pode ver, temos lasers estava iluminando que exigem 120, o relâmpago. Então estamos atacando com a Gram quando tivemos o senhor da guerra, você pode ver que perdemos um pouco de Mona. E podemos fazer o mesmo quando se trata de Draco, mestre dos raios, podemos escolher qual inimigo queremos atacar. Podemos escolher com qual soletrado queremos atacar. Podemos escolher se queremos usar magia ou simplesmente atacá-los. E tudo isso será possível neste vídeo, é claro, precisamos de um pouco de ajustes. Você vai notar no final, ainda há um monte de coisas que precisamos fazer enquanto jogamos durante a batalha e verificar alguns dos inconvenientes que temos lá, alguns bugs e assim por diante. Então, até lá, não vamos perder mais tempo. Vamos começar e certifique-se de sempre confirmar as alterações que fazemos neste vídeo. Oh, ok, então não precisa explicar nada. Continuaremos com nossa magia usando poderes. Então vamos abrir o gerente de batalha. Vamos rolar para cima e obter uma referência a todos os botões mágicos. Então, um campo serializado com os botões mágicos de batalha para recriar isso. Nós fizemos. E os botões mágicos. Lá vamos nós. Agora, vamos buscar uma referência a eles. Então ou custos de eliminação. Não sei se soletra botões mágicos, quiser chamá-los. Vamos chamá-los de botões mágicos. E nós vamos adicionar 1, 2, 3, 4, 5, 6, 7, 8 ou o suficiente. Vamos falar com o gerente de batalha. Feche isso. Selecione todos os botões mágicos, adicione-os aqui, desligue todos. Então assumimos a França com ela. Assim como todos eles e desligá-los todos. Ótimo. Agora vamos voltar para onde abrimos nosso painel. Então aqui, nós vamos olhar através de todos eles, ligá-los e desligar e dizer seus nomes. Então quatro e r é igual a 0. Eu sou menos que os botões mágicos. Comprimento do ponto, comprimento do ponto I mais, mais. Vamos verificar se os caracteres ativos do turno atual. Movimentos de ataque de ponto disponíveis. O comprimento do ponto é maior do que i. Portanto, isto é semelhante ao que estamos a fazer. Toda vez que temos botões, precisamos ter certeza de que temos mais jogadas de ataque disponíveis. Vamos verificar os botões mágicos na posição i, ponto GameObject, conjunto de pontos ativo, verdadeiro. Em seguida, os botões mágicos na posição que eu pensei soletrar meu nome é igual para obter personagem ativo. Então agora temos o personagem ativo get atual. Quão legal é isso? Então podemos usá-lo aqui porque ele retorna a corrente. Poderíamos tê-lo usado aqui, mas estamos nos acostumando. Então jogadas de ataque ponto-ponto disponíveis na posição I. Nós guardamos isso. E, finalmente, os botões mágicos na posição i, pontos sino, nome, texto. Lá vamos nós. O texto é igual aos botões mágicos na posição I soletrar nome. Então, porque cada botão mágico batalha tem um nome especial, então vamos acessar o custo do bico, soletrar o texto do nome nele e definir este nome da banda. Nós também poderíamos ter chegado aqui no começo. Talvez isso tivesse sido melhor, mas como estamos colocando tudo aqui e aqui no gerente do banheiro, vamos mantê-lo aqui para sabermos. Ok. Então nós abrimos o painel, nós colocamos tudo para o fundo não nós colocamos metade das coisas aqui dentro do que metade das coisas aqui dentro. Então, de volta ao gerente de batalha. Finalmente, o que precisamos fazer é verificar ou preencher, na verdade dissipar o custo. E esse será o seu desafio. Seu desafio é obter este podcast e aplicá-lo. Então em loop através dos movimentos de batalha, use j em vez de I porque já estamos usando o I. Verifique se os nomes coincidem com o nome do feitiço no botão. Defina o custo do bico no botão e defina-o no texto também. Pause o vídeo agora mesmo e vá fazer o desafio. Bem-vinda de volta. Então foi um desafio difícil, eu acho. Então vamos criar um loop for, e o loop for não deve estar aqui. Deveria estar aqui. Então quatro. E nós estamos indo para ir em frente e criar um int j é igual a 0, enquanto j é menor do que a lista de movimentos de batalha comprimento de ponto j mais. Então, estamos revendo todos os movimentos de batalha. Se a batalha se move menos, posição, nome j ponto é igual aos botões mágicos. Posição, GA, posição, quero dizer ponto, nome do feitiço. Eu estava escrevendo esse tempo todo fora dos parênteses. Ok. Por isso, certificamo-nos de que o temos disponível do que o botão mágico. Na posição i, custo de feitiço ponto, custos de feitiço. O custo normal por agora vai ser definido. Precisamos removê-lo do jogador. E vamos duplicar esta linha. Custos de feitiço, texto, jogada de batalha. Ou podemos usar este aqui imediatamente. Copiado, colá-lo aqui, soletrar ponto de custo para String. Lá vamos nós. Então, agora, vamos guardar isso. Vamos entrar na nossa Unidade. Tenho certeza que esquecemos muitas coisas. O problema aqui, qual é o problema? Strings para Malha de texto. Oh, ok, ok. Texto. Guarde isso. Agora não devemos ter erros. Ok, ótimo. Então agora vamos conseguir isso. Vamos ver se é necessário. Todos eles exigem um pouco de trabalho. Então eu acho que podemos deixar isso e ir em frente e verificar o texto do nome do feitiço, o feitiço custa texto. E vamos acrescentar aqui a imprensa. Guarde isso. Vamos duplicar. Quantos nós tivemos? Vamos ligá-lo. Veja quantos eram. Guarde isso. Então você pode ver agora que é assim que lidamos com isso. Então, cada script mágico do botão aqui é usado neste. Portanto, antes de duplicar os botões, certifique-se de criar o primeiro precisamente e corretamente e, em seguida, duplique-os. Então, por exemplo, vamos escolher o botão aqui. Se escolhermos o script, o script no botão mágico que estamos usando. Se escolhermos dissipar nome como dissipar nome do botão que estamos escolhendo. Então espero que seja compreensível. Vamos desligar todos eles. Nós vamos economizar, vamos fechar o painel de escolha, executar o jogo. Aperte a tecla B, sapatos, magia. Por que não está funcionando? Gerente de batalha, painel de visitas soletradas. Certo, no menu, a magia. Esquecemos de fazer a coisa mais importante que é aberto o painel mágico. Abra painéis mágicos, guarde isso. Não, não, não, não comande o jogo. Precisamos desligar a cena da batalha, executar o jogo. Vamos para a magia. E há um problema. O problema está aqui e que o botão mágico não é referenciado corretamente porque y não é referenciado corretamente, mas você pode ver que temos o laser. Podemos escolher a guerra Locke, e aplicamos o laser. Tão iluminador. Ok, então definitivamente há algo errado. Isso é porque se fores ao gestor de botões, qual é o problema? Oh, ok. Então ele apagou tudo. E então nós não nos certificamos de que para adicioná-los novamente. Ok, lá vamos nós. É tão bom que nós podemos realmente clicar duas vezes no ar e ir imediatamente para a linha errada para que possamos começar a diagnosticar. Novamente. Vamos correr, vamos testar isso. Espero que isso funcione quando tivemos a magia, temos iluminação a laser porque estamos trabalhando no Draco, acredito que no começo. Se desclicarmos, vamos para Draco, Draco, Draco, Draco, Draco. Jogadores prefabs. Draco tem tentáculos relâmpagos. Não, acho que é o Grim. Então. Guerra Relâmpago Locke. Sim, lá vamos nós. Nós aplicamos o relâmpago na sorte da guerra e perdemos toda a nossa mana. Então agora estamos usando Draco. Você pode ver que temos o cônjuge que podemos usar. Então vamos usar os tentáculos. Não podemos usá-los porque acho que não temos mana suficiente. Então, por exemplo, o raio precisa de 120 mono enquanto Jacob, quero dizer Draco tem, vamos ver. Draco tem mana, 10. Ok, muito bom. Então, qual é o problema? Acho que fizemos algo errado com nosso código porque mana atual foi perdida e eu acho que não. Tudo o que temos para o pequeno Mano. Assim, o atual suporte mano e o máximo é bronzeado. Claro que não podemos usá-los. Claro, é claro que não podemos usá-los. Então precisamos ir ao Draco. Vamos adicionar um pouco de mana a ele. Sério, vamos adicionar 1000 mil e o sombrio, mil com milésimo. E o jogador. Vamos aplicar a luz ao Draco, aplicada ao sombrio. Guarde que vamos executar o jogo novamente. Vamos começar a batalha. E sim, isso é desenvolvimento de jogos. Você sempre faz alguma coisa. Todos estes precisam de testes, por isso, iluminação, iluminação no mestre principal. Lá vamos nós. Se recolhermos no Grim, podemos ver que ele perdeu o atual Mano 120. Ele perdeu um pouco de mana. Draco tem a quantidade de mana. Mais uma vez, usamos magia. Vamos ver. Queremos usar os tentáculos azuis ou algo assim. Vamos usá-los na guerra. Custam 200. Quando tivemos a guerra, Locke, deveríamos ver isso. Oh, então nós já perdemos. Lá vamos nós. Quando batermos, usamos a magia de novo e vamos usar os tentáculos roxos nos Bruxos. Você acabou de ver isso? Porque nós batemos, eu acho que um crítico lá vamos nós. Jimmy negociou 2772. Jimmy, isso é algum número. Isso é um monte de danos. Então agora, de novo, começamos. Mas como você pode ver, ainda temos um pequeno problema e aqui, ele não está atualizando. Temos todos esses arquivos disponíveis para nós de cada personagem, novamente, magia. Então você pode ver que há um pequeno problema aqui. E o último passo que nos esquecemos de fazer foi criar uma declaração mais aqui e disse que os botões mágicos na posição, Eu pensei objeto jogo definido ativo para falso. Então agora não devemos ver feitiços que não deveriam estar lá. Fazemos o nosso jogo. Tivemos a magia usar relâmpagos, usar magia nos Bruxos, magia, relâmpagos. Tão mágica, como você pode ver, porque estamos em Draco, não vemos nenhum outro ataque. Magia, e você pode ver que nós matamos a caminhada do mundo. Mas não o removemos. E porque Draco é que só podemos atacar. Então verá que só há um termo para os inimigos e um termo para nós. Isso é porque o tipo de guerra morreu, mas ainda podemos atacá-lo e ainda estamos atacando com Draco 0 porque ele ainda não morreu. Então usamos iluminação na parede. sorte pode ver que ele não ataca mais, mas ainda podemos atacá-lo, o que não é bom, não há magia suficiente. Ei, nós queremos. Espero que tenham gostado deste vídeo. Podemos finalmente quando um jogo, e eu te vejo no próximo. 110. Mostrando a magia não suficiente,: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, temos um painel de notificação que nos diz várias coisas. E um dos mais importantes é que se tentarmos, se tivermos 0 mono ou não mono suficiente para um determinado bico, que é o raio. Digamos que tentamos acertar o raio, mas não temos maneira suficiente, então precisamos fazer algo diferente. De qualquer forma, não vamos perder mais tempo e vamos começar a adicionar notificações às nossas batalhas. Certo, então, quando não temos mana suficiente, podemos fazer mágica, mas isso não é suficiente porque não podemos ver, ou não podemos saber que não temos mana suficiente para fazê-lo. Então, o que faremos, aproveitaremos esta oportunidade para criar uma notificação vinculada. Então, como vamos fazer isso? Vou abrir a tela. Eu vou para o cardápio. Vou encontrar o botão de ataque. E antes de continuar, preciso desligar a cena da batalha. Vou usar o botão de ataque. Eu vou duplicar. E eu vou desmarcar isso da batalha Canvas ou quer saber? Vamos mantê-lo na batalha Canvas. Vamos colocar sobre o cardápio. E esta será a notificação de batalha. Então, mas sem painel de TV, você pode chamá-lo se quiser. Vamos remover o componente de botão porque não vamos empurrá-lo. E eu vou colocá-lo aqui. Vou torná-lo um pouco maior. Instalado bem aqui. Então, isso será usado para fins gerais. Então eu vou abrir o texto e eu vou mudar o tamanho desse texto para ser em torno yay grande. Lá vamos nós. Eu vou colocá-lo no meio e eu vou ter certeza que é ostracizado e aumentar o máximo que eu puder. E o mínimo tão pequeno quanto eu acho que posso. E isso vai ser as notificações de batalha e certifique-se de auto tamanhos porque você nunca sabe que tipo de notificação você quer colocá-lo aqui. Então, porque é um propósito geral e painel de notificação, vamos usar um script para manipulá-lo. Então vamos clicar com o botão direito do mouse aqui, ir para criar o script C-sharp, e vamos chamar isso de notificações de batalha. Entrar. Aguarde isso para compilar. Vamos adicioná-lo à certificação do bastão. E vamos abrir o roteiro. Oh, ótimo. Então, o que vamos fazer aqui? Primeiro, precisamos de uma referência a algumas coisas. A primeira coisa será, quanto tempo isso vai ficar na tela? Então vai ser um carro alegórico, o tempo vivo. E então a segunda referência será obviamente para o texto ou o texto Mesh Pro. Então vamos precisar usar o AMP. E isso será do tipo. Obrigado, malha pero Gui. O aviso de texto, que é notificações de texto, removerá o início e a atualização porque não precisamos deles por enquanto. E eu vou criar dois métodos aqui. O primeiro será um texto de conjunto anulado público. Nós só vamos pegar uma cadeia de texto. Quero dizer, um imposto do tipo string. E então o que vamos fazer é definir o texto. Observe que deve ser igual ao texto que foi enviado. Em seguida, criaremos outro método para ativar este objeto de jogo de notificação de batalha. Então, é uma ativação de vazio público. E aqui vamos simplesmente pegar o objeto do jogo e definir o ativo como verdadeiro. Ok, Agora a próxima coisa que queremos fazer é desligar esta notificação ou configurá-la para definir o ativo como false após um certo período de tempo. Como você faz isso? Eu posso ouvir você quase que está usando corotinas, ok, então vamos usar Coubertin. Mas você vai usar corotinas porque você vai fazer a notificação desaparecer criando uma co-rotina que fará com que a notificação desapareça depois que o tempo para estar vivo termina. Então pausar o vídeo agora mesmo e vá criar isso fácil secretamente. Ei, bem-vindo de volta. Então este não foi um desafio muito difícil, eu acredito, porque você já está familiarizado com corotinas. Fizemos uma tonelada dessas. Então este será o numerador Eigen que faz, não, esta, esta cerveja. É assim que você escreve desaparecer e então vamos ceder retorno. Não é assim que se escreve “Retorno novo”. E vamos esperar quatro segundos até a hora de estarmos vivos. Como acabou. Guarde isso. E finalmente, depois de esperarmos por esse tempo, vamos acessar o objeto do jogo. Conjunto de pontos ativo. Para falso. Vamos guardar isso. E depois de ativarmos, vamos começar a co-rotina, que fará o aviso. Ok, não é possível renomear este elemento. Talvez devêssemos adicionar colchetes. E isto deve ser com um IEP Enter. E não sei se sabe como estou fazendo isso. Eu tenho certeza que nós cobrimos isso, você mantém o controle pressionado ou R e você pode mudar todas as instâncias deste mundo. Espero não ter feito isso sem o seu conhecimento. De qualquer forma, vamos continuar um, onde vamos chamar isso? Bem, obviamente nos botões mágicos de batalha, depois de apertarmos este botão e descobrirmos que não temos dinheiro suficiente para usar este feitiço. Senão, vamos usar o banheiro para férias, mas há um pequeno problema aqui. E isso não é problema realmente um, uma hierarquia de código ou uma maneira de implementação fria de pensar, porque vamos estar usando esta notificação de batalha em muitos casos em nossas batalhas, porque não é apenas para o 0, não temos dinheiro suficiente. Ou talvez tudo o que fugimos ou você não pode fugir ou você fez um dano crítico ou algo assim. Então, como vamos usá-lo durante toda a nossa batalha, é melhor obter uma referência a ele no gerente de batalha. Então eu vou fechar tudo isso. E no gerente de batalha, vou receber uma referência às notificações de batalha e ao aviso de batalha. E nós vamos acessar o aviso de batalha no gerente de batalha e então usar os métodos nele. Então o gerente de batalha, instância de ponto, batalha de ponto, observe que isso deve ser público. - Obviamente. Deveria ter notado que o antemão, não se preocupe, diz variável pública. Assim, o aviso de batalha ponto SetText. E este imposto vai ser, nós não temos ou algo assim. E então o que faremos é ativá-lo. Então instância de ponto do gerenciador de batalha. Deveríamos ter criado uma única variável para estas três palavras. Não se preocupe. E aqui também, teria sido muito melhor. E finalmente, o que fazemos aqui? Desligamos o menu mágico. Então, o gerente de batalha, a instância, a magia do menu, menu mágico, painel de escolha mágica que definir ativo como falso. É isso. E alguns de vocês podem estar se perguntando, por que estamos usando um método para definir o texto, um método para ativá-lo. Por que não apenas definir o texto e ativado enquanto? Porque talvez ao longo do caminho, você precisará, por algum motivo, definir o texto separadamente e depois ativado separadamente. Você pode configurá-los no mesmo método. Tudo bem, não se preocupe com isso. Mas eu acho que é melhor, limpo e talvez será usado mais tarde para apenas definir o texto ou apenas para ativar por alguns motivos. Não se preocupe com isso. Vamos guardar isso. Volte para o nosso jogo aqui. Precisará ir ao gerente do banheiro e dar a notificação de batalha. Ou antes de fazermos isso, precisamos definir o aviso de texto. E vamos colocar dois segundos. Então vamos ao gerente de batalha e dar-lhe a Batalha de nós. Vamos salvar tudo isso. Vamos em frente e desligar a cena da batalha. Vamos executar o nosso jogo, vamos começar a batalha. E para, obviamente, devemos desligar a notificação de batalha será executado novamente. Começaremos uma batalha. Vamos para a posição Camadas, posição um, grama, o Mano atual será definido como 0. Vamos guardar isso. Podemos salvar durante o modo de jogo, então acessamos a magia. Vamos tentar o laser. Não temos jeito suficiente e desliga-se tão bem, que parece estar funcionando. Espero que tenham gostado deste vídeo. Espero que esteja se divertindo. No próximo vídeo, vamos ver como vamos matar nossos inimigos porque atualmente eles são meio invisíveis. Vemo-nos no próximo vídeo. 111. Desire o passado: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos neste vídeo, quando executamos o nosso jogo, quando apertamos a tecla B, tivemos o botão Executar, mas nunca o usamos. Agora, quando apertarmos o botão Correr, como podem ver, podemos fugir. Mas às vezes quando apertamos o botão Executar, podemos ver que não há fuga, então não podemos fugir de nossos problemas. Nós sempre, ou às vezes, ou a maioria das vezes temos que enfrentá-los. Então não vamos perder mais tempo. Vamos enfrentar nossos problemas e vamos começar. Ok, então agora nós queremos dar uma chance para nossos jogadores fugirem porque estamos enfrentando inimigos dominados ou inimigos que estão muito acima do nosso nível de luta. Então vamos em frente e criar um método para isso. Vamos falar com o gerente de batalha. E enquanto o gerente de batalha, gerenciador de botões, eu vou colocá-lo aqui. E vamos criar uma variável aqui, um campo serializado, que será a chance de fugir. Então esta é quanta chance temos a chance de fugir? E vamos ajustá-lo para 0,5. Portanto, isso deve depender de cada banho. E então nós vamos rolar para baixo até o fim. E aqui vamos criar um vazio público, fugir. E o que vamos fazer aqui? Bem, vou te dar um desafio porque podemos escapar? Esta é a pergunta que você precisa responder. Crie um método fugitivo, o que eu já fiz por você. Nele, você precisará verificar se há um valor aleatório. E se for maior que um certo limite, deixamos os jogadores escapar. Caso contrário, mostre um aviso de que não há escapatória. Assim como fizemos quando estávamos implementando o hit crítico, você precisará ir em frente e implementar isso em nosso método de fuga. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então a primeira coisa que vamos fazer é obter um valor de ponto aleatório. E isso nos dará um valor entre 01 e se esse valor for maior do que a chance de fugir porque a chance de passarela é 0,5, se bem me lembro, sim. Então, se for maior, isso significa que temos 5050 de chance de fugir, então vamos definir a batalha é ativa como falsa. E a cena da batalha também será desligada. No símbolo de batalha definido ativo será desligado. E outra coisa. Se não pudermos fugir , o próximo mandato será feito. O ponto de aviso de batalha SetText será que não há escape com um ponto de exclamação. E finalmente o aviso de batalha será ativado. Vamos guardar isso. Voltaremos ao nosso jogo. Vamos para o botão aqui que nos permite fugir. Então, o menu, o botão Executar, vamos adicionar um método on-click aqui. Então lá vamos nós. Vamos arrastar os gerentes de batalha. O GameObject vai acessar o gerente de batalha e nós vamos fugir. Então vamos guardar isso. Vamos executar o nosso jogo. Aperte a tecla B, vai tentar correr. Não há escapatória. Vamos tentar de novo. Lá vamos nós. Então fomos capazes de escapar pela segunda vez. Se tentarmos a batalha de novo, notarão que temos um pequeno problema aqui que o sombrio Draco e Jimmy são criados novamente. Os primeiros estão sendo destruídos. Então isso é um grande não-não. Não queremos que isso aconteça. Vamos consertar isso mais tarde em nossos vídeos. Mas por enquanto, como podem ver, temos a habilidade de fugir da batalha, que é um pouco covarde, mas somos capazes de fazer isso. É uma opção. De qualquer forma, vejo-te no próximo vídeo. 112. Usando itens durante a batalha: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos e este vídeo, quando executamos o jogo, quando pegamos um par de itens, quando começamos uma batalha, se quisermos usar alguns itens, lá vamos nós, podemos ver que os itens que pegamos nosso direito aqui no nosso inventário, pronto para usarmos. Se clicarmos, podemos ver que isto é uma armadura de prata. Este é um belo oceano. Este é um machado dourado que não podemos usar, não podemos fechar, mas eles estão lá para usarmos. Então não vamos perder mais tempo e vamos começar. Oh, ok, então o último botão que queremos usar é o botão Usar Itens. Então vamos em frente e implementar isso em nosso código. Vamos, em primeiro lugar, desculpe-me, antes de implementarmos isso em nosso código, vamos criar o menu para ele. Então o que vamos fazer é ir para a tela e para o menu itens e para resistir onde visitar o painel de itens. E vamos simplesmente duplicar este painel. Vamos arrastá-lo todo o caminho para a batalha Canvas aqui. Ok, então nós vamos ligar isso e então nós vamos fazer algumas mudanças aqui. Então a primeira coisa é que não vamos ter tão grande porque eu sinto como se nós vamos clicar aqui. E vamos ver, vamos chamar isso de painel de itens de uso. E nós vamos mudar algumas coisas aqui. Vamos mover isto para cima. E alguns dos itens aqui precisam ser consertados. Então eu vou fazer isso um por um e talvez eu te veja depois que eu terminar de reorganizar tudo. Ow, kay, bem-vindo de volta. Então, o que eu fiz aqui? Primeiro de tudo, eu mudei o layout dos itens dele. Mudei o item aqui, o botão do item. Então eu vou excluir tudo isso é que nós estamos apenas para que eu possa colocar para fora a grade corretamente. Eu fiz este item 0.7 na escala bem aqui na Transformação Rect. E eu vou pré-fabricar isso. Então eu vou para a Prefabs. E onde devemos salvar isso? Onde salvamos o anterior? Vamos guardá-lo dentro da batalha. Talvez. Vamos mudar isso de personagens de batalha dois, ou vamos salvá-lo e itens talvez. Eu não sei. Dentro dos personagens de batalha, vou renomear isso para os prefabs de batalha. Prefabs de batalha. E eu só vou usar este item aqui. Vou criar um prefab original. E ele vai ser chamado de botão Itens de batalha porque nós vamos estar instanciando todas as vezes. E este vai ser o mas itens. Botão. Aperte, Enter. Lá vamos nós. Nós guardamos isso. O que mais eu fiz? Mudei um pouco o painel de escolha de caracteres, então me certifiquei de que tudo se alinha neste menu menor. Vou desligar isto. Mantemos tudo igual. Mas talvez mais tarde devêssemos remover o onclick. E aqui, quer saber, vamos removê-los por enquanto. Valores únicos, objetos diferentes, perdidos. Não se preocupe com isso. Vamos apenas remover isso no clique porque estes vão usar métodos diferentes, tenho certeza. E o que mais fizemos? Deixe-me desligar isso. No painel de exibição de itens, eu fiz um pouco menor apenas para que ele possa caber dentro deste lugar ou do lugar que ele tem. O botão dos EUA. Eu também removi o onclick. Ainda é a mesma coisa. Eu só mudei o tamanho dele. Mudei o botão de descarte para o botão de fechar, porque agora vamos usar isso para fechar o menu. Se não quisermos mais usar os itens, poderíamos ter usado os itens aqui, mas não se preocupe com isso. O nome e valor dos itens e a descrição, todos eles são definidos para ser 0,8 na escala e apenas posicionados de forma diferente. E eu acho que isso é tudo o que eu pensava assim. Então lá vamos nós. Acho que foi tudo o que mudei. E este painel de itens de uso para as batalhas. Agora, vamos voltar e começar a codificar. Então a primeira coisa que vamos fazer é no gerente de batalha, vamos subir e vamos obter uma referência a todas as coisas novas que criamos. Primeiro de tudo, vamos criar um objeto de jogo público, que vai ser os itens para usar menu, eu acho que podemos chamá-lo ou painel, chamá-lo do que você quiser. Então vamos criar um campo serializado, que vai ser do tipo gerenciador de itens. E vai ser o item selecionado. Então é quase o mesmo que quando criamos o inventário e os itens no Canvas normal. Verá que usamos o mesmo método. Portanto, a segunda ou terceira referência é o contêiner de slot de item. E é aqui que vamos definir todos os itens. Vamos colocar todos os itens. Quero dizer, este é o botão Items que vamos instanciar. Este, que vai ser uma transformação, vai ser o pai recipiente slot item. E finalmente, vamos obter o nome e a descrição dos itens. Então o campo serializado que vai ser tributado muito pro e con para ser o item, nome, item, corrupção. Lá vamos nós. A próxima coisa que precisamos fazer é criar uma atualização de itens no inventário. Então vamos atualizar itens no inventário. Eu deveria ter, em primeiro lugar, ter certeza de que, digamos, vazio público. E então vamos simplesmente entrar em nosso gerenciador de Canvas. Qual era o nome? Veja quantos roteiros temos. Então eu vou para o gerenciador de menu ou é, hum, ok, então vamos para o script de nossa espera para isso combinar gerenciador de menu de tela. Também foi chamado de Gerenciador de Menu. Então aqui, em algum lugar nós temos os itens de atualização, então nós vamos apenas copiar isso porque eu copiei, vamos copiar isso com o nome ou indo para copiar. Vamos ao nosso gerente de batalha e vamos colá-lo aqui. Então, o recipiente slot item. Copiar. Lá vamos nós. Guarde isso porque este é exatamente o mesmo método que estamos fazendo. Estamos destruindo todos os itens anteriormente mantidos ou aparecidos. Depois passamos por cada um deles. O que fazemos com instanciar? Definimos a imagem, definimos o imposto, o valor e o último, que é o item na parte inferior. Ok, ótimo. Agora a próxima coisa que queremos fazer é usar o item selecionado para isso. Precisamos ir em frente e te dar um desafio. Portanto, seu desafio é selecionar o item que você precisa. Então você precisará criar um método chamado item selecionado para usar com um argumento ou parâmetro do item que queremos usar. Em seguida, a energia precisará definir o item selecionado e imprimir o nome e a descrição. Com isso, pausar o vídeo agora e ir fazer o desafio. Ok, bem-vindo de volta. Então aqui nós vamos para ir em frente e criar um item selecionado vazio público para usar. E ele vai levar N e item gerenciador de itens para usar. E aqui vamos definir o item selecionado como o item para usar OKR. Então, para isso porque temos escrito itens não item, em seguida, o nome do item é ir dot txt vai ser igual a qualquer que seja o item a usar ou podemos usar o item selecionado. Então o item para usar o nome do item ponto, então o texto da descrição do item seria igual ao item. Para usar essa descrição do item. Lá vamos nós, guarde isso. Agora. Precisamos usar o método de imprensa que temos em nossos botões. Então aqui, deixa-me mostrar-te. Podemos ver isso na pré-fabricada que criamos, que está na batalha. Aqui você pode ver que nós temos a batalha. Então abra o script para o botão. Então, no canto inferior direito aqui temos o script do botão Itens e vamos usar isso. Então, vamos clicar duas vezes no botão Itens. E aqui, se você se lembrar, temos o método de imprensa, mas agora vamos adicionar outra condição. Então, primeiro, usamos os dois. Se tivermos o menu ativo do que se tivermos o menu da loja ativo. Agora, se temos o fundo ativo, então vamos verificar se na instância de ponto do gerenciador de batalha, ponto, menu de itens ou os itens para usar o menu, ponto está ativo na hierarquia. Então aqui vamos acessar a instância de ponto do gerenciador de batalha, item selecionado ponto para usar. E vamos configurá-lo como o item no botão. Item no botão, guarde isso. Lá vamos nós. E agora, para testar isso, vou voltar para a Unidade. Vou sair da pré-fabricada ou o item nos botões deve ser definido. E aqui, nós já criamos tudo isso. Eu vou voltar. Vou em frente e adicionar alguns itens no chão. Eu também queria fazer algo aqui. Oh, virou do que deveríamos estar desligando? O painel de itens? Sim. Lá vamos nós. Temos de ter a certeza de que isto está desligado. E precisamos colocar um par de coisas aqui. Sim, isso é o que precisamos fazer. Então vamos abrir o painel dos EUA. Então, primeiro de tudo, precisamos dos itens para usar objeto de jogo. Lá vamos nós. O item selecionado que será definido por conta própria. Poderia ter sido privado, mas usamos em lugares diferentes. Então, o recipiente slot item, e este vai ser o prefabs sobre para clicar aqui. Vá para os Prefabs, vá para a batalha marítima. E este será o contêiner slot item. Teremos o painel de exibição de itens, que deve estar aqui, o pai recipiente. Temos o nome do item. Então, se abrirmos a descrição do item, Isso provavelmente deve ter um nome melhor, o valor. E o valor. E eu acho que é isso. Vamos salvar tudo isso. Vamos fechar a cena da batalha. A cena da batalha. Guarde isso. Abra isso. E antes que esqueçamos, vamos ampliar o jogador em alguns itens aqui. Então, se formos para os Prefabs, os itens, vamos adicionar o x, a porção, duas porções, a armadura e a prata. Então vamos executar o nosso jogo. Nós vamos em frente e pegar os itens. Lá vamos nós, pegamos todos os itens. Agora vamos começar a batalha. Vamos abrir os itens Menu e não está funcionando. Por que é isso? Porque obviamente não definimos o botão de itens para fazer nada. Portanto, estes são passos muito cruciais que continuo a esquecer. Então, no item dos EUA, o que fazemos aqui? Precisamos chamar um método aqui, mas esse método, que é os itens de atualização, também deve definir o menu itens para abrir. Então vamos digitar aqui os itens para usar conjunto manual de pontos, ativo para verdadeiro. Vamos guardar isso. E provavelmente precisaremos voltar aqui e mudar algumas coisas. Então, por enquanto, vamos apenas adicionar o gerente de batalha. Os gerentes de batalha devem atualizar os itens no inventário. Vamos salvar isso. Agora, quando executarmos o jogo, vamos pegar esses itens, começar a batalha. E como podem ver, porque estávamos caminhando, continuamos. De qualquer forma, vamos acertar os itens e lá vamos nós. Quando clicamos nos itens, podemos ver a descrição e seu nome abaixo. Agora não podemos fechar, não podemos usar, faremos todas essas coisas mais tarde à medida que formos. Se você quiser, você pode ir em frente e fechar este menu, mas não só isso no próximo vídeo, nós também poderemos escolher em qual jogador queremos usar esse item. Então, vejo-te depois. 113. Como usar o item na sua: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, nós realmente sabemos o que em quem vamos usar o item. Então pegamos os itens, vamos para a batalha. E vamos ver, escolhemos o sombrio. Já tentamos isso na grama do HP que atacou a mononucleose, então vamos colocá-lo em 20, 10, 0. Precisamos remover o modelo atual, então vamos ajustá-lo para 20. Não vamos salvar isso. Ir para os itens selecionados Monopole Ocean, em quem devemos usá-lo? Usaremos na grama. Então fique de olho no mana atual e aqui e suas estatísticas de jogador. Então usamos a grama. Lá vamos nós. Aumentamos a demanda um pouco. Mas como você pode ver, toda vez que usamos um item, atualizamos as estatísticas do jogador. Então lá vai você. Atualizamos isso e podemos fechar o menu e continuar a batalha. Então não vamos perder mais tempo. E vamos começar. Ok, então agora é hora de começar a escolher em qual jogador queremos usar os itens. Então a primeira coisa é que queremos obter uma referência ao painel de escolha de personagem ou como chamamos aqui? O gerenciador de batalha, mas Canvas , tarefas de personagens, painel, Sim, é painel de escolha de personagem. E, em seguida, obter uma referência aos três nomes que temos aqui e ligá-los e desativá-los. Então vamos abrir nossos roteiros. E aqui no gerente de batalha, eu vou subir lá em cima. E eu vou obter uma referência antes de tudo, para o objeto do jogo, que é o do painel. Então objeto de jogo, o painel de escolha de personagem. E então eu vou obter uma referência a todos os textos que existem. E agora vou dar um desafio a vocês, que é criar o menu de personagens abertos. Portanto, é muito semelhante ao usado no gerenciador de menus. Mas em vez de apenas percorrer as estatísticas do jogador, precisamos percorrer o ato dos personagens. E também precisamos ter certeza de que esses personagens ativos são os jogadores, não os inimigos. Com isso dito, pausar o vídeo agora e ir fazer o desafio. Ok, bem-vindo de volta. Então eu vou rolar todo o caminho para baixo e eu vou criar um método aqui que vai ser o vazio público, aberto ou menu de caracteres ou o que você quiser. E então vamos verificar se temos um item selecionado. Se o fizermos, vamos em frente e, em primeiro lugar, verificar 40 caracteres escolha, painel, escolha, painel ponto definido ativo como verdadeiro. Então agora podemos começar a escolher. Então nós estamos indo para loop através do V caracteres ativos contagem de pontos. E nós vamos, é claro, estar adicionando apenas um. Então vamos verificar se é um jogador ou não. Então, porque não queremos acrescentar nada aos nossos inimigos. Então, se os personagens ativos na posição que eu pensei é um jogador, então aqui nós vamos ir em frente e acessar as estatísticas do jogador foram primeiro criar um método. Então estatísticas do jogador, jogador ativo. E vai ser igual ao objeto de jogo ou gerenciador de jogo. Quero dizer, instância de ponto, estatísticas de jogador de pontos. Na posição I. Então vamos acessar o nome do jogador. E a posição I que mencionamos lá em cima. O texto é igual e que eu faço textos. É uma sonda de malha de texto. Então, lá você vê, Eu aprendi com meus erros para apenas me levou cerca de três ou quatro vezes o ato de jogador ponto nome jogador. E então nós vamos ligá-lo e desligá-lo. Então vamos criar um booleano. Então vamos chamá-lo de o jogador ativo na hierarquia. E eu queria que isso evitasse ter que digitar um nome longo. E aparentemente digitei um nome longo de novo. Então o objeto de jogo ponto ativo e hierarquia. E aqui vamos acessar os jogadores. Nomes na posição I dot transform, dot parent, game object dot set active. E ele estará ativo com base em se o jogador ativo e a hierarquia, nós vamos salvar isso. E, finalmente, se não tivermos um item selecionado, podemos enviar uma notificação. Se você quiser. Podemos usar o painel de notificação. Mas, por enquanto, vamos simplesmente imprimir nenhum item para o item selecionado. Guarde isso. A próxima coisa que precisamos fazer é usar este item. Para isso, precisamos ser capazes de mudar características no personagem do jogador ou personagem anti batalha. Então vamos encontrar os personagens de batalha. Nós os chamamos, mas lá vamos nós, personagens de batalha. E aqui vamos criar um par de métodos que não sejam o dano da tomada. Vamos permitir que ele ou ela, ou quem quer que seja, use o item em batalha. E vai ser um, Ele vai usar um parâmetro que é o item para usar o gerenciador de itens. Em seguida, vamos verificar se o item para usar ponto é item. Ou podemos verificar se é esse o caso. Se voltarmos para os itens aqui, no Gerenciador de itens, Gerenciador de itens aqui, precisamos verificar o 0, ok, então o tipo de item. Então, vamos voltar para o nosso item de personagens de batalha para usar o pipe de item ponto é igual ao item do tipo de item de ponto do gerenciador de itens. Lá vamos nós. Então, se esse item como um item e se o item para usar tipo de efeito ponto é igual ao gerenciador de itens. Então isso é um pouco de um aborrecimento, não o tipo de efeito ponto item ponto HB. Então vamos adicionar HP. Obviamente não temos o método para adicionar cada conta, mas vamos criá-lo aqui. Então senão, se vamos apenas copiar esta linha, modelo de efeito de ponto de linha longa e longa. Poderíamos ter usado o outro, mas isso não é fugir de nós mesmos. Então adicione mono, e vamos criar este método aqui. Então vamos em frente e criar os dois, ambos. E poderíamos ter apenas gerado isso. E o que isso significa, enviar isso para o item dois U efeito ponto, quantidade de efeito e item para usar ponto quantidade de fato. Vamos em frente e gerar o mono primeiro. E aqui estamos simplesmente indo para obter o atual Mano plus igual a quantidade de fato. E aqui também vamos clicar com o botão direito do mouse em Ações e método de geração de refatoração, o 0 HB atual mais é igual a quantidade de efeito. Guarde isso. Agora, de volta ao gerente de batalha, o que devemos fazer aqui? A última coisa é quando realmente selecionamos um jogador. Então, o que vai ser um vazio público? Usar o botão do item. Então, isso é quando nós realmente clicamos no jogador, ou poderíamos ter chamado isso de o personagem dos EUA ou escolher o jogador. Vamos manter isso assim. Então ent jogador selecionado. E eu não acho que este seja um bom nome. Não estou enchendo. Minha intuição me diz que este não é um bom nome. De qualquer forma, o personagem ativo no ponto jogador selecionado usar o item n, batalha para o item selecionado. Lá vamos nós. E então vamos para a instância do dólar de inventário e vamos remover esse item, que é o item selecionado. Vamos atualizar as estatísticas do jogador. Porque obviamente talvez nós adicionamos um pouco de mana, digamos. Então vamos atualizar as estatísticas do jogador. Onde estão as estatísticas de atualização do jogador? Atualize as estatísticas do jogador. E então vamos fechar o menu de caracteres. Então vamos criar esse método aqui. Então vazio público, eu sei que esses são muitos métodos que criamos, mas eles são muito básicos porque nós já fizemos isso anteriormente em outros lugares ou quando queríamos escolher um item ou usar um item durante o jogo. Então, estes são todos muito, muito parecidos. É por isso que não vou entrar muito em detalhes. Eu não acho que há muito a dizer que criamos para usar o item. Ele só verifica se é um item ou não, e assim por diante. Então aqui vamos acessar o painel de escolha de caracteres, ponto set ativo. Isso vai ser falso. E, finalmente, o menu de itens. Ou talvez não devêssemos fechar os itens usados apenas por agora, ou podemos fechá-lo. Acho que é melhor fechar. Então, os itens para usar manual que definir falso ativo. Então aqui vamos fechar a escolha do personagem. E finalmente vamos abrir o menu novamente. Então, por que estamos fazendo isso? Vou dizer a eles, basta gravar e abrir onde está? Ok. Então é atualizar itens no inventário porque isso é o que nos dá o item, salve isso. Então, por que estamos fazendo isso? Nós só queremos ter certeza de que não podemos usar esse item. Por que estamos fechando aqui e depois abrindo? Bem, porque queremos atualizá-lo novamente. Então vamos salvar tudo isso. Vamos voltar para a Unidade. Há um monte de coisas que precisamos adicionar aqui. Espero que não se esqueça de nada. Aguarde isto para compilar. Então os gerentes de batalha rolam para baixo o painel de escolha de personagem Lá vamos nós, os nomes dos jogadores. Indo para logdown, escolha as escolhas do jogador, adicione-as aqui. Não podemos porque é um tipo de texto Mesh pro. Lá vamos nós. Nós adicionamos que foram salvos que precisamos clicar nos botões aqui. E cada um deles deve ter algum tipo de entrada OnClick e qual deles é. Então, primeiro de tudo, vamos lidar com o botão EUA e o botão Fechar. Então, o que faz o botão dos EUA? Vamos adicionar o gerente de batalha aqui, vamos procurar através do gerente de batalha e vamos precisar abrir os personagens. Então abra o menu de caracteres, o botão Fechar. Se arrastarmos para baixo, fecharemos. Onde é que está? Fechado, piscinas fechadas, escolha de personagem fechada. Vejo algo bem, abra. Então, vamos fechar a escolha do caractere, que irá fechar o painel de escolha do caractere e os itens. Você poderia ter evitado esse registro de mudar o nome, mas não se preocupe com isso. Estamos usando em dois lugares para dois propósitos diferentes, não vai prejudicar nada. E, finalmente, precisamos, adicionamos o botão dos EUA. Precisamos ter certeza de que o botão de escolha do jogador faça algo. Então aqui vamos adicionar o gerente de batalha. Vamos ao gerente de batalha e usar o botão de item. Então foi isso que eu quis dizer. player de exibição será 0. Estes dois também têm o mesmo gerente de batalha. Com o gerenciador de batalha usar item botão e será o jogador um e jogador 2. Vamos salvar tudo isso. Vamos executar o nosso jogo e espero que não tenhamos esquecido nada. Então vamos pegar alguns itens e quer saber, deixe-me adicionar mais uma porção aqui para a mononucleose para sabermos que funciona. Prefabs. Onde estão os itens? Vamos adicionar uma porção aqui. Vamos ver se isso. Vamos executar o jogo. Vamos em frente e pegar os itens. Mandei o apicultor ver, vamos ver se conseguimos derrubar. Vá para o grama que é remover capaz do HP atual e talvez ajustá-lo para 50. Lá vamos nós. Aperte enter. Agora, se formos para os itens, vamos usar a parte HP, tínhamos a chave dos EUA. Podemos escolher se queremos que o Draco ou Jimmy o tenham. Então vamos dá-los para a grama. E lá vamos nós. Adicionamos 50 HP. Isso lhe dará HP. Lá vamos nós. Podemos vê-lo aqui e podemos vê-lo atualizado e as estatísticas do jogador. Quão legal é isso? A propósito, ainda não adicionamos a habilidade de usar a armadura para adicioná-la a Drake ou Jimmy durante a batalha. Não sei como isso afetará nossa jogabilidade. Ou, na verdade, eu não tenho certeza se foo deve estar adicionando um durante a batalha, mas é bastante fácil. Podemos ir em frente nos personagens de batalha. Aqui, vou dar-lhe este desafio fora do reino da nossa jogabilidade, você pode adicioná-lo aqui. Então, se não é um item típico que afeta HP ou mono, você pode verificar se é uma armadura ou se é uma espada, e então você pode adicioná-lo aos solteiros. E aqui, mesmo que tenhamos mudado o poder da arma, você não precisa adicionar o item a esse personagem. Mude o poder das armas e a defesa das armas. Mas com isso, espero que goste. Espero que resolvam a complexidade da qual precisávamos usar itens em nossos personagens. Foi muito divertido. Era um código muito complicado, o que é muito bom. Se você não tem certeza de como tudo isso funciona, basta seguir o código, passar pelo código novamente, uma ou duas vezes, certifique-se de entender como cada um deles está sendo afetado, como tudo está mudando, e espero que goste e vejo-te no próximo. 114. Seção 17: lidando com jogadores mortos: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Finalmente, neste vídeo, podemos matar nossos jogadores. Sim. Então, agora vamos começar. Vamos atacar um pouco. Então vamos esperar que um deles morra. Então Jacob morre. Como podem ver, temos efeitos de partículas e sono costeiro do Draco, isso é estratégico, mais um grama. Então, quando o sombrio morre, ele também tem esse efeito de partícula de aparência legal. Bem, não é tão frio, mas ele também se ajoelha e morre, e Jimmy também morre. Mas infelizmente, não seremos capazes de vê-lo porque, uh, porque, bem, ele, ele morre devido ao ataque de um dos inimigos e nós paramos a batalha. Mas como você viu, tudo está funcionando bem. Então não vamos perder mais tempo. E vamos começar. Oh, então, no momento, nossos jogadores não morrem, mas eles não têm mais nenhum HP. Eles não têm mais uma vez, mas não morrem. E temos um lugar para lidar com a morte dos jogadores. Aqui é quando o personagem ativo tem um HP igual a 0. Então vamos em frente e implementar isso. Como é que vamos fazer isto? Bem, haverá duas coisas que precisamos fazer após a morte de um de nossos personagens. Primeiro, vamos ter uma partícula aparecer, então algum tipo de fumaça como sendo um explodido. E a segunda é que vamos mudar esse orgulho quando isso acontecer. Então, se nós temos, ou se o seu personagem tem um desses sprites onde ele está morto, como, por exemplo, o esqueleto. E aqui se abrirmos isso, podemos ver que talvez ele tenha um dos sprites mortos, por exemplo. Digamos que podemos passar por um esqueleto morto. Mas para o Jimmy, não existe esse sprite. Onde quer que olhemos, vamos ter que ser um pouco criativos sobre isso, e eu vou te mostrar como vamos fazer isso. Mas antes de tudo, vamos em frente e criar um sistema de partículas. Agora, eu sempre encorajo você a ir e criar o seu próprio. Eu já tenho um preparado que eu vou usar, que é a morte do jogador afetar isso poderia ter sido nomeado os personagens que efeito. Isso não importa. Pode dar o nome que quiser. Nós vamos usá-lo nos personagens também. Então eu vou mudar isso para o personagem que afeta esse fato. E eu vou arrastar isso aqui e os bens. E como eu disse, e o que devemos fazer aqui? Eu vou importar isso e nós vamos ter uma pasta diferente e os prefabs. Então prefabs, então eu vou colocar isso em um lugar diferente. Acho que este é um bom lugar para colocá-lo. Então eu vou arrastar o efeito de personagem. E para o jogador. O que é este prefabs de batalha? Vou apagar os fatos da pasta. Nós não precisamos dele. Certo, agora temos os efeitos. Em seguida, precisamos dos sprites e como vamos fazer os sprites para que vamos usar? E eu vou fazer o mesmo pelo soldado negro. E o esqueleto já terá o seu próprio sprite, que será um daqueles que usaremos mais tarde. Mas de qualquer maneira, agora você sabe como você pode criar esses sprites mesmo que você não tenha isso. Ok, então a próxima coisa é que vamos obter uma referência a isso. Então eu vou entrar no nosso personagem de batalha. Então, personagens de batalha. E aqui vou me certificar de que é público. E então criaremos um renderizador de sprite. Oops. Um renderizador de sprite, porque este será o sprite. E outro sistema público de partículas, que serão as partículas de morte. Lá vamos nós. E agora precisamos definir o preço da mesa e essa partícula. Então eu vou voltar aqui. Eu vou salvar isso, salvar isso aqui de volta nos jogadores de batalha prefabs de batalha, vamos ver, Jimmy agora tem uma referência às partículas de morte. Vou prendê-lo. Na verdade, vou escolher tudo. Deixe-nos manter a perna do Jimmy trancada por enquanto. E estas são as partículas da morte, creio eu. E eu vou adicioná-lo às partículas de morte. Então efeito de morte de personagem e os sprites, eu vou entrar no jogador, a morte. E eu vou escolher este. E, por alguma razão, não me permite adicioná-lo. Talvez devêssemos fazer disto um sprite. Lá vamos nós sprite. E agora isso deve estar funcionando bem onde Jimmy pré-fabricada vai. Então, por alguma razão isto não estava a funcionar, mas de qualquer forma, não se preocupe, vamos voltar. Vamos usar o sprite, vamos salvar tudo isso. E agora temos o sprite e as partículas surdas no Jimmy, e é isso. Então vamos voltar para o Prefabs na casa do jogador. Vou escolher o Draco e o Sombrio. Eu vou entrar nas partículas de batalha e eu vou adicionar as partículas a elas e isso é trazido também deve ser criado. Mas, por enquanto, vou te dar um desafio. E seu desafio é mudar esses produtos. Então, primeiro, você precisará criar um método matar jogador. Então você vai precisar verificar. Se houver um sprite de dívida disponível, você precisará acessar o componente de renderização de sprite no player e mudar para o orgulho de dívidas, você precisará instanciar as partículas surdas. E, finalmente, você precisará mudá-lo. Isso é verdade? Então você vai precisar mudar os caracteres é essa variável para se certificar de que ele é que a verdade. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então nós vamos rolar para baixo aqui e vamos criar um jogador de matar vazio público. E aqui vamos verificar se temos um sprite. Se o fizermos, então vamos obter o componente, o renderizador de sprite, o renderizador de sprite. E nós vamos obter o sprite no renderizador de sprite. E então nós vamos colocá-lo para o sprite da dívida. Então vamos instanciar as partículas surdas. Nós ligamos para eles. Certo, são partículas. Então as partículas, vamos instanciá-las na posição do ponto de transformação, então exatamente sobre o personagem e a rotação serão os mesmos. Então transforme a rotação de pontos. Vamos guardar isso. E finalmente, vamos nos certificar de que é isso que é verdade. Vamos guardar isso. E agora teremos que chamar isso na batalha de atualização. Então vamos falar com o gerente de batalha. E aqui em vez de simplesmente ter este comentário, nós estamos realmente indo para verificar se nós temos o personagem ativo na posição I como um jogador. E o personagem ativo ainda não está morto. Então isso significa que se ele é que então este é falso, então nós não vamos acessar o método. Vamos invocar a camada de algas no personagem de batalha. Então, como você pode ver, nós verificamos que ele é de fato um jogador e que ele não é isso já. Íamos matá-lo. Então, quem foi feito isso? Vamos guardar isso. Voltaremos para a Unidade. E eu vou usar a magia da edição e criar sprites para que Draco e aquilo funcionem. Então, vemo-nos daqui a pouco. Ok, bem-vindo de volta. Então eu disse o esqueleto, aquele sprite. Eu disse 14 Draco. Então, e aqui vai você. Então você pode ver o sprite, o que eu fiz com Jericho como eu fiz com o demônio ou Jimmy, eu também rodei o sprite e eu me certifiquei que ele estava morto. Então agora tudo deve estar pronto. Então vamos salvar tudo isso. Vamos executar o nosso jogo. E antes de fazermos isso, precisamos ter certeza de que a exibição e aqui no jogo foi um 1920 por 1080. Agora estamos no jogo. Começamos a batalha. Nós vamos simplesmente estar atacando, atacando, atacando. E vamos esperar que um deles morra. Ataque, ataque, ataque. Espero que um deles morra. Certo, como podem ver, nosso personagem acabou de morrer, mas não vimos as partículas porque acho que a camada de separação era ruim. Vamos tentar isso em outros personagens. Lá vai você. Então Draco também morreu. E finalmente temos Jimmy também. Acho que nossos inimigos também morreram. Então lá vamos nós. Nem vimos o Jimmy a morrer. Então a última coisa que precisamos fazer é entrar na Prefabs aqui e você pode verificar tudo o que eu fiz. Não é muito difícil. E podemos até definir as posições aqui para ser todas 0. Guarde isso. E podemos até mover o dublê do Draco se não gostar da forma como ele se instalou lá, onde está o renderizador? As camadas, a camada de classificação será sobre os personagens de batalha. No nível um. Vamos guardar isso. Agora vamos tentar matar um dos nossos jogadores novamente. Fique bem, então um deles morreu. Novamente. Lá vamos nós. Estas são as partículas, você acabou de resolvê-las. Podemos torná-los um pouco maiores. Talvez, talvez aumentar a escala para dois por dois. E eu acho que talvez torná-los um pouco brancos. Então isso pode diferenciar entre quando ataques e quando alguém morre. E isso é tudo, isso é tudo o que você precisa fazer. Espero que tenham gostado deste vídeo. Espero que estejas a matar o teu jogador também. E eu realmente espero que você esteja usando seus próprios sprites, seus próprios efeitos de partículas, aprofundando porque partículas ou fatos são realmente divertidos, especialmente quando você começa a saber o que cada um desses componentes faz. Então, por exemplo, a força ao longo da vida, que eu adicionei no y. Então ele se move um pouco, como você pode ver, quando um deles morre, quando, quando eles são instanciados. Então, vemo-nos na próxima. 115. Abordando com inimigos mortos: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos neste vídeo, quando executamos o jogo, tivemos a chave grande. Usamos magia, relâmpagos no senhor da guerra, tentáculos mágicos na guerra Locke. E como você pode ver, ele lentamente desaparece porque ele acabou de morrer. Mas não só isso agora, quando tentamos atacar com Jimmy, usamos os tentáculos roxos. Só temos a opção de atacar o mestre principal porque não podemos atacar os Bruxos porque ele está morto. Então atacamos o mago. Nós o matamos com um golpe. Nós fomos e não temos nenhuma vitória, vamos fazer isso mais tarde. Mas, por enquanto, vamos lidar com a morte dos nossos inimigos. Verei você interessado em. Certo, agora lidamos com a morte do nosso jogador. É hora de lidar com nossos inimigos. O que vamos fazer com nossos inimigos? Queremos ter algo um pouco diferente do que fazemos para o jogador. Então o que vamos fazer é mudar a cor dos nossos inimigos. Deixa-me mostrar-te o que quero dizer. Se eu for e escolher Draco, por exemplo, ou vamos escolher Jimmy, o jogador. Se eu for ao renderizador de sprite e aqui e escolher as cores, você pode ver que eu posso manipular as cores que eu tenho. Então, se eu clicar aqui, você pode ver que eu posso mudar o vermelho, que os torna muito legais. A propósito, posso mudar o verde e o azul para poder brincar. Então, por exemplo, se eu deixar tudo vermelho, ele fica mais vermelho. E finalmente, posso mudar o alfa nele. Então vamos manipular essas três cores e o Alfa para mudar lentamente, a cor de nossos inimigos para ler e fazê-los também desaparecer lentamente. Como é que vamos fazer isto? Como vamos avançar para a cor vermelha e o desvanecimento? Bem, felizmente temos um método muito bacana, que é o movimento para, e você pode ver aqui na descrição que ele calcula uma posição entre dois pontos, mas também podemos usá-lo. E este é o vetor 3. Podemos definir a posição atual, o alvo que queremos mover, mover para. E, finalmente, a distância máxima Delta. E é a distância para mover a corrente por chamada. Isso significa que chamamos de atualização. E como ele se move, nós lentamente nos movemos em direção a isso, se você quiser, é a velocidade em que nos movemos em direção a esse alvo. Por isso, deixem-me parar de falar e comecemos a implementar. Vamos abrir os personagens de batalha, enquanto os personagens de batalha, personagens de metal. E a maneira como vamos implementar isso é uma atualização. Então vamos criar atualização aqui novamente. E vamos verificar se não somos um jogador. E nós somos que isso significa que vamos desvanecer nosso inimigo. Então eu vou escrever “Fade Out Inimigo”. E eu vou criar este método aqui. Então gere o método. O que vamos fazer aqui? Primeiro de tudo, vamos obter uma referência ao componente de renderização sprite. Então vamos obter componente, o renderizador sprite. Então vamos acessar a cor da cor. E então vamos defini-la para uma nova cor. Vamos abrir os suportes. Vamos bater em Enter. E aqui estamos indo para ir em frente e acessar o ponto matemático, avançar em direção. Como podem ver, temos a corrente, o alvo e o delta máximo. Vamos abrir isto. E aqui vamos acessar novamente o sprite, o componente deste orgulho. Então eu vou copiar isso. Vou colá-lo aqui. Opa, eu vou colá-lo aqui. E a partir da cor, eu também vou acessar o r. Então isso vai garantir que nós acessamos o componente vermelho na cor. Como você pode ler aqui, esta será a corrente. Então, atualmente estamos na cor ou que é normal para o nosso jogador. O alvo será V1 F. Por que estamos ajustando para um F? Bem, porque resolvemos aqui que quando está vermelho, é completamente para a direita. Então, de volta ao nosso código. E então vamos ter algum tipo de velocidade em que a cor se move. Vamos testar 0,3 F. e vamos multiplicá-lo pelo tempo delta. E se você não se lembra que horas.DeltaMe faz isso na verdade, lá vai você. O tempo de conclusão em segundos desde o último quadro. Então, porque estamos adicionando isso e a atualização, isso significa que ele está sendo chamado de cada quadro. Se você tiver um PC muito forte, a taxa de quadros será maior, então o desvanecimento pode ser mais rápido e vice-versa quando o PC estiver ruim, a taxa de quadros é baixa. O movimento para onde funciona mais devagar. Então o que vamos fazer é usar Time.DeltaTatime. Então é o mesmo em todos os PCs. E isso é muito importante para fazer porque quando você constrói o seu jogo e outros jogadores usá-lo, nem todos os PCs vão ser os mesmos. Então você precisa sempre ter certeza quando você mover algo, um jogador ou a cor ou qualquer coisa dentro da atualização para sempre se certificar de usar Time.DeltaTatime ou para usar atualização fixa. Mas, por enquanto, vamos usar Time.DeltaTatime. Vou duplicar todas estas linhas aqui. Vamos mudar do vermelho para o verde e o azul. E finalmente o A, que é o Alfa. E atualmente temos o alvo aqui para o rato como um, o azul será 0. Quero dizer que o verde será 0, o azul também será 0 e o alfa será 0. Vamos manter as velocidades iguais. E você pode ver que precisamos remover a última vírgula. Lá vamos nós. Se guardarmos isso, estamos prontos para ir. Mas também precisamos fazer mais uma coisa. E isso é que queremos realmente desligar o componente do inimigo. Então vamos verificar se o componente pontos sprite dot color dot a é igual a 0. E lembre-se que isso está sendo chamado de cada quadro. Então, estamos lentamente se movendo em direção a 0 e este componente é diferente de 0 até que o movimento em direção aqui termina. Então, quando ele se tornar 0 e aqui ele jogo objeto ponto definido ativo será falso. Nós vamos salvar isso. E finalmente, vamos criar um método aqui para matar o inimigo. Tão vazio público, matar o inimigo. E isso só vai definir isso como verdade. Lá vamos nós. E é onde ele está também? Isso é público? Não se preocupe com isso. Vamos configurá-lo como true usando um método. É mais limpo usar sempre métodos. Então agora de volta ao gerente de batalha, onde vamos verificar e atualizar a batalha? Então vamos procurar batalhas de atualização. Então aqui, verificamos se é um jogador e estamos endividados, então ligamos para o jogador. E se não formos um jogador, acabei de copiar esta linha aqui. Então um dos personagens tem um HP de 0 e não é um jogador e ele ainda não está morto. Então vamos para os personagens ativos ponto I, e vamos matar o inimigo. Isso significa que estamos a pô-lo a morrer. Então vamos salvar tudo isso. Nós vamos voltar ao nosso jogo agora ainda há um pequeno problema aqui, mas eu vou corrigi-lo quando vê-lo. Então eu vou comandar o jogo. Vou começar a batalha. Vou usar magia para atacar ou usar relâmpagos para atacar. Quem devemos matar a guerra Locke, acho que sua saúde é menor. Mágico, azul. Bruxos. Deixe-me fazer isso maior. Magia. Relâmpago, guerra Locke. E lá vamos nós. Como você viu, ele desapareceu. Como legal é que uma história não é mais jogado, então apenas os grandes ataques. Mas o problema que eu estava falando é que quando avançamos para atacar, como você pode ver, nós temos a opção de atacar a parede OK, e clicar nele. Nós novamente atacamos, o que é muito, muito ruim se tentarmos usar magia, também podemos afetar os Bruxos, que é novamente, muito, muito ruim. Então precisamos ir e consertar isso. Como é que vamos fazer isto? Bem, nós estamos indo para onde nós abrimos o menu de caracteres ou onde nós abrimos o menu de alvos na verdade. E aqui verificamos se a contagem de inimigos é maior do que eu. E se o personagem ativo no inimigo está na posição r, Porque lembre-se, e aqui estamos passando pelos inimigos. Nós criamos a lista de inimigos aqui, que é uma lista de inteiros. Para que possamos verificar os inimigos no ato de personagens. Então aqui, inimigos na posição I, o HP atual deve ser maior que 0. Bem, vamos guardar isso. Vamos testar isso de novo. Deixe-me maximizar em jogar este jogo é melhor quando é tela cheia, porque as palavras são um pouco pequeno. Então andamos por aí. Tínhamos a magia da BP, relâmpagos, guerra Locke, tentáculos mágicos guerra Locke. E lá vamos nós, Ele morre. Agora, quando vamos usar laser mágico, ainda podemos ver a guerra Locke. Ele não ataca, mas ainda podemos ver a sorte do mundo. Por que é isso? E isso é porque depois que estabelecemos isso como verdadeiro aqui, ele permanece verdadeiro enquanto vamos. Para não voltarmos a ser falso. Não desligamos o botão. Então o que vamos fazer é aqui vamos criar um outro. Então, se não temos um caractere ativo ou a contagem não é maior, então vamos obter o ponto alvo GameObject ponto definido ativo e vamos defini-lo como falso. Então vamos salvar isso, voltar para o nosso jogo. Então, como você pode ver, desenvolvimento de jogos é um processo de construção. Você não consegue tudo. primeira vez que executamos o jogo, tínhamos a chave dB, magia, relâmpagos, guerra bloqueada, magia, tentáculos, bruxos, ele morre, laser mágico. Não vemos mais o tipo de guerra. Atacamos apenas a página principal. Espero que tenham gostado deste vídeo. Espero que estejas finalmente satisfeito que estamos a matar os nossos inimigos, destruí-los, a matar os nossos jogadores, a destruí-los. E no próximo vídeo vamos terminar a batalha e a vitória. Então vamos adicionar a essa satisfação que você já tem. Então, vemo-nos na próxima. 116. Vitória na batalha: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos neste vídeo, quando executamos nosso jogo, começamos uma batalha. Fazemos magia nos Bruxos, em, magia em, tudo bem, tão bom que ele morreu. Um pouco de magia no mestre principal. Mais uma vez, alguma magia sobre o mestre principal. Vamos tentar ligar para ele, para que ele morra. Nós vencemos. Vamos sair. Podemos ver que se começarmos a batalha de novo, notaremos em primeiro lugar, que destruímos tudo anteriormente e também temos o mana aqui já usado. Então, estamos salvando tudo. Estamos terminando a batalha corretamente. Então não vamos perder mais tempo e vamos começar. Certo, então é hora de quando? Hora de alguma vitória. Vamos em frente e terminar a batalha. Então vamos voltar e aqui vamos rolar para baixo e vamos criar um novo método que vai ser um I e numerador ou um revestimento. Então vai ser um enumeração de olhos públicos. E esta será a batalha 14. E aqui vamos fazer algumas coisas. Então, o que vamos fazer? Em primeiro lugar, a batalha que está ativa deve ser definida como falsa. Então, a batalha está ativa? Não, não é. É falso. Então precisamos desligar tudo o que ainda pode estar lá dentro. Assim, por exemplo, o suporte do botão da interface do usuário ponto psicoativo para falso. Vamos duplicar isto, o menu de destino. Então alvo, onde ele obtém 0 alvo. Botões, ponto seletivo. Então não é um objeto de jogo. Painel de alvo inimigo, falso. Depois o menu mágico, o painel de escolha mágica, os motores de batalha. Então, se tivermos alguma batalha, observe, vamos defini-la ou definir o texto neste caso para ser NÓS um. Então, isso será quando terminarmos em vitória e vamos ativar a batalha. Aviso. Aviso de batalha ponto ativo, Ativar. Lá vamos nós. Agora vamos ceder alguns segundos. Então vamos ceder o retorno. Novo, espere quatro segundos. E serão três segundos. Acho que é bom. Em seguida, queremos atualizar as estatísticas do jogador no gerenciador de jogos. Então, por exemplo, digamos que desperdiçamos um pouco de Saúde, capaz de HP, um pouco de maná, e assim por diante. Nós vamos mudá-lo. Então vamos criar um para cada loop aqui. Vamos passar pelos personagens de batalha, jogador. Em batalha, Vamos chamar essa variável no ato de personagens. Em seguida, vamos verificar se o jogador em batalha como um jogador. E então vamos olhar novamente através das estatísticas do jogador e do gerente do jogo. Então, para cada jogador estatísticas, esse é o tipo. E o jogador com estatísticas no gerenciador de jogo, instância de ponto, estatísticas de camada de ponto, então obtenha estatísticas de jogador. E então aqui vamos comparar os nomes. Então, se o jogador no nome do personagem do ponto de batalha é igual ao jogador com estatísticas, onde está o, onde está o jogador com estatísticas? Com estatísticas? Nome do jogador do ponto. Sim, lá vamos nós. Então vamos definir as estatísticas do jogador ou o jogador com estatísticas com estatísticas ponto HP atual para ser igual ao jogador e estatísticas em batalha. Ok, então lá vamos nós, declaramos em batalha, esses nomes de variáveis são muito confusos. Eu provavelmente deveria tê-los mudado. Então agora nós dissemos o HP, nós também podemos definir o mannose de modo que a maneira atual com a maneira atual que temos. Em seguida, vamos precisar depois de terminar o para cada um aqui, vamos para a próxima ir em frente e desligar a cena de batalha. Então, o ponto da cena de batalha ficou ativo como falso. E isso é quase tudo o que precisamos fazer. Mas também precisamos nos certificar de que destruímos os personagens restantes. Então, como você se lembra, quando terminamos a batalha, quando vamos a uma, outra batalha, que é a mesma, podemos ver que os inimigos anteriores ainda estão lá e às vezes talvez eles possam atacar. Talvez eles sejam adicionados à lista para que eles tenham uma vez e isso realmente estraga nossas batalhas. Então o que vamos fazer é limpar esses inimigos da lista, lançando um desafio para você. Então seu desafio é destruir todos os inimigos. Portanto, certifique-se de que os inimigos sejam destruídos quando a batalha terminar. E você pode certificar-se de limpar ou certificar-se de limpar. Esta é uma dica, a lista de inimigos para evitar, em seguida, voltar e a próxima batalha. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então aqui, em primeiro lugar, vamos acessar os personagens ativos e vamos limpar todos eles. Lá vamos nós. Então nós limpamos todo o ato de personagens, mas isso não é suficiente. Precisamos entrar aqui e destruir todos os jogadores em batalha. Então estamos destruindo todos os jogadores em batalha. E finalmente, antes de terminarmos, precisamos definir o termo atual como 0. E também devemos ir ao gerente do jogo e certificar-nos de que o nosso jogador pode andar novamente. Então, novamente, manager dot instance dot battle está ativo e é igual a false. Guarde isso. E, finalmente, precisamos chamar esse método. E quando é que vamos chamá-lo? Enquanto chamamos isso em alguns lugares? E talvez as notas de texto que queremos devam ser alteradas. Talvez não devesse ser assim. Mas em atualização. Então, em vez de imprimir, ganhamos, vamos começar uma co-rotina. E essa equipe principal vai ser a co-rotina de batalha. E também quando fugimos. Então, onde está a fuga? Fechar. Próxima curva, fugindo. Deixe-me apertar a chave F. Vamos preparar a corrida. Certo, lá vamos nós, O Fugitivo. Então aqui vamos começar a co-rotina. E porque dissemos que a batalha era falsa e desligamos a cena da batalha, vamos simplesmente remover esses dois. E, em vez disso, vamos começar uma co-rotina. E vai ser a qualidade final da batalha. Lá vamos nós. Nós guardamos isso. Agora de volta ao nosso jogo. Quando corrermos, vamos tentar matar todos os nossos inimigos. Na chave B, magia, relâmpagos, guerra, log tentáculos mágicos, bruxos. Isso é magia? Tentáculos, o mestre principal. Lá vamos nós. E para algo quando não estiver completamente certo, vamos recusar, vamos ver se alguma das nossas estatísticas mudou. Então atacamos com o Grimm. Lá vamos nós. O atual Mano mudou. Atacamos com Draco, o atual Mano mudou e o jogador. Enquanto camada profunda enquanto o jogador, ok, Então ele é realmente não destruir, tem dinheiro. atual Mano também mudou. Mas, por algum motivo, o máximo é 30, apenas 30. Algo estranho nisso. De qualquer forma, vamos parar aqui. Você precisa ter certeza de que o monarca atual é 1, 0, 0, 0. Isto é um grande erro, grande não. Vamos guardar isso. Nós também vamos talvez ir para o jogador e aplicar as alterações. Certo, então o problema aqui é que não tínhamos uma co-rotina. Talvez não devêssemos desligar a cena de batalha como sendo desligada prematuramente. Ok, bem-vindos de volta, meus colegas desenvolvedores, desenvolvedores de jogos. Primeiro, devemos ter certeza de que não só destruímos o jogador em batalha, porque isso só destruirá a batalha Character Script em nossos jogadores e inimigos. Então, precisamos ter certeza de escrever jogador no objeto de jogo de batalha para destruir. Isso destruirá todo o objeto do jogo. Segundo, temos de ter a certeza de que estive aqui. Comentei todos os registros de depuração para os danos porque eu estava usando os bugs. E Índia, precisamos ter certeza de que estamos em batalha atualizada. Quando começamos a co-rotina, tínhamos essas três linhas aqui que definem tudo em falso, mas já fazemos isso aqui na co-rotina final da batalha. Então lá vamos nós. Temos de nos certificar de que isto é falso. Outra coisa que notei enquanto fugimos, recebemos esta mensagem que queremos, e não queremos ter isso quando fugimos. Então aqui, vou remover essas duas linhas. Ou você sabe, talvez mais tarde nós vamos verificar se o está fugindo também. Temos um, temos uma variável aqui para o está fugindo. Oh, nós não. Então, talvez mais tarde vamos criar uma variável que está fugindo. Nós definimos isso como verdadeiro. E aqui. E se for verdade, então não imprimimos o que queremos e faremos também coisas diferentes aqui. Então eu espero que você tenha gostado de tudo está funcionando agora vamos voltar ao nosso jogo. Nós comandamos o jogo. Começamos a batalha. E vamos ver, usamos iluminação mágica na magia dos Bruxos. Oh, ele morreu. Isso é fixe. Então vamos usar no mago mestre, novamente tentáculos mágicos, idade de Nystrom, ele morre. Se quisermos, vamos embora. Você pode ver que todos os personagens são destruídos. Começamos a batalha de novo. Não temos tanto dinheiro quanto tínhamos. Então magia, relâmpagos, guerra Locke, e ele não morreu desta vez talvez antes que tenha sido um golpe crítico. Então, os relâmpagos fazem mestre neles, nos atacam. Vamos apenas atacar. Eles nos atacam. Lá vai você. Draco morre. Este morre. Vamos tentar fugir. Não há escapatória. Fugindo de novo, não há erro. Eles nos atacam, estamos quase cegos. Por favor, fuja. Não há escapatória, e todos nós compramos e nos perdemos. Mas ainda não temos mensagens de jogo, mas faremos isso no próximo vídeo. Espero que goste e vejo-te no próximo. 117. Criando jogos sobre tela: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, vamos criar nosso jogo em cima da cena, e vamos em direção a ele sempre que todos os nossos jogadores tiveram dy. Então não vamos perder mais tempo e vamos começar. Agora temos de lidar com o facto de todos os nossos jogadores morrerem, não os nossos inimigos serem jogadores e perdemos o jogo. Então vamos precisar de uma cena de Game Over e um jogo sobre tela. Vamos primeiro ao nosso código e ao gerente de batalha. Vou fechar tudo à medida que subir. Vamos manter isto aberto. Isto vamos fechar isto, fechar e tudo o resto. E nós vamos criar uma referência aqui, que vai ser um campo serializado do tipo string. E vai ser a cena do jogo. Guarde isso. Agora vamos rolar para baixo e criar uma equipe principal que é semelhante à co-rotina final de batalha. Então ele vai ser um público em numerador e o ganho, ganho sobre co-rotina. E aqui, em primeiro lugar, vamos criar um ponto de aviso de batalha SetText. Haverá que perdemos. Então vamos acessar o ponto de aviso de batalha Ativar. Lá vamos nós. Então vamos esperar por três segundos. Então nós rendemos retorno e o novo caminho por segundos, e vamos esperar cerca de três segundos novamente. Finalmente, vamos definir a batalha ativa para falsa. E vamos acessar o gerente de cena. Temos acesso ao gerente de cena? Não, não temos. Então vamos em frente e adicioná-lo aqui. Então Unity engine, gerenciamento de cena, salve esse rolagem de volta para baixo. Então Scene Manager pensou cena de carga, Eu queria ir para a instância. Estou tão acostumado a ter sempre uma instância atrás de um gerente. Então carga visto e vamos carregar o jogo sobre a cena. Vamos guardar isso. E nós vamos chamar isso quando todos os nossos jogadores estiverem mortos. Então, em vez de perdermos, vamos começar uma co-rotina. Comece a co-rotina. E como o jogo sobre cena. E eu tenho certeza que podemos ter esquecido algumas coisas aqui. Oh, então jogo sobre isso. Eu tive o jogo sobre cortejar. Desculpe por isso. Podemos excluir essas três linhas ou você pode mantê-las como um lembrete de como progredimos lentamente usando nosso código. Então eu realmente amo essas três seções agora os jogadores estão começando a batalha, o inimigo, ou as quatro seções e a batalha final porque isso realmente mostra como nós, não é sobre apenas puxar o código e fazê-lo funcionar e é isso. Não, é sobre o processo sempre devagar, mas certamente atualizamos nosso código, adicionamos novos métodos, usamos novas técnicas, e também lançamos novos desafios. E seu desafio será criar um jogo em cima da cena. Então, criar uma cena para o jogo em uma tela com um pouco de texto e fundo, talvez em três botões para a carga menos Salvar Menu Principal e sair do jogo, e isso é tudo o que você precisa fazer. Pause o vídeo agora mesmo e vá fazer o desafio. E eu voltarei com tudo já pronto porque, bem, não é muito divertido me ver fazendo isso toda vez. Então, vemo-nos daqui a pouco. Oh, hey, bem-vindo de volta. Então, como conseguiu tudo isso? Então eu só criei novamente sobre definir algum fundo, adicionou estes três botões de aparência legal. E eu posso dizer que o, digamos muito bom jogo sobre a tela. Então agora a próxima coisa que precisamos fazer é ir em frente e criar um script de gerenciador de cena aqui. Então nós vamos para o scrip e onde vamos criar o jogo? Ok, nos gerentes. Então, o script C-sharp vai ser um jogo sobre gerente no Enter. Aguarde a compilação. Não, por favor, não abra isso. Por algum motivo, abre automaticamente todas as vezes, por isso acabou. Vamos adicioná-lo à tela. Podemos adicioná-lo onde quisermos. Vamos guardar isso. Vamos abrir o roteiro. E vamos ver o que vamos fazer aqui. E antes que eu esqueça a tela em qualquer lugar, onde está? Ok, então escala com o tamanho da tela e nós vamos fazer isso 1920 por 1080. E lá vamos nós. Vamos guardar isso. Certo, então vamos abrir o roteiro do jogo, e o que faremos aqui? Bem, em primeiro lugar, começamos, vamos tocar uma música diferente. Vamos desligar o controle do jogador e tudo isso. Então, a fim de acessar tudo isso, nós vamos voltar e precisamos adicionar um par de gerentes aqui que nós já configuramos. Então, nos prefabs, o velho yo AudioManager, o gerenciador de jogos, o gerente de jogadores aqui em algum lugar deve ser definido. Então vamos ver o nível de itens. Não, não precisamos disso. Talvez a tela possa ser usada aqui. E este é um campus. Mudar nomes. Onde estão os prefabs? Ainda precisamos do controle do jogador, então vamos adicionar o jogador. E acho que é tudo o que precisamos fazer. Nós vamos salvar isso. E agora vamos entrar aqui. E o começo vamos acessar a velha instância do ponto do gerenciador de yo, ponto tocar música de fundo. E que música de fundo devemos tocar? Vamos ver na música. Vamos ver aqui o tema da caverna. E claro, vamos tocar o amuleto escuro. Acho que 44 é bom o suficiente. Lá vamos nós. Desde que mude, não nos importamos com o que é. O objeto de jogo ponto da instância do jogador será definido como false, o gerenciador de menus. Certo, então defina ativo como falso, falso. O gerenciador de menus selecionou false. O gerenciador de batalha, ponto gerente GameObject, ponto triste, ativo para falso. E então precisaremos criar os dois ou os três métodos aqui. Vamos remover a atualização. Vamos criar um vazio público, Kohut para o menu principal. Vamos criar uma palavra pública menos segura, baixa, última, Salvar. E nós vamos criar um método final que vai ser a sessão de jogo do destruidor. E nós vamos preenchê-lo mais tarde. Será uma estática privada porque não queremos que ela mude em lugar algum e seja a mesma toda vez que destruiu a sessão de jogo. E aqui vamos fazer algumas coisas. Então, com isso feito, eu vou vê-lo no próximo vídeo onde estaremos preenchendo todos esses métodos se você quiser começar por conta própria, eu recomendo que você faça isso. E, finalmente, não se esqueça de garantir que sempre cometemos nossas mudanças. Então agora os inimigos desaparecem. Como você pode ver, eu esqueci de cometer uma das minhas alterações anteriores, então o que eu posso fazer. Então, qual era o vídeo anterior em que estávamos terminando a batalha em vitória. Então isso significa que não queremos salvar tudo isso. Simplesmente salvamos estes três. Nós encenamos o selecionado. Portanto, isso não é 100% preciso, mas isso é tudo que você precisa fazer sempre que você esquecer de confirmar suas alterações. Então agora nós, e a batalha e a vitória com um par de pontos de exclamação, nós cometemos as mudanças agora nós encenamos tudo. Mas porque no próximo vídeo estaremos fazendo mais coisas e terminando o jogo. Eu não vou cometer as mudanças agora. E vejo-te no próximo vídeo. 118. Carregar a última gravação no jogo: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Neste vídeo, finalmente terminamos de criar nosso game over. Então agora fazemos o nosso jogo. Podemos ir ao menu principal, podemos sair, mas não funciona. Deixa-me mostrar-te os outros botões. Então, podemos sair do jogo, mas temos apenas jogo líquido e podemos carregar o último salvo que estávamos n. Então lá vamos nós. E não só isso, como você pode ver, nossa câmera de acompanhamento agora funciona perfeitamente. Não fica só por aí. Então, mesmo quando vamos a outra cena, lá vamos nós. Então isso está funcionando. A nossa câmara está sempre a seguir o nosso leitor, por isso vemo-nos daqui a pouco. Oh, ok, então vamos continuar com o nosso jogo final. Então eu vou voltar aqui e nós vamos primeiro de tudo, preencher a sessão de jogo de palha porque é o método mais importante que vamos usar no principal e assim por diante. Então, nós vamos destruir, em primeiro lugar, o game manager dot instância dot game object. Agora, eu sei que dissemos tudo isso aqui, mas lembre-se quando sairmos do campo de batalha e irmos para outra cena, todos os nossos gerentes são destruídos e eles passam para a cena do jogo. E eles também são um padrão de singleton. Então eu só adicionei isso aqui para entender que eles estarão na cena e precisamos destruí-los. Então eu vou voltar e vamos destruir os outros gerentes. Então vamos destruir o controlador do jogador. Então, o script já player, novamente objeto. Eu vou duplicar este também vou destruir o gerente do menu. E finalmente, nós também vamos destruir o gerente de batalha. Vamos salvar tudo isso. Agora vamos em frente e criar o menu rápido. Então aqui vamos destruir a sessão do jogo na sua totalidade. E então o gerente de cena, onde ele vai para o gerente de cena, nós não temos ok, então nós não temos isso. Gestão de cena. Guarde isso. Então Scene Manager, ponto baixo visto, e o que devemos estar carregando quando sairmos para o Menu Principal? Bem, vamos conseguir uma referência. Então, em cenas, o menu principal, vamos copiar isso, voltar aqui, colá-lo. Então, como você pode ver, eu tentei escrever o menu principal adicionando espaço enquanto eu não deveria, então não teria funcionado e nós não teríamos idéia do porquê. E, finalmente, vamos fazer a carga última salvar. Então nós vamos destruir a sessão do jogo aqui também, e também irá destruir ou nós já destruímos, Eu queria dizer destruir o gerente de batalha. Nós vamos carregar Scene Manager, Load seen, e nós vamos estar carregando a cena de carregamento. Então, qual é o nome? Vamos copiá-lo. Copie este. Cole aqui, adicione um ponto-e-vírgula, guarde isso. E vamos nos certificar de que temos tudo na construção. Então, vamos para as configurações de compilação. Temos o menu principal carregando a cena. Vamos adicionar o jogo. E o que mais deveríamos acrescentar? Acho que é tudo o que precisamos. O que é isso, o jogo sobre cena ou nós apenas adicionamos. Ok, ótimo. Nós também podemos adicionar o calabouço, mas nós não criamos uma maneira de entrar no Francine, então não se preocupe com isso. Ou quer saber, acho que precisamos adicioná-lo se morrermos durante o jogo. Então BuildSettings. Vamos adicionar o calabouço também aqui, salvar isso, voltar. E vamos testar isso um pouco. Então eu vou para o Canvas. E aqui, temos alguma variável que precisamos definir? Não, tudo deve estar funcionando bem. Então vou guardar isso. Eu vou voltar. Vou comandar o jogo. Então, primeiro começamos. Não vamos simplesmente. Ok, então como você pode ver, temos uma música legal tocando. O que temos no console? Temos uma referência faltando, que é o gerente de batalha porque não adicionamos o gerente de batalha ou desativamos. Então podemos adicionar o gerente de batalha aqui. E como eu disse, isso é só para testar o fim do jogo. Nós realmente não precisamos ter esses gerentes aqui porque quando nós morremos, nós vamos para o jogo sobre nenhum desses objetos do jogo são destruídos. Lembra-se disso? Então eu vou encontrar os prefabs, o jogo, o jogo do gerenciador de batalha. Oh, agora eu só me lembro que no calabouço, nós não informamos nosso gerente de batalha e eu estou procurando por ele e nós não conseguimos encontrá-lo. Então eu estou indo para Prefab os gerentes de batalha, guarde isso. Volte às nossas cenas para GameOver. Vá para os prefabs na batalha o gerente em que, se isso ganhou o jogo. E lá vamos nós. Então agora não temos nenhum erro. Então vamos tentar sair do jogo. Isto não faz nada. Oh, nós nem atribuímos os botões. Ok. Então Canvas, Vamos ver o botão MainMenu, mas ele faz para dar-lhe o campus que acabamos de criar o jogo sobre gerente, e este é o manual principal. Então vamos sair para o menu principal. E então vamos usar o jogo rápido. Precisamos de um pequeno método aqui que só imprime. Jogo tão vazio público. E nós só vamos depurar o manto. Nós desistimos do jogo. Guarde isso. E aqui estamos indo para application.rb sair. Mas, obviamente, isso não vai funcionar porque nós não estamos realmente no jogo. Então eu vou voltar para a Unidade. Vou dar a tela aqui. Jogo rápido. E finalmente a carga. Vou em frente e designar o Canvas. Veio gerente sair dois menu principal ou não, este é o último carregamento salvar. Desculpe por essa carga última salvar, salvar tudo isso, executar o jogo. E agora podemos desistir do jogo. Então desistimos do jogo. Obviamente isso não funciona porque ainda não construímos. Então vamos tentar ir para o menu principal. Lá vamos nós. Estamos no menu principal. Se quisermos continuar. Lá vamos nós. Então começamos, mas obviamente você pode ver que não temos a câmera se movendo conosco. Mas vamos testar a carga. Vamos salvar. Deve ser praticamente a mesma coisa. Então nós carregamos, vamos economizar. Lá vamos nós. Mas novamente, a câmera não está funcionando e isso tem sido um problema ao longo de todo o curso. Como vamos consertar isso? Bem, nós vamos para o controlador da câmera. Então, onde está o controlador da câmera e uma atualização? Então, onde temos atualizações? Vamos verificar, e aqui vamos criar um loop while. E este loop enquanto vai verificar se temos um alvo de jogador. E se o alvo do jogador for nulo, então vamos continuar procurando por alvos de um jogador. Então alvo declarado vai ser igual para encontrar objeto do tipo do jogador. Então ele vai continuar procurando por um jogador. E se tivermos uma câmera virtual, então vamos definir o seguimento na câmera virtual. Dot siga igual ao jogador alvo dot transformar porque segue uma determinada posição. Vamos salvar que tudo está bem. Nós vamos voltar. Vamos executar o jogo. E agora, quando carregarmos menos seguros, teremos nossa câmera seguindo o jogador. Lá vamos nós. Corrigimos um problema que existe desde que começamos o curso. Prometi que consertaríamos. Nós consertamos. Sempre me certifico de cumprir minhas promessas. Espero que esteja gostando deste curso. Espero que gostes de mim como instrutor. Espero que gostes da forma como estamos a construir tudo isto. Podemos finalmente encenar nosso jogo. Encenar todas as nossas mudanças. E se você tem tempo e se você ainda não tem, por favor me deixe um comentário. Ajuda-me muito e vejo-te no próximo vídeo. 119. Recompensas de batalha: Bem-vindo de volta, meus colegas desenvolvedores de jogos e este vídeo, quando executamos o nosso jogo, se apertarmos a tecla Y, você pode ver que nós experimentamos ganhou, que é 15000. E então temos a recompensa dos itens, que é um machado dourado, uma armadura dourada, e um pouco de oceano HB. Então não vamos perder mais tempo. Até temos o botão de fechar funcionando. E vamos começar. 0 caso. Então agora começamos as batalhas. Lidamos com jogadores, matamos inimigos, terminamos batalhas. Temos o game over, temos a vitória, temos tudo. Mas qual é o incentivo para realmente ir e lutar? O incentivo é, em primeiro lugar, terminar algum tipo de missão e, em segundo lugar, obter experiência e um par de novos itens legais. Então é isso que vamos fazer. Então, vamos para o Canvas. Vamos abrir a cena. E aqui eu vou clicar com o botão direito do mouse e criar um novo painel. Então painel, e este painel vai ser as recompensas de batalha, recompensas. Vou torná-lo opaco até o fim. Então lá vamos nós, e vamos adicionar o plano de fundo que estamos usando. Então eu vou para os sprites, vocês são elementos e adicionar o que estamos usando o tempo todo. Vou torná-lo um pouco menor e vou encolher para baixo para apenas um grande. Vou adicionar um botão aqui para fechar tudo. Então vá para o seu olho e um botão. Este botão será o botão fechar. Ao trabalhar com você, eu prefiro sempre ter certeza de chamar botão fechar. Então sabemos que é realmente um botão aqui. Olhando para a hierarquia. Eu vou adicionar um texto Mesh Pro e aqui, e nós vamos fazer este botão um pouco maior, apenas assim sobre isso. Então o imposto, vamos torná-lo o mais grande que pudermos. Vá para o botão como plano de fundo. Você está familiarizado com tudo o que estou fazendo. Então mantenha a perspectiva. Torná-lo um pouco maior. Lá vamos nós. Defina isto para estar no meio. E eu vou encolher o texto para caber na caixinha aqui. Então lá vamos nós, isso é tudo. Vamos mudar a fonte por algum motivo. Sempre faz. Isto não me permite escolher desde a primeira vez. Torná-lo ousado, torná-lo preto. Certifique-se de que está perto. Torná-lo maior, tão grande quanto pudermos. Talvez no fundo seja um pouco grande demais. Então eu vou reduzi-lo para apenas sobre o tamanho e fazer o texto sobre o tamanho. Então lá vamos nós, temos um botão de fechar. Em seguida, queremos criar dois rótulos ou textos ou qualquer outra coisa para indicar o que obtemos. Então, o que ganhamos de uma batalha? Podemos obter um monte de coisas, mas por enquanto, nós vamos, a primeira coisa que vamos conseguir é a experiência e os itens. Então vamos em frente e criar um texto muito comprovado aqui, que vai ser a festa medieval. Preto ousado. E essa será a recompensa de experiência ou a recompensa de EXP. Vou fazer isto maior. E a fonte enorme do meio. Monte-o aqui. Talvez não uma fonte tão grande. Vou fazer isso um pouco menor. Vou em frente e chamar isso de rótulo de texto XP. Vou duplicar e colocar tudo bem, eu não duplicei isso. Vou duplicá-lo. Obrigado. E então eu vou colocar 14 os itens aqui. Então esta será a recompensa dos itens. Lá vamos nós. Isso se encaixa perfeitamente. E este será o rótulo de texto dos itens. Vou remover isto. Vamos duplicar isto mais uma vez. E eu vou fazer isso muito maior. Lá vamos nós. E aqui vamos nos certificar de que fazer devemos ser auto dimensionamento? Eu acho que não. Não vamos todos os tamanhos. Vamos torná-lo menor. Lá vamos nós. E este será o, digamos que XP ganhou. Ou vamos tentar aqui. Por exemplo, 99, 99, XP. Lá vamos nós. Coloque um espaço aqui e o valor de texto XP. Vamos torná-lo um pouco maior. E então eu vou duplicar o valor exp x. E aqui, e estes serão os itens. O próximo valor. Agora, eu estava pensando em talvez colocar aqui a este preço dos itens que temos, o que eu acho que é uma abordagem muito melhor para isso. Eu vou documentar você fazer isso, mas é preciso um pouco mais de trabalho. Queremos ter certeza de que temos os fundamentos para baixo por enquanto para que saibamos os itens que obtemos. Mas como eu disse, eu recomendo que você vá em frente e implemente imagens aqui. Então eu só vou escrever atos dourados, atos prata, e porção HB. Então lá vamos nós. Estes são os nossos itens. Eu vou ter certeza de caber auto tamanho e isso porque nós podemos ter vários itens e eles podem muito mole, muito grande para a nossa tela. Vou fazer isto um pouco maior. Ok, então lá vamos nós, isso é tudo o que precisamos. Agora precisamos criar um script para manipular isso. Então eu vou entrar nos roteiros. Eu vou para qual pasta devemos salvar isso em caracteres de diálogo? Vamos guardá-lo no sistema de batalha. Faz parte do sistema de batalha? Sim, certamente isto. Então eu vou criar um script C-sharp e vai ser o manipulador de recompensas de batalha. Entrar. Aguarde isso para compilar. Não, obrigado. Vamos adicionar que estão anexados à tela principal que temos. E então vamos abrir o roteiro aqui. A primeira coisa que faremos é precisarmos de uma instância. Então pública, instância estática ou desculpe, batalha, instância manipulador de recompensa. E vamos serializar um campo porque precisamos do imposto XP e do texto dos itens. Então vamos precisar da condicional do TMP. Então, tudo o que estou fazendo aqui, eu estou passando por isso um pouco rápido porque enquanto sabemos tudo que estes não são nada muito especial, texto Mesh Pro, nós já fizemos tudo isso. Então XB, texto e itens texto. Então temos outro campo serializado do tipo objeto de jogo para a tela de recompensa real. E eu não queria duplicar isso. Então temos um campo serializado para os itens. Ela tem os itens de recompensa. Então de tipos, Gerenciador de Itens. E é uma matriz porque temos vários desses itens e os itens de recompensa. E finalmente temos um inteiro, que é a experiência que temos. Então e XP, ou recompensa. Lá vamos nós. Agora precisamos de um método para abrir a tela de recompensa. Então, eu vou remover o início e a atualização, e eu vou criar uma tela de recompensa aberta de anulação pública. Vamos chamá-lo. E nós vamos tomar em dois parâmetros. E aqui, um será o inteiro para o XP e o outro será um array gerenciador de itens, que são os itens ganhos, vamos chamá-los, e isso é chamado de EXP ganho. Então aqui vamos definir a recompensa de XP como a EXP ganha. E nós não vamos realmente definir cada batalha a partir da tela. Nós vamos chamar este método aqui e definir o inteiro e os itens de dependendo de qual luta nós mesmos obtemos. E veremos mais tarde nos próximos vídeos como iniciamos batalhas que têm seus próprios inimigos, que têm vários tipos de batalhas neles. Então, talvez tenhamos diferentes combinações de inimigos nessa batalha com diferentes recompensas e diferentes itens ganhos. Então vamos continuar. Eu só queria definir o clima aqui. Talvez não entenda por que temos esse tipo de configuração. E aqui veremos mais tarde tudo vai fazer sentido. Então nós vamos ter os itens de recompensa como os itens ganhos. E então teremos a XP tributada. Tributado para ser igual ao experimento ganho, mas bem concatenado com espaço XP, XP. Bom o suficiente. Há isto que nos incomoda? Não, não faz. E agora queremos definir as pilhas de itens, mas antes de tudo, queremos ter certeza de que ele está vazio. Então itens, texto, o texto é igual a vazio. Por que estou dizendo isso? Porque nós vamos percorrer todos os itens, obter seus nomes, e concatená-los ao texto. O que eu quero dizer com isso? Então eu vou criar um ForEach. Isto para cada, vai olhar através de cordas, o item de recompensa, texto e itens de recompensa item item B gerenciador de item. E agora aqui vamos definir o texto dos itens, texto para ter um mais igual. Então, porque temos vários itens, precisamos adicionar o mais igual para que todos concatenem, então os itens de recompensa. E vamos concatená-lo com uma vírgula. Então, como é que isto vai funcionar? Talvez devêssemos adicionar a vírgula de antemão. Vamos tentar adicioná-lo de antemão. Ou saber o quê. Vamos adicionar uma barra invertida t. E barra invertida d significa guia barra invertida. Então isto vai ser algum tipo de espaço, uma espécie de, mas um pouco maior ou vamos apenas adicionar um espaço. Por que não? Lá vamos nós, guardamos isso. Vamos para a Unidade. Mas antes de fazermos isso, precisamos de uma maneira de testar isto. Então eu vou lançar um desafio. E seu desafio é abrir a tela de recompensa. Então crie uma entrada e atualize, verifique se há uma chave. Quando for pressionado, abra a janela de recompensa e com os argumentos apropriados. Portanto, este é um desafio muito básico. Pause o vídeo agora mesmo e vá e faça. Ok, bem-vindo de volta. Então eu sempre excluo atualização, mas isso é apenas porque nós realmente não precisamos dela. Só queremos testar isso. Então eu vou verificar se o ponto de entrada obter a chave para baixo. Usando o código de chave. Qual código de tecla, que ele codifica que usamos y, o som scape, usamos a tecla Y. Eu acho que não. Então eu vou usar a tecla Y e eu vou abrir a tela de recompensa. A experiência que eu vou ser recompensado com como 50 mil. É uma quantia muito generosa. E os itens de recompensa serão os itens de recompensa que vamos definir. E aqui pelo campus. Agora, mais tarde, devemos tornar isto privado, mas por enquanto vamos salvar isto. Vamos colocá-lo manualmente aqui. Então vou voltar ao nosso jogo. Eu vou para o Canvas. Eu vou, uau, nós temos tanto agora para fechar tudo isso. Então eu vou dar o valor de texto XP, o valor de texto dos itens, a tela de recompensa, que é a batalha. Recompensas. O ganho será definido por conta própria e, em seguida, recompensa itens. Vou adicionar três itens aqui, entrar em um bloqueio, vamos para os itens Prefabs e o que devemos obter? Pegamos um machado dourado, uma armadura dourada, e uma porção de HP. Vou salvar tudo isso. Vou entregar as recompensas de batalha. Vou comandar o jogo. E agora nos movemos. Vamos fazer isso maior. Tinha o Y bem, o y não está funcionando. Por quê? Por que não está funcionando? Porque nós, por alguma razão, esquecemos de fazer algo e isso é algo que é, e isso é algo que é a parte mais importante. E isso é definir a tela de recompensa para ativa. Oh, meu Deus. E também precisamos fazer mais uma coisa, que é aplicar o botão de fechar. Então eu vou ir em frente e criar um botão de fechamento de vazio público. E simplesmente definirá a tela de recompensa como falsa. Isso de volta ao nosso jogo. Vamos abrir o botão. E essas coisas são realmente básicas que às vezes você pode esquecer. Então, onde está? Recompensas de batalha, manipulador, botão de fechar salvar isso, rampa, um jogo. Lá vamos nós. Aperte a tecla Y. E ainda precisa de algo que não estamos fazendo corretamente. Ou isso ou meu impotente não está funcionando. Nós guardamos isso. Devíamos ter salvo o 0. Ok, então o problema era, que é sempre o mesmo problema. Desliguei a tela porque a tinha trancada. Não li o que estava desligando. Agora, quando executamos o jogo, acredito que tudo está funcionando em uma multa de 100%. Lá vamos nós. Então, abrimos isso e podemos ver que temos algo muito errado. E essa coisa muito errada é que em vez de definir o nome do item, então o nome, os itens de recompensa, item de ponto de texto, nome. Nós ajustamos para, que tipo é? Então agora vamos executar o jogo pela última vez, eu acredito. E vai funcionar. Lá vamos nós, O Machado Dourado, a armadura dourada, e a poção HP. Espero que tenham gostado deste vídeo. Vou mudar a cor aqui, quatro dos valores para ler. Lá vamos nós. Então agora parece, deve parecer muito melhor. Você verá na introdução. Vemo-nos no próximo vídeo. 120. Dar recompensas: Bem-vindos de volta, meus colegas desenvolvedores de jogos neste vídeo, quando executamos o ganho. E para que não esqueçamos, eu preciso fazer algo aqui e que é definir a recompensa próxima, salvar isso, executar o jogo. Começou a batalha. Use a magia lutando nos tentáculos mágicos de guerra, Bruxos. Agora ele está morto. Agora use os tentáculos mágicos no mestre principal. Fomos outra vez. Se olharmos para o jogador, ele tinha 36 HP atuais e XP atual. Quero dizer, e quando fecharmos o botão, verá que ele tem 1000006. Isso é porque ele subiu de nível e nós removemos um pouco de XP. E se você também ir para os itens do menu, podemos ver que recebemos nossas recompensas. Então não vamos perder mais tempo e vamos começar. Oh, então agora é hora de realmente dar recompensas que ganhamos no flexionado quatro. Então, para fazer isso, eu vou abrir nossos roteiros novamente e eu vou para o manipulador de batalha. E aqui, vou te dar um desafio. Então seu desafio é adicionar o expediente para os jogadores ativos. Você vai mudar o método do botão Fechar para fechar a tela de recompensa. Você vai percorrer todos os jogadores e dar-lhes experiência. E você também irá se certificar de adicionar os itens em recompensas ao inventário de listas. Pause o vídeo agora mesmo e vá até Caldeu. Ok, bem-vindo de volta. Então vamos mudar isso do botão Fechar para fechar tela de recompensa. Então aqui eu vou começar por, antes de fechar a tela de recompensa, eu vou parar com isso. Ou saber o que poderíamos ter guardado as roupas. Veremos o que fazemos. Primeiro de tudo, vamos nos certificar de que, para cada instância de pontos de estatísticas de jogador, ativo, jogador e gerenciador de jogo, estatísticas de pontos. E aqui vamos verificar se o jogador ativo ponto GameObject está ativo na hierarquia. Então vamos verificar se há um jogador ativo. E nós vamos adicionar XP a ele usando a recompensa de XP. Lá vamos nós. E então vamos criar outro loop foreach que vai passar pelos itens em itens de recompensa. E vamos acessar a instância de ponto de inventário, ponto adicionar itens e os itens que vamos adicionar, o item recompensado, salve isso. Em seguida, vamos definir a tela de recompensa para salvar ativo para falso. Então eu não sei por que eu apaguei lá em cima. Eu poderia ter adicionado aqui embaixo. E então aqui eu vou colocar a batalha B ativa para falsa. Então eles vieram instância ponto gerente, ponto batalha ativo para falso. E por que estou fazendo isso aqui? Já não estou fazendo isso no gerente de batalha? Onde é que está? Então, em algum lugar aqui, lá vamos nós. Estou me configurando aqui para falso. Mas o problema é que isso é o que faz o personagem ou o jogador e Jimmy manter, movendo-se ou ficar no lugar. Então, quando eu quiser abrir as recompensas dos morcegos, quero manter um gênio obsoleto em seu lugar até ele, e eu, Oops, eu quero mantê-lo no lugar. Eu não quero que ele se mexa enquanto olha para as recompensas que ele recebeu. Então vamos salvar tudo isso. Mas agora o problema está no gerente de batalha porque temos algumas coisas para mudar. E o que são estes? Vamos chamar a Recompensa de Batalha. Para onde vamos chamá-lo? Vamos chamá-lo quando terminarmos uma batalha. Mas se fugirmos, deveríamos chamar esta recompensa de batalha? Você ganha uma recompensa se fugirmos. Claro que não, não é isso que pretendemos fazer. E também não queremos imprimir aquele sempre que fugirmos, vamos fazer algo diferente. Primeiro de tudo, eu vou subir aqui, e eu vou criar um booleano privado que está fugindo. E isso vai manter o controle quando estivermos fugindo. Em seguida, uma ordem para testar isso, vamos criar duas outras variáveis, que vão ser públicas e XP, recompensa, quantidade. E também outra matriz de tipo gerenciador de itens públicos, que vai ser os itens, recompensa. E isso é, você vai ver por que estamos fazendo isso. Primeiro de tudo, vamos definir a fuga como verdadeira e fugir. Então, para onde corremos? Fugimos para algum lugar aqui. Lá vamos nós. Estamos fugindo. Então o valor, vamos definir a fuga como verdadeiro. E agora vamos para a co-rotina de batalha. E aqui vamos verificar se estamos fugindo. Então vamos nos certificar de definir a batalha para falsa. Isso significa que vamos ser capazes de correr novamente e então vamos definir a fuga para falso. E se não, se não formos fugir, então queremos imprimir ou não imprimir. Na verdade, vamos chegar a isso. A instância de pontos do manipulador de recompensas batalha, tela de recompensa aberta ponto. E nós vamos enviar com o valor da recompensa de XP e os itens, quantidade, itens recompensa, quero dizer, então é por isso que criamos essas duas variáveis aqui. Vamos nos livrar deles daqui a pouco. Mas, por enquanto, também precisamos ter certeza de que aqui dentro só se formos fugir ou apenas se não estivermos fugindo. Desculpe, se não estamos fugindo, então vamos imprimir o que queremos. Lá vamos nós. Então, resolvemos esse problema. Vamos salvar tudo isso e vamos para a Unidade. Vamos nos certificar de que fizemos tudo aqui, corretamente, salvamos tudo, ok, então vamos para o Unity, ir para o Canvas, ir para o gerenciador de menus, e isso será apenas uma coisa temporária para fazer. Então, onde está? Gerentes de batalha? Desculpe. Então, no gerente de batalha, temos os itens recompensados e o valor, digamos que são 2 mil. E os itens serão, vamos apenas adicionar um machado de ouro ou prata ou dourado e um oceano monopólio. Vamos guardar isso. Nós vamos executar o jogo. Vamos começar uma batalha, vamos tentar vencê-la. Então relâmpagos, guerra, Locke, magia, tentáculos, bruxos. Ele morreu. Tentáculos mágicos podem dominar. Nós vencemos. Então saímos, mas não saímos. Nós sempre esquecemos de adicionar uma referência às recompensas de batalha ou vamos entrar aqui. O que nos esquecemos de acrescentar? Então o problema aqui, se nós clicar duas vezes e ele está nos dizendo que não há nenhuma instância de um objeto. Agora, por que isso está acontecendo? Porque se voltarmos e fizermos recompensas de batalha, criaremos uma instância. Nós não definimos isso para isso. Então eu vou criar um começo e aqui novamente. E eu vou definir a instância para ser igual a isso. Agora não devemos mais ter esse problema. Vou parar o jogo. Vou rodar de novo. Eu vou olhar para o jogador, quanta experiência o C tem. 36. Então eu vou começar a batalha. Magia, relâmpagos, guerra, sorte, tentáculos mágicos, Bruxos aquece isso. Tentáculos mágicos. Mestre, ele está morto. 36. Lá vamos nós. Temos dentro, dentro do botão de fechar, vamos vendê-lo aqui. E a batalha de Canvas recompensa botão fechar, Canvas, mas eu recompensarei o manipulador. Vamos configurá-lo para onde ele está? Onde é que está? A tela de recompensas fechadas? Então eu vou em frente, basta declarar 36 tela de recompensas fechadas. Lá vamos nós. Cento novecentos e trinta e seis. Isso é porque nós mudamos um nível para cima. Então agora nós subimos de nível com os nossos jogadores. Temos algum item? Vamos para o cardápio. Verifique os itens. Lá vamos nós pegamos um machado dourado e uma pequena porção que podemos pegar no Draco. Lá vamos nós. Nós adicionamos alguma maneira. Ainda não usamos o botão de fechar, mas tudo bem. É bastante fácil. Então eu espero que você tenha gostado deste vídeo e eu vou vê-lo no próximo. 121. Criando zonas de batalha: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Neste vídeo, quando executamos nosso jogo, temos uma zona de batalha aqui. Em algum lugar. Lá vamos nós, temos uma zona de batalha. E se estiver ativo em Enter, quando entrarmos nele, você pode ver que começamos a batalha. Nada acontece ainda, mas continuaremos com isso mais tarde. Mas, por enquanto, precisamos criar um tipo de batalha. Ter diferentes tipos de inimigos que podemos escolher, e diferentes tipos de recompensas, recompensas de itens e recompensas de XP e assim por diante. Então não vamos perder mais tempo, e vamos começar com nossa batalha aleatória. Oh, ok, então agora o sistema de batalha está praticamente funcionando bem. Tudo foi arrumado. Mas o único problema é que nossas batalhas começam com gente bater no apicultor e isso não é nada bom. Então o que vamos fazer é criar uma área que, quando entrarmos nela, começará uma batalha. Se quiséssemos começar a batalha ou se pressionássemos uma certa tecla. Então, para isso, vamos em frente e criar um novo script. E o script aqui no sistema de batalha está com o botão direito do mouse. E este será o tipo de batalha que temos. Sais será o gerente do tipo de batalha. E por que estamos criando um roteiro? Porque cada pétala precisaremos de algumas coisas. Em primeiro lugar, vai precisar dos inimigos que temos. Ele vai precisar da recompensa que obtemos uma TI vai precisar dos itens que recebemos. Então eu vou fazer disso um comportamento não-mono. E eu vou usar isso como um sistema serializável. Vamos guardar isso. E agora vamos criar três variáveis. O primeiro será uma cadeia pública, e conterá os nomes dos nossos inimigos. Então vamos criar uma XP pública e recompensar. E, finalmente, vamos criar uma matriz de gerenciador de itens públicos, que vai ser os itens de recompensa. Então, vamos salvar isso. E agora vamos voltar para a Unidade. Vá para a cena e criará uma área. Vou clicar duas vezes em Draco. Vamos fazer a cena um pouco maior. E aqui vamos criar um objeto de jogo vazio. Objeto de jogo vazio. Chamaremos isso de zona de batalha ou algo assim. Então zona de batalha em Enter, vamos redefinir sua posição. Clique duas vezes sobre isso. E eu vou mover essa zona de batalha. E aqui eu vou adicionar a ele um colisor de caixa. Então vamos adicionar um componente, o colisor de caixa 2D. E vamos torná-lo um pouco maior. Então isso é sobre o colisor de caixa que queremos ter. E vamos fazer disso um gatilho. Nós vamos salvar isso. Agora vamos criar um novo script aqui, que será a batalha, instanciar ou acertar Enter. Por algum motivo, cada vez que eu criar um script hit Enter ele abre o Visual Studio, irá adicioná-lo à zona de batalha. E vamos abrir o roteiro. Então agora este não é o, este não é o script que eu estava procurando. O que? Considerando que a batalha foi instanciada. Então vamos ver, notificação de batalha. Lá vamos nós. Esta é a instância de batalha que é adicionada à zona de batalha. E agora vamos abrir o roteiro. E a primeira coisa que precisamos fazer é criar uma lista de gerentes de tipo de batalha. Então vai ser um campo serializado. E a matriz de gerenciadores de tipo de batalha, será chamada de batalhas disponíveis. Entra, guarda isso. E agora vou te dar um desafio. E seu desafio será adicionar algumas batalhas. Então crie três batalhas potenciais que os jogadores enfrentarão e com diferentes inimigos e recompensas. Então pausar o vídeo agora mesmo e ir criar algumas batalhas. Ok, bem-vindo de volta. Então aqui podemos adicionar uma batalha e, como você pode ver, teremos vários inimigos e vários itens de recompensa. Então eu vou adicionar três inimigos aqui e três itens. Agora você deve estar se perguntando por que estamos usando cordas aqui e não como fizemos na recompensa. Itens. Isso é porque se voltarmos para o nosso gerente e aqui, a forma como criamos uma batalha, onde está? Onde é que está? Onde é que está? Começamos uma batalha. Nós adicionamos os inimigos e eles são do tipo string aqui. Ou onde está quando começamos a batalha, a corda é o inimigo para desovar. Então não podemos usar isso ou podemos mudar até mesmo este, o que é uma boa idéia. Eu recomendo que você experimente. É uma boa maneira de aprender a lidar com isso. Mas por enquanto, vamos em frente e quanta experiência? Ou primeiro, vamos adicionar nossos inimigos. Então vamos para a Prefabs. Vamos largar isto. E os inimigos de ataque ou não, a batalha, os inimigos. Então eu vou adicionar um rosto azul aqui, um e um Locke de guerra. E é isso. Isto vai ser algum tipo de batalha fácil. Ganhamos 100 XP e recebemos apenas um item como recompensa, seja, vamos ver o que é. Primeiro de tudo, vamos adicionar três batalhas potenciais aos inimigos. Então este, o segundo será um mago. Com a fase azul. Podemos até adicionar uma outra fase azul. Então temos dois rostos azuis. A recompensa é 600 e os itens vão fazer check-in apenas um pouco. E finalmente, o último potencial phi que temos é um grande mestre com um mago e uma outra imagem. E isso será 1, 0, 0, 0, 500 XP. E vamos definir os itens de recompensa. Então, quais são os itens de recompensa para entrar aqui? Acho que temos um. Então eu vou para os átomos e quais itens nós temos? Temos algum tipo de armadura de prata. Então, em, Então este está feito. O segundo, que é um pouco mais difícil, vamos adicionar um, armadura dourada e em uma poção. E, finalmente, o último, que é o mais difícil, vamos adicionar duas partes HP. Um oceano monopólio e um machado dourado. Então vamos guardar isso. E agora temos três batalhas em potencial que podemos escolher. Agora, a próxima coisa a fazer é ir em frente e entrar em nossos roteiros. E na batalha instanciado ou vamos criar um par de métodos. Então, o primeiro, métodos eu quis dizer variáveis. Então a primeira variável vai ser um booleano e vai ser verificar se ele ativa em Enter. Então ative e vire porque podemos criar dois tipos de zonas de batalha. Um em que se ativa imediatamente assim que entrarmos nela. E outro que mantém um registo da quantidade de tempo que um jogador passa na zona de batalha e, em seguida, começa a batalha. Então vamos criar um booleano privado que vai manter o controle se estivermos na área. Guarde isso. Então agora vamos criar um empreendedor entrar no Trigger, Entrar para D. E vamos verificar se a tag collision.com não fizemos isso em um jogador de longa data. Então vamos verificar se estamos ativando em Enter. E se não, vamos verificar se a área é igual a verdadeira. E vamos começar um contador no próximo vídeo. Mas, por enquanto, vamos imprimir que somos ou começamos a batalha. Lá vamos nós. Guarde isso em Unity. Executar o nosso jogo, caminhar até a zona de batalha. E não funciona porque não o configuramos para ativar em Enter, ativar em Enter. Lá vamos nós. Começamos a batalha quando entramos. Então eu espero que você goste e eu vou vê-lo no próximo vídeo onde nós continuamos nossas batalhas aleatórias começando. 122. Começar batalhas aleatórias: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Então criamos uma zona de batalha. Primeiro de tudo, ele se ativa quando entramos nele. Então eu vou correr e demonstrar como isso funciona. Assim que entrarmos na zona, segue-se uma batalha e 2s e 2s, eu vou não, não tenho certeza. E outra opção é que se não ativarmos no Enter, executamos o jogo. Temos um tempo entre as batalhas a serem vencidas. Então, agora, quando andamos por um segundo, começamos uma batalha. Então não vamos perder mais tempo e vamos começar. Está bem, está na hora de acabar com as nossas batalhas aleatórias. Vamos abrir o script aqui e vamos criar um par de variáveis. Então a primeira variável que vou criar é um tempo entre batalhas. E vai ser o tempo entre as batalhas. E o segundo vai ser um contador de batalha particular. Então eu pensei que esta seria uma ótima oportunidade para ensiná-los como os contadores de batalha funcionam em geral. Então, e começar, isso significa que quando começamos a batalha, vamos verificar o contador de batalha e vamos configurá-lo para algum tipo de valor aleatório. Então, intervalo aleatório de pontos. E vai ser um tempo entre batalhas vezes 0,5 f e um tempo entre as batalhas definidas 2 vezes 1, 0,5. Então, ou é um pouco menos ou um pouco mais, adicionando ou adicionando a metade. Não é um pouco, mas vamos continuar agora, uma atualização, vamos verificar algumas coisas. Vamos, em primeiro lugar, criar a atualização. Vamos verificar se estamos na área. Isso significa que definimos a área, uma área como verdadeira. E onde está? E a instância do jogador ponto ponto ponto desativar movimento é falso. Então não queremos que o jogador abra o menu e fique preso lá para a batalha começar, queremos ter certeza de que ele tem a habilidade de se mover e que ele escolheu estar nesta zona de batalha vai. E então vamos verificar se temos uma entrada que obter eixo rho. E se tivermos qualquer tipo de movimento horizontal ou vertical, então vamos começar a batalha. Então eu vou entrar no script player e eu vou copiar o input.txt é horizontal. E não sei se sabe o que estou fazendo aqui. Então eu estou verificando se há alguma entrada no eixo, na horizontal. E isso significa que se for diferente de 0, ou se tivermos qualquer movimento na vertical, isso significa que estamos nos movendo dentro desta batalha. Se estivermos parados, não queremos ligar o balcão. Então, se o movimento na horizontal ou na vertical for diferente de 0, isso significa que estamos nos movendo dentro da zona de batalha. Isso significa que o contador de batalha pode começar a contagem regressiva a partir do tempo delta do ponto baixo. Guarde isso. E então nós vamos verificar se o contador de batalha em qualquer ponto se torna 0 ou menor que ou igual a. E por que estamos definindo para ser menor ou igual? Porque às vezes, e esta é uma pergunta que recebo muitas vezes. Às vezes, o contador de batalha ao remover Time.DeltaTatime não chega exatamente ao valor 0. Então o que fazemos é verificar se é menor que 0, então se for, vamos em frente e começar a batalha. Mas não só isso, isso significa que esta condição vai passar, mas eu espero que você entendeu por que nós definimos isso menor ou igual e não apenas igual, igual a 0. Então aqui vamos definir o contador de batalha para, novamente se tornar algum tipo de alcance aleatório. Então lá vamos nós. E então vamos começar uma rotina de batalha. Ou, na verdade, isso deve ser começar a revestir. Então vamos começar uma co-rotina, abrir os parênteses, e eu vou dar um desafio para vocês. Então seu desafio é criar o ouro. Então você precisará criar uma co-rotina. Começaram batalhas. Ou seja qual for o nome que foi dito, a batalha para ativo precisará criar um número aleatório para escolher um fundo potencial. Você precisará definir a recompensa de itens e XP, você precisará esperar um pouco, obter um pouco. Isso significa retorno de rendimento, esperar quatro segundos, e então você terá que começar a batalha. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então eu vou avançar e gerar o método de campo de batalha aqui. E não é um, precisamos ter certeza de que é um enumerador de olhos. Vou remover esta linha de código aqui. E a primeira coisa que vamos fazer é acessar a instância do game manager dot, dot battle está ativo, verdade? Lá vamos nós. A segunda coisa é que vou criar um número inteiro de batalha selecionado aqui. E vai ser igual ao intervalo de pontos aleatórios. E vai ser o 0, o comprimento de pontos de batalhas disponíveis. Então, o que isso faz, ele escolhe um valor aleatório entre 0 e o número de batalhas disponíveis. Então é praticamente auto-explicativo. Nós já fizemos um monte de aleatoriamente esse alcance. Então vamos acessar o gerente de batalha e a instância. E vamos seguir em frente e definir a recompensa dos itens para ser igual às batalhas disponíveis na posição selecionada Pontos de batalha itens de recompensa ou não, não. Quero dizer, sim, é isso. O segundo será o XPS de recompensas ou o valor da recompensa de XP. Com a experiência de recompensa de XP. Lá vamos nós. E então vamos ceder para esperar um pouco de tempo. Então, rendimento, retorno, nova espera quatro segundos. E quanto devemos esperar? Cerca de 1,5, eu acho que é uma boa hora. Podemos mudar o quanto quisermos. Então vamos ao gerente de batalha. Dot instance, dot start a batalha ou batalhas começam. Certo, então lá vamos nós. É o começo da batalha. Devíamos enviar-lhes uma série de inimigos. Assim, as batalhas disponíveis sobre os inimigos de batalha selecionados. Lá vamos nós, guardamos isso. E finalmente, uma coisa boa a fazer é que vamos desaparecer. Como é que vamos desaparecer? Esqueci como se chamava o método. Então, enquanto o gerenciador de menu e desvanecimento, desvanecimento, desvanecimento palavras, o menu Iniciar desvanecimento. Com cicatrizes, boa imagem de desvanecimento do jogo, imagem de desvanecimento. Então eu vou acessar o método de imagem ponto instância do gerenciador de menus. Então isso vai desaparecer a imagem dentro e fora. Boa transição para a batalha. E finalmente, vamos adicionar algo aqui onde vamos destruir a zona se quisermos depois de terminarmos o fundo. Então eu vou adicionar um campo serializado aqui, que vai ser um booleano. E vamos ativar o Ativar depois de começar. E o que isso fará é depois de começarmos o jogo ou começarmos a batalha, se quisermos desativar depois de começar, vamos destruir o objeto do jogo. Isso significa que quando terminarmos a zona de batalha terminada, se voltarmos para aquela zona, não teremos mais uma batalha lá. Então eu vou salvar tudo isso. Vou voltar para a Unidade. Vamos guardar isso. Eu vou desativar e o tempo entre as batalhas vai ser, eu não sei. Vamos definir como um, salvar isso, executar o jogo. E isso significa que precisamos ficar 1 segundo dentro da zona. Então lá vamos nós. Um segundo. E não desaparecemos. Devíamos ter começado a desaparecer. Podemos usar raios mágicos na página principal para que você possa ver e ouvir que isso funciona. Precisamos desaparecer. Como vamos desaparecer? Temos um desvanecimento. Desvanecer, imagem, público, vazio, desaparecer. E vamos copiar tudo isso. Vamos ao Canvas, verificar a imagem, o que está acontecendo aqui, o animador. Então abra o desvanecimento dos parâmetros da imagem. Vamos em frente e criar uma transição no caminho de volta. E isso vai ser acionado por um e desvanecimento sem tempo de saída com o tempo 0 entre transições. E vamos nos certificar de que acabamos com o desvanecimento. Nós guardamos isso. Vamos copiar a referência da string. Vamos voltar aqui. E nós vamos acabar desvanecendo. Nós salvamos essa batalha instanciar água. E onde deveríamos estar desaparecendo? Devemos estar desaparecendo assim que a batalha começar. Então lá vamos nós. Começamos ou não, chamamos o gerente do menu. Instância. Desvanecer. Guarde isso no nosso jogo. De volta às cenas. Dirija o jogo. Vá para a zona de batalha. Vamos tentar ficar aí. Então, se ficarmos de pé, nada vai acontecer. Se começarmos a andar. Lá vamos nós. A batalha começa, desaparecemos, e agora estamos em batalha. Senhoras e senhores, vamos tentar ganhar, mas acho que vai ser, tomar um pouco de tempo. Vamos ver se foi destruída. Onde é que está? Então não há batalhas porque queremos destruir após o impacto. Vamos tentar não o ativado. Então dirija o jogo. Entra na área, anda por aí. Lá vamos nós. Foi destruída? Não, a zona de batalha ainda está lá. E a última coisa que queremos fazer é se ativarmos no Enter, ainda não começamos isso. Então, se voltarmos e em vez de imprimir, vamos começar uma co-rotina de batalha. E devíamos ter começado a cortejar primeiro. Então comece a co-rotina, abra os colchetes, feche os colchetes, ponto-e-vírgula, volte, execute o jogo. Dirija o jogo. E agora, quando andamos para a zona de batalha, assim que a tocarmos, lá vamos nós, começamos a batalha. Então eu espero que você goste, eu espero que você esteja gostando, eu espero que você esteja cometendo suas mudanças. Temos tantos comprometidos agora. Este é um projeto incrível em que estamos trabalhando. Temos um jogo de RPG quase terminado, mas há um componente muito, muito importante em qualquer jogo de RPG. E isso é uma briga de chefe. E é isso que faremos nos próximos vídeos. Te vejo então. 123. Batalha de Boss: Bem-vindos de volta, meus colegas desenvolvedores de jogos. Como pode ver, temos um demônio assustador aqui. Então, quando executamos nosso jogo, se entrarmos aqui, andamos por essa borda, podemos ver que temos um demônio, mas é tarde demais. Temos que enfrentá-los. Então eu vou atacar o dragão chefe. Ele vai atacar de volta. Vou atacar o dragão chefe de novo. Vamos tentar matá-lo. Não acho que seja muito poderoso. Nós vencemos a batalha porque nós o destruímos com nossos personagens. Então não vamos perder mais tempo e vamos começar a criar nosso inimigo chefe. Oh, caso. Então, tempo para algumas batalhas perdidas. Acho que esta é a parte mais divertida e excitante. Então eu vou adicionar um chefe aqui e exibe. Mas antes de tudo, precisamos de um chefe. Então eu vou para os sprites, personagens, inimigos. Vou clicar com o botão direito aqui e criar uma pasta para o chefe. E o chefe que vou usar como este. Então eu encontrei este dragão de aparência legal com um pouco de animações. Eu pensei que seria legal se o chefe realmente tivesse algumas animações. Eu vou arrastar este chefe e aqui, e como você pode ver, ele é bem pequeno. Então vamos para esses sprites. Vamos fazer este 30 para aplicar. Acho que é tudo um pouco pequeno demais. Vou me certificar de que vamos tentar 16. Aplique isso. Lá vamos nós. Agora temos um grande chefe. Podemos até torná-lo um pouco maior, mas por enquanto vamos mantê-lo como está. Nós vamos escolher todos estes e torná-los 16, dobrar , fazer todos eles. Nenhum filtro de ponto aplicado. E não precisamos fazer mais nada. Ou nós temos. Talvez nós precisamos ir em frente e mudar isso do padrão para o personagem de batalha e vai torná-lo 1. Pressione Enter. Lá vamos nós. Então agora temos um chefe enorme. Está bem? Lá vamos nós. Então agora vamos colocar nosso chefe por aqui, talvez fazê-lo encarar o outro lado. Podemos fazer isso acontecer definindo esses dois menos1. E depois vamos mudar isto para a batalha de chefes. Vamos adicionar um colisor de caixa a ele. Mas este colisor de caixa não vai ser sobre o chefe, mas sobre a área bem aqui onde o jogador pode entrar e disparar. Então vamos configurá-lo como um gatilho e vamos adicionar uma batalha instanciada a isso. E vamos criar uma batalha disponível aqui. Deve haver apenas uma batalha, e nós devemos ter os inimigos aqui devem ser um inimigo e os itens de recompensa, vamos definir a palavra XP para 3000. E nós vamos conseguir, talvez vamos ver que tipo de itens podemos obter. Vamos para os itens pré-fabricados. Claro que temos ouro, ouro e algumas porções de HP. Vamos ver, vamos adicionar mais parte HP, três porções HP, e dois monopolos. Lá vamos nós e obter e machado dourado, armadura dourada, três poções HP e para gerenciar oceanos. Vamos guardar isso. Agora é hora de criar um inimigo. E como vamos fazer isso? Bem, vou usar um dos inimigos já criados da batalha. Vou adicionar a fechadura de guerra aqui. E eu vou mudar algumas coisas. Então, em vez de guerreiro, este será o, como devemos chamá-lo de dragão chefe. Então pausar dragão. Vou mudar os sprites para ter um chefe. Lá vamos nós. Então, um chefe sprite. E lá vamos nós. O HP máximo deve ser 1, 0, 0, 0, 0, 0. Com uma taxa de idade atual de 100, os gestores atuais devem ser oitocentos e oitocentos e vinte. Eu estive por engano. destreza deve ser 16. A defesa deve ter 16 anos. Poder da arma 60. Sim, claro. Armadura de defesa 50, eu acho que é um pouco dominado. O que sprite. O que deveria ser esse sprite? Bem, podemos ir em frente e usar uma dessas parcelas ou quer saber? Acho que este vai desaparecer como os personagens de batalha que temos. O que mais devemos ter as partículas surdas? Vamos acrescentar isso. Então prefabs e vamos ver o caráter. O que é este ataque de partículas, os danos sofridos. Agora, isto é algo diferente. Aquele gerente de batalha marítima, oh, lá vamos nós. Então, a morte do personagem, vamos clicar nisso novamente. E este não são os Bruxos, este é o chefe. Dragon prefab vai mudá-lo em apenas um pouco. Então vamos adicionar o efeito de morte de caráter nele. Vamos guardar isso. O que mais deveríamos fazer? Eu acho que isso é tudo, oh, os ataques que ele tem. Então vamos adicionar todos os ataques. Ele terá todos os nossos ataques. Você poderia criar um ataque especial só para ele. Eu recomendo que você faça isso. Então vamos ver onde temos os ataques na batalha? Não. Ok, então eu encontrei a pasta. Vamos clicar na batalha do chefe. E eu queria clicar no dragão chefe. E vamos ver o que ele tem. Ele tem o fogo no banheiro. Está bem. Então precisávamos mostrar que os prendemos. Então temos a barra, o fogo azul, os tentáculos. Vamos dar-lhe o laser que lhe deu os tentáculos roxos, e vamos dar-lhe o efeito de iluminação. Então lá vamos nós. Agora temos um dragão chefe muito forte. O que mais deveríamos acrescentar a ele? Acho que é o suficiente. Então eu vou para os personagens de batalha. Então eu vou ver prefabs de batalha, inimigos. Vou arrastar o chefe e criaremos um prefab original. Lá vamos nós. Então agora eu vou para a batalha de chefes. Vou remover o chefe Dragão 4. Agora, a batalha do chefe, vamos ver. O inimigo que enfrentamos é o dragão chefe. Whoo. Tão assustador, ele realmente é meio assustador. Nós não queremos ativar no Enter, porque normalmente chefes, você ainda pode fugir antes da batalha começar. Mas veremos que se a batalha já começar, não haverá escapatória para nós. Então eu vou definir o tempo para ser dois. Vou certificar-me de que o ativo em Enter não está ativo em Enter. Então eu vou aumentar o tamanho. E aqui também para fazer, não tenho certeza disso. E eu acho que tudo está quase pronto. Então, agora, se fizermos o nosso jogo, vamos tentar entrar naquela zona e ver se a batalha começa. Então lá vamos nós. Ok, então aparentemente não tão bem. Ok, então a idéia aqui é que nós não queremos nosso personagem de batalha, eu quero dizer o sprite para ser um personagem de batalha. Vamos colocá-lo como um jogador. Ele será processado normalmente, vai movê-lo um pouco para a direita. Então eu vou, infelizmente o sprite já está aqui. Então, se eu movê-lo, o colisor de caixa também se moverá. Vou colocá-lo aqui. Vou ajustar isto. Lá vamos nós, guarde isso. E também precisamos ter certeza de que se entrarmos nos personagens de batalha e quero dizer o gerente de batalha e os inimigos pré-fabricados, precisamos adicionar os dragões. Então vou prender o gerente de batalha. Eu vou entrar para os inimigos no arrasto. Vamos guardar isso. E vamos tentar ir até lá e ver se isso funciona. Então agora a batalha começa, e lá vamos nós. Então temos aquele enorme dragão contra nós que estamos ou devemos estar prontos para lutar. Agora, a próxima coisa que precisamos ter certeza é que não podemos fugir quando se trata do chefe. Então eu vou te dar um desafio, e seu desafio não está em lugar nenhum para correr. Então você vai precisar criar uma variável e t batalha instanciado que decide se isso é se podemos ou não fugir. Faça o mesmo e o gerente de batalha adicione um argumento booleano ao método de início de batalha que vai decidir se podemos ou não fugir. E, finalmente, defina a variável e o do gerenciador de batalha. Pause o vídeo agora mesmo e vá fazer o HL7. Ok, bem-vindo de volta. Então aqui vamos criar um campo serializado. Deixa-me separar-me do resto. E vai ser um booleano e vai ser pode fugir. E então nós vamos criar um bool particular tipo booleano em tudo isso deve ser no gerente de batalha, que nós vamos verificar. Então aqui vamos criar um bool privado e vai ser o pode correr se podemos ou não correr. Agora, no método de início da batalha, vamos adicionar outro parâmetro que será o Pool pode ser executado, salve isso. E agora estamos abertos. E aqui, se a batalha não estiver ativa, começamos a batalha. E nós dissemos que o pode correr igual ou menor do que ele, pode fugir, é igual ao pode fugir. Guarde isso. Agora vamos rolar para baixo para o método fugitivo. Enquanto o método fugitivo, lá vamos nós. E vamos definir uma condição em torno de tudo isso. E só podemos fugir se pudermos fugir. Então eu vou adicionar esses dois. E eu vou mover isso se declaração e lado. Então, se pudermos executar e o valor for maior do que o, quero dizer, devemos mover tudo isso. Lá vamos nós. Então, se pudermos correr, então vamos verificar se temos uma chance de fugir como vamos para a próxima curva. E se clicarmos no botão Fuja, não funcionará porque se formos contra algum tipo de chefe, e a última coisa que precisamos fazer é evitar erros. Então aqui está um truque bacana. Então você pode ver que a batalha inicial agora está errada porque precisamos adicionar um argumento. Então, um truque muito bom que você pode fazer é entrar aqui. Você pode ver que temos duas referências. Se clicarmos neles, lá vamos nós. Podemos ver que temos um na batalha Manager Instância iniciar batalha e um e aqui para que possamos clicar duas vezes em 0. Então estamos aqui na batalha instanciada. E esta batalha instanciou ou tem o poder de fugir. Então vamos configurá-lo como pode fugir. E a segunda referência está na linha 50. 50. Este é o que nós preparamos. O segundo está na linha 73 e aqui, e vamos definir a verdade. Não posso fugir só por agora. Vamos salvar tudo isso. Vamos voltar para a Unidade. Vai esperar por isto. Então, a batalha de chefe aqui. Lá vamos nós. Então, podemos fugir? Não, não podemos fugir, mas na zona de batalha, podemos fugir. Então eu vou salvar isso. Vou comandar o jogo. E você pode adicionar algum tipo de mensagem ou notificação, o que é uma boa idéia. Então vou começar a batalha. Vamos tentar fugir. Não, não podemos tentar atacá-lo com um raio. Vamos tentar atacá-lo com tudo o que temos. Lá vamos nós. Ele nos matou, N1 acertou, vamos tentar atacar o dragão. Isso é muito assustador. Então temos um demônio muito poderoso. Nós o queremos, nós o matamos. - Legal. Então derrotámos o dragão. Temos machado dourado, armadura dourada, HP, HP, HP, poção HP, poção e poção mono. Podemos até criar algo aqui que garante que se tivermos várias manipulações, podemos adicionar como um pequeno parênteses com um a3x ao lado deles, e assim por diante. Podemos até desligar, enquanto a ativação ao entrar. Então, agora, se andarmos por aqui, começamos a batalha de novo porque não ativamos depois de começarmos aqui, lá vamos nós para ativar. Isto deve estar sempre ligado para batalhas de chefes. E lá vamos nós. Isso é tudo o que precisávamos fazer para nossa batalha vencida lutando contra um chefe. No próximo vídeo, obviamente, precisamos criar alguma maneira de completar pedido quando derrotarmos inimigos e especialmente chefes. Vemo-nos no próximo vídeo. 124. Concluir perguntas de batalha: Bem-vindo de volta, Meus desenvolvedores de jogos favoritos. Eu sempre digo isso com a maior intenção, com todo o meu coração, meus desenvolvedores de jogos favoritos, você chegou até aqui. Quando executamos nosso jogo, podemos ver que temos uma pergunta aqui que é derrotar o grande jag e o chefe. Se cairmos, começamos uma batalha. Vamos tentar matá-lo o mais rápido possível. Os ataques ao céu são tão fracos. Então vamos tentar matar aquele dragão. Novamente. Mágica, relâmpagos, drogas e tentáculos mágicos, dragão, tentáculos mágicos, chefe Dragão. Fomos, recebemos as nossas recompensas. Quando clicamos no botão Fechar, você pode ver que o elemento cinco, que é o chefe do dragão grande derrota, está marcado e terminamos essa missão. Quão legal é isso? Então não vamos perder mais tempo. Vamos ver você aqui e vamos começar. Oh, ok, então nós queremos estar completando algum tipo de missão quando derrotarmos o chefe. Como é que vamos fazer isto? Primeiro, vamos para a nossa instanciação de batalha. E aqui vamos criar um par de variáveis. Sinto-me como se todos os vídeos começassem da mesma maneira. De qualquer forma. Vamos criar um campo serializado. Faça algo fora da caixa. Então este é um booleano e ele vai ser chamado de deve completar aquoso ou busca, apenas busca. Então, quando isso estiver marcado, isso significa que quando terminarmos esta batalha, uma missão deve ser completada. E vamos criar um anel público, verdadeira busca para completar. E vamos guardar isso agora de volta na batalha para recompensas. Considerando que o ruim também. Por que não temos as recompensas de batalha aqui prontas para nós? Recompensas, recompensas. Lá vamos nós. A notificação de recompensas de batalha. Vamos criar duas variáveis aqui, que serão um bool público, marca, busca, completa, e uma string pública. A missão para completar. Guarde isso. E agora podemos rolar para baixo quando fecharmos a recompensa. Aqui, vamos verificar se temos a missão de marca completa. Em seguida, vamos acessar a instância de ponto do gerenciador de solicitações, ponto mark quest, complete, mark quest incompleta ou completa. E aqui vamos enviar-lhe a missão para completar. Então isso é que eu me lembro como o gerente de missões funciona. Não tenho certeza, mas felizmente, nomeamos nossos métodos para atender às necessidades do que eles fazem. Agora sabemos que marcamos esta missão como completa. Então agora de volta à batalha instanciado e uma de nossas co-rotinas. E aqui, quando começarmos a batalha, vamos invocar a batalha o que foi chamado de manipulador de recompensas. Lá vamos nós. Instância de ponto, ponto, instância , pensamento Mark, missão completa deve ser igual à missão deve completar. Então, devemos completar uma missão? E o segundo, é a busca para completar será igual à busca para completar que temos aqui. Então, se eu clicar duas vezes, podemos ver claramente que vamos fazer um e a batalha instanciada. E este é, de fato, manipulador de recompensas de batalha. Nós vamos salvar isso. Nós vamos voltar aqui. Onde nós salvamos ou missões no gerenciador de jogo, Eu acredito que veio gerente, onde todas as missões lá vamos. Vou adicionar um e aqui, os pés, os pés. Grande dragão. - Chefe. Vou copiar isto. E eu vou, onde devemos ir com isso? E para a batalha do chefe? E devemos completar uma missão. E esta será a missão completa. Eu colo aqui, eu vou, guarde isso. Eu vou entrar aqui e nos certificamos de que não achamos que você deve completar a pequena batalha ou podemos testá-la aqui. Então eu vou salvar isso. Vou comandar o nosso jogo. Vou em frente e verificar o gerente do jogo. E aqui, primeiro o gerente do jogo, gerente do jogo. Então podemos ver que temos a derrota, que é o quinto elemento aqui. Então eu vou para a batalha de chefes. Aguarde o chefe Ataque, iluminação mágica. Vamos tentar matar esse chefe. E mais uma vez, isso é fazer os grandes tentáculos. Lá vamos nós. Dragão chefe mágico, chefe azul Dragão. Este foi um ataque tão fraco. Vamos tentar os tentáculos roxos nos dragões chefe. Então nós um, vamos ver. Agora vamos ver as nossas recompensas. Quando fecharmos, devemos ver que este elemento está completo. E lá vamos nós. Terminamos uma das missões que precisávamos fazer. Quão legal é isso? Então, agora completamos tudo que espero que tenham gostado. Acho que este é o último vídeo do curso. Eu não tenho certeza. Talvez façamos outro, talvez eu atualize isso. Mas até lá, espero que tenha gostado de tudo. Espero que tenha deixado uma crítica. Espero que goste de mim como instrutor me avise. Adoraria ouvir sua opinião.