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