Aprenda a criar jogos fazendo breakouts com o Godot | Michael Mcguire | Skillshare

Velocidade de reprodução


1.0x


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

Aprenda a criar jogos fazendo breakouts com o Godot

teacher avatar Michael Mcguire, Author | Programmer

Assista a este curso e milhares de outros

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

Assista a este curso e milhares de outros

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

Aulas neste curso

    • 1.

      Introdução à Skillshare

      0:39

    • 2.

      O que é breakout

      2:58

    • 3.

      Configurando o projeto

      8:24

    • 4.

      Criando o Remo

      6:54

    • 5.

      Ajuste do jogador

      1:05

    • 6.

      Criando a bola

      14:04

    • 7.

      Como criar os tijolos

      10:29

    • 8.

      O sistema de pontuação

      8:07

    • 9.

      Correção de erros após marcar

      2:01

    • 10.

      Contando

      6:06

    • 11.

      Jogo final e vitória

      15:13

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

Gerado pela comunidade

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

14

Estudantes

--

Sobre este curso

Volte para onde tudo começou — e comece sua jornada de desenvolvimento de jogos recriando um dos jogos mais icônicos de todos os tempos.

Neste curso para iniciantes, você vai aprender como recriar o jogo Breakout original de 1976 usando o Godot Engine gratuito e de código aberto. Este projeto se concentra nos fundamentos: código limpo, mecânica principal e simplicidade visual fiel — assim como o original arcade.

Você vai sair com uma compreensão mais profunda de:

Conheça seu professor

Teacher Profile Image

Michael Mcguire

Author | Programmer

Professor
Level: Beginner

Nota do curso

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

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

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

Transcrições

