Crie um jogo de corrida em 45 minutos com Unity3D e C# — nível iniciante a intermediário | Domen Rajterič | Skillshare

Velocidade de reprodução


1.0x


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

Crie um jogo de corrida em 45 minutos com Unity3D e C# — nível iniciante a intermediário

teacher avatar Domen Rajterič, Game Developer

Assista a este curso e milhares de outros

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

Assista a este curso e milhares de outros

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

Aulas neste curso

    • 1.

      Introdução

      1:10

    • 2.

      Leitor

      5:45

    • 3.

      Controlador

      7:29

    • 4.

      Seguir e Mini

      4:31

    • 5.

      Menu principal simples simples

      7:18

    • 6.

      Trilha de corrida!

      4:28

    • 7.

      o começo, termine e temporizador

      13:06

    • 8.

      Projeto do curso

      1:14

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

492

Estudantes

2

Projetos

Sobre este curso

Você quer desenvolver jogos de corrida mas não sabe como?

Olá, meu nome é Domen e hoje vamos descobrir como criar jogos de corrida com Unity3D e C#.

Vamos aprender como desenvolver o controlador de carros e implementar em um jogo real.

Os jogos de corrida são super populares, então por que não desenvolva um desenvolva uma pessoa?

Este curso vai abordar três tópicos principais três temas:

1. Prototype - código de controlador de carro básicos e configuração de

2. de menu principal - interface básica com fundo e botões de

3. Jogo - implementando o controlador do carro em um jogo real.

Vamos aprender como configurar o controlador de carros no Unity no Unity como adicionar a interface com o usuário ao jogo.

Com este conhecimento, você vai poder começar a desenvolver seus próprios jogos.

Você também pode participar no meu servidor do discagem para se conectar com outros estudantes e compartilhar seu trabalho:

Junte-se ao nosso servidor de discórdia para compartilhar seu trabalho e se conectar com a comunidade!

Então, se você estiver dispostos aprender fundamentos da Unity e começar a jornada na desenvolvimento do jogo, seja bem-vindo no meu curso. Se você gosta desse curso, deixe um reavalie, é realmente que me ajuda e é muito apreciado. :)

Download do curso:

>

> >

Software necessário para participar do curso: Unity 3D e Visual Studio no o que o de e o Visual Studio, no que o

Conheça seu professor

Teacher Profile Image

Domen Rajterič

Game Developer

