Bem-vindo de volta meus colegas desenvolvedores de jogos em um novo vídeo.
Como você pode ver, adicionamos alguns quartos ao nosso jogo.
Adicionamos alguns caminhos ao nosso jogo agora nosso nível,
ou na verdade eu deveria ter dito nosso nível.
Agora nosso nível parece muito bom.
Você sabe que a máquina Cinna realmente adicionou algum sabor ao jogo,
o que nos deu a capacidade de correr e fazer níveis maiores e mais interessantes.
Mas essa não é a única coisa que é muito legal.
Se eu executar o jogo, olhar para a cena,
você pode ver que agora temos portas que estão impedindo nosso caminho de se mover.
E estas serão as portas que costumávamos ir para
o próximo nível depois de matarmos nossos inimigos,
obviamente precisamos matar nossos inimigos.
Mas isso não é da nossa preocupação agora.
Mais tarde, será.
Mas, por enquanto, não vamos perder mais tempo e vamos começar.
E estaremos aprendendo cheio de coisas incríveis, incrível caso 0.
Então, vamos seguir em frente e criar portas.
Quais são as portas?
Eu criei a porta já,
você pode vê-los aqui.
Vou lhe fornecer a porta e os recursos,
mas é bastante simples.
Tudo o que fiz foi recortado onde está?
A foto principal?
A imagem principal.
E basta usar a porta que já estava disponível lá.
Então agora podemos ir em frente e adicionar a porta ou vamos adicioná-la aqui.
Então temos a porta,
colocamos a camada talvez no jogador ou podemos definir a camada no, em uma porta separada.
E o que essas portas vão fazer é seguir em frente e fechar
esses dois caminhos que eu também criei e não falei sobre isso.
Então, qual é o objetivo do nosso jogo?
Como vamos fazer a transição de nível para nível?
Assim como vimos no jogo de hades.
Toda vez que matarmos todos os inimigos,
teremos essas duas barricadas.
Teremos esta porta e uma segunda.
Então aqui duas portas.
E quando matamos todos os inimigos,
simplesmente desativaremos as portas.
E isso permitirá que nosso jogador se mova através e para o caminho onde
ele encontrará dois portais aqui e ele pode passar por eles.
Mas não vamos nos antecipar.
Vamos antes de tudo começar certificando-se de que
essas portas funcionem e o que mais queria lhe dizer? Oh, tudo bem.
Então, se você entrar nessa paleta de azulejos aqui,
você pode ver que podemos adicionar essas duas âncoras ou onde quer que você, esses caminhos aqui.
Mas o problema com esses caminhos,
se eu clicar na grade e na parede,
você pode ver que eles também impedirão o jogador de se mover.
Então, o que eu quero dizer?
Eu me certifiquei de que este é o chão e estes são a parede.
E se eu, por exemplo,
executar o jogo, você verá que posso andar por aí em todos os lugares.
E se eu passar por aqui,
você pode ver que eu não posso mais me mover.
E isso é porque temos um colisor embaixo e isso é
algo que teremos que consertar para passar por eles, obviamente.
Então, como vamos consertar isso?
Bem, se entrarmos em nosso conjunto de azulejos aqui,
os cones, se rolarmos para baixo,
podemos encontrar a imagem aqui.
Vá para o inspetor,
selecione o Sprite Editor.
Abra isso.
Se passarmos do Sprite Editor para a forma física personalizada,
vamos clicar aqui.
Você pode ver que se nós, Onde está, ok,
então a âncora e aqui,
se clicarmos em um desses, podemos gerar.
E agora temos os pontos âncora da física.
Então é assim que o colisor será renderizado neste sprite.
Então, vou me certificar de que é muito ou nem pequeno.
Vou me certificar de que é cerca de 0.
Então, aproveite isso assim, assim,
e finalmente, minta isso.
Vou aplicar as alterações e esperar por apenas um segundo.
Levará um pouco de tempo para mudar os colliders e o jogo Além disso,
talvez tenhamos que desenhar esse preço novamente.
Ok, ótimo, então este está acabado.
Vamos gerar neste bloco.
Também. Mova para cá.
Não precisamos movê-lo para baixo como o do meio.
Podemos simplesmente movê-lo para a direita.
Aplicar. Agora, o colisor só estará deste lado.
E, finalmente, encontre qualquer dia.
Agora, podemos clicar no último,
gerar OK. Não o último.
Na verdade, ainda temos mais dois a fazer.
Então.
Agora que você sabe como isso é feito,
eu vou fazer o acima e
obviamente espero que você esteja fazendo isso ao mesmo tempo comigo.
Isso não é um desafio.
Isso é só nós tornando nosso jogo muito melhor.
Então, gere, gere, mova isso para a esquerda,
eu aplico as alterações.
E por algum motivo é extremamente lento.
Achei que poderia ser um pouco mais rápido.
Então, vamos lá, Generate.
Mova isso aqui.
É assim, assim.
Aplicar.
E estou tão animado para mostrar como tudo isso vai funcionar.
Final, gerar o quão chato é isso?
Sim, é.
Sei que é por causa do tempo de espera que temos que esperar
pela unidade para gerar física.
Então eu acho que deveríamos ter movido isso para baixo também.
Deixe-me ver algo também deveria ter sido movido para baixo.
Assim mesmo. Agora aplicamos as alterações.
Agora, se voltarmos,
talvez devêssemos atraí-los de volta. Talvez não devêssemos.
Esse é o problema com limitado.
Se chegarmos perto quando a unidade do que abri-la,
talvez não encontremos esse problema.
Então, vamos ver o que temos.
Então lá vai você, as paredes ainda estão lá,
mas se eu escolher essa outra hora,
e eu desenhar isso, vamos dizer aqui.
Ok, então obviamente há algo muito errado aqui.
Oh, ok, então tivemos um pequeno problema técnico.
Agora, se eu clicar nas paredes,
pensei que para um secundário não funcionou, mas funcionou.
Agora, se você vir as paredes,
o colisor não está mais aqui e apenas nos lados em que se destina a estar.
Agora, quando executo o jogo, eu olho aqui.
Se eu subir, lá vai você.
Posso percorrer eles.
Agora, obviamente, há um problema que é que estou andando sobre eles.
Vamos consertar isso em um pouco,
mas por enquanto temos isso funcionando.
Talvez isso deva estar em uma camada diferente.
Não se preocupe com isso. Vamos continuar.
O que realmente precisamos fazer aqui?
E precisamos adicionar as duas portas fechadas.
Precisamos obter uma referência a eles e precisamos ter certeza
que sempre que o jogador estiver na sala,
queremos fechá-los.
Então, vamos começar.
A primeira coisa que queremos fazer é ir em frente e adicionar as duas portas.
Então vou entrar nas portas e vou selecionar no inspetor aqui.
E vou adicioná-lo na hierarquia, criar o
objeto primeiro que Gore se encaixa aqui.
Vou seguir em frente e defini-lo como o Charlotte o definiu como o jogador.
Não se preocupe com isso.
Vamos definir isso como camada, camada.
Então esta é a porta,
e eu vou duplicá-la.
Esta será a porta 2 e vou movê-la para o outro lado.
Ou você sabe, não vamos duplicar isso agora.
Primeiro, precisamos adicionar um colisor de caixa
porque não queremos jogar ou passar por esta porta.
Então, vou adicionar um box collider 2D.
E vamos ver como essa caixa se parece.
Certo, acho que parece bom o suficiente.
E agora vou duplicar esta porta.
Esta será a porta 2,
e vou movê-la para aqui.
Então agora esses dois caminhos estão fechados.
Vou executar o jogo.
Vou tentar entrar pela porta e lá vai você.
Você pode ver que eu não posso passar.
Excelente.
Agora, qual é o próximo passo?
O próximo passo é que vou prefabricar isso.
Vou entrar no pré-fabricado, clique com o botão direito do mouse.
Criar pasta, sala ou salas ou errado.
Isso será para qualquer coisa que envolva um quarto.
E eu vou prefabricar isso e chamarei isso de simplesmente a porta. Lá vai você.
E agora vou adicionar isso novamente nos prefabs.
Então, ele está ligado ao pré-fabricado.
Então, se alguma vez mudarmos alguma coisa,
essas mudanças estão acontecendo para tudo.
Ok, então vamos em frente agora e criar um objeto de jogo aqui,
que será chamado de sala.
Vou redefinir sua posição.
E esta sala terá uma criança chamada de portas.
E este será o objeto que manterá todas as portas que temos na sala.
Agora vamos criar um novo script aqui.
E vamos anexá-lo à sala,
e este será o gerente da sala.
Então, scripts, clique com o botão direito do mouse, vamos criar uma pasta para os gerentes.
E aqui vamos criar um script C-sharp para a sala.
Gerente.
Pressione Enter, aguarde que ele seja compilado.
Não, obrigado.
Eu não preciso disso agora.
E espere que ele seja compilado.
Ok, então salas, vamos adicionar o roteiro aqui.
Vamos abrir o gerente da sala.
E o que precisamos aqui?
Bem, precisamos ter uma
variedade de objetos de jogo que representarão as portas que queremos fechar.
Então, o objeto e a matriz do jogo,
que são as portas para fechar.
Salve isso.
E agora o que queremos fazer é criar um gatilho enorme em todo o mapa.
E, em seguida, verifique quando o jogador está dentro desta sala de gatilho.
E por que precisamos estar dentro da sala de açúcar?
Porque talvez.
Por exemplo, você quer que seu jogo tenha um nível um pouco maior.
Talvez quando você passar por algum tipo de porta,
as portas se fechem e então o nível começa e até você matar todos os inimigos,
então você pode sair da sala.
É por isso que eu queria seguir
esse processo de parada de ter portas fechadas somente quando o jogador está dentro do trono.
Então, vamos primeiro adicionar essas duas portas
para trancar isso nas duas portas das portas para fechar.
Lá vamos nós, salve isso.
E agora vou voltar e meu roteiro.
E aqui vou criar um booleano que será um campo serializado.
E essa será a porta fechada na camada.
Entre.
Salve isso.
E o que vamos fazer aqui enquanto vamos passar
por tudo isso no, no açúcar.
Entre.
Ok, isso deveria ter sido muito profundo.
E, na verdade, vamos criar o empreendedor entrar imediatamente.
E aqui vamos verificar se a
tag collision.com é a camada.
Agora vou trapacear porque já sei como o jogador está escrito.
E vamos verificar se a porta fechada no jogador entrar.
Ok, então agora queremos ir em frente e fechar nossas portas.
Agora temos esse array aqui.
O que devemos fazer?
Devemos passar por todos eles e fechá-los um a um?
Então eu deveria escrever porta para fechar, por exemplo,
0 ponto ativo para verdadeiro,
e depois fazer porta um,
porta a porta três.
Poderíamos fazer isso, mas há um problema e não sabemos quantas portas teremos.
Então, o que podemos fazer é que podemos fazer um loop através deles.
E um dos primeiros loops completos ou primeiros
que eu quero ensinar é o para cada loop.
Então, o que é um loop para cada?
Vamos ver como essa estrutura funciona.
Ele permite que você passe por cada coisa em
uma coleção de coisas do mesmo tipo em uma matriz.
Então, o que quero dizer com as coisas?
Então, digamos que tenhamos um tipo que, no nosso caso, é o objeto do jogo.
A coisa é a porta nas portas que queremos fechar.
Então, o que fazemos, como diz, para cada porta,
que é do tipo objeto de jogo nas portas para fechar,
podemos ir em frente e fazer coisas com ela.
Por exemplo, podemos acessar algum método sobre a coisa.
Podemos usar a coisa em algum outro método e podemos executar outras coisas.
Então isso foi explicado o que queremos fazer?
Nosso objetivo neste vídeo é ir em frente e acessar ou percorrer usando o For Each,
queremos percorrer todas as portas e nos certificar
de que definimos todas elas ativas como verdadeiras.
Assim que o jogador entrar na sala,
tudo será fechado até que ele mate todos os inimigos mais tarde.
Então, com isso explicado,
vou lançar um desafio para percorrer todas as portas e fechá-las.
Então crie um loop para cada loop que passe por todas as portas endossadas fechadas.
Defina, cada porta para ativa.
E eu vou te dar uma dica.
Use o conjunto ativo como verdadeiro.
Já mostrei a você.
Tentei dar-lhe tantas mãos quanto possível.
Sei que talvez seja a primeira vez que você vê loops.
Esta é uma ótima oportunidade para tentar ver algo
pela primeira vez e tentar implementá-lo na sua frente sem que eu lhe ensine isso de
antemão.
Sei que é um pouco difícil.
Eu o beberia como um dos desafios mais difíceis,
mas não se preocupe com isso.
Leve seu tempo. Pause o vídeo,
tente fazer o seu melhor e te vejo daqui a pouco.
K, Como você conseguiu tudo isso?
Espero que não tenha sido muito difícil.
Então, o que vamos fazer é criar um loop para cada.
E como eu disse, vamos passar pelos objetos do jogo.
E podemos chamar isso o que quisermos as portas, as
portas que podemos chamá-lo de ABC você o que quisermos nas portas para fechar.
E o que faremos aqui é simplesmente acessar a porta,
ponto definido ativo. Verdade.
Salve isso.
De volta à Unity.
Vamos seguir em frente e ativar essas portas.
Então, digamos que eles estejam abertos.
A primeira coisa que entramos na sala.
Ok, também, eu não deveria ter clicado aqui.
Vou ligar para trás a sala.
Então, o que aconteceu aqui?
E isso é algo que eu sempre caio
pois tive o quarto e eu o tinha trancado.
Então eu escolhi as duas portas e cliquei nesta.
Então eu desliguei o quarto.
Na verdade, você pode ver aqui o que você escolher,
ainda é o quarto.
Então, o que vou desbloquear isso mostra as duas portas.
E eu vou fazer isso.
Vá em frente e desligue-os.
Vou para o quarto.
Vou adicionar um componente que será um enorme colisor de caixa.
Agora, o único problema aqui é que talvez o colisor verifique
o jogador e quando ele ainda não entrou na sala.
Então, vamos voltar aqui e ver no Trigger Enter.
Quando entramos no gatilho,
é quando esse método será chamado.
Então, vamos ver.
Não tenho certeza, às vezes é por causa de como o script é executado.
Então o script da sala FVA executado primeiro,
depois teremos a sala e,
em seguida, teremos o jogador.
Então, dessa forma, o jogador realmente entra.
Então, vou salvar isso.
Eu vou, ok,
então este é um gatilho quando eu tenho um erro.
Ok, então esse erro não é nada para se preocupar.
Execute o jogo.
Certo, então as portas não fecharam.
Vamos escolher fechar as portas no jogador entrar.
Certo, então lá vamos nós.
Funcionou. Então, espero que você tenha entendido qual era minha preocupação.
Às vezes, isso é o que acontece quando eu estava criando este jogo pela primeira vez.
Isso é o que acontece.
Então eu tive que criar algo diferente.
Mas notei que às vezes funciona, às vezes não funciona.
Eu só queria que você soubesse de antemão para que você não pense Oh,
Michael, toda vez um erro.
Agora, na verdade, espero que você goste.
Espero que você tenha feito o para cada desafio.
Sei que foi complicado,
mas essa é uma boa maneira de praticar suas habilidades de desenvolvedor de jogos.
Então, verei você no próximo vídeo, onde estaremos pegando
todos os inimigos que temos para que possamos matá-los e depois abrir as portas quando eles morrerem.
Então, verei você.
Certifique-se de preparar todos os seus arquivos.
Desculpe por isso.
E certifique-se de me deixar um comentário se você ainda não o fez.
Isso me ajuda muito.
Obrigado.
Vejo você na próxima vez. Ei, Michael aqui do futuro,
você pensou que se livrou de mim, mas não o fez.
Quando corremos o jogo,
notei algo que você pode ver que eu estava me
perguntando por que o esqueleto não estava atirando em nós e se eu tentasse atirar,
você pode ver isso imediatamente.
Eu tenho o efeito de impacto de bala.
Qual é o problema aqui?
Bem, porque estamos sentados dentro do colisor da sala,
estamos atirando e ele está interagindo imediatamente com ele.
Então o problema aqui é obviamente que são as camadas.
Então, o que queremos fazer é adicionar uma camada.
Podemos chamar isso de intocáveis ou o que você quiser chamá-lo.
Vou chamá-lo de camada da sala.
Pressione Enter.
E vou entrar na matriz e aqui nas configurações do projeto.
E vou me certificar de que a camada da sala não interaja
com as outras camadas da sala com as balas inimigas.
E talvez possamos até garantir que eles não interajam com nada.
Honestamente, não precisamos deles, exceto para o jogador.
Queremos ir em frente.
Mas, por enquanto, vamos garantir que eles não interajam com
a literatura de balas sobre se encontrarmos um problema,
isso pode ser problemático e saber o quê.
Só por esse motivo,
vamos desligar tudo, salvar isso.
Fechado do jogo.
As boas portas devem fechar.
E se atirarmos, algo ainda está errado.
Oh, obviamente, precisamos defini-lo como a camada da sala sim.
Crianças mudadas se você quiser executar o jogo ou não,
talvez as crianças não devessem ter sido mudadas.
Certo. Então a porta se fecha e podemos atirar normalmente.
Talvez as crianças não devessem ter sido trocadas
porque não quero que as portas sejam afetadas.
Vamos mudar isso para o padrão. Sim.
Crianças mudadas. Certo. Então agora podemos atirar nas portas,
mas podemos atirar nas paredes, caso as portas.
Sim. Tudo está funcionando bem.
Então, do futuro, estou saindo.
Vejo você no futuro.