1. Introdução à Skillshare: Neste curso, vamos seguir em frente e criar um clássico que ainda é refeito até hoje, especialmente na plataforma móvel E esse jogo se chama breakout. Agora, o objetivo a partir daqui é que você tenha uma bola quicando nas laterais das paredes Você o salta da raquete e seu objetivo é quebrar todos os tijolos que você vê na Tijolos diferentes fornecem ou tijolos de cores diferentes fornecem quantidades diferentes de pontos Tudo bem. Isso é empolgante. Vamos começar a recriar esse jogo clássico que talvez você ou até mesmo seus pais tenham jogado ou ainda joguem até hoje 2. O que é breakout: seguir, nesta seção, faremos uma pequena alteração em Pong, que será um jogo chamado Este é de 1976, e um fato interessante sobre isso é que a tela era apenas preto e branco, mas tínhamos cores como essa, e tínhamos cores assim, como você pode ver na tela aqui, como você pode ver na tela aqui, porque eles realmente colocam um pouco de celofane colorido na tela Mas foi assim que eles foram colocados em cores porque a tela em si, como eu disse, era apenas em preto e branco. Agora, o que é fuga? Bem, vou jogar um pouco, mas esteja avisado de que há um pouco de brilho. Você pode ver meu mouse aqui no canto superior esquerdo da tela no momento. E se fôssemos jogar isso, podemos ver que o que basicamente temos aqui é uma bola quicando pelas laterais, batendo em uma raquete e sendo jogada de batendo em uma raquete e E eu estou fazendo isso fazendo o Breakout logo depois de Pong aqui porque, como você pode ver, apenas com base neles especificamente, já temos um tipo de sistema semelhante configurado com Então, vamos desenvolver a partir do que acabamos de fazer no projeto anterior. Agora, nós realmente não precisamos desse aqui no topo. Acredito que isso esteja apenas mostrando que esse é o primeiro jogador. Tecnicamente, é uma coisa de dois jogadores, mas cada pessoa se reveza de qualquer maneira, então vamos deixar isso como um jogador Além disso, o sistema de dois jogadores tinha uma grande máquina com ele, sim. O próximo aqui à direita do que ainda permanece no topo. Se eu seguir em frente, devemos ver números. Lá vamos nós. Então, isso é acompanhar em qual bola você está. Então você está na bola um, bola dois, bola três. Depois de acertar a bola quatro , o jogo termina. E o número aqui no canto que estava piscando, são os pontos que você ganha Tijolos amarelos dão um ponto, tijolos verdes dão três pontos, tijolos laranja dão cinco pontos e tijolos vermelhos dão Agora, seu objetivo é limpar completamente o tabuleiro de todos os tijolos. A bola acelera, fica mais difícil. E como você pode ver aqui, em comparação com Pong, você tem uma raquete bem pequena aqui. Para fazer isso funcionar. Agora, quando você vence o jogo, tenho certeza de que o jogo é reiniciado da mesma forma que faria se você terminasse o jogo de qualquer maneira Então, podemos usar a mesma lógica com isso, quer ganhemos ou percamos, apenas fazendo um reset. Mas isso é uma fuga. Se você não sabia o que era isso, tenho certeza de que existem algumas versões modernas do jogo. Mas se você não sabia o que era isso , agora você sabe. E vamos começar a configurar nosso projeto. 3. Configurando o projeto: Então, para resumir aqui, acho que vou deixar a mesma resolução de projeto que usamos com o Pong Se você quiser mudar isso, é claro, fique à vontade. Novamente, isso está na tela de configurações do projeto e na janela. Mas vou ficar com o que eu tinha do último que fizemos em Pong Eu entrei no meu projeto criei uma pasta de discussão, é claro Se você vai definir o seu como um projeto separado, provavelmente o chamará de breakout porque é isso que é E quando você estiver pronto para começar, poderemos criar nossa cena principal, que obviamente não vai estar muito aqui quando pensarmos nisso. Acho que poderíamos colocar a valsa para isso. Queremos fazer isso? Sim, vamos fazer isso. Então eu vou criar dois D. Eu vou apenas cortar dois D aqui Isso me dará uma raiz. Eu não tenho dois D, o que está perfeitamente bem. Para isso, vou seguir em frente e fazer o que costumo fazer e renomeá-lo para dizer Meu Vou salvá-lo dentro da minha pasta de discussão. E como eu estava dizendo Glick Pong, vou salvar o meu como SCN, mas você pode deixar o seu como TSCN se preferir Tudo bem? Então eu tenho meu projeto aqui. Agora, o que precisamos? Nós precisamos? Bem, eventualmente teremos uma raquete, mas isso estará na seção de jogadores Precisamos da bola. A bola terá sua própria seção. Podemos colocar os rótulos para a interface do usuário, certo? Então, precisaremos de uma vaga para marcar pontos, e precisaremos de uma vaga para acompanhar as vidas ou a bola em que o jogador está. E precisaremos de paredes ao redor da coisa toda. Então eu vou subir. Vamos fazer uma camada de tela, assim como sempre fazemos com nossos Gooeys Então, vou renomeá-la como GUI. É aí que vou fazer minha etiqueta. Queremos manter a precisão, podemos defini-la como uma. Tudo bem. Podemos chamá-lo de jogador. Honestamente, está perfeitamente bem Nós realmente não precisamos fazer nada além disso. Em seguida, em vez de jogador, essa seria, eu acho, nossas vidas, certo? Vidas ou contagem de bolas. Bola atual. Sim, vou jogar a bola atual, e essa também começará como uma, por padrão. Agora observe, vou mudar as âncoras deste nosso contador de bolas para que fiquem no canto superior direito E vou deixar o alinhamento à esquerda, apenas para que seja afastado da borda E no player, vou mudar o alinhamento para o alinhamento horizontal para ficar à direita ou, novamente, afastá-lo da Essa é apenas uma preferência pessoal aqui. E precisaremos de mais dois rótulos. Então, vou duplicar o player aqui e baixá-lo. E eu vou chamar isso de uma pontuação. Eu acho que tecnicamente deveria chamá-lo rótulo de pontuação porque é isso que é E vou renomear a bola atual para o rótulo da bola atual. Porque não precisamos ter variáveis para ter exatamente o mesmo nome de outras notas na cena, e isso tornará as coisas um pouco confusas à medida que avançamos Obviamente, o rótulo de pontuação será de três zeros para nós aqui Tudo bem. Então, precisaremos de paredes montadas para nós. Então, nessas paredes, eu vou clicar de volta no meu nó principal. Vamos adicionar e as paredes não se movem. Então eu vou usar um corpo estático dois D. Lembre-se, eles não se movem de forma alguma, não importa o que os atinja Agora, esses são a única razão pela qual estou fazendo isso é porque eles estavam visíveis no jogo original. Então, vou adicionar um sprite two D ao meu corpo estático. E lembre-se, é um corpo físico e tem o triângulo amarelo para nos dizer: Ei, ele precisa de uma colisão Então, vamos adicionar a isso uma forma de colisão. E podemos seguir em frente e dar essa forma, dar a ela um retângulo Tudo bem. Sprite two D. Texture, vá fazer exatamente como fizemos antes Nova textura de gradiente, abra-a, abra nosso gradiente, selecione o preto, mude-o para E agora vou mudar o tamanho dela. Reduza isso. Eu vou derrubar tudo. E vamos estendê-lo até o fim. OK. Então eu tenho uma parede aqui. Vou renomear meu corpo estático, digamos parede. Eu vou com isso selecionado. Oh, eu tenho que mudar minha forma de colisão também. Então, agora, vou pressionar o Controle D na minha parede aqui para fazer uma duplicata, mas há algo que você precisa ter em mente Se você está fazendo isso, como eu não posso simplesmente segurar aquela flecha. Aqui vamos nós. Basta arrastá-lo para cima. Aproximadamente centrado. Lá vamos nós. Se você estiver duplicando, às vezes há coisas que você precisa tornar exclusivas aqui Por exemplo, se eu pegar a forma de colisão aqui na minha primeira e a mudar, você vê que isso afeta as duas Então, o que realmente precisamos fazer é entrar em nossa parede, nossa segunda parede, e precisamos entrar em coisas como nossa forma de colisão na forma e nosso inspetor, ir até o menu suspenso e selecionar Make E agora, se mudássemos isso, isso não afetaria os dois. Isso só afetará um, porque agora eles são classificados como objetos separados, formas separadas. Então, eles não estão compartilhando o mesmo. Tudo bem. E precisamos de mais uma parede para atravessar o topo. Então, precisaremos estar em algum lugar ao redor do centro e precisaremos redimensionar esses objetos Corra para baixo. E vou comparar um tamanho aqui. Isso tem aproximadamente a mesma espessura. Tudo bem. E eu vou tirar meu sprite. Ajustes. Aqui vamos nós. Tudo bem. Agora eu tenho que fazer a mesma coisa com a forma. Mas lembre-se de que eu o dupliquei, então preciso entrar e torná-lo único antes de alterá-lo E agora eu posso entrar e manipulá-lo da maneira que eu quiser Alinhe isso. Excelente. Então, agora temos nossas três paredes montadas, e elas têm sua colisão. Então, se a bola bater nela, só temos que configurar o salto, e tudo ficará A parte inferior está totalmente aberta. Nossa raquete, podemos simplesmente dar um tapa nela. Quando fizermos nosso jogador, a bola, configuraremos isso mais tarde, e os tijolos, acredito, também faremos mais tarde, o que significa que acho que terminamos nossa configuração aqui Então vá em frente e vejo vocês na próxima onde continuaremos e começaremos configurando nosso remo 4. Criando o Remo: Vamos seguir em frente e criar a batalha pela fuga. Então, isso vai ser semelhante ao Pong, só que em vez de nos movermos para cima e para baixo, vamos nos mover para a esquerda e para a direita Então, em nossa cena principal. E se ainda não o fez, provavelmente deveria economizar, pois já se configurou. Podemos adicionar a ele um corpo de personagem dois D porque esse será o nosso jogador. Podemos adicionar um sprite dois D para que possamos exibir nossa raquete. E, claro, também precisaremos uma forma de colisão no corpo do personagem Então, vou renomear o corpo do meu personagem para ser chamado de jogador Sprite dois D, vou entrar na textura, nova textura gradiente dois D, selecione-a, abra o gradiente, pinte o preto, mude Eu posso ver que não está mudando automaticamente para nós, então vou usar o HDR e depois desligá-lo Agora, temos uma pequena raquete com isso, então vou derrubá-la Sim, talvez algo assim fosse bom. E vou adicionar uma forma de colisão. Vou mudar a cor disso para que se destaque. Vamos usar vermelho. E eu vou fazer disso um retângulo. Traga-o para ficar ao lado do nosso remo. Perfeito. Agora pegue nosso player e mova-o para baixo na tela até onde queremos uma boa posição inicial. Vou ter um espaço embaixo do meu jogador, embaixo da minha raquete Vou seguir em frente e rodar essa cena e dar uma olhada nela, ver se eu gosto. Sim, acho que é um espaço justo para colocar. Tudo bem. Então, vou agora até as configurações do meu projeto. Vou criar meus mapeamentos que vou usar neste Agora, neste caso, eu já tenho alguns desses que eu tinha anteriormente, mas acho que vou continuar com o tema, e vou sair para a esquerda e sair para a direita. Não, à esquerda, é claro, será A. À direita, será D. Claro, para você, elas podem ser teclas de seta, se você preferir. E agora nosso jogador precisa de um roteiro, para que possamos seguir em frente. Vamos ver. Res, jogador emergente. Sim, tudo bem Estendendo o corpo de um personagem para dois D, script escrito em GD. Tudo bem, crie. E tudo o que precisamos aqui é o nosso movimento. Então, se você se lembra de antes, tínhamos uma velocidade que era um int de algum número. Vou seguir em frente e defini-lo em 30. E vamos ver. Podemos entrar em nossa função, o processo físico, porque estamos lidando com movimento aqui, e podemos seguir em frente e usar mover e deslizar, embora talvez queiramos nos mover e colidir desta vez Nós podemos experimentá-lo. Veja o que acontece. Mova-se e colida e nós mesmos ultrapassaremos a velocidade E nosso ponto de velocidade X. Precisamos realmente obter nossas entradas primeiro Então, eu insiro o ponto em ação, pressionado, saio para a esquerda. Então, neste caso, vamos dar negativo no X. Então, digamos que a velocidade X seja igual a menos uma vez Então, digamos que a velocidade X seja igual a menos L se a entrada for pressionada como ação. Fuja, certo? Nós vamos fazer o oposto. Vamos fazer com que a velocidade ponto X igual a uma vez a nossa velocidade, e podemos dar uma olhada nisso Eu vou seguir em frente e comandar a cena. E acabei de perceber que não coloquei mais nada lá. Então, se eu bater uma vez, vamos nos mover, e isso é muito rápido. Então, provavelmente vou recusar muito isso. Vamos descer para cinco, e podemos tentar isso. E eu vou colocar nosso outro bloco lá. Caso contrário, o ponto de velocidade X é igual. Na verdade, você sabe o que posso dizer que, em geral, a velocidade igual a um vetor 20, e isso é o que vai nos dar um zero no X e zero no Y, o que é bom porque o Y não é afetado neste jogo para que é bom porque o Y não é afetado neste jogo E isso é mais fácil de ler do que fazer com que o ponto de velocidade X seja igual Quando diríamos que a velocidade é zero. Tudo bem, então vamos tentar isso de novo com nossa nova velocidade. Tudo bem? Eu gosto disso, mas pode ser um pouco rápido demais para o que estou procurando. Então, vou mudar isso, talvez eu tente três. E acredito que esteja atualizado, mas só por segurança, vou reiniciá-lo. Sim, acho que isso vai ser bom para minha velocidade. Então, se você quiser ir mais devagar, você pode. Se você quiser ir mais rápido, depende de você. Estou tentando ter em mente que a bola vai acelerar nas varandas, assim como acontece com o Pong Tudo bem. Ótimo. Então, eu tenho meu player configurado e, se eu parar de pressionar os botões, pararemos de nos mover juntos. Então aí está meu jogador. E a seguir, podemos criar nossa bola e fazer a bola apareça nela E talvez consigamos fazer o salto entrar aqui também. Talvez façamos tudo isso em um vídeo para o baile. Certo. Então, vejo vocês na próxima, quando tiverem sua raquete configurada, e começaremos a criar nossa bola para o E assim que tivermos a bola, vamos montar nossos tijolos. 5. Ajuste do jogador: Então você pode notar se eu entrar aqui. Lá vamos nós. Minha raquete ainda está se movendo quase da mesma forma, mas fiz algumas alterações e só quero mostrar isso para o caso de você ficar um pouco confuso ao vê-la Então, se eu for para o meu roteiro, minha velocidade agora está em 200. E o que estou fazendo de diferente é estou fazendo velocidade vezes Delta, e é isso que você deve fazer quando temos objetos com movimento aqui Agora, só temos que fazer isso com mover e colidir. Não precisamos usar isso com mover e deslizar porque mover e deslizar, no meu entendimento, é na verdade calcular isso por si só, certo? Mas se estivermos usando o Moving Cloud como estamos fazendo neste projeto, precisamos multiplicar nossa velocidade Delta . Tudo bem. Então, eu só queria juntar isso bem rápido antes de prosseguirmos e ver isso ficar confuso. E então talvez eu receba um monte de perguntas sobre isso por não mencioná-lo 6. Criando a bola: Vá em frente e crie nossa bola para o nosso jogo agora, certo? Então, vou entrar na minha página principal aqui, clicar em +, e vou usar o corpo dois de um personagem D. Vou renomeá-lo para Being Ball Claro, vai precisar de uma forma de colisão, certo? Isso faz sentido, e vai precisar um sprite para que possamos vê-lo Assim como nosso player, tudo bem, então nossa textura, você sabe para onde vamos com isso neste momento, borrife dois D, inspetor, textura, novo gradiente, dois D, abra o gradiente, selecione o preto, mude Lá vamos nós. Obviamente, isso é muito grande. Então, vamos reduzi-lo. Se. Até que ponto queremos atingir o gol? Traga tudo isso aqui. Não vamos rodar o jogo aqui tão rápido. Dê uma olhada. Hum, eu acho que está tudo bem. Provavelmente não quero ir além disso. No entanto. Se você quiser diminuir, nós certamente poderíamos. Coloque mais um de cada lado e faça algo assim. E eu vou ter que reiniciar a transformação disso. Então, com meu inspetor de bolas, transforme a posição. Vou clicar no botão de reset para poder colocá-lo de volta aqui no canto onde deveria estar. Colisão. Vou dar uma nova cor, usar uma forma verde, um retângulo e encolher aquele bad boy E agora temos uma bola. Agora, vou pegar aquela bola e vou reposicioná-la aqui. Até aqui embaixo. Porque a bola não aparece no jogador, mas logo acima do jogador, e depois é lançada Então, do jeito que vou fazer, antes de agora, acho que vamos deixar assim. Isso para a hora atual. E vamos ver. Vou adicionar um script à minha bola, verificar meu caminho, quebrar a bola, o corpo do personagem, dois D, GD, roteiro, certo, criar E o que precisaremos é uma direção inicial em que ele está correndo e em que está entrando. Então, podemos seguir em frente e entrar em nosso processo de física porque somos um corpo físico e estamos nos movendo. Nós podemos nos mover e colidir. Embora eu ache que vou usar o MoVen ide, talvez com este Precisamos do nosso ponto de velocidade X. Sim. E nossa velocidade Y. Precisamos definir ambas, e eu vou para Oh, não precisamos de uma constante Vou seguir em frente e criar uma variável chamada velocidade. Isso não será uma constante porque lembre-se de que nossa velocidade não precisa mudar com o tempo, pois está saltando E eu vou definir isso como igual a 30 inicialmente, e vamos dar uma olhada nisso. Então, por enquanto, vamos configurá-la para uma velocidade de apenas uma vez. E faremos a mesma coisa com Y, só que vamos torná-lo negativo, obviamente, para que suba por enquanto. E eu só quero ver a velocidade com que vai acontecer. Então, há 30. Essa parece uma velocidade de partida perfeitamente boa para nós. Acho que vamos fazer algo semelhante ao que fizemos com Pong, e veremos como isso funciona , até onde podemos ir com isso antes de fazermos qualquer mudança em potencial Então, eu vou ter uma direção H e uma direção V, então podemos passá-las para as nossas aqui, e eu vou começar nossa vertical com um menos um E é aí que nossas mudanças entram, certo? Então, com base no fato de batermos no chão, no teto e assim por diante. Então, vamos dizer se está no Whoops. Selar na direção B vezes é igual a menos um, então isso vai inverter a situação Mas não queremos fazer isso apenas no teto. Queremos fazer isso se também atingirmos o chão, porque o chão será quando atingir nosso padrão. Ou é Whoops, está no chão. Agora, isso pode funcionar. Isso pode não funcionar. Teremos que dar uma olhada e ver como isso funciona porque trabalhamos com Pong Sabemos como fazer esses saltos, então vamos dar uma olhada nisso Certo? Tudo bem. Então, vamos com o LF. Vamos trabalhar com o que sabemos que está em Wall. A direção H vezes é igual a menos um. Tudo bem, então vamos jogar isso e vamos dar uma olhada e ver no que acontece. Então a bola vai. Deve saltar aqui. Faz. Deve ricochetear no topo. Faz. Está caindo. Pode nos atingir. Pode bater na parede. Vamos ver. Isso vai nos atingir. Tudo bem, então parece que estamos pulando. Parece exatamente como Pong. Isso está funcionando perfeitamente, pelo menos por enquanto. Então, até onde podemos saber, temos nosso bounce codificado. Temos nosso player configurado. Agora, a diferença é que queremos acelerar isso. E vamos acelerar isso, não importa o que aconteça , certo Então, vamos seguir em frente e dizer, vamos seguir em frente e fazer velocidade mais igual Nós faremos isso se batermos em uma parede também. Então, devemos ver isso acelerando toda vez que salta, assim como fizemos Então, vamos ser pacientes e dar uma olhada. Há um salto, dois saltos, estamos em mais dez. Vamos chegar aqui em algum lugar. Boom, 15, 20, então devemos estar a uma velocidade de 50, 55, 60, e eu a saltei para baixo, então agora está fora dos Isso teria perdido a bola azeda. Mas queremos ter certeza de que temos uma velocidade máxima definida. Agora, qual é esse máximo, eu não sei. Teríamos que testá-lo. Vimos lá que chegamos a cerca de 55. Não foi tão ruim. Então, talvez possamos fazer uma velocidade máxima de talvez 100. Agora, como podemos manter isso em linha? Bem, teríamos que definir nossa velocidade. É igual a, e queremos obter o mínimo. Então, vamos dizer que o mínimo entre o que isso faz é nos retornar o valor mínimo dos argumentos que passamos. Então, se dissermos velocidade mais cinco, velocidade máxima, isso nos dará velocidade mais cinco ou nos dará velocidade máxima, qualquer que seja o menor número, e é isso que a velocidade será igual Então, ao fazer isso, a velocidade aumentará continuamente, mas nunca excederá a velocidade máxima aqui. Certo? E podemos fazer isso lá embaixo. O próximo. Lá vamos nós. E eu vou seguir em frente e salvar o que vi. E por enquanto, como eu disse, parece que tudo está funcionando perfeitamente bem para nós. entanto, queremos definir o spawn da bola quando começamos, porque normalmente há uma pequena pausa quando isso acontece, e então ela aparece acima do jogador, então vamos começar e colocar isso Isso estará dentro de nossa função de preparação aqui para a bola. E o que eu vou fazer Ah, sim. Você sabe o que? Isso é bom. Tudo bem, então vamos usar algo chamado await E acho que mencionei isso durante Pong, quando tínhamos a seção de fim de jogo ou a tela de vitória do jogo, como você quisesse chamá-la, aguarde, pegue a árvore de sublinhados, crie Podemos passar números três e um tempo limite de pontos. E então, com isso após o período de tempo predefinido aqui, fazemos o que vem depois disso, o que, no nosso caso, gerará a Tudo bem, então vamos em frente e podemos fazer Vamos ver. Então, em vez de ter 3 segundos predefinidos aqui, vamos fazer um Rd, é Randi ou Rand Eu acredito que é Randi. Quem, não é bem, não entra lá. Será por cento três mais um. Agora, isso é exclusivo, e isso significa que isso nos dará um número inteiro aleatório até o número três No entanto, como esse é um código, isso nos dará 01 e dois. E, obviamente, zero não será aceitável aqui porque precisamos de algum tipo de bônus. Então, eu estou fazendo mais um. Então, seja qual for o número que obtivermos, adicionaremos um a ele. Então, se chegarmos a zero, faremos mais um. Então, isso faz com que nosso número mínimo seja um. E então, se realmente obtivéssemos um, isso se tornaria dois. Se tivéssemos um dois, isso se tornaria um três. Então, agora estamos recebendo 1-3, isso. Tudo bem. Então, vamos esperar um período aleatório de tempo. E então definiremos nossa posição para estar onde quer que o jogador esteja no momento. Então, diremos que a posição global é igual à posição do jogador, qual não temos uma referência Vou fazer isso aqui. Vou exportar nosso jogador como um personagem com corpo de dois D que eu possa definir e nossa posição será definida para a posição global do jogador. Só vamos mudar Y porque queremos que ele fique acima do jogador. Então, temos que ir para a posição global, ponto Y menos igual. Digamos que cinco. Vamos ver como isso vai acontecer. Mas lembre-se de que preciso acessar meu script de bola aqui e definir a variável do jogador, apertar o botão atribuído e selecionar nosso jogador real. E veremos como isso funciona. Inicialmente, vamos definir a velocidade para zero porque não queremos que a bola se mova ainda. Na verdade, vou entrar na hierarquia da cena e clicar no pequeno globo ocular para escondê-lo Então, se dermos uma olhada e eu clicar nela, a bola desaparece, de volta ao script da bola depois de definirmos a posição, certo? Então, esperamos. Nós o definimos igual à posição do jogador. Nós levantamos a bola acima do jogador. Então, na verdade, vamos definir a visibilidade da bola, então vamos dizer visível. É igual a verdadeiro para mostrar isso. E então vamos definir a velocidade igual a 30. E podemos até definir isso com uma consistência, apenas para tornar as coisas ainda mais claras Chamaremos isso de velocidade inicial. Agora podemos dizer que a velocidade é igual à velocidade inicial. Tudo bem, então se jogarmos isso, veremos a bola. Lá vamos nós. Ela simplesmente apareceu em nós e se lavou sozinha. E se fizermos isso de novo, podemos ver isso. Lá vai. Tudo bem, então nossa bola está surgindo. Ele gera quase o jogador. Acho que quero realmente definir isso para dez em vez de cinco, porque aquele cinco estava parecendo um pouco próximo. Pode ter sido só eu com a gente andando de um lado para o outro. Mas vou mudar isso para dez, certo, temos nossa bola funcionando. Está pulando por Agora, quando colocarmos alguns tijolos lá, veremos se nossos saltos ainda estão bons ou se precisamos ajustar Além de, eu acho, começar a trabalhar para destruir os tijolos, fazer nossa pontuação, contar as bolas quando as perdemos ou perdemos nossas vidas Suponho que, nesse momento, estaremos muito bem, além de qualquer coisa que queiramos ajustar Tudo bem, então temos o básico de nossa bola funcionando. E a seguir, daremos uma olhada em nossos tijolos. 7. Como criar os tijolos: Tudo bem, então vamos criar os tijolos para nós em nosso jogo aqui, e os tijolos terão aproximadamente o mesmo tamanho do jogador Então, o que eu vou fazer é copiar isso. Vou ver meu anúncio principal e poderíamos fazer um corpo estático. Sim, porque não precisamos que eles se movam de jeito nenhum. E vou chamar isso de tijolo amarelo. Esse tijolo amarelo vai precisar uma forma de colisão e de um sprite Então, o que vou fazer para trapacear um pouco é ir até meu jogador Vou clicar no Sprite dois D, segurar a tecla Shift, clicar na forma de colisão, fazer o Controle C. Vá até o meu tijolo amarelo, aperte Controle V para meio que adicioná-los Agora, lembre-se do que eu disse antes. Nós vamos entrar e vamos torná-los únicos. E torne recursivo exclusivo. Que também podemos fazer o gradiente. Forma de colisão, pegue-a, torne-a única e adequada à cor Claro, vamos usar um amarelo por enquanto. Mas agora temos um tijolo amarelo e podemos pegar esse tijolo e colocá-lo em qualquer lugar do nosso jogo. Por exemplo, eu poderia colocar um aqui e apenas alinhá-lo. Agora eu posso simplesmente fazer Control D, Spide, o próximo. Então, acho que vou colocar esse pequeno espaço entre eles. Controle D, direcione o próximo para fora. E vou tentar manter isso mais consistente possível. E eu vou seguir em frente e fazer isso até o fim. Muito rápido. Tudo bem, então eu fui em frente, e eu tenho todos esses tijolos amarelos todos configurados aqui, e há muitos deles E eu tenho duas fileiras. Eu não vejo do alto da minha cabeça. Não me lembro se eles tinham duas ou três linhas no jogo, mas, por enquanto, tenho duas linhas. E há muitos que desmoronam aqui. Eu acabei de derrubar todos eles Infelizmente, eu não sei, isso é só para um ramo. Bem, isso é, infelizmente. Talvez esteja faltando uma tecla de atalho em algum lugar Mas, por enquanto, isso não é importante. Você pode ver que temos todos esses tijolos aqui, todos configurados. E eu quero mostrar a vocês como vamos determinar o que estamos atingindo Porque tudo o que precisamos fazer é criar essa mesma configuração novamente, faça isso para os blocos laranja, vermelhos e verdes. Mas para mostrar como isso funciona, vou entrar na minha bola, no meu roteiro de bola e, dentro de um processo de física, vamos fazer uma declaração if aqui. Então, basicamente vamos dizer que, se estivermos colidindo com alguma coisa, então vamos imprimir o nome da coisa com a qual colidimos, Então, se Yet, é uma contagem de colisões planadoras. Então, se isso for qualquer coisa menos zero, isso vai voltar verdadeiro para nós, e isso basicamente vai dizer, se estivermos colidindo com alguma coisa, e se estivermos, então vamos imprimir E o que vamos imprimir é uma colisão de slides deslizantes. E vamos passar um índice de zero porque queremos obter o primeiro item com o qual estamos colidindo, que, na realidade, só deveríamos colidir com um objeto por vez Então, se prosseguirmos e imprimirmos, não imprimirmos, mas tocarmos isso, devemos dar uma olhada, devemos ver abaixo em nossa saída o tijolo amarelo que está sendo impresso. Sim, esses são todos nossos. Há minha confusão aí na impressão. Estamos imprimindo a colisão do primeiro lado, mas o que precisamos fazer é realmente pegar o colisor, então pegue a coisa real com a qual estamos colidindo E então vamos imprimir o nome. Então, pegue a colisão do slide, passe um zero, obtenha o colisor, o nome do ponto E se fizermos isso, veremos o nome dos nossos tijolos ser impresso ao atingir objetos aqui embaixo no inspetor Vá para o tijolo amarelo 12. Jogador, parede dois, tijolo amarelo 16, jogador, parede, tijolo amarelo três, jogador. Tijolo amarelo 20, parede, jogador. Altura de tijolo amarelo, parede, jogador. Tijolo amarelo 11, então você tem a ideia aqui. Certo. Então é assim que vamos seguir em frente e configurar as coisas para realmente destruir nossos tijolos e determinar nossos pontos nisso E bem, em geral, é assim que vamos determinar se estamos batendo em um tijolo, para começar Mas certo, então vou pegar meus tijolos, transformá-los ou configurar as outras cores para meus tijolos, e eu volto logo Não há necessidade de realmente mostrar como fazer isso. Eu já mostrei como fazer um tijolo e simplesmente copiá-lo, deslizá-lo até fazer duas camadas Eu vou fazer a mesma coisa, mas com cores diferentes. E com essas cores também, posso entrar no meu gradiente aqui e simplesmente mudar essas duas cores para que possamos realmente ter a cor final do jogo Isso vai ser um chapéu amarelo. Vou copiar meu código lá embaixo. Selecione o outro branco e cole-o. E se eu jogar, você verá que agora temos um Oh, não, temos todos eles. Isso mesmo, porque nós os copiamos. Então, agora temos todos os meus tijolos amarelos. Então, agora eu posso ir em frente e criar meus tijolos laranja agora Tudo bem. Então, me dê 1 segundo, e eu vou criar isso. Você pode seguir em frente e, é claro, pausar criar e configurar todos os seus tijolos Tudo bem, eu li e criei todos os meus tijolos, e verifiquei duas vezes com o vídeo Existem apenas duas camadas de amarelo, verde, laranja e vermelho. Então, com nossos tijolos, o que precisamos deixar para nossos tijolos Precisamos da destruição real deles quando forem atingidos. Então, se pularmos para o nosso código, devemos ser capazes de detectar isso facilmente. Então, em vez de imprimir aqui, vou criar uma variável de ops, uma variável chamada nome do objeto. Essa grande corda. Isso vai ser igual ao que estávamos imprimindo. Então, obtenha a colisão de slides zero. Obtenha o nome do ponto do colider. E então, a partir daqui, podemos ir em frente e verificar se Wow. Se tijolo estiver no nome do objeto, o que obviamente deveria ser, pelo menos com a forma como minha nomenclatura está configurada, certo? Tijolo amarelo, tijolo verde, tijolo laranja, tijolo vermelho. Desculpe por isso. se o tijolo estiver no nome e nome do objeto, precisaremos pegar esse objeto e liberá-lo E para fazer isso, também deveríamos armazenar o colisor Então, além do nome, eles também receberão um colisor de varões Agora, com isso, vou reduzi-lo da melhor maneira possível, porque não posso simplesmente chamá-lo corpo estático, como os tijolos, porque nem sempre serão tijolos, Pode ser a parede. A parede também é um corpo estático, corpo estático. Ok, então parece que usamos corpo estático. Mas lembre-se, nosso jogador é o corpo de um personagem. Então, temos que levar isso em consideração. Então, a forma mais baixa que podemos fazer aqui é simplesmente classificá-lo como um corpo físico dois D. E isso, é claro, será igual a t colisão de slides zero dot Yet collider O colisor será nosso objeto. O nome do objeto será o nome da coisa. Se o tijolo estiver no nome, então vamos pegar aquele colisor e libertar Tudo bem. Vamos ver como isso funciona se nossos tijolos começarem a ser destruídos Vá, pequeno amarelo, vá. Eu fiz. Nosso tijolo amarelo foi destruído, e vamos ver. Todos esses tijolos também devem funcionar. Como o amarelo funciona, já que estamos todos trabalhando na mesma lógica, não sei por que mudei para a esquerda. Isso arruinou completamente tudo isso. Teremos que colocar o respawn aqui em algum momento, para não precisarmos continuar reiniciando o jogo sempre que perdermos a bola para Um boom. Ele vai. Sim, senhor. Quase temos uma boa quantidade dessa primeira camada, e eu a saltei para o lado, mas acho que provavelmente podemos presumir com segurança que todos os tijolos estão funcionando a partir dela mas acho que provavelmente podemos presumir com segurança , pois, novamente, estão todos trabalhando na Eles usam tijolos em seu nome. Sabemos que podemos confirmar isso. Fantástico. Tudo bem. Então, agora temos todos os nossos tijolos, nosso vermelho, laranja, verde e amarelo Eles estão todos configurados. Nós podemos destruí-los. A bola ricocheteia neles, perfeitamente bem. Detecções adequadas Então, em seguida, vamos continuar e dar uma olhada na atualização de nossos pontos para a próxima seção, que significa que vamos ganhar pontos por cada tijolo que destruirmos. 8. O sistema de pontuação: Bem, para começarmos a acompanhar coisas como pontuação, na verdade precisamos ter uma pontuação para acompanhar. Então, vamos até nosso cara aqui e adicionar um pequeno roteiro legal ele. Vamos criar um. Criaremos uma variável chamada score. Haverá um int, é claro, zero. Aqui vamos nós. E na função ready, vamos configurar algumas coisas, como a pontuação, como um bom exemplo. Mas eu também quero seguir em frente e, dentro do meu Due, a etiqueta de pontuação configurar também a etiqueta de pontuação e a etiqueta da bola atual. Então, vou usá-los com as exportações. Portanto, exporte Opa, não armazenamento, exportação, etiqueta em arco. Isso é um rótulo. E a mesma coisa. rótulo atual da bola Export VR tem, obviamente, um rótulo. Agora eu posso selecioná-los na GUI. Inspetor, clique em atribuir. O rótulo da pontuação será o rótulo da pontuação. A bola atual será a bola atual. OK. Agora estou pronto, agora podemos configurar. texto do ponto da etiqueta de pontuação é igual a GORE, precisamos preenchê-lo e convertê-lo em uma string, então STR no início, abra parênteses Coloque a pontuação dentro, feche os parênteses e tecle zeros, e vamos preenchê-la com três, porque definitivamente podemos chegar a três dígitos com este jogo. Fácil o suficiente. E vamos precisar de outra variável aqui para a bola atual (bola atual e começar com uma , como acontece no jogo. E nos certificaremos de definir isso para nossa etiqueta de bola atual. Portanto, o texto do ponto do rótulo da bola atual é igual uma sequência da bola atual Agora, quando você o executa, não vai parecer diferente do que era antes. E, claro, ainda não estamos ganhando pontos, mas, como você disse, pelo menos veja se nada está quebrado, o que é ótimo. Vamos ver. Então, o que precisamos agora? Precisamos realmente atualizar nossa pontuação. E quando fazemos isso, precisamos atualizar o texto aqui. Tudo bem. Então, vamos ao nosso roteiro de baile. E quando batemos em um tijolo, antes de colidirmos com ele ou antes de libertarmos, precisamos verificar ou, pelo menos, vamos marcar I em amarelo no nome do objeto, fazer isso, e continuaremos com isso algumas vezes e podemos transformar isso em, na verdade, só precisamos de um, porque apenas um deles deve ser capaz de acionar . Eu entendi isso ao contrário. Eu comecei pela primeira vez. Elsif Isso é o que eu estava colocando. E tudo que vamos verificar é amarelo, verde, laranja e vermelho. E tudo o que vamos fazer aqui é atualizar a pontuação. E para fazer isso, acho que podemos pegar a GUI ou criar um sinal para enviar até ela Agora, como não acho que tenhamos aprendido muitos conceitos novos aqui, vou mostrar como criar seu próprio sinal, assim como se você olhasse o inspetor e a guia do nó e tivesse esses sinais, eu mostraria como podemos criar nosso próprio sinal Assim como as variáveis, basta digitar a palavra sinal, certo, porque queremos criar um sinal, assim como você digita em VR quando quer criar uma variável e depois coloca o nome do sinal. Então, esse sinal será uma pontuação de aumento. E eu vou ter que passar um número de uma polegada desse jeito. Então, o sinal é aumentar a pontuação. ele passa um argumento e esse argumento é um número inteiro Agora, se dermos uma olhada nisso dentro do inspetor, clique em Bola, clique na guia Não e podemos realmente ver nosso sinal personalizado aqui, todo configurado Agora, podemos clicar duas vezes nele e conectá-lo à GUI, e acho que é isso que vou fazer aqui Clique duas vezes, GI, verifique se está conectado. Desculpe, clique em Conectar. Agora, aqui no GI, poderemos atualizar nossa pontuação. Para fazer isso, podemos fazer SCOR mais igual a NUM Great. E, assim como fizemos na preparação, podemos simplesmente atualizar o texto da etiqueta de pontuação e, é claro, preenchê-lo. Tudo bem. Agora, isso ainda não vai funcionar porque temos que voltar para nossa bola porque nunca enviaremos esse sinal em nenhum momento. Então, precisamos pensar para onde precisamos enviar isso? Bem, precisamos enviá-lo aqui e aqui e aqui, certo? Sempre que tivermos esses tijolos para passar no placar. Então, aumentamos a pontuação de emissão de pontos, depois aprovamos nossa discussão com o tijolo amarelo, era um ponto Com o tijolo verde, eu tinha três pontos com o tijolo laranja. Opa, eu copiei a coisa errada agora. Com o tijolo laranja , eram cinco pontos, e com o tijolo vermelho , eram sete pontos. Então, se fizermos isso agora e clicarmos em play, agora veremos nossa pontuação aqui, atualizada toda vez que quebrarmos um tijolo. Então, vamos embora. Devemos obter um ponto aqui com os tijolos amarelos. Lá vamos nós. Então, agora estamos ganhando pontos. bola estava se movendo tão lentamente que o olho se perdeu a uma velocidade embaraçosamente lenta enquanto vagava preguiçosamente para a esquerda Então, um ponto, bum, salte para cima. Conseguiremos mais um ponto. Salte, pule E você percebe que só estamos ganhando esses pontos quando atingimos os tijolos, exatamente como deveríamos Então isso é ótimo. , bum. Como a raquete estava um pouco mais longa. Tudo bem. Então, fizemos nossos pontos funcionarem. Estamos enviando nosso sinal, está funcionando, enviando os números certos. Podemos facilmente supor que esses números também funcionarão perfeitamente bem. E precisamos fazer mais alguma coisa na seção de pontos? Eu acredito que não. Não, a seguir, vamos configurar nossa contagem e ressurgimento de bolas para 9. Correção de erros após marcar: Tudo bem, então eu estava brincando por aqui, apenas me certificando de que as coisas estavam funcionando e tudo bem, e na verdade tivemos um problema aqui Não tenho 100% de certeza do que aconteceu, mas acho que a bola atingiu dois tijolos ao mesmo tempo ou muito, muito próximos um do outro O suficiente para entrarmos na declaração if, mas não o suficiente para Clider realmente nos dar alguma coisa Então, o que vamos fazer é primeiro limpar o nome do objeto aqui. Acabamos de definir isso como nome do ponto do colider. O que eu realmente vou colocar em outro cheque aqui e dizer, é um colisor Portanto, isso deve nos dar uma verificação para ter certeza de que o colider é realmente algo e não é nulo E isso significa que vou pegar tudo da linha 25 aqui. Até o quarto do ponto do colisor, vou clicar na guia com tudo destacado, que deve evitar que esse problema aconteça Visto que o problema estava, entramos nessa declaração If, alguma forma, podemos colocar outra verificação aqui também, se quisermos. Podemos dizer que é maior que zero, mesmo que não devêssemos entrar, se ainda não estiver. E então pegamos o colisor, e se de alguma forma o colisor for nulo, então vamos simplesmente parar de lá Não vamos continuar. Tudo bem, então eu só queria colocar isso lá , caso vocês deparassem com isso enquanto também se deparassem com isso enquanto estavam jogando, assim como eu fiz E, certo, então, seguir, vamos começar configurar o renascimento da bola 10. Contando: Vamos continuar e fazer com que nossa resposta aconteça aqui. Então, a essência do que precisamos aqui é quando a bola sai da tela, então precisamos fazer o que fazemos quando prontos e responder aqui com sua velocidade padrão, direção padrão de subir e tudo mais. Então, na verdade, há um nó que podemos usar para isso. Agora, se formos ao nosso baile, vou ligá-lo para que possamos vê-lo aqui. Agora, essa linha azul aqui é a parte inferior da nossa tela, que você já deve saber. E nesta bola, vou adicionar um nó especial chamado Notificador visível na tela Agora, o que isso vai fazer é nos dar um pequeno espaço na caixa aqui, e essa é a área que será verificada. E quando essa caixa não estiver mais na tela, ela poderá enviar um sinal para nós do que estará aqui em cima, a tela entrou ou saiu, no nosso caso, o sinal de saída, e isso nos permitirá reiniciar nossa bola Tudo bem, então vou clicar duas vezes no sinal de saída da tela do nosso notificador visível na tela Vou rolar para baixo até minha bola, selecioná-la e conectar meu script. E o que vamos fazer aqui é exatamente o que você já esperaria. Vamos pegar tudo que está pronto, rolar para baixo e colar tudo lá. Mas temos que fazer mais do que isso porque a velocidade no momento, a bola ainda está indo direto para baixo. Então, antes de esperarmos, vamos definir essa velocidade para zero, que a bola simplesmente pare onde está. Porque não importa qual seja nossa velocidade, ela está sendo definida como zero, certo? Porque qualquer coisa vezes zero, então esperamos esse tempo aleatório, até 3 segundos. Nós redefinimos a posição, definimos a visibilidade como verdadeira. Mas o fato é que nunca o configuramos como falso, então precisamos fazer isso também Precisamos fazer visível igual a falso. E se houver mais alguma coisa que precisemos reiniciar, sim, porque lembre-se de que estamos descendo, o que significa que nossa direção V deve estar em menos um neste ponto. Então, antes de realmente definirmos a velocidade, podemos seguir em frente e fazer V vezes iguais a menos um para voltar a subir e nossa velocidade é redefinida para a velocidade Isso deve ser tudo o que precisamos fazer para que essa resposta funcione. Tudo bem. Então aí está a nossa bola. Vai. Ela vai desaparecer e vai responder por nós. Boop, lá vamos nós Embora nosso respawn esteja funcionando muito bem. Só precisamos acompanhar a contagem de bolas agora. Boop. Lá vai de novo. Tudo bem, então temos que atualizar a etiqueta de contagem de bolas. E com isso, você provavelmente pode adivinhar. Vamos seguir em frente e criar nosso próprio sinal para isso a partir da nossa bola. O sinal aumenta a contagem de bolas. E, assim como antes, vamos ter um número lá, e vai ser um int ou vamos lançá-lo como. E, assim como antes, selecione nossa bola, vá para a guia Dno com nossos sinais Clique duas vezes para aumentar a contagem de bolas e conecte-a à nossa interface gráfica. E, assim como antes, faremos, ou como você imagina, bola atual mais o SQLs Num, que, em teoria, sempre deveria ser um E acho que posso realmente configurar isso como padrão duplamente, mas aqui está o rótulo para atualizarmos isso também texto do ponto da etiqueta da bola atual é igual a uma sequência da bola atual Acabei de verificar duas vezes e não podemos passar um valor padrão para lá, então isso é um pouco lamentável Mas se apenas descermos, dê uma olhada, quando sairmos da tela aqui, podemos ir em frente e enviar esse sinal. Então, diremos que aumente contagem de bolas, emita e passe em uma para aumentar a contagem de bolas em uma Tudo bem. Então, agora, quando nossa bola sai da tela, você precisa reiniciá-la para ficar desligada por padrão. Eu vou fazer isso. Não desligado, mas não visível. Clique no globo ocular e aperte play. Essa bola vai aparecer. Vai. Vai bater em um tijolo. Nós vamos ganhar um ponto. Vai ser atualizado. Fantástico. Conforme a bola vai, ela ricocheteia em algumas coisas e acelera lentamente. Ganhamos mais pontos à medida que continua. Vai sair da tela, aumentar a contagem de bolas de 1 a 2 e responder. A velocidade está toda reiniciada. Tudo bem, então tudo o que temos que dar uma olhada agora é configurar as condições de vitória e derrota para este jogo. O que não deve ser muito difícil. Porque, devido à nossa condição de derrota, praticamente só precisamos verificar se estamos na bola quatro, que deve ser nossa última bola nessa situação, porque temos apenas três bolas. Então, quando cai, atingimos quatro. Esse seria o nosso fim de jogo. E esse fim de jogo seria uma redefinição de toda a cena. Tudo bem, então temos nossos sinais funcionando. Temos nossa bola reiniciada e nosso contador de bola funcionando. Tudo bem. A seguir, daremos uma olhada no aspecto de vitória e derrota. 11. Jogo final e vitória: Certo, então a primeira coisa que vou configurar aqui será a mais fácil e rápida para podermos testar aqui E essa será a nossa contagem de bolas. Quando isso for igual a quatro, reiniciaremos o jogo Então, a maneira mais fácil de fazer isso é, já que já temos toda essa configuração para nossa bola, basta entrar em nosso Guy. A bola atual mais é igual a um número. Atualizamos o texto, tudo o que precisamos fazer é verificar se a bola atual é igual a quatro, e vamos pegar Tree dot, G apenas recarrega a cena atual. E podemos testar isso em dois segundos rápidos. Apenas deixe a bola voar. Vou me sentar aqui no canto e vamos acumular algumas dessas contagens de bolas. Essa é uma delas. Vamos pegar a segunda bola. Lá vai. Para baixo. Isso nos leva a três. E quando perdermos essa bola , o jogo deve terminar quando ela cair abaixo, e toda a cena deve ser reiniciada. Então, vemos aqueles tijolos amarelos serem preenchidos novamente. Oh, eu não fiz isso. Por que isso? R, sim, porque na verdade não podemos criar um cronômetro porque a árvore está sendo redefinida no momento Então, temos esse pequeno bug para resolver. Como podemos resolver isso? Bem, a maneira mais fácil de corrigir isso, provavelmente, é apenas alterar nossa ordem de operação aqui. E poderíamos simplesmente pegar uma contagem de bolas e movê-la uma para baixo. E isso provavelmente resolverá esse problema. Mas teremos algum problema com o resto do nosso código aqui embaixo? Vamos testar e descobrir. Vamos ver o que acontece. Às vezes, tudo o que você precisa observar é ordem em que tudo está sendo chamado. Às vezes é isso. É tão simples quanto isso, outras vezes você precisa encontrar outras soluções alternativas ou realizar outras verificações para ver se as coisas ainda existem Aqui vamos nós. Corra nossa terceira bola, e é aqui que devemos terminar nosso jogo. Então, vamos ver se ainda encontramos um erro ou se isso foi corrigido. Tudo bem, está consertado. Então, nesse caso, foi tão simples quanto atualizar a ordem de operação em que tudo é chamado. Tudo bem. Então, nosso reset funciona. Agora só precisamos verificar se ainda temos algum tijolo na tela E se sim, obviamente, os jogos ainda não terminaram, porque o que vamos procurar é que não haja mais tijolos Então, como podemos verificar isso facilmente da maneira mais simples possível? Bem, a maneira mais simples seria pegar todos os nossos tijolos aqui, todos no meu caso, 176 deles, e podemos simplesmente colocá-los sob um nó padrão Então, se eu pegar isso vou pegar meu cara só para colocar meu nódulo aqui em cima. Vou adicionar apenas um nó normal porque o estou usando apenas para organizar. Vou arrastá-lo do meu cara para o principal. E a razão pela qual fiz isso é porque se eu selecionasse Min e criasse o nó, ele teria sido adicionado até aqui. Então, teria sido irritante poder levantá-lo totalmente Então, eu vou mover o nó para baixo, depois vou clicar no meu primeiro tijolo, rolar até o fim, segurar a tecla Shift clicar no meu último tijolo. Isso deve selecionar todos os meus tijolos aqui. Vou apenas arrastá-lo para dentro desse nó. Vou renomear esse nó para ser chamado de tijolos. E isso não deve afetar nossa jogabilidade, mas vou dar uma olhada. Só no caso de algo ter quebrado de alguma forma . Dê uma olhada. Os tijolos ainda destroem, a pontuação ainda é atualizada. A bola ainda é contada, ainda responde. Fantástico. Então, não quebramos nada. E a razão pela qual fizemos isso é porque a maneira mais fácil é dizer : Ei, tijolos, não Você ainda tem tijolos? Você tem filhos? Certo? Algum desses 176 tijolos ainda existe? Então, quando isso acontece, podemos realmente fazer isso no nosso Nós podemos fazer isso na bola ou no Gooey Eu ia dizer que poderíamos fazer isso quando emitimos o sinal para aumentar a pontuação ou quando aumentamos a escola Acho que faremos isso quando realmente aumentarmos a pontuação. Certo? Sim, então aqui, emitiremos ou desculpe, atualizaremos nossa pontuação e, em seguida, faremos nossa verificação aqui Então, para fazer isso, vou exportar nossos tijolos. Vou chamá-lo de contêiner de tijolos, e isso é apenas um nó E eu clico no meu cara. Certifique-se de ir para a guia Inspetor apertar o botão atribuído Eleja tijolos. Agora, quando atualizo minha pontuação , posso dizer que tenho filhos Provavelmente não. Agora. Então pegue crianças ou conte crianças. Isso também funcionaria? E só para minha própria sanidade, vou imprimi-lo Então, quando destruirmos nosso primeiro tijolo, devemos ter 175 impressos para nós aqui no console 176 agora. Ok, então talvez minha matemática esteja de alguma forma errada ou tenha contado antes que o tijolo fosse destruído. Certo. Então, isso não funcionaria para nós , porque o tijolo já foi destruído ou, desculpe, os tijolos não foram destruídos neste momento Então isso é uma pena. Não vou conseguir fazer isso lá. Embora eu exclua essa variável. E isso significa que vou até o baile. E nós vamos descer. É aqui que vamos nos libertar com base no colisor E o colisor, o pai, deveriam ser nossos tijolos. Então, vou em frente e podemos armazenar isso. Na verdade, nós apenas armazenamos isso em cima, como fazíamos normalmente, não há razão para continuar pegando toda vez que colidimos Portanto, exporte o contêiner de tijolos var como apenas um nó, selecione nossa bola, aperte uma placa selecione o contêiner de tijolos E depois de chamarmos o collider dot free, podemos seguir em frente e colar nossa declaração I que estávamos usando antes O que eu o renomeei? Eu disse que o recipiente de tijolos disse que era tijolos. Lá vamos nós. Tenho que reinicializar isso agora. Lá vamos nós. Então, agora, é apenas um erro de digitação ao copiá-lo. Então, se tiver filhos depois de excluirmos um tijolo, vamos imprimi-lo. Então nosso primeiro é destruído aqui, devemos ter 175 para o número correto. Isso é curioso, e isso me fez querer verificar a matemática agora. Sim, eu tenho 22, 22, 44. Portanto, são 44 por cor. Então, são 88 na metade inferior, 88 na metade superior, deve haver 176 no total Eu devo estar um pouco louco. Deixe-me verificar isso logo quando o jogo começar. Sim, 176 Então, o problema é contar antes de ser gratuito. Entendi. Então, se você está curioso para saber por que isso acontece, é porque Q free aqui não está liberando Isso não libera o nodo, certo? Não é se livrar do tijolo. Nesse segundo, ele o exclui no final do quadro. Porém, como ainda estamos recebendo essas informações, nosso quadro não foi concluído. Ainda estamos recebendo as informações incorretas. Então, o que precisamos fazer aqui é usar essa palavra-chave acordada e obter nossa árvore Só que, em vez de criar um cronômetro, vamos analisar o não, não o ocioso, que foi renomeado Acho que, no nosso caso, poderíamos simplesmente procurar , acho que eles têm uma física, certo? Sim, um quadro de física. Então, isso vai esperar até o próximo quadro em que isso será chamado. E então obteremos o número. Então, isso agora deve nos dar o número correto de 175 quando o tijolo for destruído e, em caso afirmativo, excelente. Pronto. 175. Então, agora temos nossos tijolos sendo contados corretamente. Cara, fantástico. Olha isso. Olha aquele tijolo, vá. Vá, bolinha, vá. Você está chegando a uma boa velocidade. Sim, olha só você. Preciso parar antes de entrar nisso, e fico aqui jogando por um tempo. Perdemos a bola. Mas você pode ver que isso definitivamente pode ser divertido quando você entra. Tudo bem. Portanto, lembre-se de que precisamos esperar pelo próximo quadro e depois fazer a contagem. Então, agora que temos a contagem, precisamos verificar o que precisamos saber especificamente se resta zero. Então, se a contagem for igual a zero, vá. Então é aqui que precisamos de um fim de jogo. Tudo bem. Então podemos querer esperar alguns segundos ou apenas recarregá-lo Vamos recarregar. Recarregue a cena atual da árvore. E então não precisamos ficar sentados aqui o dia todo só para testar isso. Vou prosseguir e removeremos a maioria deles apenas para este teste. Não se preocupe. Eu fiz isso, mas posso apertar o Controle Z e colocá-los todos de volta. Como você pode ver, estou fazendo isso temporariamente e nos dando dois tijolos amarelos Então, se armazenarmos os dois, devemos comprar um jogo totalmente novo com tudo sendo recarregado E se essa bola pudesse acelerar um pouco, seria ótimo. Parece que eu apaguei a parede. Eu queria saber para onde isso foi. Porque, claro, eu fiz. Eu arrastei aquela ferramenta, e talvez pudéssemos ir ainda mais devagar e nos dar um Porque vimos que quando ainda tínhamos um tijolo sobrando, obviamente, ele ainda estava contando. Ainda estávamos jogando. Então, se pudéssemos pular aquela bola até aquele tijolo amarelo, seria ótimo Acho que coloquei isso no lugar certo, bum, e nosso jogo recomeçou com nosso novo jogo com apenas um tijolo aqui Mas sim, lá vamos nós. Isso funciona. E acho que o que eu quero aqui colocar esses tijolos de volta Mas acho que o que eu quero pessoalmente antes recarregar é esperar um momento Então, vou dizer que vou esperar a árvore Ge, criar Tr. E acho que quero fazer uma pausa de dois segundos aqui. Ou até mesmo uma pausa de 1 segundo seria boa, só para que possamos ver se o tijolo foi realmente limpo E você poderia ir ainda mais longe se quisesse expandir tudo isso, existem versões modernas deste jogo. Existem alguns que adicionam power-ups, várias bolas e assim por diante. Então, se você quiser, você sempre pode adicionar todo esse tipo de coisa. É tão simples quanto as coisas que já fizemos, detectar se batemos em alguma coisa, batemos nela, se sim, fazer isso. Faça XYZ E notei um pequeno bug lá embaixo, então vou parar a velocidade da bola também. velocidade da velocidade definida é igual a zero, e isso deve ser bom para Mas mesmo que isso não resolva isso, isso não afetará nada em nosso jogo aqui, mas é algo que provavelmente deveríamos abordar e buscar para não ter problemas profundos. Tudo bem. Então, temos nossa pontuação funcionando. Nosso jogo acabou. Deveria estar funcionando. Sim, porque caímos, acertamos quatro bolas e o jogo inteiro recomeçou Tivemos a vitória reiniciada para nós. Estamos acompanhando a pontuação. Sim, acho que isso é tudo. Na verdade, não precisamos adicionar mais nada. Temos o jogo clássico recriado aqui e, se você quiser adicionar mais recursos, pode sempre voltar e adicioná-lo Vá com isso. That's Breakout, o jogo clássico de 1976