Professor
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. Introdução: Você quer desenvolver jogo de corrida com Unity? Oi, meu nome é Donald, e hoje vamos descobrir como criar jogos de corrida com Unity 3D. Nós realmente aprendemos como desenvolver controlador de carro e como implementá-lo em um jogo real. Jogos de corrida são super populares. Então, por que não faríamos eloqüentes? Nesta aula, abordaremos três tópicos principais. Realmente aprender como configurar carro controlando a humanidade, como escrever código para ele, e como adicionar interface de usuário para o jogo. Com esse conhecimento, você poderá começar a desenvolver seus próprios jogos. Você também pode se juntar ao meu servidor Discord para se conectar com outros alunos e compartilhar seu trabalho. Então, se você estiver disposto a aprender os fundamentos do Unity e começar a jornada de desenvolvimento de jogos. Bem-vinda à minha turma. 2. Leitor: Olá e bem-vindo na minha turma. Hoje estamos fazendo unidade de jogos de corrida. Vamos criar um novo projeto e nomeá-lo algo como um jogo de corrida. Enquanto unidade está preparando um novo projeto, eu gostaria de mostrar-lhe o que estamos fazendo hoje nesta classe, vamos desenvolver controlador de carro simples a partir do zero, e vamos usá-lo no jogo real. Você pode baixar o veículo e rastrear na Unity Asset Store. Eu fornecerei links na descrição. O objetivo deste jogo simples será completar a pista o mais rápido possível. Nós também criaremos um temporizador para que possamos competir com nossos amigos e familiares. Mais tarde, você pode atualizar o controlador de descarte e usá-lo em seu jogo, pois oferece muita liberdade quando se trata de modificar. Então projete israelense, e primeiro, eu gostaria de reorganizar as janelas. Prefiro uma coluna exibindo a janela do projeto. E também não precisamos da janela do console agora. Tudo o que temos no início da cena da amostra, nossa câmera principal e luz direcional. Mais tarde, vamos criar mais desde 104 Menu Principal e assim por diante. Vamos adicionar novo objeto 3D ao cubo de cena e nomeá-lo terra. Nosso veículo vai dirigir neste cubo, então precisamos escalá-lo. Vou definir X e Z para 256. Vamos usar este objeto terrestre para desenvolver um protótipo do nosso controlador de carro. Para fazê-lo funcionar, precisamos criar uma nova camada de terra e vamos adicionar o nosso cubo a essa camada. Você pode usar qualquer slot vazio. Vou usar slot 8. Então precisamos voltar para o objeto de terra e definir sua camada para o chão. Agora estamos prontos para adicionar o player, criar novo objeto vazio e nomeá-lo jogador. Para os gráficos, revisitaremos a Unity Asset Store, onde você pode encontrar milhares de ativos gratuitos e premium. Estamos à procura de um veículo tratado que pode ser usado em R Novamente, você pode usar praticamente qualquer vacuole ácido como. Mas se você quiser seguir este tutorial e fazer exatamente o mesmo jogo, Eu vou fornecer links para os ácidos que eu estou usando. Vou baixar este pacote gratuito porque ele tem um monte de carros diferentes e personalizáveis. Depois de baixar os ativos, ainda precisamos importá-los no próprio projeto. Para fazer isso, precisamos abrir o Gerenciador de Pacotes, que pode ser encontrado em Janela Package Manager. Em seguida, abra meus ativos e você verá todos os ativos que você baixou da Unity Asset Store. Encontre o pacote com veículos e importe-o no projeto. Depois disso, podemos encontrá-los, usou os gráficos do pacote importado, abri-lo, encontrar pasta chamada exemplos, e usar um dos veículos da pasta. Vou usar o pacote, arrastá-lo para a cena e colocá-lo dentro do objeto jogador. Como pode ver, preciso reposicionar meu jogador. Então eu vou selecionar o objeto jogador e ajustar a posição dele. Então, temos gráficos, e agora é hora de configurar o nosso jogador, selecionar o objeto jogador e adicionar novo elemento 3D a ele. Desta vez, usaremos a esfera. Na verdade, nosso controlador de carro estará movendo esta esfera ao redor e o corpo irá segui-la. Vou aumentar o raio do colisor de esfera para um. Assim, podemos detectar colisões com outros objetos. Também podemos desativar Mesh Collider para tornar nossa esfera invisível. Para mover esfera e jogador ao redor, precisamos anexar um corpo rígido sobre ele, que dá aos objetos algumas habilidades físicas. Vou mudar a massa para 70, arrastar e angular Jack para quatro. Defina a interpolação para extrapolar. Isso fará com que o movimento de objetos do jogador inteiro argamassa, e mudar a detecção de colisão para contínua. Precisamos adicionar mais um objeto vazio ao jogador. Vamos usar este objeto para detectar em que camada estão realmente dirigindo. Vou chamá-lo de verificação de terra. Reproduz este objeto na metade inferior do jogador. E mais tarde, se você tiver algum problema com a detecção de outliers, tente reposicionar esse objeto, uma vez que ele pode não ser colocado corretamente agora. Ele realmente depende de seus gráficos e tamanho da esfera. Para mim, isto deve funcionar. Espero que sim. Finalmente, podemos começar a codificação, selecionar o nosso player e adicionar novo script chamado controlador de carro, e clique duas vezes em novo componente para abrir o script no Visual Studio, vamos escrever código no próximo vídeo. E depois disso, você terá um controlador de carro totalmente funcional que pode ser usado em um jogo real. Vejo vocês no próximo vídeo. 3. Controlador: Estamos de volta e é hora de começar a codificar nosso controlador de carro. No script que criamos anteriormente, precisamos declarar algumas variáveis. O primeiro será corpo rígido público. Vou nomear o meu RB. Isso se conectará a um corpo rígido da esfera com o script. Então precisamos de um monte de variáveis de flutuação pública para a frente e a velocidade inversa. Vou definir valores para 105. E é claro que você pode alterar esses valores sempre que quiser. Próximo período, vertente, ou quão duro nosso carro pode virar nas curvas. A força da gravidade é bastante auto-explicativa. Raio de Jack, e o arrasto afetará nosso carro dependendo da superfície. E por último, Max vai girar para girar as rodas dianteiras do nosso carro. Depois disso, Vamos declarar a flutuadores privados, entrada de velocidade e entrada de volta. Vamos armazenar a entrada do usuário nessas variáveis e outra variável privada. Desta vez precisamos Boolean para verificar se o rival está aterrado ou no meio do salto, então precisamos dizer ao nosso script qual camada no jogo representa o chão. É por isso que estamos tornando esses wearable público. Por último, três variáveis de transformação pública. Aterrar, verificar esquerda, roda dianteira, e escrever roda dianteira para conectar. Somos Clip Art com descript. E é isso para as variáveis. Podemos passar para o método de início, onde precisamos apenas de uma linha de código por enquanto, vamos definir o pai do nosso corpo rígido para ser observado, que é a segunda parte de tornar o movimento de todo o objeto jogador mais suave antes que já tenhamos definido interpolação para extrapolar. Agora, vamos passar para a função de atualização. Tenho muito mais de codificação para fazer aqui. Primeiro, com cada atualização, vamos redefinir as entradas de velocidade para 0. E então vamos verificar se o usuário está pressionando algum dos botões para cima e para baixo. Na primeira declaração if, estamos aplicando velocidade para a frente multiplicada por 1000. Isso é no caso em que o usuário quer ir para a frente. Se o usuário estiver pressionando o botão, precisamos aplicar uma velocidade inversa novamente, multiplicada por 1000. Como eu disse antes, você sempre pode mudar esses valores ao seu gosto. Então temos entrada cuspir, mas vamos aplicá-lo ao veículo mais tarde em outra função. Agora, vamos fazer o nosso veículo capaz de transformar entrada de usuário loja real dos botões esquerdo e direito para virar variável de entrada. E imediatamente podemos girar a nossa reocorrência. Mas eu quero ter certeza de que nós Aquiles estamos de castigo quando estamos tentando girá-lo. É por isso que vamos usar outra declaração se, checando se estamos de castigo. E se estivermos de castigo, podemos irritar o carro. Precisamos fazer uso do nosso tapete aqui. Como você pode ver, eu estou multiplicando tudo com entrada vertical aqui. Você pode perguntar, por que não é entrada vertical para velocidade? E você está certo? Mas queremos ter certeza de que estamos curl é irritante quando estamos nos movendo para frente ou para trás e não quando estamos parados. E essa é a solução mais fácil. Girar as rodas é bastante semelhante, mas em vez de rotação, estamos modificando a Rotação Local. Primeiro, vamos girar a roda dianteira esquerda. E então podemos copiar esta linha e substituir a roda dianteira esquerda pela roda dianteira direita. Finalmente, estamos definindo a posição do jogador para ser igual à posição do corpo rígido. É isso para a função de atualização, todo o resto será escrito em sua função de atualização fixa. Qual é a diferença entre as funções de atualização e atualização fixa? Função de atualização é chamado para uma vez por quadro e atualização fixa é chamado exatamente 50 vezes por segundo. Então, quando queremos aplicar alguma física pesada para os objetos, recomenda-se o uso de atualização fixa. Primeiro, vamos declarar um re-cast h02 comestível chamado calor. Nesta variável, podemos armazenar informações sobre objetos que colidem com você. Vamos ver porque é que isto vem a calhar. Então vamos atirar em matriz invisível de nossos terrenos, verificar em direção abaixo. E se você bater em alguma coisa, vamos armazenar informações sobre este objeto em wearables de calor. Temos de dizer até onde queremos que a nossa taxa vá. E exatamente para isso, temos verificar a variável de raio. E, por último, precisamos especificar para qual camada estamos procurando. Então, em suma, se acertarmos jogador de terra está de castigo, teremos o nosso valor de verdade. Se não estiver de castigo será para nós. Também quero que o meu veículo tenha a mesma rotação que a camada terrestre sob o veículo. E é aí que podemos fazer uso do calor onde quer que vamos definir rotação do jogador para ser o mesmo que a rotação da camada de terra. Então, com a última declaração if, vamos verificar se estamos de castigo. Se sim, e se estamos tentando aplicar velocidade para a frente ou para trás, podemos finalmente fazer uso de entrada de cuspe a partir da função de atualização. Se você não estiver aterrado, então precisamos adicionar gravidade ao trabalhador para arrastá-lo para baixo. E isso é finalmente para o script de controlador de carrinho. Eu realmente espero que você ainda esteja comigo porque todas as coisas difíceis estão feitas. E agora é hora de ver o controlador de carrinho em ação. Certifique-se de salvar o script e voltar para o Unity. Na unidade, ainda precisamos conectar o script com alguns componentes do carro. Primeiro, arraste na esfera no primeiro slot vazio, onde precisamos fazer referência ao corpo rígido. Então precisamos dizer qual camada representa o solo. E por essa razão, criamos camada de solo mais cedo. Em seguida, arrastando o macaco de terra. E finalmente conecte as rodas dianteiras com o roteiro. Encontre qual liberação frente esquerda e qual é frente direita. Em seguida, arraste-os para dentro nos últimos slots vazios. E é isso. controlador de carrinho agora deve funcionar. Podemos, é claro, testá-lo. Você verá que a câmera não está seguindo o player, e vamos corrigir isso em breve. Mas os controladores parecem estar funcionando e as rodas também estão girando, como você pode ver. Então o controlador está pronto se você tiver algum problema, tente assistir novamente o leitor ou me envie uma pergunta. No próximo vídeo, vamos fazer uma câmera seguiu o jogador. Então, vejo você então. 4. Seguir e Mini: Bem-vinda de volta. É hora de descobrir como fazer a câmera seguir o jogador. Neste momento, a câmara principal está fixa num só lugar. Mas eu queria seguir a aquarela quando estávamos dirigindo. E isso é muito fácil de fazer. Vamos usar pacote embutido chamado máquina de Cinema. Mais uma vez, precisamos abrir o Gerenciador de Pacotes. Você vai encontrá-lo em Gerenciador de Pacotes de Janelas. Em seguida, exibir todos os pacotes no Unity Registry e procurar máquina de cinema. Clique em Instalar e aguarde até os pacotes estarem prontos. Depois disso, você vai encontrar folha de cinema na barra de ferramentas superior. Selecione a primeira opção, que é criar câmera virtual. Essas novas câmeras virtuais receberão instruções sobre o que seguir e como segui-la. Então, finalmente, seu objeto de câmera na hierarquia. Vou renomear meu para câmera virtual. Então precisamos especificar qual objeto queremos seguir com a câmera. Para fazer isso, basta arrastar o objeto player para dois slots vazios onde podemos dizer qual objeto queremos seguir e quais são os objetos que queremos olhar. Depois disso, tivemos muitas opções para modificar a câmera. Vamos mudar ligeiramente o ponto de vista para ter uma melhor olhada no carro e caminhão. Vá sob o corpo e ajuste siga deslocamento. Você precisará jogar com dois valores para encontrar a melhor visualização para o seu jogo. Eu acho que para mim, Por que pode ser entre 34 e z em torno da barragem ou 12? E é isso para a câmera. Agora, vá e teste. Como você pode ver, minha câmera está seguindo o jogador e eu posso finalmente dirigir por esses cubos chatos. Mas em breve teremos uma corrida de tratores adequada, não se preocupe. Você também pode ver que o movimento não é tão suave como queremos que seja. Felizmente, há uma solução fácil para esse problema. Na janela do projeto. Crie um novo material de física, e nomee-o como quiser. Vou simplesmente deixá-lo como está. Em seguida, ajuste o atrito para 0. E agora podemos aplicar este material a Box Collider de objeto terrestre. Com esse centavo, o movimento do carro deve ser suave. Testado fora. E o contêiner do carro Wallah funciona perfeitamente. Temos movimento suave do carro e podemos finalmente usá-lo em trilhos ferroviários. Mas antes de continuarmos, gostaria de testar mais uma característica neste controlador de carro. Se você se lembrar, nosso controlador tem a capacidade de ajustar o ângulo do veículo ao ângulo da superfície. Então vamos adicionar mini saltou para o jogo para descobrir se ele funciona. Podemos usar cubo 3D. Novamente. Vou renomear o meu para saltar. Então precisamos aumentar a escala. Vou definir X e Z para 10. Também precisamos modificar a rotação extra, e é claro, precisamos ajustar a posição. E assim, temos um salto testado e parece que tudo funciona bem. Agora, vou remover este objeto de salto e fazer outra corrida pela extremidade maior com material personalizado. Então, será mais visível. Basta criar novo material, definir cor personalizada e aplicado ao salto. Você vai ver que eu esqueci de definir a camada do objeto de salto para ser moído. Então é por isso que estou perdendo velocidade no salto. Basta definir a camada dos objetos de lixo para ser moído e tudo vai funcionar perfeitamente. Finalmente, temos controlador de carro totalmente funcionando pronto, e é hora de usá-lo em um jogo real. E isso é exatamente o que faremos no próximo vídeo. Então, vejo você então. 5. Menu principal simples simples: Parte importante de qualquer jogo é o menu principal, e eu vou mostrar-lhe como fazer um. Claro, este menu será muito simples com apenas dois botões. Mas depois desse capítulo, você também será capaz de criar menus mais complexos. Então, vamos ao trabalho. Agora mesmo. Estamos no padrão parecia também chamado cena de exemplo para o menu principal. Grande nova janela de projeto sênior e nomeie-o manual. Clique duas vezes sobre ele. E podemos ver uma nova cena vazia, como antes. Mudar a vista para 2D porque o menu será bidimensional e podemos começar a adicionar elementos à tela. Você vai encontrar em elementos desnecessários em Interface de usuário ou UI curta. Primeiro, precisamos adicionar Canvas, que servirá de base para outros elementos como fundo e botões. Você pode renomeá-lo ou simplesmente deixá-lo como uma tela de desenho. Isso realmente não importa. Próximo elemento, que vamos adicionar em Canvas é imagem. Este será o nosso passado. Você pode definir a cor do plano de fundo para qualquer cor que você gosta. Para mim, este cinza escuro fará o trabalho. Também precisamos esticar nossa imagem para cobrir toda a tela. Isso é para o fundo. Você pode, claro, adicionar sua própria imagem personalizada para o fundo ou jogar com cores. Agora, precisamos de alguns botões. Mais uma vez, vá sob UI e encontrar elemento chamado botão. Meu menu terá dois botões, jogar e sair. Este será o meu botão Play. Quero remover a imagem de origem, mas não é necessário. Pode deixar, se quiser. Eu também gostaria de ter uma cor realçada diferente para quando o usuário passa o mouse sobre o botão. Vamos com ameaça e disse navegação do botão para não pressionar Play. E vamos ver se o botão fica vermelho quando vamos ao nosso RET Marte. E, de fato, faz. Ótima. momento, este botão é meio pequeno e eu quero redimensioná-lo. Vamos twittar para 200 ou 300 e altura 200. Certo, ainda precisamos mudar o texto na parte de baixo. Se você estender o botão, você pode ver que o texto é elemento separado. E se clicarmos nele, somos capazes de modificar tudo, desde a cor até o tamanho e a fonte. Este botão irá exibir texto simples dizendo jogar. Font-style será careca e tamanho da fonte, digamos 50. Eu quero ter o alinhamento central em ambos os eixos e a cor do texto será a mesma cor do plano de fundo. Para obter o segundo botão, podemos simplesmente duplicar o botão Play, clique com o botão direito do mouse e selecione Duplicar ou pressione Command Plus D no teclado. Em seguida, defina a posição do segundo botão. Claro, precisamos renomeá-lo e precisamos mudar o texto para sair ou sair. Assim, temos dois botões e estamos prontos para adicionar funcionalidade a eles, o que significa que estaremos codificando. Novamente. Vamos criar um novo script chamado Gerenciador de menus. Podemos criar novo objeto vazio, que servirá como um gerenciador de menu. Ou você também pode anexar o script a qualquer objeto na hierarquia. Prefiro a primeira opção. Uma vez que temos script Menu Manager, podemos começar a codificação. Sempre que queremos trabalhar com cenas, precisamos importar Unity motor dot sin gestão. Isso nos permite carregar duas aparências diferentes do script. Podemos remover ambos os métodos padrão porque não precisamos deles agora. Em seguida, vamos criar novo método público chamado botão Play pressionado. Ele precisa ser público para que possamos usá-lo mais tarde dentro do Unity Editor. Quando o usuário pressionará o botão Play, este método será chamado e ele irá carregar nossa tela do jogo ou cena de exemplo. Vamos ver ao usar cena de carga ponto Gerenciador de cena, podemos melhor no nome exato da cena que queremos carregar, por exemplo, cena de exemplo. E precisa ser embrulhado entre aspas. Em vez do nome, podemos usar índice, que vou mostrar-lhe mais tarde como obter ou como descobrir o índice de cada cena. Mas eu não vou usar nada disso. Em vez disso, vou obter o índice de pecado ativo, que é manual. E neste caso, vou simplesmente carregar a próxima cena no método de hierarquia, que será chamado quando o usuário pressiona o botão de saída é ainda mais simples. Mais uma vez, tem de ser público. O meu é chamado botão Sair pressionado. E a única linha de código é como este aplicativo, não sair. E é isso. Mas estes não funcionarão dentro do editor Unity. Só funciona quando exportamos o jogo. É por isso que estou adicionando o log de pontos de depuração para ver se o botão funciona, salvar o script e voltar para o Unity. Precisamos conectar esses dois botões com funções que só mundo selecionar botão Jogar e adicionar novo evento onclick na lista. Em seguida, arrastando o objeto com o script Gerenciador de menus. No meu caso, isso é objeto gerenciador de menu e encontrar Play botão pressionado método. Repita o processo com o botão Sair. Mas é claro que desta vez selecione botão Sair pressionado método. Estamos quase terminando. Eu ainda preciso mostrar a vocês como adicionar cenas ao final construído e como obter índice de cada cena. Para esse efeito, Vou criar novos jogos parecem mostrar-lhe como operar com várias cenas. Mais tarde, não usaremos essa cena exata. Então você pode apenas me ver demonstrando esse processo. Vá em Configurações de compilação de arquivo. E você verá que nossa lista de cenas em construção está atualmente vazia. Vou adicionar menu e jogo a esta lista. Como você pode ver à direita, cada cena tem próprio índice a partir de 0. Então, se eu quiser carregar, digamos menu, Eu posso simplesmente digitar 0 no Gerenciador de cena e menu será carregado. Agora podemos tentar se tudo funcionar. Então feche a janela, voltamos mais tarde. Pressione Reproduzir e vejamos o que acontece quando eu pressionar sair. Botão Sair pressionado mensagem, o que significa que o botão de saída funciona. E se eu pressionar Play, GameScene está carregado e ótimo. Mainmenu está trabalhando com isso feito, é finalmente hora de adicionar pista de corrida de revezamento para o jogo. E é isso que vamos fazer no próximo capítulo. Vejo você então. 6. Trilha de corrida!: É finalmente hora de adicionar uma pista de corrida real para o jogo. Até agora, desenvolvemos o controlador de carrinho totalmente funcionando. E seria bom se pudéssemos testá-lo em uma pista de corrida. É por isso que visitaremos a Unity Asset Store mais uma vez e tentaremos encontrar uma pista de corrida ou uma estrada para o nosso jogo. Vou usar o pacote chamado pistas de corrida, que vem com dois mapas. E eu realmente gosto. Mas, claro, você pode usar qualquer pacote que quiser. Não tenha medo de explorar todos os ativos disponíveis no Unity Asset Store. Talvez encontres algo para o teu futuro jogo. Depois de escolher sua faixa, não se esqueça de baixá-la. Então podemos voltar para a Unidade. Como antes, precisamos usar o gerenciador de pacotes para importar uma pista de corrida para o projeto. Abra o Gerenciador de Pacotes da Janela, meus ativos. Encontre o seu pacote e importou meus custos de pacote que já preparou cenas, e eu vou usar um deles para o meu jogo. A cena que vou usar chama-se “Spring Track”. Este mapa é enorme e eu suponho que vai levar jogador de três a quatro minutos do início ao fim. Eu também planejo adicionar um temporizador para que possamos competir com nossos amigos, mas faremos isso mais tarde. Primeiro, vamos adicionar parece atual para as configurações de compilação. E, ao mesmo tempo, podemos remover cena do jogo da lista, porque não vamos usá-lo. Nós também precisamos adicionar todos os objetos vistos no jogador chão. É assim que funciona o controlador do carro. Finalmente, hora de adicionar à cena. Nós criamos jogador antes, na amostra pecado e podemos reutilizá-lo. Não precisamos criar um novo a partir do zero. Basta ir para o pecado de amostra, selecionar o jogador e arrastá-lo para a pasta Ativos. Desta forma, vamos criar prefab é um objeto que pode ser reutilizado quantas vezes quisermos. Em seguida, volte para a nossa faixa selecionada e simplesmente adicione o prefab do jogador à cena. Assim, ajuste a rotação. E estamos quase terminando. Ainda precisamos adicionar câmera virtual, como fizemos na primeira cena usando máquina de Cinema. Nós já sabemos como configurá-lo. Então vamos fazer isso. Queremos seguir o jogador e usar os mesmos valores de deslocamento como você fez antes. E agora, momento da verdade, vai funcionar? Pressione Reproduzir. E depois de alguns segundos, podemos ver que nossos controles do carro estão funcionando corretamente em uma pista de corrida real. Ótima. Mais uma vez, o movimento do veículo não é suave como deveria ser, pois ainda estamos recebendo algum atrito da estrada. Mas a boa notícia é podemos usar material físico que criamos no início da aula. má notícia é que precisamos aplicar material físico à área e a cada objeto de cena que tenha qualquer tipo de Collider, e isso pode levar algum tempo. Por isso, avançarei com esta parte. Ok, estamos prontos para tentar de novo. Desta vez, tudo deve funcionar corretamente. Pressione Play, e finalmente temos controlador de carro totalmente funcionando com movimento suave. Talvez não pareça tão na câmera, mas isso é porque eu estou gravando tela e meu computador não é realmente tão poderoso. Espero que você é controlador funciona também. Se não tentar repetir os passos anteriores ou me enviar uma pergunta, vamos encontrar solução juntos. No próximo capítulo, vamos adicionar um temporizador para o jogo, e eu já estou ansioso para ele. Mar. 7. o começo, termine e temporizador: Quando temos mecânica básica pronta, é hora de adicionar alguma interface de usuário para o jogo. Começaremos com um temporizador. Sempre que trabalhamos com interface de usuário, precisamos mudar a visão de cena para 2D, mesmo que fizemos com o menu. Precisamos de uma base para o nosso uso de uma interface. E para isso vamos usar o Canvas. Vou renomear minha tela para você, mas não é necessário. Você pode deixar como está. Em seguida, em Canvas, vamos adicionar tomadas que irá exibir o tempo. Vou mover meu temporizador para o canto superior esquerdo. E, claro, ajuste a aparência de cada um ao seu gosto. Meu texto será em cor branca. A fonte será comprada. Tamanho da fonte 32 e alinhamento definido para o centro. Gostaria também de ter um segundo texto que exibirá um registro da faixa. Para fazer isso, vou simplesmente duplicar Timer Text e, em seguida, mover o texto do registro para baixo. Não se esqueça de renomear o segundo texto e talvez escolher uma cor diferente. Quero que meus textos sejam de cor vermelha, mas isso depende de você. Agora, precisamos criar um objeto vazio que servirá como um gerenciador de jogos ou um manipulador de jogos. Pode dar o nome que quiser. Vamos escrever o script manipulador de jogos, que vai cuidar do tempo e salvar nossos tempos recorde. Então crie um novo script e abra. Primeiro. Se queremos trabalhar com interface de usuário, precisamos importar motor Unity wi. Segundo, precisamos declarar algumas variáveis. Vamos começar com dois wearables texto público, Timer, Texto, textos de registro de entrada. Esses armazenarão texto que queremos exibir em um jogo. Neste jogo, tempo passado, digite tempo recorde. Então precisamos declarar para variáveis flutuantes privadas, temporizador e registro. Esses armazenarão valores de tempo reais no fórum flutuante. O valor padrão do temporizador é definido como 0. E última variável será booleano privado chamado temporizador em execução. Esta variável será usada para iniciar e parar o temporizador, e teremos um valor padrão de força. Essas são todas as variáveis que precisamos. E podemos continuar com o método de início. O método de início, vamos bloquear o ponteiro do mouse para a tela do jogo para evitar que ele vá da tela. Podemos fazer isso com uma linha simples de código, definindo o estado Pointer Lock como bloqueado. Então algo um pouco mais complicado, mas vou tentar explicar tudo ao longo do caminho. Quando GameStart, queremos verificar se temos algum valor salvo para tempo recorde. Porque se tivermos, podemos exibi-lo na tela e o jogador saberá a que horas ele ou ela precisa bater. Se não, vamos definir os registros foram capazes de 0 porque estamos operando com dados simples. Temos apenas um fluxo para comestível. Na verdade, podemos usar o Borrão, talvez, para salvá-lo. Podemos salvar valores diferentes sob chaves específicas que precisamos especificar. E porque estamos economizando tempo recorde, vou nomear meu disco de tinta. Pode dar o nome que quiser. Apenas tenha cuidado ao soletrar. E se você precisar acessar a chave prefs do amostrador várias vezes, seria uma boa prática declarar string privada comparável com nome da chave e, em seguida, usar essa variável em vez de digitar o nome da chave novamente e novamente. Na primeira declaração if, estamos verificando se temos chave de registro existente e se fizermos, estamos aplicando seu valor para a variável de registro. Se não, estamos simplesmente definindo caractere para arável para 0. Antes de saltar no método de atualização, eu gostaria de declarar novo método chamado tempo de exibição, que também terá parâmetro defeituoso chamado Tempo para exibir. Neste método, vamos tomar float wearable com o nosso tempo atual e vamos exibi-lo em formato específico usando o nosso texto temporizador. Vamos dividir o tempo para exibir onde quer que seja em minutos, segundos e milissegundos. Para obter minutos, precisamos dividir o tempo para exibir onde wl por 16, porque há 60 segundos em um minuto, é claro. Então, para obter segundos, precisamos usar operador modulo. Novamente, estamos dividindo o tempo para exibir variável por 60, mas desta vez estamos recebendo o resto dessa operação, e isso representa nossos segundos. Para obter milissegundos, precisamos multiplicar o tempo para exibir por 1000 e, em seguida, dividi-lo por 1000. E o resto da operação representa os milissegundos. Estamos novamente usando operador modulo. Agora, para exibir esses valores na tela, precisamos especificar o formato de Timer Text. Em primeiro lugar, haverá minutos. segundo lugar é quatro segundos, e terceiro lugar, quatro milissegundos. Entre minutos e segundos, haverá dois pontos, e entre segundos e milissegundos, será ponto. No método de atualização. Vamos usar se instrução para verificar se temporizador está em execução. Se sim, vamos adicionar tempo ao tempo disponível e exibir um novo horário. Caso contrário, vamos simplesmente exibir o tempo na tela. Claro, ainda precisamos de uma maneira de começar e parar o temporizador. É por isso que vamos criar dois métodos públicos. Um para iniciar um temporizador e para e parar o temporizador. No primeiro, vamos definir o temporizador correndo variável como true. No segundo, vamos definir um temporizador em execução valioso para forçar e garantir que ambos os métodos são públicos, que possamos chamá-los de outros scripts. Nós também vamos criar um método privado para exibir um tempo recorde na tela. O meu será chamado de registro de exibição, e vai levar parâmetro float chamado seu registro. Para transformar um parâmetro de registro em segundos, minutos e milissegundos. Podemos copiar o código do método de corante exibido. Apenas certifique-se de substituir todos os nomes das variáveis. Em vez de tempo para exibir, use um registro e em vez de texto temporizador, precisamos usar os registros txt. Em seguida, voltar para iniciar método e abaixo se instrução chamada exibir um método de registro com a variável de registro como um parâmetro. Então, quando o tempo recorde do GameStart será exibido na tela e saberemos que horas temos que vencer quando terminarmos a corrida. Queremos verificar se estabelecemos novos recordes. Podemos usar o método de diamante parar para que, porque este método será chamado exatamente quando passamos a linha de chegada. Com cada declaração, vamos verificar se nosso tempo é melhor do que o tempo recorde. Se for, economizaremos nosso tempo como um novo recorde. Nós também vamos economizar nosso tempo como eu gravar quando tentamos pela primeira vez levantar esta faixa e nosso registro atual é 0. Após declaração IF, certifique-se de chamar a função de exibição registros mais uma vez, Dan salvar descript e retornou à unidade. Como você pode ver, temos dois novos slots vazios no manipulador do jogo, um para o texto do temporizador e um para o texto do registro. Certifique-se de conectar ambos os elementos da interface do usuário com slots corretos. Ok, então o nosso temporizador está pronto. A única coisa que falta é um gatilho que vai começar e parar o temporizador. Basicamente, precisamos de algum tipo de linha de início e de chegada. Para isso, podemos usar cubo 3D simples, escalá-lo e ajustar a rotação. Vou definir x para 22 y 210. Este grupo já tem um colisor de caixa, que significa que podemos detectar quando estamos passando frio um cliente estrela. Apenas certifique-se de definir o colisor para ser acionado para que o veículo possa passar por este objeto para torná-lo invisível. Vou desligar o renderizador de malha. Como parte do objeto de inicialização, vou adicionar dois pilares em cada lado da estrada, para que o jogador vai saber onde reiniciar. Vou usar o cubo 3D novamente, mas desta vez eu preciso dimensioná-lo para baixo. Vou definir o valor X como 0,1. Mova o primeiro bilhão em sua posição. Então podemos duplicá-lo e temos o nosso segundo pilar, quatro outro lado da estrada. Reserve pilares na posição correta e renomeá-los se quiser manter um projeto organizado. Agora é hora de adicionar funcionalidade, selecionar objeto de inicialização e criar novo script chamado Iniciar ou algo parecido. Então abra. Exclua ambos os métodos padrão porque não vamos usá-los. Este script terá apenas um trabalho para iniciar o temporizador. E para iniciar o temporizador, precisamos chamar o método de temporizador de início dentro do script manipulador de jogo, que significa que precisamos de uma referência pública para o script. É por isso que vamos declarar jogo público variável entregue. Você pode nomeá-lo novamente como quiser. O meu será chamado de manipulador de jogos. Se você se lembrar, Box Collider neste objeto é gatilho, o que significa que quando vamos colidir com Iniciar objeto No gatilho Enter método será chamado. E lá podemos chamar método de início temporizador usando nossa referência manipulador de jogo. Isso é tudo para o script de início, salve-o e retornou à unidade. Temos um novo slot vazio e precisamos arrastar o objeto com script manipuladores de jogo. No meu caso, esse é o objeto Game Manager. Assim, temos conectado manipulador jogo que linha de partida, e temos o nosso peso para iniciar o nosso temporizador. Falando de um gerenciador de jogos, vou renomeá-lo para manipulador de jogos para evitar qualquer confusão. Para parar o temporizador irá repetir todos os passos. Mas em vez de temporizador de início, vamos chamar um método de temporizador de parada, duplicar objeto de início e reposicioná-lo. Não muito longe porque precisaremos testar o temporizador se tudo funcionar como deveria. Renomeie o objeto para concluir e remover o script de início. Vamos criar um novo script chamado Finish. Casaco será muito semelhante ao script de início. Apenas diferenças. Estamos chamando o método do temporizador de parada. É isso. Salve o roteiro e volte para a Unidade. Certifique-se de conectar script concluído com manipulador de jogos. E nós dímero da dívida deve ser feito para trabalhar. Claro, há apenas uma maneira de descobrir pressione Play. E vamos ver, sim, parece que nosso temporizador está funcionando muito bem. E para gravar o tempo também funciona como deveria. Claro, eu não gosto atualmente fora de elementos de texto quase no meio da tela. Então vamos movê-los. Podemos anexar temporizador leva ao canto superior esquerdo e gravar leva ao canto superior direito. Por enquanto, você pode ajustar esse layout ao seu jogo, mas por enquanto, isso fará muito bem. Agora o que podemos fazer esta corrida um pouco mais longo. Então vamos mover a linha de chegada mais abaixo da estrada. Você pode movê-lo todo o caminho até o final da pista. Mas para eu testá-lo, é o suficiente. Caso contrário, este capítulo será muito longo. Como fizemos esta corrida mais longa, também precisamos limpar jogador um, talvez porque o recorde de pista atual foi definido em pista muito mais curta e seria impossível quebrar. Para limpar as prefs do jogador, vá para Editar Limpar todas as prefs do jogador e pressione Sim para confirmar. E é isso. Fizemos jogo simples com controle de carro básico em que você pode construir em outra tarefa. Mas acredito que tudo está funcionando como deveria estar. Meu jogo é atualmente um pouco laggy. Mas isso só por causa do meu computador ter tempo difícil ao redor e mecanismo de comunidade e gravação de tela ao mesmo tempo. Espero que tudo funcione no seu jogo. Caso contrário, tente repetir as etapas tomadas neste capítulo, você pode me enviar uma pergunta a qualquer momento. Fico sempre feliz em ajudar. 8. Projeto do curso: Juntos, criamos mini jogo de corrida usando nosso controlador de carro. Para o jogo, temos usado atrair do pacote importado, tentou fazer outro mini jogo usando a segunda faixa do pacote importado ou importar pacote completamente novo da Unity Asset Store. Nós também criamos um menu principal muito simples com apenas dois botões. Tentou adicionar mais botões. Por exemplo, botão para a faixa 1, segundo botão para a faixa dois. Desenvolvemos o controlador de carro símbolo com mecânica básica. Tentou atualizar este controlador de carro com mecânica avançada e experimentar com valores diferentes ou declarar duas variáveis. Se tiver alguma dúvida ou problema, pergunte-me aqui, juntaram-se à discórdia. E isso é tudo para esta aula. Neste momento, estou convidando você para checar minhas outras aulas. Criei tutoriais sobre como fazer plataformas, tiro em primeira pessoa e jogo em terceira pessoa. link para a minha masterclass está abaixo. Obrigado por vigiar a minha turma na próxima.