Saga do Scratch: uma jornada no desenvolvimento de jogos | Brandon Grant | Skillshare
Pesquisar

Velocidade de reprodução


1.0x


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

Saga do Scratch: uma jornada no desenvolvimento de jogos

teacher avatar Brandon Grant, Game Developer and Graphic Designer

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.

      Boas-vindas!

      1:54

    • 2.

      Começando com o Zero

      3:45

    • 3.

      O Editor Scratch

      10:06

    • 4.

      Os blocos de construção do zero

      27:58

    • 5.

      Clones e variáveis

      20:05

    • 6.

      Introdução ao Smack Some Moles

      0:50

    • 7.

      Desenhe o Hammer Sprite

      11:26

    • 8.

      Codifique o Hammer Sprite

      14:42

    • 9.

      Desenhe o fundo

      5:27

    • 10.

      Desenhe os trajes de Mole

      13:28

    • 11.

      Animar o Mole Sprite

      6:31

    • 12.

      Manipulando camadas

      3:11

    • 13.

      Bata os moles

      11:30

    • 14.

      Melhorar o Smacking

      8:12

    • 15.

      Adicionar efeitos de hits

      3:57

    • 16.

      Crie o Pow Sprite

      15:23

    • 17.

      Usando listas de variáveis

      9:40

    • 18.

      Corrigir os clones do Pow

      4:49

    • 19.

      Pontuação

      3:14

    • 20.

      Adicione um cronômetro de contagem regressiva

      7:42

    • 21.

      Adicione um jogo sobre a tela

      17:38

    • 22.

      Reiniciando o jogo

      7:40

    • 23.

      Finalizar as moles

      4:52

    • 24.

      Aumente a dificuldade

      6:35

    • 25.

      Aprimore a pontuação

      20:41

    • 26.

      Corrigir o bug de pontuação

      4:17

    • 27.

      Aprimore o cronômetro

      7:42

    • 28.

      Adicione estrelas voadoras

      7:56

    • 29.

      Adicionar efeitos sonoros

      6:35

    • 30.

      Introdução ao Havoc cósmico

      1:16

    • 31.

      Configuração inicial

      1:43

    • 32.

      Desenhe os trajes dos jogadores

      7:07

    • 33.

      Mova o jogador

      19:18

    • 34.

      Suavizar o movimento do jogador

      6:08

    • 35.

      Implementar Wraparound

      5:23

    • 36.

      Crie o laser

      11:22

    • 37.

      Desenhe os trajes de asteróides

      2:43

    • 38.

      Desenhe os asteróides

      13:05

    • 39.

      Melhorar o movimento de asteróides

      15:00

    • 40.

      Fotografe os asteróides

      7:22

    • 41.

      Dê saúde aos asteróides

      5:36

    • 42.

      Dividir os asteróides

      8:18

    • 43.

      Adicione flashes de explosão

      10:24

    • 44.

      Adicionar efeitos de partículas

      18:42

    • 45.

      Destrua o jogador

      13:21

    • 46.

      Crie uma Hitbox de Player

      4:49

    • 47.

      Crie a chama do propulsor

      15:51

    • 48.

      Desenhe os figurinos da picape

      8:09

    • 49.

      Gere as picapes

      11:36

    • 50.

      Crie o Powerup do laser

      8:33

    • 51.

      Crie o escudo

      14:26

    • 52.

      Crie a bomba

      9:58

    • 53.

      Usando a extensão da caneta

      11:15

    • 54.

      Crie as estrelas

      8:51

    • 55.

      Animar as estrelas

      14:29

    • 56.

      Manutenção de pontuação

      14:54

    • 57.

      Crie o botão Iniciar

      20:46

    • 58.

      Crie o logotipo

      20:05

    • 59.

      Trajes de jogadores do Switch

      25:15

    • 60.

      Acompanhe a pontuação alta

      24:46

    • 61.

      Adicione sons e música

      12:21

    • 62.

      Crie os Toggles de áudio

      14:36

    • 63.

      Implementar alternância de áudio

      19:43

    • 64.

      Aventura de introdução do Glim

      1:09

    • 65.

      Carregue o projeto inicial

      14:09

    • 66.

      Loop de jogo e manuseio de controle

      7:43

    • 67.

      Adicionar movimento do jogador

      6:30

    • 68.

      Adicionar gravidade

      3:57

    • 69.

      Deixe o jogador saltar

      10:04

    • 70.

      Caminhando no nível

      9:19

    • 71.

      Mais colisões de nível

      12:25

    • 72.

      Use o Hitbox do Player

      5:28

    • 73.

      Correção de bugs e tempo do Coyote

      3:50

    • 74.

      Animações de marcha ociosa e

      17:09

    • 75.

      Animações de salto, queda e terra

      7:41

    • 76.

      Deixe o jogador agachar

      6:16

    • 77.

      Deslizamento em encostas

      26:13

    • 78.

      Deslizamento nas paredes

      15:53

    • 79.

      Saltar nas paredes

      12:33

    • 80.

      Gerar os níveis

      26:34

    • 81.

      Rolando um nível

      14:28

    • 82.

      Melhorar a rolagem

      15:48

    • 83.

      Corrigir alguns bugs

      4:51

    • 84.

      Reiniciando um nível

      10:54

    • 85.

      Trocando níveis

      11:41

    • 86.

      Adicionar objetos de ambiente

      5:00

    • 87.

      Classifique as camadas

      20:25

    • 88.

      Crie um fundo de rolagem

      25:31

    • 89.

      Adicione algum líquido

      7:25

    • 90.

      Ativar o modo de Deus

      18:32

    • 91.

      Adicione as moedas

      11:58

    • 92.

      Colete as moedas

      8:28

    • 93.

      Sair de um nível

      21:46

    • 94.

      Implementar rolagem automática

      10:36

    • 95.

      Crie uma transição de tela

      8:14

    • 96.

      Adicione os fechamentos e chaves

      19:54

    • 97.

      Adicione o inimigo do caracol

      21:04

    • 98.

      Bounce o player

      14:28

    • 99.

      Se machucar

      13:27

    • 100.

      Matando o jogador

      8:05

    • 101.

      Respawn o jogador

      21:51

    • 102.

      Adicione a abelha inimiga

      17:18

    • 103.

      Adicione o inimigo

      4:37

    • 104.

      Adicione o peixe inimigo

      20:51

    • 105.

      Adicione os Jump Pads

      16:16

    • 106.

      Crie o efeito de deslizamento de inclinação

      15:00

    • 107.

      Crie as partículas de poeira

      11:09

    • 108.

      Pausando o jogo

      10:30

    • 109.

      Crie a sobreposição de pausa

      12:48

    • 110.

      Crie o display do coração

      9:52

    • 111.

      Crie o display de moedas

      8:58

    • 112.

      Configurar o chefe

      11:15

    • 113.

      Faça o chefe voar

      21:46

    • 114.

      Atirando foguetes

      14:58

    • 115.

      Buscando o jogador

      14:08

    • 116.

      Atingindo o jogador

      11:44

    • 117.

      Adicione explosões de foguetes

      6:28

    • 118.

      Machucando o chefe

      13:02

    • 119.

      Vencendo o jogo

      4:23

    • 120.

      Crie a barra de saúde do chefe

      9:50

    • 121.

      Adicione alguns sons

      16:11

    • 122.

      Adicione alguma música

      9:05

    • 123.

      Crie a tela de título

      30:54

    • 124.

      Corrigir o problema da bandeira verde

      1:29

    • 125.

      Crie a sobreposição de texto

      23:23

    • 126.

      Parabéns!

      1:06

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

11

Estudantes

--

Projeto

Sobre este curso

Desbloqueie sua criatividade e aprenda a codificar através do desenvolvimento de jogos com Scratch Saga: uma jornada no desenvolvimento de jogos! Este curso é projetado para iniciantes, jovens codificadores e qualquer pessoa curiosa sobre design de jogos. Meu nome é Brandon e serei seu guia neste curso passo a passo, no qual criaremos três jogos completos no Scratch, cada um mais emocionante e complexo que o anterior. Você vai aprender como dar vida às suas ideias de uma forma divertida e interativa — sem necessidade de experiência prévia!

O que você aprenderá

Ao longo da Saga do Scratch, você vai ganhar experiência prática no desenvolvimento de jogos enquanto aprende conceitos de programação principais. Aqui está o que você vai dominar ao longo do caminho:

  • Noções básicas do Scratch: entenda a interface baseada em blocos do Scratch e aprenda como navegar pelas ferramentas que você vai usar para codificar, projetar e animar.

  • Conceitos de programação básica: entenda os elementos essenciais como loops, variáveis, condicionais e manipulação de eventos em um formato visual e fácil de acompanhar.

  • Design de personagens e Sprites: crie e personalize personagens e objetos para dar vida à história e às interações do seu jogo.

  • Animações e movimentos: aprenda como animar personagens, adicionar movimentos suaves e aprimorar a jogabilidade com interações dinâmicas.

  • Mecânica de jogos: implemente mecânicas como pontuação, nivelamento e condições de vitória, dando aos seus jogos objetivos e desafios claros.

  • Resolução de problemas e depuração: aborde problemas comuns de codificação e aprenda como identificar, solucionar problemas e corrigir erros em seu código.

  • Princípios do design de jogos: descubra o que torna um jogo divertido, como equilibrar desafio e jogabilidade e como manter os jogadores envolvidos.

Destaques do curso

No final da Saga do Scratch, você terá criado três jogos totalmente funcionais, ganhou uma sólida compreensão de codificação e design de jogos e desenvolveu as habilidades para dar vida às suas próprias ideias de jogos. Além disso, você estará pronto para compartilhar seus projetos com outras pessoas ou mergulhar na codificação mais avançada!

Prepare-se para embarcar em sua jornada no desenvolvimento de jogos — junte-se ao Scratch Saga hoje e comece a criar jogos do zero!

Conheça seu professor

Teacher Profile Image

Brandon Grant

Game Developer and Graphic Designer

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. Boas-vindas!: Bem-vindo ao Scratch Saga uma jornada no curso de desenvolvimento de jogos Eu sou Brandon e vou guiá-lo neste curso prático no qual exploraremos o mundo do desenvolvimento de jogos usando o Se você é novato em programação ou está curioso em criar seus próprios jogos, você está no lugar certo Juntos, criaremos três jogos totalmente funcionais, cada um projetado para ensinar as habilidades essenciais do design de jogos e, ao mesmo tempo, permitir que você libere sua criatividade Cada jogo se baseará no anterior, introduzindo gradualmente conceitos e técnicas mais complexos para ajudar você a se tornar um desenvolvedor de jogos confiante e criativo. O Scratch é uma plataforma de codificação totalmente gratuita para iniciantes , desenvolvida pelo MIT e projetada para tornar o aprendizado da programação acessível e divertido É totalmente visual, o que significa que não há necessidade de digitar linhas de código complexas. Em vez disso, o Scratch usa blocos que você pode arrastar e soltar, cada bloco representando uma ação ou comportamento que seu jogo pode usar. Pense nisso como construir com blocos digitais de lego. Só que em vez de criar torres, você está criando jogos totalmente jogáveis Este curso foi desenvolvido para ser envolvente, progressivo e prático. Você terá a liberdade de experimentar, resolver problemas e expressar sua criatividade enquanto recebe orientação em cada etapa do processo. Com o scratch Saga, você vai além do básico da codificação e mergulhará nos princípios do desenvolvimento de jogos, aprendendo não apenas como criar jogos, mas como torná-los divertidos e interativos para Tudo bem, então se você estiver pronto, vamos começar. 2. Começando com o Scratch: Para começar a usar o scratch, a primeira coisa que precisamos fazer é acessar o site oficial do scratch , localizado em scratch dot mit dot EDU Neste site, podemos ler mais sobre o scratch e conferir vários projetos que outros criadores ou scratchers fizeram Mas o mais importante é que podemos criar nossa própria conta de rascunho. A razão pela qual precisamos criar uma conta é porque o scratch é uma plataforma baseada na web, e ter uma conta nos permite manter todos os nossos projetos juntos em um local de fácil acesso. Tudo bem, então, para criar uma conta, devemos ver algumas opções no topo da página, como esse botão de cadastro ou esse link de cadastro aqui. Se clicarmos em um deles, ele abrirá um formulário no qual podemos inserir um nome de usuário e senha para nossas contas. Na verdade, eu já tenho uma conta, mas só por diversão, vou criar uma nova e queremos ter certeza de não usar nosso nome verdadeiro. Não quero mostrar minha senha, então vou desmarcar a opção mostrar senha aqui e, para a senha, queremos usar algo que seja fácil de lembrar, mas difícil para outra pessoa adivinhar Tudo bem, uma vez que tenhamos todas essas coisas inseridas, podemos clicar em Avançar. Agora podemos escolher em qual país estamos morando e clicar em Avançar novamente. Agora podemos inserir nossa data de nascimento e clicar em Avançar. Para a questão de gênero, podemos escolher um gênero, se quisermos, mas isso não é obrigatório, então podemos clicar em Avançar. Finalmente, temos que inserir nosso endereço de e-mail. É necessário um endereço de e-mail para confirmar nossa conta e caso esqueçamos nossa senha. No entanto, o Scratch não tornará nosso endereço de e-mail visível publicamente em nossa conta. Tudo bem E com isso, podemos clicar em Criar sua conta e agora temos nossas próprias contas do Scratch. Mais uma coisa importante a saber, no entanto, é que, se quisermos compartilhar nossos projetos ou comentar sobre outros projetos do Scratchers, primeiro precisaremos confirmar nossa conta clicando no link dentro do e-mail que o Scratch nos enviou No entanto, isso não é realmente necessário no momento, então vamos continuar e clicar em Começar. E agora estamos na primeira página da nossa conta do Scratch. E aqui, podemos aprender a fazer certas coisas do zero. E, novamente, podemos conferir alguns outros projetos do Scratch, que eu recomendo fazer quando você tiver uma chance. Mas, por enquanto, queremos criar nosso próprio projeto. Para fazer isso, tudo o que você precisa fazer é vir até aqui e clicar em Criar. E agora criamos oficialmente nosso primeiro projeto de rascunho. No entanto, exceto pelo pequeno gatinho aqui, nosso projeto parece bem vazio. Então, vamos ver como podemos corrigir isso. 3. O editor de riscos: Quando iniciamos um novo projeto temporário ou abrimos um existente, isso nos leva a essa página, chamada Editor. Na parte superior do editor, temos essa barra roxa, chamada de cabeçalho do editor. A primeira coisa que temos no cabeçalho são as configurações. Se clicarmos aqui, podemos alterar o idioma da página para outro, se quisermos. Também podemos alterar o modo de cor da página para original, que é o padrão, ou alto contraste, que afeta principalmente as cores dos ícones e blocos aqui à esquerda. Sinta-se à vontade para usar o modo de alto contraste, se quiser, mas voltarei ao original. Em seguida, no menu Arquivo, podemos criar um novo projeto e salvar as alterações que fizemos em nosso projeto atual. No entanto, como veremos em breve, scratch salva regularmente nosso projeto automaticamente, então geralmente não precisamos fazer isso manualmente. Também podemos salvar nosso projeto como uma cópia. Isso é útil caso queiramos ter versões diferentes do nosso projeto ou em momentos em que gostaríamos de fazer grandes mudanças e tememos que possamos estragar alguma coisa O que podemos fazer é primeiro criar uma cópia do projeto depois fazer as alterações. E se estragarmos alguma coisa, podemos facilmente voltar para uma cópia anterior E, por fim, podemos carregar um projeto do nosso computador e salvar um projeto no nosso computador Aprenderemos mais sobre essas duas opções um pouco mais adiante no curso. Em seguida, temos um menu de edição, que tem apenas duas opções restaurar e ativar o modo turbo Com a Restauração, se removermos um ativo do nosso projeto, como um sprite ou um pano de fundo, sobre os quais aprenderemos muito mais tarde, podemos clicar em Restaurar para adicionar o ativo novamente ao nosso modo Turbo é para projetos realmente complexos que precisam ser executados super rápido No entanto, o modo turbo não funciona bem com certos tipos de projetos, como jogos, que têm muitos movimentos e animações suaves, então normalmente não precisamos usá-lo Em seguida, usando esta caixa aqui, que atualmente diz Sem título, podemos dar um nome ao nosso projeto Tudo o que precisamos fazer é substituir Untitled algo como scratch basics e E agora o projeto se chama Scratch Basics. Também podemos ver que ele mudou no título da guia do navegador. Se clicarmos no botão da página do Projeto C aqui, ele nos levará à página do projeto atual. E aqui podemos executar nosso projeto e adicionar coisas como instruções sobre como usar o projeto. Além disso, se pegarmos algumas ideias do projeto de outra pessoa, podemos reconhecê-las aqui Também podemos usar o botão Compartilhar aqui para que outros arranhadores possam conferir Mas, por enquanto, vamos voltar ao editor, o que podemos fazer clicando no botão C interno aqui. Em seguida, temos um link de tutoriais para conferir alguns outros tutoriais do Scratch e, aqui à direita, temos Se clicarmos aqui, ele nos levará à nossa página M Stuff. E aqui podemos ver todos os projetos que temos em nossas contas. No momento, tudo o que temos é o projeto básico do Scratch, mas vamos corrigir isso em breve E para voltar ao editor, podemos clicar no botão C e lateral aqui. Por fim, temos uma lista suspensa aqui com nosso nome de usuário, onde podemos fazer coisas como editar nosso perfil temporário, conferir nossa página de minhas coisas, alterar as configurações da conta e sair de nossas contas de rascunho. Abaixo do cabeçalho, temos todas essas coisas, quais nos familiarizaremos muito com as quais nos familiarizaremos muito ao longo do curso. Primeiro, o que vemos nessas duas áreas depende de qual das três guias selecionamos aqui à esquerda Com a guia de código selecionada, podemos ver a paleta de blocos, que nos permite escolher entre várias categorias de blocos Os blocos, sobre os quais aprenderemos muito mais na próxima lição, são o que usamos para criar o código do nosso projeto e fazer com que ele realmente faça coisas. E o lugar onde construímos o código é essa grande atualmente vazia chamada área de código. Se mudarmos para a guia de fantasias, agora veremos as roupas do sprite atual que selecionamos aqui na pintura de sprite no canto inferior direito No momento, o único sprite que temos em nosso projeto é o Scratch cat E o gato Scratch tem duas roupas, o que nos permite mudar rapidamente sua aparência. E ainda temos várias ferramentas que podemos usar para editar o traje atual. Em breve veremos como podemos adicionar mais sprites ao nosso projeto, bem como criar nossos próprios sprites e Em seguida, se formos para a guia Sons, podemos ver todos os sons que o sprite selecionado possa ter Scratchcat tem o som de miado e podemos reproduzi-lo clicando no botão Play aqui Também temos botões para modificar os sons e depois aprenderemos como usar o código para adicionar sons e músicas aos nossos jogos Em seguida, no canto superior direito, temos o palco. É aqui que podemos realmente executar nosso projeto e vê-lo em ação. Para executar o projeto, clicamos no botão da bandeira da tela aqui. Mas como ainda não adicionamos nenhum código, nada acontece. Começando com a próxima lição, faremos com que o Scratchcat se mova no palco Mas agora, se quisermos, podemos clicar e arrastá-lo para movê-lo manualmente. Também temos alguns botões aqui para alterar o tamanho do palco e podemos usar este para tornar o palco em tela cheia. Abaixo do palco, temos o painel de sprites onde podemos ver todos os sprites em Sprites são coisas como personagens, armas e botões que compõem o visual em nossos aplicativos e jogos Também temos algumas opções aqui para alterar certos aspectos dos sprites selecionados Por exemplo, podemos renomeá-lo, podemos mudar sua localização no palco com 00 sendo o centro do palco Podemos ativar e desativar sua visibilidade. Podemos mudar seu tamanho e podemos mudar a direção para a qual ele está voltado. A direção padrão de cada sprite é 90 graus. Quando a direção de um sprite estiver em 90, ele ficará voltado da mesma forma que seu traje atual Ok, aqui à direita do painel de sprites, temos o painel de palco O painel do palco serve para adicionar e criar cenários, que representam os planos de fundo do nosso projeto Atualmente, temos apenas um pano de fundo em branco e, se clicarmos aqui, podemos ver que, assim como com os sprites, podemos editar os Podemos adicionar código a eles e até mesmo adicionar sons a eles. Em seguida, na parte inferior do painel de sprites e do painel de palco, temos botões para carregar, editar e escolher entre uma variedade de sprites e Finalmente, na parte inferior esquerda do editor de rascunhos, temos nossa mochila Nossa mochila está vazia no momento, mas o que podemos fazer com isso é adicionar recursos como sprites e cenários, bem como blocos de código à mochila, e tudo estará disponível para todos os Isso é especialmente útil quando verificamos os projetos de outros arranhadores Se virmos algum código ou ativos que gostaríamos de emprestar e adicionar aos nossos próprios projetos, podemos arrastá-los nossa mochila e, quando abrirmos nosso próprio projeto, podemos arrastá-los da mochila para o nosso Tudo bem, agora que sabemos o que podemos fazer no editor de rascunho, é hora de começar a realmente fazer isso 4. Os blocos de construção do zero: Algo que eu não mencionei na lição anterior é que cada sprite e pano de fundo tem sua própria área de código e seu próprio Portanto, se quisermos que o Scratch cat faça alguma coisa, por exemplo, precisamos ter certeza de que ele está selecionado no painel de sprites E agora vamos ver o que podemos fazer com que ele faça examinando mais de perto a paleta de blocos Os blocos de código são separados em categorias diferentes, codificadas por cores para que possamos localizar facilmente os blocos cada categoria na lista aqui E cada categoria tem um código para afetar um sprite de uma forma específica Por exemplo, na categoria movimento, podemos mover e girar um sprite de maneiras diferentes e, na verdade, podemos ver o que um determinado bloco faz clicando nele Então, por exemplo, se ficarmos de olho no palco, cada vez que clicamos no bloco de mover dez passos, ele move o Scratch cat em dez passos na direção atual. E sempre que temos um bloco com um texto preenchido assim, podemos realmente digitar um novo valor. Então, se quisermos mover o Scratch cat duas vezes mais longe, podemos substituir o dez aqui por um 20 e clicar no bloco. Quando Scratch cat chega à beira do palco, no entanto, ele não consegue ir mais longe. Então, agora precisaremos reposicioná-lo clicando e arrastando-o no palco ou usando o bloco go to XY Como mencionei na lição anterior, o 0,00 é o centro do palco Então, no bloco go to XY, se colocarmos X e Y em zero e clicarmos nele, ele moverá o Scratch cat de volta ao centro, e isso realmente posiciona o sprite usando seu ponto central Se usarmos um valor positivo para X, podemos movê-lo para a direita do centro e um valor negativo moverá para a esquerda do centro. Da mesma forma, um valor Y positivo o moverá acima do centro e um valor negativo o moverá abaixo do centro. Também podemos girá-lo para que ele fique voltado para uma direção diferente. Por exemplo, quando ele está voltado para a direita, se quisermos colocá-lo com a face para cima, precisaríamos girá-lo 90 graus no sentido anti-horário Para fazer isso, podemos definir o valor do bloco de giro no sentido anti-horário aqui para 90 graus e clicar nele E se agora clicarmos no bloco de movimento, ele se moverá na nova direção. Agora, digamos que queremos que o Scratch cat se mova em uma área quadrada ao redor do palco. Para isso, poderíamos continuar indo e voltando, clicando na curva e movendo os blocos repetidamente. No entanto, isso pode ser muito irritante. O que seria melhor seria se pudéssemos de alguma forma conectar esses dois blocos para que um único clique o transformasse e o movesse, e é aí que entra a área do código. Para adicionar blocos à área do código, basta clicar e arrastá-los da lista. Também temos esses botões no canto inferior direito para ampliar e diminuir o zoom na área do código. Também podemos fazer isso com o mouse , mantendo pressionada a tecla Control ou a tecla de comando no Mac e rolando o mouse para cima e para baixo E se precisarmos nos mover dentro da área do código, podemos usar as barras de rolagem ou simplesmente clicar e segurar dentro uma área vazia e mover o mouse. Tudo bem, agora, se dermos uma olhada em nossos dois blocos de código aqui, podemos ver que cada um tem um entalhe na parte superior e uma protuberância na Se pegarmos um bloco e o movermos para mais perto do outro, obteremos essa indicação cinza mostrando que, se soltarmos o mouse agora, os dois blocos se encaixarão como blocos de construção ou legos Os blocos agora estão conectados entre si no que é chamado de script. E se clicarmos em um dos blocos no script, ele executará a ação no primeiro bloco, depois no próximo bloco e assim por diante. Para ver isso melhor, podemos aumentar o bloco de movimento para 100 etapas. Agora, cada vez que clicamos em um dos blocos, Scratch cat se move 100 passos gira 90 graus no sentido anti-horário E tudo isso acontece durante uma única atualização do palco, então parece que ele se move e gira ao mesmo tempo Ok, e podemos continuar desenvolvendo os scripts. Por exemplo, talvez queiramos que roupa do Scratchcat mude após cada turno Mudar o traje de um sprite afeta sua aparência ou aparência Então, para isso, precisaremos verificar a categoria de blocos Los. E aqui podemos fazer coisas como fazer um sprite dizer ou pensar em algo Podemos mudar seu tamanho e cor, e podemos mudar sua roupa, seja trocando por uma roupa específica ou mudando para a próxima roupa disponível do Sprite Se dermos uma olhada na aba de fantasias, Scratch cat tem apenas duas fantasias, e sua primeira fantasia, chamada fantasia um, é a fantasia atualmente ativa. Então, se mudarmos para o próximo traje, o traje dois ficará ativo. Mas depois da segunda fantasia, não temos a próxima roupa para trocar. entanto, isso não é problema, porque quando um sprite está vestindo seu traje final e tentamos mudar para o próximo, Scratch automaticamente devolve ao primeiro traje Então, vamos voltar ao código, trazer o próximo bloco de roupas e colocá-lo na parte inferior do bloco giratório E agora, cada vez que clicamos em um dos blocos nos scripts, Scratch cat se move, depois se vira, depois essa roupa muda, tudo em uma única atualização do estágio Tudo bem, agora, e se quisermos fazer com que cada vez que executarmos o script, o Scratchcat execute todas as ações um determinado número É aqui que entra a categoria de controle dos blocos. Os blocos de controle nos permitem controlar o fluxo do nosso projeto, como pausar um script por um certo número de segundos, repetir ações um certo número de vezes ou até mesmo realizar ações sempre somente sob certas condições e criar clones Vamos aprender muito mais sobre todos esses blocos ao longo do curso. Mas, por enquanto, se quisermos que o Scratchcat repita essas ações um certo número de vezes, precisamos incluir um bloco de repetição E se passarmos o mouse sobre o topo do bloco de movimento, podemos enrolá-lo em torno de todos os blocos E agora, cada vez que clicamos no script, o Scratch cat executa todas as três ações e as repete por um total de dez vezes, mas ele fez isso tão rápido que mal conseguíamos ver. Então, o que podemos fazer é adicionar uma pequena pausa entre cada repetição Para isso, precisaremos de um bloco úmido. Se arrastarmos um para dentro do bloco de repetição, podemos colocá-lo antes entre ou depois de qualquer um dos blocos aqui. Vamos colocá-lo acima do bloco de movimento, para que haja um atraso antes da primeira repetição. Agora, com um peso padrão de 1 segundo entre cada repetição, o script inteiro levará 10 segundos para ser executado, o que provavelmente é um pouco longo demais. Mas, felizmente, também podemos usar valores decimais. Por exemplo, se mudarmos para 0,1, podemos adicionar um décimo de segundo de pausa entre cada Agora vamos tentar. Muito melhor. E, claro, também podemos mudar o número de repetições para algo mais, como talvez 20 Scratchcat já esteja bem tonto, então vamos dar a ele outras coisas para fazer que não envolvam Uma coisa divertida que podemos fazer é fazer com que ele siga o ponteiro do mouse pelo palco Para isso, precisamos voltar à categoria de movimento. Um bloco de movimento que temos é esse outro bloco go to, que se clicarmos nele agora, por padrão, fará Scratchcat vá para uma posição aleatória no palco No entanto, se clicarmos em uma posição aleatória aqui, teremos outra opção de ponteiro do mouse Se escolhermos isso e clicarmos no bloco agora, Scratchcat realmente tentará se mover para o ponteiro do mouse, mas ficará preso na borda esquerda do palco Para fazer isso funcionar enquanto movemos o mouse no palco, precisaremos criar outro script. Na verdade, um sprite pode ter vários scripts. Então, vamos começar uma nova arrastando um bloco de ponteiro do mouse para uma área vazia Agora, ter que clicar no bloco simplesmente não vai funcionar porque precisamos ser capazes de mover o mouse pelo palco. Isso significa que precisaremos que o bloco funcione basicamente para sempre, ou pelo menos até mandarmos que ele pare. Para isso, como vimos anteriormente na categoria Controle, temos um bloqueio eterno. Então, vamos trazer um para a área de código e envolvê-lo no bloco de ponteiro do mouse Se clicarmos no script, agora, enquanto movemos o mouse pelo palco, o Scratch cat o seguirá continuamente . Muito legal, certo? Mas agora você deve estar se perguntando: como paramos o projeto para que o gato Scratch pare de seguir nosso mouse? Bem, enquanto tivermos um script em execução para sempre, o botão de bandeira verde permanecerá ligado. Mas ao lado, temos um botão de parada. E se clicarmos nele, todos os scripts em execução no momento serão interrompidos. Ok, agora vamos falar mais sobre esse botão de bandeira de tela. Para ter um aplicativo ou jogo adequado, ter que clicar em scripts individuais na área de código para fazer nossos sprites fazerem coisas não vai funcionar Em vez disso, precisaremos de uma maneira de executar todos os scripts simultaneamente ou quando eventos específicos acontecerem, e é aí que entra o botão de bandeira verde. Nós e outros usuários de nossos aplicativos e jogos precisaremos clicar no botão para que nosso programa comece a ser executado. Se clicarmos nele agora, no entanto, nada acontece porque o scratch ainda não sabe quais ações o botão deve realizar. Clicar no botão aciona um evento no zero e para dizer ao Scratch o que fazer quando um determinado evento acontece, temos a categoria de blocos de eventos Alguns dos eventos que podemos verificar são quando a bandeira verde é clicada quando uma tecla do teclado é pressionada, quando um sprite é clicado e, como veremos mais adiante no curso, podemos até mesmo transmitir mensagens em todo o podemos até mesmo transmitir mensagens em todo nosso projeto e fazer com que os sprites reajam Mas o evento que estamos procurando agora, é claro, é quando a bandeira verde é clicada E se dermos uma olhada mais de perto no bloco, ao contrário dos outros blocos que usamos até agora, este não tem entalhe na parte superior Ele só tem uma aba na parte inferior. Blocos como esses são chamados blocos de chapéus e só podem ser usados na parte superior de um script. Agora, se quisermos fazer isso, quando a bandeira verde for clicada, o script aqui com o loop forever começará a ser executado Podemos arrastar o bloco clicado na bandeira verde da vitória e colocá-lo no topo do script Agora, clicar na bandeira verde fará com que o Scratchcat comece a seguir o Tudo bem, vamos clicar no botão parar. E digamos que também queremos que o Scratchcat faça alguma coisa sempre que pressionamos uma tecla específica Para isso, precisaremos de um bloco pressionado com a tecla win. E, como acontece com o bloco clicado na bandeira verde, este só pode aparecer no topo de um script Então, vamos arrastá-lo para uma área vazia para iniciar um novo script. Além disso, fique à vontade para manter o script de repetição aqui em seu projeto se quiser continuar brincando com ele, mas para liberar espaço, vou me livrar do meu. Para remover um bloco ou um script inteiro da área de código, basta clicar e arrastá-lo de volta para dentro da paleta de blocos e soltá-lo Com a tecla win pressionada, podemos escolher entre várias teclas do teclado. Mas, por enquanto, vamos ficar com a tecla de espaço e fazer com que, quando pressionarmos a tecla de espaço, o Scratchcat diga algo como olá Para isso, precisaremos voltar à categoria Looks. E aqui temos um bloco S quatro e um bloco Sa normal. Vamos começar com o normal, anexando-o à parte inferior do bloco pressionado com a tecla Win Space Agora, se movermos o Scratchcat para outro lugar para que possamos vê-lo e pressionarmos a tecla de espaço, um pequeno balão de fala aparece ao lado dele contendo qualquer texto que tenhamos no No entanto, com o bloco S normal, o balão de fala nunca desaparece. Se quisermos que ele desapareça depois de um certo tempo, podemos usar um bloco save four. Então, primeiro, vamos nos livrar do bloco Sa aqui, o que podemos fazer separando-o do script e arrastando-o para a paleta de blocos E vamos anexar um bloco de salvamento de quatro ao bloco pressionado com a tecla Winspace Podemos fazê-lo dizer o que quisermos como você e por quanto tempo quisermos, talvez 1 segundo. Se agora pressionarmos a tecla de espaço, ele diz Yo, depois de 1 segundo, o balão de fala desaparece Também podemos fazer isso durante a execução do projeto. Se clicarmos na bandeira verde, o Scratch cat começará a seguir nosso mouse e, se pressionarmos a tecla de espaço, ele dirá você por 1 segundo enquanto continua seguindo o mouse. Isso significa que, durante a execução do projeto, sempre que pressionamos a tecla de espaço, esses dois scripts são executados ao mesmo tempo. É importante saber isso porque, eventualmente, teremos muitos sprites com muitos scripts em nossos jogos, todos rodando ao mesmo tempo E só por diversão, sempre que pressionamos a tecla de espaço, podemos deixar o usuário digitar algo como seu nome e, em seguida, fazer com que o Scratchcat cumprimente Para isso, precisaremos verificar a categoria de detecção. Podemos usar os blocos de detecção para detectar certas coisas, como se um sprite está tocando algo ou se está tocando em uma cor específica, podemos fazer uma pergunta ao usuário e detectar quando ele digita uma resposta, e podemos detectar se uma tecla específica foi pressionada ou se um botão do mouse foi clicado Esse bloco pressionado por tecla é um pouco diferente do bloco de pressionamento de tecla win que estamos usando no script e vamos dar uma olhada em breve. Mas, por enquanto, queremos usar o bloco de perguntar e esperar. Com esse bloco, podemos fazer com que o sprite faça uma pergunta específica e aguarde a resposta E queremos que isso aconteça depois que a tecla de espaço for pressionada, mas antes que o Scratch cat fale. Então, vamos colocar um entre os dois blocos. Se executarmos o projeto agora e pressionarmos a tecla de espaço, Scratchcat pergunta: qual é o seu nome e uma caixa de entrada aparece aqui na parte inferior do palco Agora podemos digitar nosso nome e pressionar Enter, mas, no momento, não estamos realmente usando a resposta, então vamos interromper o projeto. Para obter a resposta, temos que usar o bloco de respostas aqui. E para usar blocos arredondados como esse, temos que colocá-los dentro uma abertura arredondada ou entrada de outro bloco. Se dermos uma olhada no bloco S four, ele tem duas entradas arredondadas 14 qual texto dizer e 14, quantos segundos dizer o texto. Se quisermos que o Scratchcat diga o nome do usuário, precisamos usar um bloco de resposta como entrada de texto Para fazer isso, podemos arrastar um bloco de respostas a abertura até que ele fique branco e soltar. E 1 segundo é um pouco rápido demais, vamos mudar para 2 segundos. Se agora rodarmos o jogo, pressionar a tecla de espaço, digitar nosso nome e pressionar Enter, Scratchcat dirá nosso nome por 2 segundos Mas tê-lo apenas dizendo nosso nome é estranho. Seria melhor se ele dissesse algo como olá ou você do que nosso nome. Para fazer isso, precisaremos unir o texto de saudação e a resposta dentro das entradas de texto Para isso, precisamos de um bloco da categoria operadores. Os blocos do operador nos permitem fazer coisas como realizar operações matemáticas, escolher números aleatórios, comparar coisas e, o mais importante, para nossos propósitos no momento, unir coisas. O bloco de junção aqui é exatamente o que precisamos. Vamos trazer um para a área do código e vamos colocá-lo em uma área vazia por enquanto. Para a primeira entrada do bloco de junção, podemos digitar uma saudação como Yo, e eu também adicionarei uma vírgula e um espaço para separar o texto Agora podemos arrastar o bloco de resposta daqui e usá-lo como a segunda entrada do bloco de junção. No entanto, e se também quisermos adicionar um ponto de exclamação ou algo assim após a resposta Para fazer isso, podemos usar dois blocos de junção juntos. Então, primeiro, vamos mover o bloco de resposta para fora do bloco de junção por enquanto, e agora vamos pegar outro bloco de junção e usá-lo como a segunda entrada desse bloco de junção. Agora podemos usar o bloco de resposta como a primeira entrada do novo bloco de junção e digitar um ponto de exclamação no segundo Então, o que tudo isso fará é primeiro unir a resposta ao ponto de exclamação e, em seguida, unir o espaço do Yom ao início disso Tudo bem, agora vamos pegar tudo isso e usá-lo como entrada de texto do bloco Salvar quatro. Finalmente, vamos tentar. Execute o projeto, pressione a tecla de espaço, digite nosso nome e pressione Center. Agradável. Para ainda mais diversão, podemos fazer com que o Scratchcat também emita um som Se dermos uma olhada na guia de sons novamente, o Scratchcat tem apenas um som que é um miado e, para usá-lo, precisamos voltar à guia de código e à guia de código e à Aqui temos um bloco de reprodução de som até terminar e um bloco de som de início. Às vezes, queremos que um sprite toque um som e não faça mais nada até que o som esteja pronto Mas, por enquanto, queremos apenas começar a tocar um som e manter todo o resto funcionando normalmente. Então, vamos arrastar um bloco de som inicial e colocá-lo abaixo do bloco seguro de quatro blocos Se tentarmos isso agora, o gato Scratch nos cumprimenta novamente, mas ele não mia até depois da espera de dois segundos que colocamos Então, em vez disso, vamos colocar o bloco de som inicial acima do bloco seguro de quatro. E vamos tentar. Muito melhor. Vou escrever mais uma coisa antes de terminarmos esta lição. Vamos voltar para a categoria de sensores. Como vimos anteriormente, temos esses blocos de formato hexagonal aqui para verificar se uma tecla está pressionada ou se o botão do mouse está pressionado Blocos hexagonais como esses são chamados de blocos booleanos. Um booleano é sempre verdadeiro ou falso. Por exemplo, com o bloco de espaço de tecla pressionado, sempre que a tecla de espaço estiver sendo pressionada, o bloco terá um valor verdadeiro. Caso contrário, ele terá um valor falso e podemos usar esse valor para decidir se devemos ou não realizar uma ação específica. Para verificar o valor de um bloco booleano, precisamos usar um bloco condicional Os blocos de condição afetam o fluxo ou o controle do nosso projeto, portanto, eles estão localizados na categoria de controle. Todos os blocos condicionais têm aberturas hexagonais vazias para uso com os Temos um bloco I then, I depois s block, espere até bloquear e repita até bloquear. Com o bloco ITN, podemos realizar uma ou mais ações somente se uma determinada condição for verdadeira Com if then else, podemos realizar algumas ações se uma condição for verdadeira e outras ações se for falsa. Com a espera até que possamos pausar um script até que uma determinada condição seja atendida, e com a repetição até que possamos repetir as ações até que uma determinada condição seja atendida Então, se quisermos, por exemplo, fazer com que o Scratch cat faça algo apenas enquanto uma determinada tecla está sendo pressionada, podemos primeiro inserir um bloco ITN Então, podemos voltar à detecção, pegar um bloco pressionado com uma tecla e usá-lo como condição para o bloco I in E como já estamos usando a tecla de espaço para o script aqui, vamos mudar essa para outra coisa , como talvez a tecla de seta para cima. E desde que pressionemos a tecla de seta para cima, podemos fazer com que o Scratchcat faça algo como girar em um círculo Então, vamos nos mover e pegar um dos blocos giratórios e encaixá-lo dentro do bloco if then Para que isso funcione, porém, precisamos verificar continuamente se a tecla de seta para cima está sendo pressionada. Então, o que podemos fazer é pegar tudo isso e encaixá-lo dentro do bloco eterno aqui, acima ou abaixo do bloco de ponteiro do mouse Se clicarmos na bandeira verde agora, Scratch cat continuará seguindo o mouse normalmente e, se mantivermos pressionada a tecla de seta para cima, ele também girará continuamente 15 graus. Também podemos fazer com que ele só execute a ação de ir para o ponteiro do mouse se não estivermos pressionando a tecla de seta para cima Para isso, precisaremos substituir o bloco I thin outs aqui por um bloco I thin outs. Primeiro, vamos voltar à categoria de controle e, por enquanto, colocar um bloco I thin outs em algum espaço vazio. Agora podemos retirar o bloco pressionado da tecla do bloco I thin outs e usá-lo como condição para o bloco I thin outs. Quando a seta para cima está sendo pressionada, novamente queremos que o Scratch cat gire. Vamos mover o termo bloco do bloco I thin para a parte I do bloco I thin outs. E agora, sempre que a seta para cima não estiver sendo pressionada, faremos com que o Scratch cat siga nosso mouse. Portanto, precisaremos mover o bloco de ponteiro go to mouse aqui para a parte externa do bloco I thin outs No entanto, sempre que movemos um bloco, todos os blocos anexados à parte inferior dele se moverão junto com ele. Mas, na verdade, não precisamos mais do bloco fino I, então podemos separá-lo e nos livrar dele Agora podemos encaixar o bloco go to aqui, então podemos pegar tudo isso e encaixá-lo dentro do bloco eterno. Se executarmos o projeto agora, Scratch cat segue nosso mouse normalmente, mas se mantivermos pressionada a tecla de seta para cima, ele para de seguir o mouse e começa a girar. Por fim, digamos que, em vez de pressionar uma tecla para fazer o gato Scratch virar, queremos poder manter pressionado o botão do mouse. Para isso, podemos remover o bloco pressionado com a tecla , em seguida, podemos ir para o sensor e substituí-lo por um bloco com o mouse pressionado Se o executarmos agora e clicarmos e segurarmos dentro do palco, ele funcionará por alguns segundos, mas então o Scratch cat para de girar. Isso ocorre porque, na verdade, estamos clicando no sprite aqui no estágio, então o Scratch acha que estamos tentando reposicionar o sprite e está pausando o projeto enquanto fazemos isso Na verdade, isso só acontece enquanto estamos trabalhando no editor de rascunho. Então, se pararmos o projeto e entrarmos no modo de tela cheia clicando no botão aqui em cima, não estaremos mais no editor de rascunho e não poderemos clicar e arrastar um sprite pelo palco Agora, se executarmos o projeto, podemos segurar o botão do mouse e fazer o Scratch cat girar até a eternidade 5. Clones e variáveis: Antes de começarmos a criar nossos jogos, há mais dois recursos do Scratch muito importantes que precisamos aprender sobre clones e variáveis Primeiro, os clones nos permitem criar várias cópias de um único sprite e fazer com que essas cópias se movam separadamente e façam coisas diferentes Isso é particularmente importante em jogos em que podemos ter uma dúzia de inimigos semelhantes correndo e balas voando por toda parte, e não faria sentido criar um sprite separado para cada Tudo bem, então vamos ver como podemos usar clones criando alguns clones do nosso Trustee scratchcat Primeiro, para usar clones, precisamos entrar na categoria de controle Na parte inferior, temos três blocos para lidar com clones. Quando eu começo como um clone, crio um clone e excluo esse Para criar um clone de um sprite, usamos o create Clone of block Atualmente, diz: crie um clone de mim mesmo e, se tivéssemos outros sprites no projeto, também os veríamos na lista No entanto, como só temos Scratch Cat, só podemos fazer com que ele crie um clone de si mesmo Agora, se movermos Scratch Cat algum lugar do palco para que possamos vê-lo melhor e clicarmos no bloco Crate clone of myself, não parece que nada tenha acontecido, mas se o movermos novamente, podemos ver que agora temos dois Scratch cats Este é o original e este é um clone. E cada vez que clicamos no CrakkloneBlock, ele cria um Agora, se quisermos fazer um clone realizar algum tipo de ação depois de ser criado, precisaremos trazer um quando eu começar como um bloco clone Também vamos trazer um bloco create clone of myself para a área de código para que seja mais fácil de acessar O script when I start as a clone será acionado automaticamente toda vez que criarmos um novo clone do scratch cat Então, se quiséssemos, por exemplo, fazer com que cada clone se movesse para a direita em um certo número de etapas, poderíamos ir para o movimento, pegar uma alteração X por bloco e colocá-la abaixo da quando eu começar como um bloco clone O valor de entrada padrão é dez. Então, se clicarmos no bloco Create Clone, ele cria um clone diretamente atrás do Scratch cat original, e o clone se move imediatamente para a direita Se clicarmos no bloco novamente, parece que nada aconteceu, mas como ainda estamos criando clones do gato Scratch original, que ainda está nessa posição, agora temos dois clones dez passos à direita do Vamos tirar os dois clones do caminho por enquanto. Se quisermos que cada clone mova dez etapas para a direita do clone anterior, em vez de clonar apenas o scratch cat original, precisaremos criar um clone de cada clone Para fazer isso, podemos ir para o controle. E adicione um bloco create clone of myself na parte inferior do script When I start as a Clone Então, o que acontecerá agora é que, toda vez que um clone for criado, quando eu começar como clone, um script será executado, fazendo com que o clone se mova para a direita dez etapas e, em seguida, crie um clone Em seguida, o script será executado novamente para o novo clone, que passará por mais dez etapas e criará um clone de si mesmo e assim por diante No entanto, antes de tentarmos, na verdade temos um problema. Como não há nada no script que diga quando parar, ele continuará funcionando constantemente criando novos clones. Então, o que podemos fazer é fazer com que o bloco de criação de clone no script só seja executado se uma determinada condição for verdadeira Por exemplo, podemos verificar se a exposição atual dos clones é menor que uma determinada posição no palco e, em caso afirmativo, criaremos um novo Caso contrário, não criaremos um novo clone e, portanto, o script when I start as a clone não será executado novamente Ok, então para fazer isso, vamos trazer um bloco I thin e envolvê-lo apenas no bloco create clone of myself Para a condição, queremos verificar se a exposição do clone atual é menor do que uma determinada exposição no palco, como Então, para isso, precisamos ir para a categoria de operadores e usar um bloco menor que como condição para o bloco fino I. Para obter a posição X ou Y do clone atual, podemos ir para o movimento e, aqui embaixo, temos os blocos de posição e de posição Y. É claro que queremos a posição, então vamos pegar uma e usá-la como a primeira entrada do bloco menor que. Vamos verificar se é menor que 150. Portanto, agora, quando o script for executado, ele só criará um novo clone se a exposição do clone atual for menor que 150 E para experimentar, podemos clicar no outro bloco de criação de clones aqui. Bom. Ele cria e move continuamente os clones até atingir uma exposição de 150 Agora, se quisermos desacelerar um pouco, podemos ir até Control e pegar um bloco de peso, e podemos colocá-lo praticamente em qualquer lugar dentro dos scripts. Um peso de cerca de 0,1 segundo deve ser bom. Vamos tentar. Mas temos um problema. Ele criou os novos clones, mas não pudemos realmente vê-lo porque ele não removeu primeiro os clones anteriores Veremos como podemos usar o código para excluir clones daqui a pouco. Mas, por enquanto, a maneira mais fácil é clicar na bandeira verde. E como ainda temos o script da bandeira verde da lição anterior, o Scratch Cat agora está seguindo nosso cursor, então vamos clicar no botão Parar e movê-lo para algum lugar aqui embaixo. Agora, se clicarmos no bloco Create Clone, podemos ver que o script funciona conforme o esperado OK. Agora vamos voltar ao script da bandeira verde e retirar o bloco I thin outs do bloco forever. Então, vamos mover apenas o bloco de ponteiros do mouse de volta para o bloco eterno, e podemos nos livrar do bloco I thin outs agora Também vamos nos livrar de todos os blocos dentro do quando eu começar como um script de clone Finalmente, vamos mover o bloco create Clone aqui para o bloco forever O que você acha que acontecerá se clicarmos na bandeira verde agora? Nossa, louco. Scratch cat está seguindo nosso cursor e estamos continuamente criando clones dele em todo o palco Tudo bem, foi divertido, mas vamos parar o projeto por enquanto Agora, digamos que, depois de criar cada clone, gostaríamos que ele desaparecesse rapidamente, criando um efeito interessante de trilha de mouse Para fazer com que um sprite apareça ou desapareça, se formos para a categoria Looks, temos um efeito de mudança por bloco e um efeito de conjunto de dois No momento, os dois estão usando o efeito de cor, que nos permite alterar a cor de um sprite Mas outro efeito que temos é o efeito fantasma. O efeito fantasma vai de 0% a 100%. O valor padrão é 0%, o que torna o sprite totalmente opaco Mas qualquer coisa acima de 0% tornará o sprite cada vez mais transparente até atingir 100%, que significa que ele é completamente transparente e não é mais visível no palco Então, se escolhermos o efeito fantasma, movermos Scratch cat para algum lugar aqui embaixo novamente e clicarmos no bloco de alteração do efeito fantasma, ele se tornará 25% transparente. Se clicarmos novamente, ele se tornará 50% transparente, desde 75% e, finalmente, 100%, fazendo com que ele não seja mais visível. Para trazê-lo de volta, precisamos diminuir o efeito fantasma usando um valor negativo aqui. No entanto, uma maneira mais rápida de fazer com que ele volte ao normal é clicar no bloco de efeitos gráficos claros aqui. Isso restaura todos os efeitos gráficos para os valores padrão Tudo bem, então se quisermos mudar o efeito fantasma de cada clone, precisaremos pegar um bloco de mudança de efeito fantasma e colocá-lo dentro do script When I start as a clone No entanto, queremos que os clones se tornem cada vez mais transparentes, então precisaremos repetir o bloco um certo número de vezes Isso significa que precisamos controlar e pegar um bloco de repetição, e vamos envolvê-lo no bloco de mudança de efeito fantasma. Como isso funciona em porcentagens, se quisermos dizer, alterar o efeito fantasma em 10% a cada vez, para tornar o clone totalmente transparente, precisaremos repetir dez vezes e alterar o efeito fantasma 10% porque 10% vezes dez é igual Ok, vamos tentar. Incrível. Mas temos um problema. Na verdade, o Scratch só nos permite ter um total de 300 clones no palco ao mesmo tempo Então, eventualmente, chegaremos a um ponto em que ele pare de criar clones. E a razão é que, embora não possamos ver os clones, eles ainda existem no palco Eles simplesmente não são visíveis. Se quisermos ver quantos clones temos no palco a qualquer momento, podemos acompanhar o número dentro de uma variável As variáveis, por definição, podem armazenar valores variáveis e, para criá-los e acessá-los, usamos a categoria de blocos de variáveis E aqui, podemos criar variáveis únicas e podemos criar uma lista de variáveis. Também podemos ver um botão de criar um bloco aqui, que na verdade é da categoria Mbloxs e que nos permite criar blocos personalizados Veremos como fazer isso aprenderemos como criar uma lista de variáveis um pouco mais tarde no curso. Mas, por enquanto, precisamos apenas de uma única variável. E para criar um, clicamos no botão criar uma variável. E aqui podemos dar um nome à variável e escolher se queremos criá-la para todos os sprites ou apenas para esse sprite Se escolhermos todos os sprites, a variável se tornará uma variável global, o que basicamente significa que seu valor estará acessível a todos os sprites do projeto Por outro lado, se escolhermos apenas esse sprite, ele se tornará uma variável local ou privada, e somente o sprite atual poderá definir ou alterar seu Quando começarmos a criar jogos, cada personagem provavelmente terá atributos que queremos manter separados dos outros personagens. Por exemplo, cada tipo de inimigo pode ter uma velocidade diferente. Nesse caso, gostaríamos de usar variáveis locais, mas pode haver outros atributos que todos os personagens devem compartilhar, como a gravidade, de modo que, quando os personagens pularem, a gravidade os puxe de volta para baixo na mesma velocidade Nesse caso, gostaríamos tornar a gravidade uma variável global. Agora você pode estar pensando que como temos apenas um único sprite, devemos usar uma variável local para acompanhar o número de clones O problema com isso, no entanto, é que os clones são, na verdade, tratados como sprites separados no zero E como precisaremos que cada clone seja capaz de alterar o valor da variável, precisaremos torná-la uma variável global Então, vamos continuar com isso para todos os sprites. Agora, ao nomear uma variável, gosto de usar todas as letras minúsculas para variáveis locais e todas as letras maiúsculas para variáveis para Isso não é obrigatório, mas facilita saber se uma variável é local ou global apenas examinando-a em nossos scripts. Também é uma boa ideia dar a uma variável um nome que signifique exatamente para que ela serve, pois isso também tornará nossos scripts mais fáceis de ler e entender Ok, então, como vamos armazenar o número de clones dentro da variável e porque ela será global, podemos chamá-la de algo como Total de clones em Tudo bem, se clicarmos no botão OK, agora temos uma variável total do clone na lista aqui Além disso, o scratch realmente cria uma variável padrão em cada projeto chamada variável M. Não causará problemas se mantivermos a variável, mas se quisermos removê-la, podemos fazer isso clicando com o botão direito do mouse e escolhendo excluir. Tudo bem ao lado da variável total do clone, temos uma caixa de seleção, que está marcada por padrão Tudo isso significa que ele está mostrando o nome da variável junto com seu valor dentro do palco, e podemos clicar e arrastá-la se quisermos. Além disso, se clicarmos com o botão direito do mouse, podemos alterar a aparência. Por exemplo, leituras grandes ocultam o nome e tornam a parte do valor O controle deslizante adiciona um controle deslizante na parte inferior, qual podemos clicar e arrastar para alterar o valor da variável Se clicarmos com o botão direito novamente, agora temos uma opção de alteração do intervalo do controle deslizante que nos permite alterar os valores mínimo e máximo que podemos definir usando o controle deslizante No entanto, não precisamos fazer isso agora, então vamos clicar em Cancelar e vamos mudar a exibição de volta ao padrão clicando com o botão direito novamente e escolhendo as leituras normais Finalmente, se quisermos ocultar a variável, podemos clicar com o botão direito do mouse novamente e escolher ocultar ou podemos simplesmente desmarcar a caixa ao lado da variável dentro da paleta de blocos Mas, na verdade, queremos ver o valor da variável, então vamos marcar a caixa novamente. Ok, agora vamos ver como podemos realmente colocar nossa nova variável em funcionamento. Então, o que queremos fazer é cada vez que criamos um novo clone, queremos aumentar o valor da variável em um Para isso, usamos um total de clones de alteração em um bloco. Então, vamos pegar um e colocá-lo logo no topo do quando eu começar como um script de clone Definitivamente, não queremos colocá-lo dentro do bloco de repetição porque ele mudará a variável dez vezes para cada clone Ok, e o que esse bloco fará é adicionar um ao valor da variável total do clone toda vez que um clone for criado Se tentarmos agora, podemos ver que o valor do total do clone aumenta continuamente em um Ou seja, até chegar a 300, ele para de aumentar. O que isso significa é que, assim que atingimos 300 clones, o script when I start as a clone nunca mais é executado Felizmente, porém, podemos corrigir isso com bastante facilidade. Quando o bloco de repetição de um clone terminar, deixando o clone totalmente transparente, tudo o que precisamos fazer é excluir o Mas primeiro, se pararmos o projeto e executá-lo novamente, a variável total do clone começa em 300 e aumenta a partir daí Isso ocorre porque o scratch não redefine automaticamente o valor de uma variável toda vez que executamos um projeto. Em vez disso, precisamos fazer isso sozinhos, e podemos fazer isso usando um total de clones definido como bloco zero Queremos fazer isso sempre que clicarmos na bandeira verde e antes do loop forever que cria continuamente novos clones. Então, vamos pegar um total de clones definido em zero bloco e colocá-lo logo acima do bloco eterno Cada vez que executamos o projeto agora, o valor do total do clone é redefinido para zero Tudo bem, agora, para excluir um clone, precisamos ir para Controle e aqui temos que excluir esse bloco de clones Vamos pegar um e colocá-lo na parte inferior do bloco de repetição no script When I start as a clone Agora, assim que o bloco de repetição terminar e o clone ficar invisível, a exclusão desse bloco de clone será executada e o clone será executada e o clone OK. E sempre que excluímos um clone, também queremos diminuir o valor total do clone um para que o valor permaneça preciso Para isso, precisamos voltar às variáveis e trazer outro bloco total do clone de alteração não podemos colocá-lo entanto, não podemos colocá-lo na parte inferior do bloco de exclusão deste clone, porque um clone não pode fazer mais nada depois de ser excluído Então, vamos colocá-lo entre excluir esse bloco de clone e o bloco de repetição Desta vez, queremos diminuir o total de clones em um, então vamos usar um negativo como entrada Se executarmos o projeto agora, podemos ver que o total de clones nunca ultrapassa nove O valor em que ele pára depende quão rápido ou lento fazemos com que cada clone desapareça Por exemplo, se alterarmos o número de repetições para 20 e alterarmos o efeito fantasma em cinco, agora teremos no máximo 19 clones no palco ao mesmo tempo Tudo bem, e só mais uma coisa antes de terminarmos esta aula. Você deve ter notado que depois de alterarmos algo em nosso projeto, obtemos esse link para salvar agora no canto superior direito do cabeçalho. Podemos clicar aqui para salvar manualmente o projeto. Mas, à medida que estamos trabalhando no projeto, o scratch, em vários momentos, salvará o projeto para nós automaticamente. Portanto, a menos que estejamos planejando fechar o navegador depois de fazer algumas alterações que queremos manter, geralmente não precisamos nos preocupar em salvar nossos projetos manualmente. Tudo bem. E com tudo isso, acho que temos uma boa noção que podemos fazer com o Scratch agora Então, vamos começar a trabalhar na criação de alguns jogos incríveis. 6. Introdução de Smack Some Moles: O primeiro jogo que criaremos é um clone de toupeira Waka chamado SMCamles Como a toupeira Waka, o objetivo do jogo será matar o maior número possível de toupeiras antes que o No entanto, em SMCamles, a dificuldade aumentará à medida que o jogador marcar mais e mais pontos Parece um jogo simples, mas as técnicas que aprenderemos ao criá-lo serão incrivelmente úteis quando começarmos a desenvolver jogos mais complexos posteriormente no curso. Essas técnicas incluirão a criação de sprites personalizados, transmissão e o recebimento de mensagens entre os sprites, criação de blocos personalizados e o uso de efeitos sonoros Tudo bem, vamos começar. 7. Desenhe o Sprite de Martelo: Finalmente, podemos sair do nosso projeto Scratch Basics e começar a criar um novo projeto Para fazer isso, podemos ir ao menu Arquivo e escolher novo. E vamos renomear o projeto para eliminar algumas toupeiras Ok. E para este projeto, não precisaremos do scratchcat, então podemos removê-lo clicando no botão do ícone da lixeira ao lado dele no Adeus, Scratchcat. Para substituí-lo, temos algumas opções. Como podemos ver, se passarmos o mouse sobre o botão Escolha um Sprite aqui embaixo. Podemos fazer o upload de um sprite do nosso computador. Podemos fazer com que o Scratch nos surpreenda com um sprite aleatório. Podemos criar nossos próprios sprites e escolher entre uma variedade de sprites que o Scratch nos fornece Se clicarmos nessa opção ou se apenas clicarmos no próprio botão, isso nos levará a esta página, onde podemos ver todos os sprites disponíveis que podemos usar em nossos projetos Também podemos optar por ver apenas sprites de uma categoria específica e pesquisar por um sprite específico Na verdade, existem alguns sprites muito bons aqui e usaremos alguns ao longo do curso Mas para um jogo de bater uma toupeira, o que realmente precisamos é um martelo e, se tentarmos procurar por um martelo, o arranhão ficará vazio Então, o que isso significa é que teremos que aprender a criar nossos próprios sprites Para fazer isso, vamos clicar no botão Voltar aqui para voltar ao editor de rascunhos. E agora vamos passar o mouse sobre o botão Escolha um Sprite novamente E desta vez, vamos escolher a tinta. Clicar na pintura cria um novo sprite para nós na pintura Sprite chamado Sprite Como esse será nosso hammer sprite, vamos mudar o nome para hammer Ok. E se olharmos aqui na aba de fantasias, podemos ver que o sprite tem uma fantasia padrão, que no momento está completamente vazia Então, vamos corrigir isso. Para desenhar uma fantasia para um sprite, temos várias ferramentas com as quais podemos trabalhar Temos a ferramenta de seleção para selecionar, mover e redimensionar coisas Temos a ferramenta de remodelação para remodelar as coisas. Temos a ferramenta de pincel para desenhar pinceladas, a ferramenta de borracha para apagar partes de roupas, a ferramenta de preenchimento para preencher coisas com cores, a ferramenta de texto para escrever texto, a ferramenta linha para desenhar linhas e as desenhar círculos e retângulos ferramentas de círculo e retângulo para Para um martelo, precisaremos de um belo retângulo grande para bater nas Então, vamos escolher a ferramenta retangular. Agora, aqui em cima, temos duas opções para definir a cor do retângulo O preenchimento se refere à cor que preencherá o interior da forma e o contorno se refere à cor de um contorno que podemos colocar ao redor da forma, e podemos especificar a largura do contorno usando Por enquanto, vamos ver como podemos alterar a cor do preenchimento clicando na seta ao lado do preenchimento. E aqui temos três controles deslizantes com os quais podemos trabalhar para que a cor fique exatamente do jeito que queremos Primeiro, temos a cor, que se refere à cor real, como vermelho, laranja, amarelo, verde, azul, etc Em seguida, temos a saturação, que se refere à pureza da cor Deslizar isso para a esquerda adiciona cada vez mais branco à cor e colocá-lo totalmente à direita remove todo o branco da cor Finalmente, temos o brilho, que à medida que o diminuímos, adiciona preto à cor para escurecê-la Vou fazer meu retângulo ficar vermelho puro. Para fazer isso, colocarei a cor em zero e usarei 100 para saturação e brilho Ok, agora, se clicarmos na seta ao lado do contorno, teremos os mesmos controles deslizantes para definir a cor do contorno No entanto, na verdade, não precisamos de um contorno para o retângulo, então podemos desativá-lo completamente clicando no botão vermelho da barra Ford aqui Isso é exatamente o mesmo que definir a largura do contorno como zero Na verdade, também temos o mesmo botão para a cor de preenchimento, caso desejemos criar uma forma com apenas um contorno ou sem nenhuma cor, tornando-a invisível Agora, para desenhar um retângulo, vamos até a tela e, antes de começarmos, vamos ampliar um pouco a tela para que possamos ver esses pequenos quadrados quadriculados um pouco melhor, que nos ajudará a dimensionar as formas corretamente Para ampliar, podemos clicar neste botão com a lupa e o sinal de adição ou neste botão com a lupa e o sinal de adição manter pressionada a tecla Control ou Command e rolar a roda do mouse para cima Isso deve ser bom. E para começar a desenhar o retângulo, clicamos e arrastamos e para terminar de desenhar, soltamos o mouse Agora também podemos ver o retângulo no palco. Também temos esses pequenos círculos nos cantos e nas laterais do retângulo Se clicarmos e arrastarmos eles, podemos redimensioná-los. Se você não vê os círculos, alternar para a ferramenta seleção e selecionar o retângulo deve fazê-los aparecer. Também usando a ferramenta de seleção, podemos mover o retângulo Podemos clicar em uma área vazia na tela para desmarcá-la e clicar novamente para selecioná-la novamente Também temos essas duas pequenas setas na parte inferior central Passar o mouse sobre isso transforma nosso cursor em uma mão e, se clicarmos e arrastarmos, podemos girar No entanto, na verdade, não queremos girar o retângulo, então vamos desfazer isso Para desfazer uma ação anterior, podemos clicar nesse botão de desfazer aqui em cima ou pressionar Control ou Command Z. Isso pode , por algum motivo, também desfazer a renomeação do sprite Então, vamos mudar o nome para hammer novamente. E com o retângulo selecionado, também podemos vir até aqui e mudar a cor, se quisermos Mas eu vou ficar com o vermelho para o meu. Agora vou redimensionar meu retângulo, que ele tenha cerca de 16 blocos de altura e 11 blocos Cada bloco tem quatro pixels de largura e altura. Se olharmos aqui para as roupas, roupa atual do meu sprite, que agora consiste apenas em um retângulo, tem 43 pixels por 63 pixels Se eu fizer com que o retângulo cubra exatamente 11 quadrados por 16 quadrados, o tamanho se tornará exatamente 44 pixels por 64 pixels Mas, em qualquer caso, o tamanho definitivamente não precisa ser perfeito e fique à vontade para usar algo maior ou menor, se quiser. Agora precisamos dar uma alça ao martelo. Para isso, podemos usar a ferramenta de linha. A ferramenta de linha só funciona com a cor do contorno e ignora completamente a cor de preenchimento Então, vamos entrar aqui e definir a cor do contorno para o que quisermos Primeiro, para ver todas as cores, precisamos aumentar o brilho. Eu vou usar o amarelo para o meu. E com uma largura de contorno de um, a linha vai ficar bem barulhenta Então, vamos aumentá-lo para algo como 16. Agora vamos começar a criar a linha em algum lugar próximo ao centro vertical do retângulo, mas cerca de dois ou três blocos à esquerda do retângulo Agora, ao clicarmos e arrastarmos, podemos criar uma linha. Mas, no momento, está se movendo em todas as direções diferentes. Se quisermos desenhar uma linha perfeitamente reta, podemos manter pressionada a tecla shift. Vou fazer com que o meu se estenda cerca de 15 blocos do lado direito do retângulo Mas, novamente, nada disso precisa ser perfeito. O martelo agora tem uma alça, mas como o desenhamos depois do retângulo, ele está aparecendo na parte superior Em vez disso, deve estar atrás do retângulo para que pareça que está passando pelo retângulo e saindo do Para alterar a ordem de desenho das formas, primeiro precisamos pegar a ferramenta de seleção e selecionar uma das formas. Agora, aqui em cima, temos esses quatro botões. Para frente o colocará acima de uma única forma, para trás o enviará abaixo de uma única forma, frente o colocará acima todas as outras formas e verso o enviará abaixo de todas as outras formas Como tenho o retângulo selecionado e quero colocá-lo acima da linha, posso clicar no Avançar ou no botão frontal Isso definitivamente parece mais um martelo agora. Ok, há mais uma coisa que precisamos fazer para terminar de criar a fantasia de Hammer sprites por enquanto Primeiro, vamos selecionar os dois objetos do martelo. Para fazer isso, usando a ferramenta Selecionar, podemos começar a clicar e arrastar dentro de uma área vazia, que cria uma caixa de seleção, e todos os objetos que estiverem dentro ou tocarem na caixa quando soltarmos o mouse serão Ou, se desmarcarmos tudo, podemos selecionar um dos objetos, manter pressionada a tecla shift e clicar no outro objeto para selecioná-lo também Agora, se começarmos a mover os objetos, veremos uma pequena cruz no centro da tela. Isso representa o centro do traje. Sempre que o sprite estiver usando a fantasia, se fizermos algo como girar o sprite, isso acontecerá nesse ponto É também o ponto que será centralizado ao redor do cursor do mouse se fizermos o sprite seguir o Sempre podemos reajustá-lo mais tarde, mas acho que colocar o centro próximo ao ponto médio no lado comprido da alça funciona muito bem Ok. E com isso feito, estamos prontos para começar a codificar os hammer sprites, e faremos isso na próxima lição 8. Codifique o Sprite de Martelo: Para começar a codificar o hammer sprite, vamos até a guia de código Primeiro, assim que clicarmos na bandeira verde, queremos que o martelo comece imediatamente a seguir o cursor do mouse. Como vimos no projeto Scratch Basics, podemos fazer isso indo primeiro aos eventos e trazendo um bloco ganhe com a bandeira verde clicada E como queremos que o martelo siga continuamente o mouse, precisamos ir até o controle e inserir um bloco eterno, colocando-o na parte inferior do bloco de bandeira verde Agora, para realmente fazer com que o martelo siga o mouse, vamos para o movimento, pegamos um bloco de posição aleatória, colocamos dentro do bloco eterno e o alteramos para ir para o ponteiro do mouse Se agora rodarmos o jogo, o martelo segue nosso cursor. Incrível. E, como podemos ver, o ponto em que o cursor está tocando é o mesmo que o ponto central que definimos para o traje do martelo Além disso, se pararmos o jogo e arrastarmos o martelo um pouco para baixo para que possamos vê-lo, se girarmos o martelo usando a caixa de direção no painel do sprite, ele também girará em torno dos pontos centrais E, na verdade, queremos que o martelo comece inclinado um pouco para cima, porque quando o jogador clica no mouse, fazemos com que o martelo gire rapidamente até 90 graus e depois volte para cima Então, vamos com uma direção inicial de 130. Se rodarmos o jogo agora, o martelo permanece na direção de 130. Tudo bem, então para fazer o martelo girar quando clicamos com o mouse, primeiro precisamos verificar se o mouse está sendo clicado Para fazer isso, precisamos acessar a detecção e inserir um bloco de mouse para baixo Como aprendemos no projeto básico do Scratch, esse é um bloco booleano, que tem um valor verdadeiro ou falso É verdadeiro quando o botão do mouse está pressionado e falso quando nenhum botão está pressionado. Então, para realmente usar o valor dos blocos, também precisamos ir até o controle e trazer um bloco if then e usar o bloco do mouse para baixo como condição. Com isso, qualquer coisa que colocarmos dentro do bloco if then só será executada se um botão do mouse estiver pressionado. Queremos que duas coisas aconteçam quando um botão do mouse estiver pressionado. Primeiro, queremos que o martelo gire de sua direção inicial de 130 para 90 , para que a parte retangular fique perfeitamente vertical Então, queremos que ele gire de volta para 130. E usaremos uma animação rápida para essas rotações. Vamos começar com a parte descendente. Para isso, vamos primeiro inserir um bloco de repetição e colocá-lo dentro do bloco if then. Queremos que a animação aconteça bem rápido. Vamos fazer com que se repita apenas duas vezes. Em seguida, queremos girar o martelo no sentido anti-horário. Vamos ao movimento, gire um bloco no sentido anti-horário e coloque-o dentro do bloco de repetição OK. E para mudar a direção do martelo 130-90, precisamos girá-lo em um total de 40 graus Como estamos repetindo o bloco duas vezes, devemos girar o martelo pela metade de 40 de cada vez. Então, 20. Agora, para colocar o martelo de volta na direção 130, precisamos fazer tudo isso de novo, mas ao contrário. Então, vamos novamente para o controle e trazer outro bloco de repetição, e vamos colocá-lo logo abaixo do outro , mas ainda dentro do bloco if then. E não vamos esquecer de usar dois como o número de repetições desta também Desta vez, precisamos girar o martelo no sentido horário. Vamos entrar em movimento, pegar um bloco giratório no sentido horário e colocá-lo dentro do bloco de repetição vazio Novamente, vamos girá-lo em 20 graus a cada vez. Agora, para executar todo esse script, precisamos fazer a verificação contínua do mouse para baixo. Isso significa que precisamos controlar, pegar um bloco eterno e enrolá-lo em todo o bloco , se for o caso. Se clicarmos no script, agora podemos clicar dentro do palco para ver nossa animação e ação. Muito legal. Mas temos alguns problemas. Primeiro, se mantivermos pressionado o botão do mouse, o martelo será atualizado continuamente sem parar. Isso ocorre porque o mouse pressionado não só se torna verdadeiro quando clicamos no mouse, mas também permanece verdadeiro até soltarmos o mouse. Outro problema é que, como aprendemos anteriormente no curso, se clicarmos e segurarmos um sprite dentro do palco, scratch pensará que estamos tentando mover o sprite Também aprendemos que isso só acontece enquanto estamos dentro do editor de rascunho e podemos impedir que isso aconteça mudando para tela cheia. No entanto, ao testar o jogo, ter que alternar constantemente entre tela cheia e o editor de rascunho pode ser bastante complicado Então, o que podemos fazer é fazer com que pressionar uma tecla específica, como a tecla de espaço, também anime o martelo De qualquer forma, geralmente é uma boa ideia, porque alguns jogadores preferem usar o teclado em vez do mouse para realizar determinadas ações. Tudo bem, então vamos parar o jogo e, para colocar o bloco ITN aqui, para rodar também se uma tecla estiver sendo pressionada, precisávamos não apenas verificar se um botão do mouse estava pressionado, mas também se uma determinada tecla estava sendo pressionada Então, primeiro, vamos aos sensores e vamos pegar um bloco pressionado por uma tecla e colocá-lo em algum espaço vazio por enquanto Como essa será a única chave que usaremos no jogo, podemos escolher praticamente qualquer chave que quisermos. Mas o espaço é fácil de lembrar, então é isso que eu vou escolher. Agora precisamos verificar os valores do bloco do mouse para baixo e do bloco pressionado com a tecla. Para isso, se formos para a categoria de operadores, temos duas opções para escolher entre o bloco e e o bloco ou. Primeiro, vamos experimentar o bloco e. Podemos trazer um para algum espaço vazio aqui. Então, podemos usar o bloco do mouse para baixo como uma das entradas de condição e o bloco pressionado com a tecla como a outra Agora vamos usar o bloco inteiro e como condição para o bloco if then. E vamos tentar clicando no script. Se clicarmos dentro do palco agora, nada acontece. E se pressionarmos a tecla de espaço, nada acontece. No entanto, se mantivermos pressionado o botão do mouse e pressionarmos a tecla de espaço ao mesmo tempo, o martelo será animado A razão para isso é que para que o valor do nblock seja verdadeiro, ambas as condições devem ser verdadeiras Portanto, se apenas uma das condições for falsa, todo o bloco será falso Para animar o martelo, tudo o que importa é que o mouse esteja pressionado ou a tecla de espaço esteja sendo pressionada, e é exatamente para isso que serve o bloco ou Com o bloco or, somente uma de suas condições precisa ser verdadeira para que o bloco inteiro seja verdadeira. Vamos inserir um bloco ou, mover o mouse para baixo e os blocos pressionados com a tecla do bloco para o bloco ou. Agora podemos nos livrar do bloco e substituí-lo pelo bloco ou. Se executarmos o script agora, podemos clicar dentro do palco para animar o martelo ou pressionar a tecla de espaço para animá-lo Agora só precisamos resolver o problema do martelo se animar constantemente enquanto pressionamos o mouse ou a tecla de espaço Manter as coisas assim tornará as coisas muito fáceis para o jogador. Para corrigir isso, depois de animar o martelo, podemos forçar o script inteiro a pausar até que o jogador não esteja mais pressionando botão do mouse ou a tecla de espaço Para pausar um script até que uma determinada condição seja atendida, se formos para o controle, temos que esperar até o bloqueio Vamos trazer um e colocá-lo dentro do bloco I thin, mas abaixo dos blocos de repetição, para que ele funcione depois que os dois blocos repetidos terminarem. Queremos que o bloco faça o script, espere até que nem o mouse esteja pressionado nem a tecla de espaço esteja sendo pressionada. Isso é basicamente o oposto da condição que estamos usando para o bloco ITN. Para obter o oposto de uma condição, se formos para a categoria do operador, temos um bloco de O bloco de nós será verdadeiro quando sua condição for falsa e falso quando sua condição for verdadeira Então, vamos continuar e esperar até que os blocos condicionem as entradas E agora, dentro do bloco de nós, queremos usar exatamente o mesmo bloco OR que estamos usando para a condição I then blocks Em vez de recriar tudo novamente, se clicarmos com o botão direito do mouse no bloco ou, uma opção que temos são duplicatas Se escolhermos isso, ele criará uma duplicata do bloco inteiro e agora podemos colocar a duplicata dentro do Então, o que acontecerá aqui é que sempre que o mouse estiver pressionado ou a tecla de espaço estiver sendo pressionada, o bloco ou será verdadeiro, mas o bloco não será falso. E enquanto a condição de espera até o bloco for falsa, o bloco será executado continuamente como um loop eterno e congelará efetivamente todo o script. Mas assim que nem o botão do mouse estiver pressionado nem a tecla de espaço estiver sendo pressionada, o bloco ou se torna falso e o bloco não se torna verdadeiro, que faz com que a espera até que o bloco termine. Em seguida, o bloco forever pode começar novamente verificando se o mouse está pressionado ou se a tecla de espaço está pressionada. Com essa longa explicação resolvida, vamos clicar no script para ver se ele realmente funciona. Agora, clicar dentro do palco ou pressionar a tecla de espaço funciona normalmente. Mas se mantivermos pressionado o botão do mouse ou a tecla de espaço, o martelo anima uma vez e depois para. Agora precisamos primeiro soltar o botão ou a tecla e pressioná-lo novamente sempre que quisermos balançar o martelo Perfeito. Agora, na verdade, também poderíamos ter feito isso usando um bloco com dois blocos de botões como condições Não se preocupe em continuar com isso, pois vou excluí-lo posteriormente Mas só para mostrar o que quero dizer, posso primeiro trazer um bloco ANN e colocá-lo em algum espaço vazio. Agora vou usar um bloco de botões para cada condição. Em seguida, duplicarei o bloco do mouse para baixo e o colocarei dentro do primeiro bloco de nós Em seguida, duplicarei o bloco de pressionamento de teclas e o colocarei no outro bloco de nós Agora posso remover esse bloco de nós da espera até o bloco e substituí-lo pelo bloco Se eu executar o script, ele funcionará exatamente da mesma maneira. Isso ocorre porque se um botão do mouse estiver pressionado ou a tecla de espaço estiver sendo pressionada, um dos blocos de nós será falso, que tornará o bloco inteiro falso No entanto, se nem um botão do mouse estiver pressionado nem a tecla de espaço estiver sendo pressionada, os dois blocos de nós serão verdadeiros, então o bloqueio também será verdadeiro Mas de qualquer forma, eu só queria te mostrar outra maneira de fazer as coisas. Agora vou me livrar do bloco AN e voltar a usar o bloco de nós Tudo bem, agora que terminamos com esse script, queremos que ele também comece a ser executado sempre que clicarmos na bandeira verde. No entanto, não é possível unir dois blocos eternos , pois o inferior nunca terá a chance de correr. Além disso, se tentarmos mover o bloco I then para fora daqui e colocá-lo dentro desse bloco eterno, isso funcionará. Mas sempre que balançamos o martelo, ele para brevemente de seguir o cursor até que a animação termine Uma solução melhor seria usar dois scripts de bandeira verde. Para fazer isso, vamos aos eventos, trazemos outro bloco de bandeira verde e vamos anexá-lo a esse bloco eterno. Agora, os dois scripts serão executados quando clicarmos na bandeira verde. Então, vamos tentar. Está bem? O martelo segue o mouse e, se o balançarmos, ele se anima enquanto ainda segue o Excelente. Ok, acho que o martelo precisa de uma pausa por enquanto. Então, a seguir, trabalharemos para melhorar a aparência do jogo desenhando um bom plano de fundo para ele. 9. Desenhe o fundo: Os planos de fundo dos projetos do Scratch são chamados de cenários, e podemos criar ou adicionar cenários usando o painel de palco aqui ao lado do painel Sprite Assim como acontece com os sprites, podemos fazer upload de um pano de fundo, obter um aleatório, criar nosso próprio ou escolher um da biblioteca do Scratch Se clicarmos nessa opção, podemos ver que o scratch nos fornece muitos cenários predefinidos para você escolher Nosso histórico, no entanto, também incluirá a área onde as toupeiras aparecerão e precisamos ser capazes de controlar o tamanho da área Isso significa que precisaremos criar nosso próprio cenário. Então, vamos voltar ao editor de rascunhos clicando no botão B aqui em cima. E como já temos um pano de fundo vazio, podemos escolhê-lo E agora, se formos até a aba de cenários, temos um traje em branco aqui chamado Backdrop one Só por diversão, podemos mudar o nome para algo parecido com o plano de fundo. Tudo bem, para começar a criar o plano de fundo, vamos desenhar um céu azul Para isso, podemos pegar a ferramenta retangular e escolher uma bela cor de preenchimento azul celeste Não precisaremos de um contorno para o retângulo, então vamos garantir que ele esteja Ok, e quando desenhamos formas para um pano de fundo, somente as partes dentro da área retangular branca da tela aqui serão visíveis no palco Então, para garantir que o céu cubra todo o palco, podemos começar a desenhá-lo fora do retângulo branco e, em seguida, fazer com que cubra todo o retângulo Em seguida, desenharemos algumas belas colinas onduladas para a área em que as irritantes toupeiras aparecerão Para isso, vamos primeiro clicar dentro de uma área vazia na tela para desmarcar o retângulo do céu para que não alteremos sua cor Em seguida, vamos escolher uma cor de preenchimento verde gramada para o próximo retângulo Queremos que as colinas cubram um pouco mais do que a metade inferior do palco. Então, vamos começar do lado de fora e um pouco acima do centro da área do palco e criar um retângulo cobrindo toda a metade inferior isso parece um pouco plano demais para ser uma colina, Mas isso parece um pouco plano demais para ser uma colina, então vamos consertar isso. Para fazer isso, temos a ferramenta remodelada. Com a ferramenta remodelada ativa, temos acesso aos nós de uma forma, que são esses pequenos círculos nos cantos do retângulo Podemos clicar e arrastar os nós para remodelar o objeto. No entanto, apenas com os nós de canto, não temos muito controle sobre a forma, então queremos adicionar mais alguns nós. Para fazer isso, podemos clicar, por exemplo, na borda superior para adicionar um novo nó e clicar em um ponto diferente próximo para adicionar outro. Agora podemos ajustar as posições dos nós, bem como ajustar a bem como ajustar curvatura usando as alças que se estendem a partir dos nós Isso nos permitirá criar algumas belas formas de colinas. Para que pareça ainda melhor, podemos adicionar mais algumas colinas aqui. Primeiro, vamos desmarcar tudo. Então, vamos pegar a ferramenta retangular porque essas colinas ficarão mais para trás, podemos usar uma cor de preenchimento verde mais clara Agora, vamos desenhar um retângulo cobrindo toda essa área aqui e vamos começar do lado direito desta vez É claro que queremos que esse retângulo apareça atrás da forma mais escura Vamos subir aqui e clicar no botão voltar. Agora podemos pegar a ferramenta de remodelação, adicionar um ou dois nós ao retângulo e remodelá-lo Parecendo bem. Para um toque final, podemos adicionar algumas nuvens ao céu. Para fazer isso, podemos pegar a ferramenta círculo, alterar a cor do preenchimento para branco definindo a saturação para zero e brilho para 100 e desenhar alguns círculos sobrepostos para Queremos que as colinas apareçam na frente das nuvens para que possamos pegar a ferramenta de seleção, selecionar uma das formas da colina, pressionar a tecla Shift e também selecionar a outra forma da colina, e agora podemos trazê-las para a frente de tudo clicando no botão frontal aqui em cima. Tudo bem, agora só precisamos desenhar as toupeiras, que faremos na próxima lição 10. Desenhe os trajes de toupeira: Antes de começarmos a desenhar a toupeira, primeiro precisamos criar um novo sprite para Então, vamos passar o mouse sobre o botão escolher um sprite na parte inferior do painel do sprite e vamos E vamos mudar o nome para toupeira. Tudo bem, agora, para os sprites da toupeira, vamos ter O primeiro será apenas o buraco, que será uma simples elipse preta O segundo traje também terá o orifício, mas também mostrará o topo da cabeça da toupeira, como se ele estivesse começando a sair do buraco E, finalmente, teremos uma fantasia com o buraco e a cabeça inteira da toupeira Depois, para animar a toupeira, trocaremos rapidamente sua roupa da primeira para a segunda para a terceira, para fazer com que pareça que está aparecendo, depois inverteremos as roupas para fazê-lo voltar para dentro do buraco onde o jogador não pode mais Para o primeiro traje, que será apenas o buraco, podemos mudar o nome para down, pois será para quando a toupeira estiver totalmente dentro do buraco Agora vamos ampliar um pouco a tela para que possamos ver claramente o tabuleiro de xadrez Em seguida, vamos pegar a ferramenta circular, tornar a cor de preenchimento preta e verificar se o contorno está desligado Então, vamos desenhar uma elipse com aproximadamente 16 quadrados de largura e quatro quadrados de Agora, queremos pegar a ferramenta de seleção e mover a elipse até que seu centro encaixe no centro da tela Como veremos mais tarde, isso facilitará as coisas quando começarmos a adicionar efeitos ao jogo. Agora, um bug que o Scratch tem atualmente é que às vezes ele corta partes da fantasia de um sprite dentro do palco É difícil ver agora, mas se aumentarmos o tamanho do sprite para algo como 120, agora podemos ver claramente que ele está cortando parte superior e inferior da elipse Felizmente, porém, isso é muito fácil de corrigir. Para fazer isso, de volta ao editor de figurinos, basta desenhar um retângulo maior que a elipse e cobri-lo completamente, depois desativar a cor de preenchimento do retângulo Se fecharmos o menu de cores, agora podemos ver que a elipse não tem mais partes cortadas E agora que penso nisso, se movermos o martelo até aqui, as bordas do retângulo também parecerão um pouco irregulares Podemos corrigir isso usando o mesmo método desenhando um retângulo invisível que cobre completamente o retângulo do martelo. Muito melhor. Ok. Agora vamos selecionar o sprite da toupeira novamente, como na elipse, também podemos centralizar retângulo invisível na tela Não podemos vê-lo agora, mas se pegarmos a ferramenta Selecionar e clicarmos e arrastarmos sobre onde o retângulo invisível deveria estar, podemos selecioná-lo e ver sua caixa delimitadora Agora podemos movê-lo até que seu centro se encaixe no centro da tela Tudo bem, e isso é tudo para o primeiro traje. Para o próximo, também queremos começar com a elipse e o retângulo invisível Se clicarmos com o botão direito do mouse no ícone de fantasias, podemos escolher duplicatas e ele fará uma cópia exata da fantasia Na verdade, essa será a terceira fantasia, que mostrará a cabeça inteira da toupeira Isso porque quando criarmos o segundo traje, que mostrará apenas a parte superior da cabeça da toupeira, será mais fácil começar com a cabeça inteira e simplesmente apagar a metade inferior Vamos nomear o segundo traje verdadeiro entre um. Então, vamos chamar isso de um para dois. Tudo bem, e para começar a desenhar a cabeça da toupeira, podemos pegar a ferramenta retangular e escolher um Agora podemos desenhar um retângulo que não seja tão largo quanto a elipse e fazer ele desça perto da parte inferior da Em seguida, usando a ferramenta de remodelação, podemos adicionar um novo nó na parte superior e inferior do retângulo e remodelá-lo para que fique um pouco mais arredondado Agora, para os nós nos cantos, não temos alças para ajustar a curvatura, mas podemos corrigir isso selecionando um dos nós e clicando nesse botão curvo Acho que parece muito bom para uma cabeça de toupeira. Em seguida, precisamos dar um rosto à toupeira e começaremos com os olhos Para isso, podemos pegar a ferramenta circular, escolher branco para a cor de preenchimento e desenhar uma elipse Agora vamos desmarcar, escolher preto como cor de preenchimento e desenhar outra elipse menor dentro da branca para uma pupila E podemos usar a ferramenta de seleção para fazer os ajustes necessários. Para o outro olho, duplicaremos essas duas elipses e as moveremos Para fazer isso, podemos selecionar as duas elipses. Então, se mantivermos pressionada a tecla Alt ou Option antes de clicar e arrastá-las, isso criará duplicatas das formas Se agora mantivermos pressionada a tecla Shift, podemos mantê-las alinhadas com as outras elipses Finalmente, podemos clicar no botão de virar horizontal aqui para virar o olho horizontalmente, que fique olhando para frente em vez de Ok, agora vamos dar um nariz para ele. Tudo o que precisamos para isso é outra elipse preta aqui. Em seguida, para lhe dar alguns dentes, podemos primeiro desenhar um retângulo branco abaixo do nariz Então, podemos usar a ferramenta de remodelação para dar a ela uma forma mais trapezoidal Ok, para terminar de desenhar o traje, devemos dar algumas orelhas à toupeira Para isso, vamos primeiro pegar a ferramenta circular e escolher a mesma cor de preenchimento da cabeça da toupeira Para fazer isso facilmente no painel de seleção da cor de preenchimento, podemos clicar neste botão de conta-gotas aqui embaixo. Isso cria um círculo ao redor do cursor e amplia o que está dentro do círculo Se agora passarmos o mouse sobre a cor que queremos e clicarmos, ele define a cor de preenchimento para a cor escolhida Agora vamos desenhar uma elipse aqui para a orelha. Então, vamos desenhar uma elipse preta menor em cima disso. Tudo bem Agora vamos pegar a ferramenta de seleção e selecionar as duas elipses do comedor, e vamos colocá-las atrás cabeça clicando no botão Voltar Então, como com os olhos, podemos duplicar as elipses pressionando Alts ou Option antes de clicar e arrastá-las Vamos mover as duplicatas para cá enquanto pressionamos as teclas Shift para mantê-las alinhadas com a Finalmente, podemos invertê-los horizontalmente. Tudo bem, para finalizar o traje, selecionarei todas as formas da cabeça, tomando cuidado para não selecionar o retângulo invisível ou a elipse como um todo, e vou centralizar tudo um pouco melhor no Tudo bem, agora só temos mais uma fantasia para criar. Para este, vamos primeiro duplicar o traje up two e renomeá-lo para up E, na verdade, precisamos reordenar as roupas da lista aqui Isso ocorre porque, quando animamos a toupeira, passamos da fantasia um para a fantasia dois, para a fantasia três e depois Portanto, o traje de cima precisa estar entre baixo e alto. Para fazer isso, basta clicar e arrastar um ícone para cima até que ele fique entre os outros dois e solte. Está bem? Para esse traje, tudo o que precisamos é o todo, o retângulo invisível e a parte superior da cabeça da toupeira Então, primeiro, precisamos separar as partes das formas de cabeça que queremos das outras partes. Para fazer isso com facilidade, temos a ferramenta de borracha. Com isso, podemos definir um tamanho para a borracha. Depois, basta clicar e arrastar sobre as formas que queremos cortar. Esses objetos agora estão completamente separados. Então, agora vamos pegar a ferramenta de seleção e selecionar todas as partes inferiores, e podemos excluí-las clicando no botão excluir aqui em cima ou pressionando a tecla delete no teclado. Também vou deletar esses pequenos pedaços dos olhos aqui. Tudo bem, agora podemos selecionar todas as peças restantes da cabeça e movê-las para baixo. E se mantivermos a tecla shift pressionada, podemos fazer com que eles se movam apenas verticalmente E agora, as orelhas estão atrás do orifício, então vamos corrigir isso clicando no botão frontal aqui em cima. Finalmente, podemos desmarcar tudo usar a ferramenta de remodelação para fixar a parte inferior da cabeça da toupeira Acho que isso deveria ser suficiente para as fantasias dos sprites toupeiras. Agora podemos alternar entre as roupas para ver como ficará a animação. Nada mal. E podemos mover a toupeira e o palco Agora, eu sei que pode ser tentador começar a adicionar sprites de toupeira em todo o palco agora, mas na verdade vamos esperar até um pouco mais tarde para fazer A razão para isso é que duplicaremos sprite do molde várias vezes para criar as outras Mesmo que os sprites sejam duplicatas um do outro, scratch ainda os considera sprites separados Isso significa que toda vez que fizermos alterações em um dos sprites de toupeira, por exemplo, adicionando código a ele, precisaremos fazer as mesmas alterações todos os outros sprites de toupeira Com cerca de uma dúzia de sprites de toupeira no palco, isso ficaria muito complicado Por esse motivo, evitaremos criar os outros sprites de moldes até um pouco mais tarde Além disso, se você estivesse acompanhando mais cedo, talvez tenha alterado o tamanho da toupeira Sprite para 120, como eu fiz Poderíamos alterá-lo de volta para 100 se quisermos, mas acho que na verdade fica melhor às 1:20, então vou deixar o meu como está Tudo bem E com isso, agora estamos prontos para começar a adicionar código ao Sprite toupeira e fazer sua animação funcionar, e faremos isso na próxima lição 11. Anime o Sprite Toupeira: Para começar a codificar o sprite toupeira, vamos garantir que selecionado no painel do sprite Em seguida, vamos para a guia de código. A primeira coisa que faremos é fazer que, quando a bandeira verde for clicada, a toupeira apareça para fora do Depois de um pequeno atraso, ele voltará para dentro do buraco e faremos com que ele faça isso repetidamente em momentos aleatórios. Então, primeiro, vamos aos eventos e trazer um bloco clicado com bandeira verde Quando clicamos na bandeira verde, queremos trocar a maior parte do traje pelo traje de pluma imediatamente, para que ele sempre comece dentro do buraco Então, vamos até Looks e adicionar um bloco de figurino Switch ao script da bandeira verde. E vamos trocá-lo pelo traje de plumas. Se agora clicarmos na bandeira verde, a toupeira começará com o traje de penugem Em seguida, vamos animar a toupeira e queremos que a animação aconteça continuamente Então, vamos para Control e adicionar um bloco eterno na parte inferior dos scripts. Para fazer a toupeira aparecer em momentos aleatórios, podemos gerar um número aleatório entre, digamos, um e 50, e se o número for um, faremos com que ele apareça Então, primeiro, vamos adicionar um bloco I then ao bloco forever. Queremos verificar se o número que geramos é igual a um. Então, para a condição, vamos até os operadores e primeiro trazer um bloco igual, e vamos mudar o 50 aqui para um Agora podemos pegar um bloco aleatório e usá-lo como a primeira entrada do bloco igual. Por enquanto, vamos escolher um número de 1 a 50. 50 pode parecer um número alto, mas considerando a rapidez com que o scratch refresca o palco, na verdade não é tão alto e provavelmente teremos que usar um número ainda maior quando colocarmos todas as toupeiras no Tudo bem, então tudo o que colocarmos no bloco I then só acontecerá se o número escolhido aleatoriamente for igual a E quando isso acontecer, a primeira coisa que faremos é fazer a toupeira sair do buraco Para fazer isso, trocaremos seu traje primeiro para um, depois para até dois. E como faremos duas mudanças, podemos usar um bloco de repetição com uma contagem de dois. Então, vamos ao Controle. Adicione um bloco de repetição ao bloco IN e faça com que ele repita duas vezes. Agora, para mudar para a próxima roupa, podemos ir até Looks e colocar um próximo bloco de fantasias dentro do bloco de repetição. Depois, para fazer a toupeira voltar para baixo, precisamos fazer isso de novo, mas ao contrário Primeiro, vamos duplicar o bloco de repetição aqui e colocar esse abaixo do outro Fazer isso pode iniciar automaticamente o script com a toupeira ficando louca agora Vamos clicar em Parar para dar uma pausa. Para o segundo bloco de repetição, queremos mudar para o traje anterior, não para o próximo, então vamos nos livrar do próximo bloco de fantasias. Agora, infelizmente, na verdade não temos um bloco de fantasias anterior. Então, em vez de mudar para a roupa anterior, precisaremos subtrair uma do número da roupa atual Para fazer isso, vamos primeiro colocar um bloco de roupas do Switch e colocá-lo dentro do bloco de repetição vazio. Agora, se formos até os operadores e introduzirmos um bloco de subtração, podemos encaixá-lo aqui mesmo dentro do bloco de roupas do interruptor Agora vamos voltar para Looks e pegar um bloco numérico de fantasias aqui. E use-o como a primeira entrada do bloco de subtração. O bloco numérico do traje representará o número do traje atual do sprite Então, para obter o número do traje anterior, basta subtraí-lo por um Ok, se rodarmos o jogo agora, o molde aparece e desce em momentos aleatórios, mas as animações acontecem tão rapidamente que mal podemos vê-las. Para corrigir isso, precisaremos adicionar alguns atrasos às animações Então, primeiro, vamos parar o jogo. Então vamos até Control e pegamos um bloco de peso, e vamos colocá-lo logo após o próximo bloco de roupas. Um atraso de 1 segundo é definitivamente muito longo. Então, vamos com algo como 0,1 segundo. Também queremos esperar a mesma quantidade de tempo depois de trocar para uma roupa anterior, então vamos duplicar o bloco de espera e colocá-lo logo abaixo do bloco de troca de roupas Agora podemos ver as animações das toupeiras para cima e para baixo com mais clareza No entanto, em vez de fazer com que ele volte imediatamente após aparecer, provavelmente também deveríamos adicionar um atraso entre as duas animações, pelo menos no início do jogo, para facilitar um pouco para o Então, vamos pegar outro bloco de peso e colocá-lo entre os dois blocos de repetição Mais tarde, quando fizermos com que a dificuldade do jogo aumente, usaremos valores diferentes para esse atraso, mas, por enquanto, podemos deixá-lo em 1 segundo. Na verdade, também vamos adicionar um bloco de espera de 1 segundo após o segundo bloco de repetição para evitar qualquer chance de a toupeira aparecer imediatamente assim que cair Com isso, se rodarmos o jogo, a toupeira se anima muito bem Tudo bem, agora que a toupeira pode sair de seu buraco, o próximo passo lógico é fazer com que possamos bater nele com o 12. Como lidar com camadas: Antes de continuarmos codificando o sprite toupeira, há um pequeno problema com o qual precisamos lidar Se rodarmos o jogo novamente, uma coisa que você poderá notar é que a toupeira aparece em cima do martelo A razão para isso é que o scratch desenha os sprites na ordem em que movemos os sprites e o palco em que o sprite movido mais recentemente foi desenhado por último, fazendo com sprite movido mais recentemente foi que ele apareça Como eu movo o sprite da toupeira mais recentemente do que o sprite do martelo, a toupeira está sendo desenhada em cima Se pararmos o jogo, uma maneira de corrigir isso é clicar e arrastar o sprite do martelo no palco O sprite do martelo agora é o sprite movido mais recentemente. Então, se rodarmos o jogo novamente, o martelo agora aparece acima da toupeira No entanto, assim que movermos o sprite toupeira novamente, ele será novamente desenhado em cima do martelo Queremos que o martelo sempre apareça acima das toupeiras para que fique claramente visível para o jogador E como eventualmente teremos muitos sprites de toupeira no jogo, ter que mover também o sprite ter que mover também martelo toda vez que decidirmos mover um sprite de toupeira será muito chato de martelo toda vez que decidirmos mover um sprite de toupeira será muito chato. Portanto, a melhor maneira de lidar com esse problema é trabalhar com camadas. As camadas e os arranhões basicamente determinam a ordem na qual os sprites são desenhados no palco Os sprites nas camadas superiores serão desenhados após ou acima dos sprites nas camadas inferiores Para trabalhar com camadas, se formos para a categoria Los, temos dois blocos. Um para mover um sprite para a camada frontal ou traseira e outro para mover um sprite para frente ou para trás em um determinado número Em um jogo mais complicado como um RPG, por exemplo, talvez precisemos lidar com várias camadas Mas com um jogo simples como Whack a mole, podemos lidar apenas com as camadas frontal e traseira Por exemplo, se quisermos que o sprite do martelo sempre apareça acima dos sprites da toupeira, tudo o que precisamos fazer é acessar o código do sprite do martelo, inserir um bloco de acesso à camada frontal e adicioná-lo ao topo de um dos scripts da bandeira verde Agora, se rodarmos o jogo, o martelo será colocado em cima da toupeira Mesmo se pararmos o jogo e movermos o sprite da toupeira, assim que clicarmos na bandeira verde, o martelo aparecerá novamente no topo E é isso. Não precisamos mais nos preocupar com as toupeiras sendo desenhadas em cima do martelo, e agora podemos voltar a codificar o sprite da toupeira 13. Smack as toupeiras: Quando se trata de bater em uma toupeira com o martelo, só queremos permitir que o jogador faça isso quando a toupeira estiver surgindo ou voltando para baixo, mas não quando estiver totalmente Isso significa que se uma toupeira estiver usando sua roupa de penugem, não podemos bater nela, mas se ela estiver usando uma de suas roupas levantadas , podemos bater Então, vamos ver como podemos fazer isso no código. Agora, como já temos um loop eterno nesse script de bandeira verde com muitas coisas acontecendo, seria melhor iniciar um novo script de bandeira verde. Então, vamos aos eventos e trazer outra vitória com a bandeira verde clicada no bloco Ok, e vamos querer verificar continuamente colisões entre o sprite toupeira e o sprite martelo Então, vamos para Control e adicionar um bloco eterno ao novo script. Em seguida, só queremos verificar se há colisões com o martelo se a toupeira estiver usando uma fantasia ou se estiver pronta para se fantasiar Então, para verificar isso, vamos adicionar um bloco IN ao bloco forever. Para realizar a verificação do traje, temos duas opções. Podemos usar um bloco ou para verificar se a fantasia de toupeira está acima de uma ou duas, ou podemos verificar se a fantasia não é a fantasia de penugem A segunda opção exigirá menos blocos, então vamos usar essa. Então, primeiro, vamos aos operadores e vamos usar um bloco not como condição para o bloqueio if then. Para saber a condição do bloco de maçanetas, queremos verificar se o nome atual da roupa é igual ao da roupa Então, vamos pegar um bloco igual e encaixá-lo dentro do bloco e encaixá-lo dentro Como vimos anteriormente, podemos obter a roupa atual acessando Looks e usando um bloco numérico de fantasias. Então, vamos usar um como a primeira entrada do bloco igual. Agora podemos usar o número do traje aqui porque, se formos até a aba de figurinos, os trajes são numerados um, dois e três e vamos usar esse fato na animação das toupeiras, subtraindo um do número do traje atual para obter o traje para obter Pela condição aqui, podemos verificar se o número do traje não é igual a um. No entanto, também podemos alterar o número da soma para o nome da soma e, em seguida, usar o nome do traje como segunda entrada Então, vamos digitar a palavra, certificando-se de usar a grafia exata como nome do traje Depende inteiramente de você qual versão usar, mas acho que usar o nome do traje facilita a compreensão. Ok, então, para ficar claro, tudo o que colocarmos dentro desse bloqueio só acontecerá se a toupeira não estiver usando sua roupa de penugem, o que significa que ela deve estar usando uma de suas roupas levantadas No entanto, não queremos que a toupeira seja atingida só porque ele está usando uma fantasia e o martelo o está tocando Em vez disso, só queremos verificar se há colisões quando o jogador está realmente balançando o martelo Uma maneira fácil de fazer isso é verificar se o martelo está na parte inferior do giro quando a direção é 90 Portanto, no código mole sprite, podemos realizar essa verificação adicionando um bloco N à condição atual dos blocos ITN ou podemos usar blocos ITN aninhados Um bloco “if then” aninhado é um bloco “if thin” que está dentro de outro bloco “if then e usá-los geralmente pode ser mais legível do que ter um bloco único, se fino com uma condição muito longa Vamos controlar e pegar outro bloco, se então, e vamos encaixá-lo dentro deste, porque esse bloco, eu fino, está aninhado dentro do bloco externo, que podemos chamar Só vou correr se a condição de seus pais for verdadeira. Ok, então o que queremos verificar se a criança bloqueia é se a direção do martelo é 90. Então, primeiro, vamos até os operadores e usaremos um bloco igual como condição do bloco interno, embora fino Vamos mudar a segunda entrada para 90. Agora, para obter a direção de um sprite diferente, podemos usar a detecção, e aqui temos o número de um bloco de palco como pano de Você pode estar se perguntando o que isso tem a ver com a direção de um sprite Mas se trouxermos um para a área de código, estágio não é a única opção que temos aqui. Também podemos escolher qualquer sprite que não seja o sprite atualmente selecionado Então, vamos escolher Hammer. E agora as opções do lado esquerdo correspondem a vários atributos do hammer sprite, incluindo sua direção, que é exatamente o que queremos Agora podemos usar o bloco como a primeira entrada do bloco igual. entanto, ainda não terminamos as verificações, e isso porque, no momento , o martelo pode estar bem aqui, mas desde que sua direção esteja em 90 e a toupeira esteja levantada, ambas as condições ainda serão verdadeiras Então, agora também queremos ter certeza de que a toupeira e o martelo estão realmente se tocando Para isso, poderíamos usar novamente outro bloco IN aninhado. Mas como a condição de toque e a condição interna estão relacionadas ao martelo, não há problema em combiná-las em uma única condição Então, para fazer isso, vamos até os operadores e vamos colocar um bloco em algum espaço vazio por enquanto. Agora vamos retirar o bloco condicional do bloco de condições interno do bloco if then e usá-lo como a primeira entrada do bloco. Em seguida, para verificar se o sprite da toupeira está tocando o sprite do martelo, podemos acessar a detecção, e aqui temos um bloco que Mas se trouxermos uma e a encaixarmos dentro do bloco, algumas opções que temos além do ponteiro do mouse são borda, que se refere a uma das bordas do palco, e martelo, que é o que queremos escolher Tudo bem, agora vamos pegar o bloco e usá-lo como condição do bloco interno, embora fino. Então, agora, tudo o que colocarmos dentro do bloco vazio , embora fino, só acontecerá se a toupeira não estiver usando o traje de penugem A direção do martelo é 90 e a toupeira está tocando o martelo Tudo bem, e para testar se tudo isso funciona corretamente, podemos fazer com que a toupeira diga algo como se eu fosse atingido Para fazer isso, podemos ir para Los, e só queremos que o espião diga: Fui atropelado por um curto período de tempo Então, vamos pegar um bloco S quatro e colocá-lo dentro do bloco vazio, embora fino. Agora podemos mudar o texto para I'm hit, e podemos fazer com que ele diga isso por cerca de meio segundo ou 0,5 segundos. Tudo bem, se rodarmos o jogo agora, temos um problema, ou eu tenho, pelo menos, porque eu mudo manualmente direção do martelo para 90 no Sprite Pain mais cedo, sua direção começa em 90 Eu poderia corrigir isso simplesmente mudando manualmente a direção de volta para 130. Mas em uma lição posterior, adicionaremos um cronômetro ao jogo E assim que o cronômetro chegar a zero, o jogo terminará e scripts de todos os sprites pararão Se isso acontecer enquanto o martelo estiver sendo animado, qualquer que seja sua direção quando a animação foi interrompida será a mesma direção em que ele começa sempre que o jogador reinicia o jogo, causará todos os tipos de Para garantir que isso não aconteça, tudo o que precisamos fazer é dizer ao sprite que direção começar em que direção começar quando a bandeira verde for clicada Ok, então para fazer isso, vamos parar o jogo e garantir que o hammer sprite esteja selecionado Agora vamos para o movimento e vamos introduzir um bloco de ponto e direção. Não importa em qual script de bandeira verde o colocamos desde que o coloquemos em algum lugar antes de um dos blocos eternos, e a direção em que queremos que ele comece seja 130. Agora, mesmo se mudarmos a direção do martelo no painel do sprite, assim que clicarmos na bandeira verde, a direção voltará para 130 E com isso, se agora balançarmos na toupeira enquanto ele está deitado, nada acontece Mas se balançarmos enquanto ele está acordado, ele diz, eu sou atingido Além disso, se passarmos para algum lugar por aqui, ele não dirá nada, mesmo que esteja acordado Perfeito. No entanto, existem algumas maneiras de melhorar isso. Primeiro, no momento, podemos atingir o espião várias vezes enquanto ele está acordado Podemos ver isso ainda melhor se acessarmos código do sprite toupeira e fizermos com que ele diga: “Sou atingido por apenas cerca de um décimo de Agora, cada vez que balançamos o martelo na toupeira enquanto ele está acordado, ele diz: Eu sou atingido Isso pode ser o que queremos, mas se continuarmos assim, será um pouco fácil para o jogador acumular pontos. Portanto, provavelmente seria melhor se permitissemos que o jogador atingisse uma toupeira apenas permitissemos que o jogador atingisse uma vez cada vez que ela aparecesse E a segunda melhoria que podemos fazer é que, no momento, qualquer parte do hammer sprite pode atingir a toupeira, incluindo a alça Novamente, isso pode ser o que queremos, mas quando começarmos a adicionar mais toupeiras ao jogo, será muito fácil para o jogador acertar várias toupeiras ao mesmo tempo Tudo bem, então na próxima lição, veremos como podemos fazer essas melhorias no golpe de toupeira 14. Melhore a queima: A primeira maneira de melhorar as coisas é fazer com que uma toupeira só possa ser atingida uma vez a cada vez que aparecer Para fazer isso, precisaremos acompanhar se a toupeira foi atingida ou não E para isso, precisaremos criar uma variável. Então, com o sprite toupeira selecionado, vamos entrar na categoria de variáveis Não precisaremos da variável myvariable padrão. Então, se clicarmos com o botão direito do mouse, podemos escolher excluir. Agora, vamos criar uma nova variável clicando em Criar uma variável. Essa variável vai acompanhar se uma determinada toupeira foi atingida ou não Isso significa que o valor será exclusivo para cada sprite de toupeira individual Portanto, precisamos escolher apenas esse sprite. E pelo nome, digamos que dói. Em seguida, vamos clicar em OK. Tudo bem, então para começar a usar a variável Hurt, a primeira coisa que queremos fazer é definir seu valor como false no início do jogo para como false no início do que o molde não comece com Hurt Então, vamos pegar um bloco set t e adicioná-lo ao topo de um dos scripts de bandeira verde. E vamos definir o valor como falso. Também poderíamos usar um zero para falso e um para verdadeiro se quiséssemos, que é uma prática comum na programação, mas vou ficar com verdadeiro e falso por enquanto. Ok, agora precisamos definir Hert verdadeiro sempre que a toupeira for atingida Então, vamos pegar outro bloco Hert definido, colocá-lo em algum lugar dentro do bloco If Then e definir o valor como verdadeiro E como só queremos que o espião seja atingido, se ele não estiver ferido no momento, precisaremos adicionar uma condição de ferimento igual a falso a um dos bloqueios do tipo “se Como a condição “não figurino é igual a penugem” também está relacionada à verruga, vamos combiná-la com a condição “ machucar é igual a falsa Então, para fazer isso, vamos até os operadores e colocar um bloco e em algum espaço vazio. Agora vamos retirar o bloco not do bloco I then e usá-lo como uma das condições dos blocos N. Para a outra condição, verificaremos se o valor da variável cardíaca é igual a falso. Então, vamos primeiro colocar um bloco igual. Para obter o valor atual das variáveis prejudicadas, podemos acessar as variáveis, pegar um Hetblock e usá-lo como a primeira entrada do bloco igual E vamos verificar se é igual a falso. Então, podemos usar tudo isso como condição para o bloco fino I. A propósito, também poderíamos ter usado um único bloco fino para criar um grande bloco condicionado, mas acho que podemos concordar que usar blocos aninhados, embora finos, é um pouco mais fácil de ler E, finalmente, para que tudo isso funcione corretamente, precisamos descobrir quando definir o valor cardíaco de volta para falso. Acho que o melhor lugar para fazer isso seria depois do segundo bloco de repetição aqui, quando a animação de moles down terminar e ele estiver de volta em segurança dentro do buraco A partir das variáveis, vamos trazer outro conjunto para bloquear, e não importa se o colocamos acima ou abaixo do bloco de peso final, porque a toupeira já estará de volta para baixo de qualquer maneira Vamos usar o bloco para definir machucado como falso. Tudo bem, se rodarmos o jogo agora, podemos ver que a variável de dor das toupeiras começa com falsa, e se batermos nele enquanto ele está acordado, dor muda Então, quando ele volta para baixo, isso volta a ser falso. E sempre que a dor é verdadeira, não podemos machucar a toupeira novamente. Está bem? Agora que sabemos que a variável hurt está funcionando corretamente, não precisamos mais ver seu valor no palco, então podemos clicar com o botão direito nela e escolher Hyde Agora, como mencionei na lição anterior, no momento, qualquer parte do martelo pode atingir a toupeira Podemos melhorar isso fazendo com que apenas uma certa parte do martelo, como o retângulo vermelho, possa atingir a toupeira Uma maneira fácil de fazer isso é, em vez de verificar se a toupeira está tocando o sprite do martelo, podemos verificar se ela está tocando uma cor específica, como o vermelho do martelo Para fazer isso, vamos parar o jogo. E precisaremos substituir o bloco de martelo de toque por um bloco de cores tocante Então, vamos primeiro nos livrar do bloco de martelo tocante. Em seguida, vamos detectá-la e substituí-la por um bloco de cores tocante Agora, quanto à cor, vamos fazer com que o hammer sprite fique totalmente visível no palco Em seguida, vamos voltar ao sprite da toupeira e, no tocante bloco de cores, se clicarmos na amostra de cor aqui, ele abrirá uma caixa de diálogo para Queremos usar exatamente a mesma cor do retângulo do martelo, e podemos fazer isso clicando no botão conta-gotas na caixa de diálogo e, em seguida, clicando no retângulo do martelo Ok, agora podemos fechar a caixa de diálogo de cores e, se rodarmos o jogo novamente, quando balançarmos o martelo, um golpe só será registrado se o retângulo vermelho estiver tocando a toupeira Isso funciona muito bem, mas poderíamos melhorá-lo ainda mais adicionando outro retângulo menor na parte inferior do retângulo vermelho Se fizermos com que o retângulo menor tenha uma cor diferente das outras partes do martelo, podemos usar sua cor na verificação de colisão Ok, então para fazer isso com o hammer sprite selecionado, vamos até a aba de fantasias Agora vamos pegar a ferramenta retangular e, para a cor de preenchimento, não importa muito o que escolhemos, desde que seja diferente das outras cores do traje Eu vou com um cinza médio. E não queremos um esboço para isso, então vamos garantir que esteja desativado Tudo bem, agora vamos começar a desenhar um retângulo um pouco acima e para fora da borda inferior do retângulo vermelho, e queremos que ele se estenda até o outro lado e se sobreponha à o outro lado e se sobreponha à Ok, agora vamos voltar ao código dos sprites da toupeira. Em seguida, vamos clicar na amostra de cor novamente no bloco de cores tocante Clique no botão do conta-gotas e, desta vez, escolha a cor do retângulo menor do martelo Se rodarmos o jogo agora, um golpe só será registrado se o retângulo menor do martelo estiver tocando a toupeira Tudo bem, ter o espião dizendo que fui atingido funciona bem, mas é chato De qualquer forma, não acho que as toupeiras possam falar A partir da próxima lição, adicionaremos alguns efeitos gráficos interessantes que aparecem sempre que uma toupeira é atingida 15. Adicione efeitos de sucesso: Para começar a adicionar efeitos de impacto à toupeira, vamos primeiro nos livrar do bloco quatro seguro, pois não precisaremos mais dele Em seguida, vamos para Looks e vamos colocar um bloco de efeitos de cores definido em algum espaço vazio no momento. Primeiro, vamos ajustar o traje de toupeira para até duas por enquanto, para que possamos vê-lo melhor. Em seguida, volte para o código. Agora, se definirmos a entrada no bloco de efeito de cor definido para algo diferente de zero e clicarmos no bloco, isso mudará a tonalidade da cor das toupeiras Cada valor que usarmos fará com que ele tenha uma tonalidade diferente. Isso pode chegar a um máximo de 200, o que realmente o traz de volta à sua tonalidade original Ir acima de 200 recomeçará do início. Por exemplo, 250 é na verdade o mesmo que 50. Além disso, observe que isso não tem efeito no todo, porque o todo é preto, que não tem matiz Tudo bem, então podemos usar praticamente qualquer cor que quisermos para isso. Vou fazer minha toupeira ficar avermelhada ao ser atingida e, depois de testar isso, descobri que um valor de 180 parece muito bom Se você usar cores diferentes ao desenhar suas roupas de toupeira, talvez seja necessário brincar com o valor até conseguir algo de que goste Está bem? Agora podemos mover esse bloco para o bloco interno, embora fino, para quando a toupeira for atingida No entanto, também precisamos redefinir o efeito de cor. Assim como ao redefinir a variável Hert de volta para falsa, também podemos redefinir o efeito de cor aqui após o término das animações das toupeiras E para fazer isso, poderíamos redefinir o efeito de cor para o padrão zero, mas como usaremos vários efeitos gráficos que precisaremos redefinir, podemos usar um bloco de efeitos gráficos claro para redefini-los todos de uma vez. Então, vamos trazer um e colocá-lo em algum lugar depois das animações. Se rodarmos o jogo agora e batermos na toupeira, ela fica vermelha. Mas quando ele aparece novamente, ele volta à sua cor normal. Ok, vamos parar o jogo e, para outro efeito, podemos fazer com que seu rosto fique um pouco torcido Para isso, se introduzirmos outro efeito de conjunto para bloquear, outro efeito que teremos é turbilhão Se trocarmos a toupeira pela roupa de cima novamente, definir o valor mundial em algo diferente de zero distorcerá o sprite começando pelo centro . Ir muito alto, no entanto, fará com que o todo gire demais, o que parecerá estranho E também podemos usar valores negativos para reverter a direção do mundo. Acho que vou escolher algo bem sutil, como dez. Tudo bem, agora também podemos adicionar isso ao bloco interno, embora fino, e vamos dar uma olhada Incrível. Isso é definitivamente uma melhoria em relação ao bloco S four, mas acho que ficaria ainda melhor se tivéssemos um daqueles gráficos legais de amigos em estilo de quadrinhos aparecendo na toupeira Então, vamos ver como podemos fazer isso na próxima lição. 16. Crie o Sprite de Pow: Para adicionar um efeito gráfico Pow quando a toupeira for atingida, primeiro precisaremos criar o pow Então, vamos começar a escolher um botão Sprite e criaremos o nosso próprio Então, vamos escolher a tinta. E vamos mudar o nome para Pow. Um gráfico de Pow é basicamente a forma de uma estrela com um monte de pontos E para criar um, podemos começar com um círculo ou elipse. Então, vamos pegar a ferramenta circular. E para a cor de preenchimento, vamos usar uma laranja. Agora, vamos ampliar um pouco a tela e desenhar a elipse. O tamanho não importa no momento porque mudaremos um pouco a forma e sempre poderemos redimensioná-la posteriormente Tudo? Agora, para criar uma forma de estrela, podemos começar pegando a ferramenta de remodelação, colocando três nós próximos e arrastando o centro Então, podemos repetir isso ao redor da forma. OK. E se quisermos deixar todos os cantos pontiagudos em vez de arredondados, podemos usar a ferramenta de remodelação para arrastar uma caixa de seleção sobre todos os nós Em seguida, clique no botão apontado aqui em cima. Em seguida, adicionaremos uma versão menor e mais brilhante da mesma forma ao centro desta Para fazer isso, podemos primeiro pegar a ferramenta de seleção, selecionar a forma e criar uma cópia dela, usando os botões copiar e colar aqui em cima ou usando os atalhos Control ou Command C para copiar e controlar ou Command V para colar E vamos fazer com que este seja mais um amarelo claro. Em seguida, usando o SLectol, podemos reduzi-lo um pouco e colocá-lo próximo ao centro da outra E talvez também gire um pouco. Agora podemos selecionar as duas formas e redimensioná-las. E, por padrão, a ferramenta de seleção manterá a largura e a altura proporcionais Mas se mantivermos pressionada a tecla shift, podemos redimensioná-la como quisermos Um tamanho de cerca de 75 por 75 pixels deve ser bom. Também queremos ter certeza centralizar as formas na tela, o que facilitará a centralização do sprite na toupeira dentro do palco Ok, terminamos de desenhar o pow sprite. Então, agora vamos colocá-lo em uso. Para fazer isso, vamos primeiro examinar o código do sprite toupeira Em algum lugar no bloco interno de entrada, quando a toupeira é atingida, precisamos de alguma forma de informar ao pow sprite que ela deve aparecer na Para fazer isso, se formos para a categoria de eventos, temos blocos para transmissão e recebimento de mensagens Se um sprite transmitir uma mensagem, ela será enviada para todos os sprites do projeto, e os sprites podem usar o bloco quando eu receber para escolher o que fazer quando receberem a Então, o que queremos fazer é quando uma toupeira é atingida, queremos transmitir a mensagem e, em seguida, queremos que o sprite amigo apareça na toupeira ao receber a Portanto, para o sprite toupeira, queremos escolher o bloco de transmissão ou o bloco de transmissão e espera Se usarmos o bloco de transmissão e espera, o script será pausado até que todos os sprites terminem de receber e responder à mensagem Mas como vamos fazer com o Po Sprite apareça apenas por um curto período de tempo, não será necessário pausar o script mol Em vez disso, vamos pegar o bloco de transmissão normal e colocá-lo em algum lugar dentro do bloco ITN interno No momento, estamos transmitindo uma mensagem chamada mensagem um, que não é muito descritiva Mas se clicarmos aqui, temos a opção de criar uma nova mensagem. Podemos chamá-lo de mole hit e clicar em OK. Tudo bem, agora vamos ver o código do Posprite. Antes de lidarmos com a mensagem de golpe de toupeira, primeiro queremos fazer com que o Posprite não fique visível ao iniciarmos Para fazer isso, podemos trazer um bloco clicado com bandeira verde vencedora Depois, podemos ir para Looks e adicionar um bloco oculto ao script da bandeira verde. Ok, agora para lidar com a mensagem mole hit, vamos aos eventos e vamos começar um novo script usando o bloco W I receive Mohit Quando o Pow Sprite receber a mensagem de acerto da toupeira, faremos com que ela se mova para a posição dos sprites da toupeira, fique visível e desapareça em um curto período de tempo No entanto, pensando no futuro, quando adicionarmos todas as toupeiras ao palco, será bem possível que o jogador atinja vários moldes ao mesmo tempo ou quase ao mesmo tempo Por causa disso, talvez precisemos que mais de um sprite amigo apareça ao mesmo tempo, e isso significa que precisamos usar clones Então, o que podemos fazer é que, quando o sprite amigo recebe a mensagem de acerto de toupeira, podemos fazer com que ele se mova para a posição das toupeiras e se clone nessa posição Bem, então mostre o clone e faça-o desaparecer. Está bem? Então, primeiro, para mover o sprite amigo para o sprite toupeira, vamos para o movimento E vamos adicionar um bloco de posição aleatória ao script W I receive Mohit E, claro, não queremos ir para uma posição aleatória. Queremos ir até o mole Sprite. Em seguida, para criar um clone do Poe Sprite, podemos acessar Control e trazer um clone de criação Tudo bem. Agora, para dizer ao clone o que fazer, vamos começar um novo script usando um quando eu começar como um bloco clone Como estamos escondendo o pow sprite original, o clone também começará Então, primeiro queremos mostrar o clone indo até Los e trazendo um bloco de shows Em seguida, só por diversão, podemos fazer com que o clone fique cada vez mais brilhante Para fazer isso, vamos primeiro acessar o Controle e inserir um bloco de repetição. Em seguida, vamos voltar para Looks e adicionar um efeito de alteração por bloco ao bloco de repetição. Se usarmos o efeito de brilho, o valor será de 0 a 100, com zero sem efeito e 100 tornando o sprite completamente branco Queremos que isso vá de 0 a 100 rapidamente. Então, vamos fazer com que se repita cinco vezes. E altere o brilho em 20 a cada vez. Finalmente, eliminaremos o clone. Então, primeiro, vamos até o Controle e introduzimos outro bloco de repetição, fazendo com que ele se repita cinco vezes. Em seguida, vamos voltar para Los e adicionar um efeito de alteração por bloco ao novo bloco de repetição. Desta vez, queremos usar o efeito fantasma. O efeito fantasma também vai de 0 a 100, com zero tornando o sprite totalmente opaco e 100 tornando-o Portanto, para tornar o sprite totalmente transparente após cinco repetições, podemos alterar o efeito fantasma em 20 a cada vez Mas ainda não terminamos. No projeto Scratch Basics, aprendemos que o Scratch só nos permite ter 300 clones no palco ao mesmo tempo E mesmo que o segundo bloco de repetição torne o clone invisível, o clone nunca é realmente removido do palco Provavelmente demoraria um pouco para chegar a 300 clones do sprite Po no jogo, mas é definitivamente possível E quando isso acontecer, não aparecerão mais sprites pop Por isso, precisamos ter certeza de excluir o clone no final do script Para fazer isso, vamos até Control e pegar um bloco de exclusão deste clone, e vamos colocá-lo na parte inferior do quando eu começar como um script de clone Tudo bem, se rodarmos o jogo agora, o Pow Sprite desaparece Mas se atingirmos a toupeira, um clone do pow sprite aparece na toupeira, fica Nada mal. No entanto, como colocamos o centro das roupas das toupeiras no centro do buraco quando as desenhamos, o sprite amigo também está centralizado no Provavelmente ficaria melhor se o levantássemos um pouco. Há duas maneiras diferentes de fazer isso. Primeiro, se entrarmos na guia de fantasias, podemos selecionar as duas formas para a fantasia de Pow Sprites e movê-las um pouco para cima Se mostrarmos o pow sprite, agora podemos ver que ele aparece na cabeça da toupeira em vez de No entanto, digamos que um dia decidimos criar mais roupas para o pow sprite, talvez para fins de animação, talvez para fins de animação, e também quiséssemos reutilizar o sprite Ter que entrar e ajustar o posicionamento de cada roupa toda vez não seria muito divertido. Então, em vez disso, uma maneira melhor seria ajustar a posição usando código. Para fazer isso, vamos primeiro colocar as formas de volta no centro da tela. Em seguida, vamos para a guia de código. Depois de ir para a posição das toupeiras, tudo o que precisamos fazer é mover a posição Y dos sprites Po um pouco para cima Então, vamos ao movimento, pegue uma alteração Y por bloco e coloque-a logo abaixo do bloco go to mol Podemos clicar no script para ver os resultados. Parece que subir cerca de 30 etapas deve funcionar. Tudo bem. E só para testar, vamos rodar o jogo e acertar a toupeira Bom. E agora, o pow sprite está aparecendo na frente da toupeira, que é o que queremos No entanto, se pararmos o jogo e movermos o sprite da toupeira para o palco, execute o jogo e acerte a O sprite Po agora aparece atrás da toupeira. Para garantir que isso não aconteça, só precisamos mover o sprite Po para a camada frontal no início do jogo, como fizemos com o sprite do martelo Para fazer isso no código Pow Sprite, vamos para a categoria Looks Pegue um bloco para ir para a camada frontal e coloque-o em algum lugar no script da bandeira verde. Se rodarmos o jogo agora e atingirmos a toupeira, o pow sprite aparecerá na frente da No entanto, agora ele também aparece na frente do martelo. A razão pela qual isso acontece é que, quando trazemos dois ou mais sprites para a camada frontal, como estamos fazendo com os sprites hammer e pow, scratch os desenha na ordem em que aparecem no painel do Então, se quisermos desenhar o hammer sprite na frente do pow sprite, podemos clicar e arrastar seu ícone no painel do sprite, colocando-o à direita do ícone do Agora, se rodarmos o jogo, ele puxa o martelo na frente do pow sprite Sinta-se à vontade para manter o seu assim, mas na verdade eu gosto que o amigo sprite apareça na frente de tudo Então, vou mover o sprite do martelo volta para onde estava na pintura do sprite Está bem? Agora, antes de terminarmos esta lição, na verdade temos um pequeno problema com nosso pow sprite Sei que disse que não criaríamos as outras toupeiras até terminarmos de revestir o sprite da toupeira, mas vamos criar mais algumas para Para fazer isso, podemos clicar com o botão direito do mouse no sprite da toupeira na pintura do sprite e escolher duplicar e, em seguida, mover a nova toupeira para algum lugar no E vamos criar mais um. Ok, agora, se rodarmos o jogo, acertar a primeira toupeira ainda funciona corretamente, mas se atingirmos uma das novas, o sprite Po ainda aparece na Para ver por que isso está acontecendo, vamos parar o jogo e entrar no código do Pow Sprite Quando o Posprite recebe a mensagem de impacto da toupeira, dizemos que ela vá para a posição da No entanto, o nome toupeira aqui se refere apenas ao sprite que na verdade é chamado de Agora também temos a toupeira dois e o molde três, e eles também estão disponíveis no bloco go to Portanto, para que o sprite amigo apareça na toupeira correta, precisamos de alguma forma de dizer qual toupeira ou toupeiras Poderíamos fazer isso transmitindo uma mensagem de acerto separada para cada toupeira, como moldar dois acertos, modificar três acertos, etc Mas isso consumiria muito tempo e não seria muito prático. Uma maneira muito melhor seria armazenar algumas informações sobre as toupeiras atingidas em uma lista de variáveis, e aprenderemos como fazer isso na próxima lição 17. Como usar listas de variáveis: Para criar uma lista de variáveis, para acompanhar quais moldes foram atingidos, vamos selecionar o primeiro sprite de toupeira Em seguida, vamos entrar na categoria de variáveis. E aqui, vamos clicar no botão Lista de mapas. A lista precisa estar disponível para todas as toupeiras, bem como para o amigo sprite Portanto, precisaremos torná-la uma lista global escolhendo todos os sprites E pelo nome, podemos chamá-lo de hit Moles. E como é global, estou usando todas as letras maiúsculas. Tudo bem, agora vamos clicar em OK. Com isso, agora temos um novo bloco HIT Moles, bem como vários blocos para trabalhar com a lista, como adicionar, excluir, inserir e substituir itens, e para verificar o conteúdo da Também podemos ver a lista dentro do palco e, como outras variáveis, podemos movê-la. Tudo bem, então vamos ver como podemos começar a usar a lista. A primeira coisa que queremos fazer é quando uma toupeira é atingida, adicionar algo à lista que o sprite pw possa usar para criar um clone na localização dessa Se verificarmos o código do POW Sprite, no momento, estamos usando o bloco go to para ir para um Me Sprite específico Seria bom se pudéssemos criar um HIT MO Sprite, adicionar seu nome à lista e, em seguida, o Po Sprite pudesse usar esse nome no bloco go to No entanto, na verdade, não temos nenhum bloco que nos permita obter um nome de Sprites Então, em vez disso, podemos adicionar mais posições X e Y dos Sprites à lista e, em seguida, fazer com que o Sprite Po vá para esse local usando o bloco go to XY Para fazer isso, vamos voltar ao código do Moor Sprite. Adicionaremos a localização de Mores à lista antes de transmitir a mensagem do Mohit Além disso, teremos que adicionar as posições X e Y dos mouros como itens separados na lista Então, na categoria de variáveis, para adicionar um item a uma lista, usamos o bloco adicionar dois. Então, vamos adicionar dois blocos para atingir Moresblocks, colocando-os logo acima do bloco de transmissão de mais acertos Para adicionar dois blocos pela primeira vez, vamos para o movimento, pegar um bloco de posição e usá-lo como entrada. Então, vamos fazer o mesmo com um bloco de posição Y para o outro bloco de adição de dois. Ok, se rodarmos o jogo agora, cada vez que atingirmos a primeira toupeira aqui, suas posições X e Y serão adicionadas à lista atingir os outros dois moldes entanto, atingir os outros dois moldes não acrescenta nada à lista, porque ainda não adicionamos os dois blocos de adição aos outros Vamos corrigir isso daqui a pouco. Mas primeiro, se pararmos o jogo e executá-lo novamente, a lista de toupeiras atingidas ainda contém itens Assim como com outras variáveis, precisamos redefinir o conteúdo de uma lista quando o projeto começa a ser executado. Poderíamos fazer isso dentro do código mole Sprite, mas como vamos usar exatamente o mesmo código para todos os mole sprites, cada toupeira estaria redefinindo o conteúdo da lista, o que seria mas como vamos usar exatamente o mesmo código para todos os mole sprites, cada toupeira estaria redefinindo o conteúdo da lista, o que seria desnecessário. Então, em vez disso, poderíamos fazer isso dentro do código hammer sprite ou pw sprite No entanto, eventualmente teremos algumas variáveis globais em nosso jogo, e redefini-las dentro de um desses sprites bagunçará o código dos sprites Além disso, não faria sentido lidar com variáveis dentro de um sprite que talvez nem precisasse usar as variáveis Então, acho que a melhor maneira lidar com coisas como redefinir variáveis globais é fazer isso dentro do código para o pano de fundo E sim, assim como os sprites, os cenários têm sua própria área de código Então, como queremos limpar o conteúdo da lista HIT Ms assim que o jogo começar, precisaremos de um script de bandeira verde aqui. Então, vamos aos eventos e trazer uma vitória com a bandeira verde clicada no bloco Em seguida, para limpar o conteúdo de uma lista, se formos para variáveis, temos um bloco delete all of. Então, vamos pegar um e adicioná-lo ao script da bandeira verde. Se rodarmos o jogo agora, a lista de moldes HIT começa vazia Tudo bem, agora vamos fazer com que também possamos adicionar as localizações dos outros moldes à Para fazer isso, poderíamos simplesmente excluir os sprites do mod dois e do mod três e criar novas duplicatas do Mul Sprite original Mas como temos apenas alguns blocos de código para adicionar dois mod dois e mod três, podemos copiar os blocos do Mul Sprite original Para fazer isso, vamos entrar no código original do Mol Sprites. Os dois blocos que queremos copiar são os dois blocos adicionados. E para fazer isso, podemos clicar e arrastar os blocos até o molde dois sprites no painel Sprite no painel Se agora entrarmos no código do mod two sprites, podemos ver que agora ele tem a adição de dois blocos que copiamos Também copiou o bloco de impacto de toupeira de transmissão, qual não precisamos, para que possamos nos livrar dele E agora podemos copiar os dois , adicionar dois blocos no mod três colocá-los no lugar certo para o mod dois antes de transmitir o Mohit E vamos fazer o mesmo com o mod três. Ok, se jogarmos o jogo agora, poderemos adicionar as localizações de todas as 3 toupeiras à lista Agora só precisamos que o P Brite realmente use os locais Para fazer isso, vamos entrar no código Pobrts. O que queremos que o pprite faça é que, em vez de usar o bloco go to para ir até uma toupeira específica, queríamos obter cada par de posições X e Y da lista, depois ir até esse local e criar um Então, primeiro, vamos remover o bloco Go to Mole. Em seguida, vamos substituí-lo por um bloco go to XY da categoria de movimento. E vamos anexar esses blocos de volta ao script. Agora, como o Palprite criará um clone toda vez que receber a mensagem mole hit, só precisamos ir até o local dos dois primeiros itens da lista e, em seguida, remover esses itens próxima vez que receber a mensagem, ele possa ir para o local dos próximos dois itens e assim ele possa ir para o local dos próximos dois itens Ok, então, para obter os dois primeiros itens da lista, vamos às variáveis. E vamos pegar um item do bloco. E queremos usar uma para cada uma das entradas no bloco go to XY Para X, queremos obter o item um, que é a posição das toupeiras Mas para Y, queremos o item dois, que é a posição Y. E, finalmente, queremos remover os itens um e dois da lista. Para fazer isso, vamos incluir dois blocos de exclusão, colocando-os em algum lugar entre o bloco go to X Y e o bloco create Clone Pode parecer que precisamos alterar a entrada da segunda exclusão do bloco para excluir o item dois em vez do item um. No entanto, quando excluímos o primeiro item, todos os outros itens são movidos para cima na lista. Então o segundo se torna o primeiro, o terceiro se torna o segundo e assim por diante. Por causa disso, na verdade, precisamos excluir o item um duas vezes. E se agora jogarmos o jogo, o amigo sprite aparecerá em cada molde que batermos Na verdade, temos um pequeno problema, e isso só acontece quando atingimos dois ou mais moldes com um único giro Como podemos ver, o amigo sprite aparece apenas em um dos moldes e a localização dos outros moldes não é excluída da lista de moldes Hit Isso parece muito estranho, mas na verdade tem a ver com forma como o scratch lida com as mensagens, e é um problema comum que eu vejo nos projetos de arranhadores iniciantes Aprenderemos mais sobre o problema na próxima lição e aprenderemos como corrigi-lo. 18. Corrija os clones de Pow: Como vimos na lição anterior, se atingirmos dois ou mais moldes ao mesmo tempo, o pow sprite só aparece em um deles, e a lista de moldes de sucesso não é apagada, e agora o pow sprite não aparece A razão pela qual isso acontece é que sempre que atingimos 2 toupeiras com um único golpe, ele envia duas mensagens de acerto de toupeira ao mesmo tempo Então, quando o sprite Pal recebe a primeira, antes de ter a chance de executar o script when I receive molehid, ele recebe a segunda mensagem mole hit, que Portanto, na verdade, o script só é executado uma única vez. Portanto, ele só cria um clone na primeira localização das toupeiras atingidas e remove a localização da lista Então, quando atingimos outra toupeira, ela usa a localização restante para o próximo clone, e tudo fica fora de E, na verdade, temos outro possível problema com nosso código no momento em relação aos clones. Os clones e o scratch são tratados como sprites separados e recebem os mesmos scripts do sprite do qual foram clonados O que isso significa é que os clones do sprite P também executam o script mohead quando eu recebo Portanto, é bem possível que, antes que um clone termine de se animar e se excluir, ele receba a mensagem molehit, criando desnecessariamente um clone de si mesmo ele receba a mensagem molehit, desnecessariamente A razão pela qual deixei esses problemas no código é que eles são problemas muito comuns que quase todo arranhador enfrenta e podem causar muita confusão Então, eu senti que era importante conscientizá-lo sobre eles. Tudo bem, então como resolvemos esses problemas? Bem, como os dois problemas envolvem quando recebi o roteiro de sucesso, a melhor coisa a fazer seria me livrar completamente do script e lidar com a clonagem de uma Por exemplo, podemos fazer com que o pale brrte verifique continuamente os itens na lista de alvos atingidos e, se encontrar algum, ele executará as mesmas ações aqui, movendo-se para o local, excluindo os itens Uma boa maneira de fazer isso seria usar um bloco eterno na parte inferior do script da bandeira verde. Isso ocorre porque o script de bandeira verde só é executado quando o jogo começa, antes de criarmos qualquer clone, então não precisamos nos preocupar com os clones também executando o Tudo bem, então vamos fazer tudo isso primeiro acessando Control e adicionando um bloco eterno ao script da bandeira verde. Agora, dentro do bloco forever, precisamos verificar se há algum item na lista de toupeiras HIT Então, vamos adicionar um bloco I then ao bloco forever. Sempre que uma lista tem itens, seu tamanho é maior que zero. Então, para a condição, vamos primeiro ir até os operadores e trazer um bloco maior que. Agora, para obter o tamanho de uma lista, podemos ir às variáveis, e aqui temos o comprimento do bloco. Vamos usar um como a primeira entrada do bloco maior que. E vamos verificar se o comprimento dos moldes HIT é maior que zero Está bem? E se houver itens na lista, queremos realizar exatamente as mesmas ações que estamos executando atualmente no script Quando eu recebo. Então, vamos retirar todos os blocos daqui e colocá-los dentro do bloco if then. E agora podemos nos livrar do bloqueio quando eu recebo. Ok, se rodarmos o jogo agora e atingirmos 2 toupeiras ao mesmo tempo, um sprite Po aparecerá em cada uma delas e todos os itens serão excluídos da lista de Hit Moles Excelente. Tudo bem, vamos parar o jogo e entrar no código do Mole Sprite Ainda estamos transmitindo a mensagem de toupeira quando uma toupeira é atingida, mas na verdade não estamos mais fazendo nada com No entanto, deixaremos o bloco de transmissão aqui porque, na próxima lição, usaremos a mensagem mo hit para fazer com que o jogo aumente a pontuação do jogador. 19. Marque pontos: Agora que o jogador é capaz de acertar as toupeiras corretamente, vamos deixar que ele marque alguns pontos ao fazer isso Mas primeiro, notei que toda vez que executo o jogo, a ordem de desenho do hammer sprite e dos do pal sprite muda, com os clones aparecendo atrás do martelo às vezes e outras vezes aparecendo na Para corrigir isso, vou entrar no código POS Brite e, em vez de fazer com que o Pobrte se mova para a camada frontal no início do jogo, farei com que cada clone se mova para a camada frontal quando for criado Para fazer isso, removerei o bloco go to front layer do script de bandeira verde e o colocarei próximo ao topo do quando eu começar como um script clone Vou me certificar de anexar esses blocos de volta ao script da bandeira verde. Agora, toda vez que eu executo o jogo, os clones de Pobrte sempre aparecerão na frente do Tudo bem, então para fazer a pontuação funcionar, a primeira coisa que precisaremos é uma variável global para manter a pontuação atual do jogador. Então, na categoria de variáveis, vamos clicar em Criar uma variável. Podemos chamar isso de pontuação. Verifique se é para todos os sprites e clique em OK. Além disso, podemos ocultar a lista de toupeiras do HIT agora, pois sabemos que ela funciona corretamente Está bem? E para simplificar as coisas, vamos deixar o pano de fundo controlar a pontuação Então, vamos entrar no código dos cenários. A primeira coisa que queremos fazer é definir a pontuação para zero quando a bandeira verde é clicada Então, vamos pegar uma pontuação definida até zero bloco e colocá-la dentro do script da bandeira verde. Em seguida, precisamos aumentar a pontuação cada vez que uma toupeira é atingida Como já estamos transmitindo a mensagem de sucesso de toupeira quando isso acontece, tudo o que precisamos fazer é fazer com que o pano de fundo receba a mensagem e aumente a Então, vamos aos eventos e trazer um bloco W I receive. E como a mensagem “Mole Hit é a única mensagem que temos em nosso projeto, ela já deve ter sido escolhida aqui Está bem? Agora só precisamos voltar às variáveis e adicionar uma pontuação de alteração em um bloco ao script de vitória que recebo. E é isso. Se rodarmos o jogo agora, cada vez que atingirmos uma toupeira, a pontuação aumenta em um E se pararmos o jogo e recomeçarmos, a pontuação volta a zero No entanto, a variável de pontuação parece um pouco feia no palco no momento um pouco feia no palco no momento e fará com que pareça muito melhor em uma aula posterior Mas primeiro, vamos adicionar também um cronômetro de contagem regressiva ao jogo para que ele não dure para sempre um cronômetro de contagem regressiva ao jogo para que ele não dure 20. Adicione um temporizador de contagem regressiva: Para adicionar um cronômetro ao jogo, vamos criar uma nova variável E como estamos criando a variável a partir do código de fundo, nossa única opção é torná-la uma variável global Tudo bem, porém, porque é isso que queremos fazer. Tudo bem, vamos chamá-lo de cronômetro. Em seguida, clique em OK. E vamos mover a tela para o centro superior do palco para facilitar a visualização. Assim como com a partitura, faremos com que pareça melhor mais tarde, mas, por enquanto, podemos clicar duas vezes nela para uma leitura maior Também poderíamos ter feito isso escolhendo uma leitura grande no menu do botão direito Ok, com a pontuação, a primeira coisa que queremos fazer é inicializar a variável timer no script de bandeira verde Então, vamos adicionar outro conjunto para bloquear ao script. Queremos definir a variável do cronômetro neste momento e, como será um cronômetro de contagem regressiva, precisaremos iniciá-la com um número maior Vamos com dez. Vamos diminuir o cronômetro em um a cada segundo Então, após 10 segundos, o jogo terminará. Agora, para fazer o cronômetro começar a contagem regressiva, precisaremos de um loop eterno que diminua continuamente a variável do cronômetro em uma a cada segundo Então, primeiro, vamos ao Controle e vamos adicionar um bloco eterno na parte inferior do script da bandeira verde. E vamos adicionar um bloco de espera de 1 segundo ao bloco para sempre. Agora, queremos diminuir a variável do cronômetro em um. Então, vamos às variáveis e introduzimos uma alteração por bloco, colocando-a abaixo do bloco de peso. E vamos fazer com que mude o cronômetro em menos um. A razão pela qual queremos que o bloco de peso venha antes do bloco de troca de compra é para que o cronômetro não pule imediatamente 10 a 9 no início do Está bem? E, no momento, o jogo sempre durará 10 segundos. No entanto, queremos que o jogador seja capaz de aumentar o cronômetro alguma forma para que possa continuar jogando por um longo período de tempo Para fazer isso, podemos fazer que, quando o jogador atinja uma toupeira, ele também aumente o cronômetro Então, vamos adicionar outra alteração de Block ao script quando eu recebo o mole hit e fazer com que ele mude o cronômetro Tudo bem, se jogarmos o jogo agora, o cronômetro começa às dez e diminui em um a cada segundo E se atingirmos uma toupeira, isso aumenta o cronômetro No entanto, quando o cronômetro chega a zero, ele continua caindo para os números negativos Queremos que o jogo pare quando o cronômetro chegar a zero. Isso envolve parar o cronômetro, interromper as animações das toupeiras e impedir que o jogador atinja as toupeiras Para fazer isso, quando o cronômetro chegar a zero, podemos fazer com que o pano de fundo transmita a mensagem do game over, avisando aos sprites que é hora de parar Primeiro, precisamos verificar se o valor do cronômetro chegou a zero Para isso, vamos até o controle e vamos adicionar um bloco if then ao bloco forever logo após diminuirmos a variável timer Para a condição, vamos até os operadores e introduzimos um bloco igual. Então vamos às variáveis e vamos verificar se o cronômetro é igual Se for esse o caso, transmitiremos a mensagem de game over. Então, vamos aos eventos, introduzimos um bloco de transmissão e vamos transmitir uma nova mensagem chamada GameOver . No entanto, ainda não terminamos , porque atualmente o bloco eterno continuará funcionando, diminuindo o cronômetro, então precisamos impedir que o bloco eterno Uma vez que o cronômetro é igual a zero. Para fazer isso, se formos controlar, temos um bloqueio de parada total. Vamos colocar um dentro do bloco if then após a transmissão do fim do jogo Pare com tudo, no entanto, interromperemos todos os scripts do projeto. Não queremos fazer isso porque também abriremos um texto de game over e um botão de jogar novamente mais tarde, e eles exigirão seus próprios scripts em execução para funcionarem texto de game over e um botão de jogar novamente mais tarde, e eles exigirão . Então, em vez disso, queremos apenas interromper o script atual, o que podemos fazer alterando tudo para esse script. Ok, se clicarmos na bandeira verde agora e deixarmos o cronômetro acabar, ele para em zero Agora precisamos fazer com que as toupeiras também parem de se animar. Para fazer isso, vamos parar o jogo e inserir o código do primeiro sprite toupeira O que queremos fazer é que, quando o sprite receber a mensagem de fim de jogo, queremos impedir que todos os seus scripts sejam executados Para isso, vamos primeiro aos eventos e ganhar nosso bloco recebido. E vamos receber o GameOver. Vamos até Control e adicionar um stop block à vitória que recebi no script GameOver E, novamente, parar tudo interromperá todos os scripts do projeto. Só queremos interromper todos os scripts desse sprite em particular Portanto, a opção que precisamos é de outros scripts e sprites. Isso interromperá os ciclos eternos em ambos os scripts de bandeira verde, que congelará as animações das toupeiras. Também precisamos copiar quando eu recebo o script do GameOver para os outros moles Então, vamos clicar e arrastá-lo para o molde dois e modificar três sprites no painel Sprite Ok, e também vamos esconder o hammer sprite quando o jogo terminar, para que o jogador saiba que não pode mais bater nas toupeiras Para fazer isso, podemos acessar o código do sprite Hammer. Então, a partir dos eventos, vamos trazer um W I receive game over Block. Agora só precisamos ir até Looks e adicionar um bloco oculto ao script. Se rodarmos o jogo agora e deixarmos o cronômetro terminar, o molde para de ser animado e o martelo desaparecerá No entanto, se pararmos o jogo e executá-lo novamente, o martelo ainda ficará invisível. Para corrigir isso, basta adicionar um bloco show antes do bloco forever e um dos scripts de bandeira da tela de martelo. OK. E quando o jogo terminar, exibiremos um texto do game over, junto com um botão de jogar novamente no qual o jogador pode clicar para reiniciar o jogo, e faremos tudo isso na próxima lição. 21. Adicionar um jogo sobre tela: Depois de interromper o cronômetro e as animações da toupeira quando o jogo terminar, exibiremos um texto que diz fim Para fazer isso, precisaremos criar um novo sprite. Então, vamos começar a escolher um Sprite e escolher a tinta E vamos chamar o Sprite GameOver para a fantasia, vamos pegar a ferramenta de texto E, por enquanto, vamos dar a ele uma cor de preenchimento preta. Para criar texto, basta clicar na tela e começar a digitar Se quisermos alterar a fonte do texto, temos algumas opções para escolher aqui. Eu vou usar a fonte do marcador. Agora podemos pegar a ferramenta de seleção e ampliar o texto. Queremos que seja bem grande para ocupar a maior parte da largura do palco E também queremos centralizá-lo no Canvas. Para a posição do sprite no palco, vamos centralizá-lo verticalmente e um pouco acima do centro horizontal para abrir espaço para o botão play again, algo parecido Vamos usar zero para a posição e, para a posição Y, vou usar 45. Está bem? De volta ao editor de figurinos, podemos fazer com que o texto tenha uma cor de preenchimento diferente. Eu vou usar um amarelo , mas isso torna muito difícil ver no palco. Então, eu também quero adicionar um contorno preto. No entanto, se ampliarmos um pouco o texto, fonte do marcador aparentemente não gosta de contornos, como podemos ver por essas partes estranhas que estão se destacando agora. Então, o que podemos fazer é primeiro remover o contorno e depois criar uma sombra preta para o texto Para fazer isso, vamos criar uma cópia do texto, preenchê-lo em preto. Mova-o para que fique um pouco abaixo e à direita do texto original e envie-o abaixo do texto original. E podemos usar as teclas de seta do teclado para ajustar melhor o posicionamento. Isso parece muito bom. Ok, agora vamos entrar na guia de código e fazer o sprite funcionar Primeiro, no início do jogo, queremos esconder o sprite Então, vamos aos eventos e começar um script de bandeira verde. Em seguida, vamos até Looks e adicionaremos um bloco oculto a ele. Também queremos garantir que o sprite esteja acima de todos os outros sprites no palco Então, vamos também trazer um bloco para a frente, mais tarde. Em seguida, queremos que o sprite apareça ao receber a mensagem do GameOver Então, vamos aos eventos, trazer um bloco W que recebi e receber o GameOver Primeiro, queremos tornar o sprite visível. Então, vamos até Looks e traga um bloco de shows. No entanto, em vez de apenas fazer com que o sprite apareça repentinamente, começaremos seu tamanho em 0% e, em seguida, aumentaremos rapidamente para 100%, fazendo com que pareça aparecer no palco Para fazer isso, podemos primeiro definir o tamanho do sprite para 0% trazendo um bloco de tamanho dois definido e configurando-o como zero Em seguida, digamos, mais de dez repetições. Vamos trazer o tamanho de volta para 100%. Então, vamos controlar e repetir dez blocos. Em seguida, vamos voltar para Looks e adicionar uma alteração de tamanho por bloco ao bloco de repetição. E deixaremos de alterar o tamanho em dez, o que, em dez repetições deve trazer o tamanho de volta para 100% Tudo bem, se rodarmos o jogo e esperarmos até que o cronômetro acabe, o sprite do game over aparece no palco No entanto, se dermos uma olhada no tamanho do sprite do game over, ele é um pouco maior que 100% A razão pela qual isso acontece é que não podemos realmente definir um tamanho de Sprite para 0% Para ver se esse é o caso, vamos colocar um bloco de tamanho dois em algum espaço vazio. Vamos defini-lo como zero e clicar no bloco. Então, como você pode ver, o tamanho do meu sprite de game over é 5%, não 0% É por isso que quando eu aumento o tamanho em 10% em dez repetições, ele acaba sendo 105% Na verdade, o número exato depende do tamanho da fantasia do sprite Portanto, o seu pode ser um pouco diferente. Está bem? Então, se quisermos que o tamanho do sprite termine em 100%, podemos usar o bloco set size two para definir o tamanho 100 e encaixá-lo logo abaixo do bloco de repetição Se clicarmos no script de vitória que recebi agora, o game over Sprite aparece e seu tamanho volta a 100% Isso também adiciona um leve efeito de deflação no final, onde o tamanho do sprite diminui de 105 a 100, o que, na minha opinião, faz com que a animação pareça Ok, vamos parar o jogo e agora vamos criar um botão de jogar novamente. Então, primeiro, vamos criar um novo Sprite e chamá-lo de play novamente. No editor de figurinos, vamos pegar a ferramenta retangular e escolher uma cor de preenchimento Eu vou com uma laranja. E vamos também dar um contorno preto. Está bem? Agora vamos desenhar um retângulo próximo ao centro da tela Queremos que seja grande o suficiente para que o jogador veja e clique com facilidade, mas não muito grande. Algo em torno de 180 por 60 pixels deve ser bom. E vou aumentar a largura do contorno para sete. Agora vamos pegar a ferramenta sleck e centralizar o retângulo na tela Também parece que parte da parte inferior do retângulo está sendo cortada no palco Como aprendemos anteriormente, podemos corrigir isso circundando a forma com um retângulo sem preenchimento ou contorno Também centralizarei o retângulo transparente na tela. Agora vamos pegar a ferramenta de texto e adicionar um pouco de texto ao botão que diz reproduzir novamente. Vou usar branco para a cor de preenchimento e o San Seripant. Agora podemos pegar a ferramenta de seleção, redimensionar o texto e garantir que ele esteja centralizado E se quisermos redimensioná-lo enquanto o mantemos centralizado, podemos manter pressionada a tecla Alt ou a tecla de opção Tudo bem. Agora, para melhorar a aparência do botão, podemos arredondar os cantos do retângulo Para fazer isso, vamos selecionar o retângulo e pegar a ferramenta de remodelação Se aumentarmos o zoom, podemos adicionar um novo nó em cada lado de um nó de canto. E agora, se excluirmos o nó do canto, ele arredondará a esquina e podemos fazer o mesmo com os três cantos restantes. Ok, isso parece muito bom. Então, agora só precisamos mover o sprite para onde queremos colocá-lo no palco Vou dar à minha uma posição zero e uma posição Y de menos 50. Tudo bem, com o traje pronto, vamos entrar no código Primeiro, como no sprite do game over, no início do jogo, queremos esconder o botão e trazê-lo para a frente depois Então, vamos aos eventos e começar um script de bandeira verde. Em seguida, vá até Looks e traga um esconderijo. E vá para a frente depois do quarteirão. Em seguida, quando o Sprite receber a mensagem de fim de jogo, podemos fazer com que ela apareça da mesma forma que fizemos com o sprite de fim de jogo Então, em vez de recriar o script W I receive game over, podemos ir até o game over Sprite, clicar e arrastar o script W I receive game over para o Play Again Agora podemos voltar ao Play Again Sprite e limpar um pouco os scripts Se clicarmos no script W Eu recebi do GameOver, o botão aparecerá da mesma forma que o sprite do game over Para deixar o botão ainda melhor, podemos adicionar alguns efeitos extras a ele. Por exemplo, quando o jogador passa o mouse sobre o botão, podemos torná-lo com uma cor mais clara e aumentar um pouco o tamanho, e quando o jogador parar de passar o mouse sobre ele, podemos voltar Para fazer isso, precisaremos verificar continuamente se o sprite está tocando o ponteiro do mouse Então, vamos primeiro acessar Control e adicionar um bloco eterno na parte inferior do script W que recebi. Em seguida, como faremos coisas diferentes, dependendo se o sprite está ou não tocando o ponteiro do mouse, precisaremos adicionar um bloco I thin else ao bloco forever Para a condição, vamos detectar e inserir um bloco tocante de ponteiro do mouse Tudo bem, então se o sprite estiver tocando o ponteiro, vamos primeiro Para isso, podemos ir até Looks e adicionar um bloco de dois efeitos definidos à parte I do bloco if the s. Para o efeito, queremos usar brilho, e algo como 20 deve ser bom. Se o sprite não estiver tocando no ponteiro, garantiremos que o brilho esteja definido como zero Então, vamos trazer outro bloco de efeito definido de dois blocos e colocá-lo na outra parte, e vamos definir o brilho para zero. Se clicarmos no script e passarmos o mouse sobre o botão, sua cor ficará mais clara e, se nos afastarmos do botão, a cor voltará ao normal Em seguida, faremos com que o botão também cresça um pouco quando passarmos o mouse sobre ele depois volte ao normal quando nos afastarmos Para fazer isso, vamos parar o jogo. Em seguida, vamos pegar um bloco Bye de alteração de tamanho e adicioná-lo à parte I do bloco de notas IN. Para dar ao botão uma animação de crescimento, faremos um pequeno truque matemático. Primeiro, vamos até os operadores, pegar um bloco de divisão e colocá-lo na entrada do bloco de alteração de tamanho. Agora vamos pegar um bloco de subtração e usá-lo como a primeira entrada do bloco de divisão Em seguida, vamos até Looks, pegue um bloco de tamanho. E use-o como a segunda entrada do bloco de subtração. Agora, se definirmos a primeira entrada para algo acima de 100, como 120, e dividirmos os resultados por algo como dois, o que tudo isso fará é aumentar o tamanho do sprite quantidades cada vez menores até atingir o tamanho 120 Por exemplo, na primeira vez que o bloco for executado, o tamanho será 100. E como o bloco de subtração é separado do bloco de divisão, o scratch executará a subtração primeiro, Em seguida, ele dividirá 20 por dois, dando dez. Finalmente, ele mudará o tamanho do sprite em dez, tornando-o 110 Então, na próxima vez que o bloco for executado, ele fará 120 menos 110, que é dez, depois dividirá dez por dois, que é cinco, e adicionará os cinco ao tamanho total, fazendo com que o sprite tenha um tamanho de E continuará fazendo isso até que o tamanho do sprite chegue a 120 Ok, e para que o tamanho volte a 100%, só precisamos duplicar o bloco de alteração de tamanho adicioná-lo à parte els E em vez de 120, vamos usar 100. Se executarmos o script, agora, quando passarmos o mouse sobre o botão, seu tamanho aumentará para 120 E se nos afastarmos, ele volta para 100. Se quisermos torná-lo maior quando passarmos o mouse sobre ele, basta usar um número maior que 120 E também podemos desacelerar as animações dividindo por um número maior Mas vou mudar o meu de volta para 122. Tudo bem. Agora só precisamos fazer com que o botão realmente faça alguma coisa quando clicamos nele. Para fazer isso, vamos primeiro parar o jogo. Então vamos aos eventos e vamos começar um novo script usando o bloco clicado do WT Sprite Então, quando o sprite é clicado, queremos transmitir uma nova mensagem e também queremos ocultar o Então, primeiro, vamos trazer um bloco de transmissão. E vamos transmitir uma nova mensagem chamada Play Again. Agora vamos até Looks e traga um esconderijo. No entanto, no momento, se o tempo acabar enquanto o jogador estiver ocupado tentando bater nas toupeiras, é possível que ele acidentalmente clique no botão play again quando ele ainda estiver muito pequeno O jogo recomeçará imediatamente, o que pode confundir o jogador Para evitar isso, podemos fazer com que, quando o sprite for clicado, ele transmita a mensagem e se esconda somente se o tamanho do sprite for maior A razão pela qual verificamos se é maior que 100 é que, quando o botão terminar de aparecer no palco, seu tamanho ficará acima de 100 assim que o jogador passar o mouse sobre Tudo bem, então vamos até o Controle, pegue um bloco fino e enrole-o no bloco de transmissão e no bloco oculto. Para a condição, vamos até os operadores e trazer um bloco maior que. Agora vamos até Looks e vamos verificar se o tamanho é maior que 100. OK. E quando transmitimos a mensagem Play Again, também queremos ocultar o sprite do game over Então, vamos entrar no jogo com o código Sprite. Então vamos aos eventos, trazer outro quando eu receber bloco e receber o jogo novamente. Agora só precisamos ir até Looks e adicionar um bloco oculto ao script. Se começarmos o jogo agora e deixarmos o cronômetro acabar, tanto o game over sprites quanto o jogo contra o Sprite A animação de passar o mouse para jogar contra o Sprite também funciona e, se clicarmos nela, ela oculta os No momento, no entanto, ele não reinicia o jogo. Vamos corrigir isso na próxima lição. 22. Como reiniciar o jogo: Para que o jogador possa reiniciar o jogo clicando novamente no Sprite, precisaremos fazer algumas alterações no código do nosso projeto Isso ocorre porque, no momento, estamos usando os scripts de bandeira verde para configurar todos os nossos sprites E, infelizmente, não há nenhum bloco que possamos usar para executar todos os scripts de bandeira verde novamente. A única maneira de executá-los é clicar manualmente na bandeira verde. Então, o que podemos fazer é fazer com que o pano de fundo transmita a mensagem de início do jogo imediatamente no início do jogo, e podemos fazer com que nosso sprite se configure quando receber a mensagem de início do jogo em vez de quando a bandeira verde é Isso também nos permitirá transmitir a mensagem de início do jogo novamente quando o jogador clicar no botão Jogar novamente, o que reiniciará todos os sprites Está bem? Então, primeiro, vamos ver o código do pano de fundo E aqui queremos transmitir a mensagem de início do jogo, tanto quando a bandeira verde é clicada quanto sempre que recebemos a mensagem Jogar novamente Então, primeiro, vamos aos eventos e vamos adicionar um bloco de transmissão ao script da bandeira verde antes do bloco eterno. E vamos transmitir uma nova mensagem chamada Start Game. Ok, agora vamos trazer o When I receive block e receber o play novamente. E aqui precisamos fazer exatamente as mesmas coisas que estamos fazendo no script da bandeira verde. No entanto, em vez de usar duplicatas de todos os blocos, que bagunçará o código, podemos criar um bloco personalizado que faça tudo Então, podemos fazer com que os dois scripts executem o bloco personalizado. Para criar um bloco personalizado, vamos para a categoria MBloxs Tudo o que temos aqui agora é o botão Mu Block. Então, vamos clicar nele. Está bem? Então, primeiro, podemos dar ao nosso bloco personalizado um nome como Start Game. E também podemos adicionar diferentes tipos de entradas e rótulos ao bloco Nós os usaremos mais tarde no curso. Mas para o bloco simples que estamos criando agora, não precisamos de nada extra, então vamos continuar e clicar em OK. Tudo bem, então isso adiciona um bloco definido de início de jogo ao nosso código. Podemos usar o bloco definido como um script adicionando outros blocos a ele. também temos um bloco de início de jogo Agora também temos um bloco de início de jogo na categoria mBlock Podemos colocar esse bloco em qualquer lugar dentro de um de nossos scripts e, quando o script executar o bloco, ele executará todos os blocos que estão dentro do script de início do jogo definido. E para definir o início do jogo, vamos retirar todos os blocos do script da bandeira verde e anexá-los ao bloco de início do jogo definido. Agora, nos meus blocos, vamos pegar um bloco de início de jogo e adicionar um ao da bandeira verde e ao script de vitória que recebo contra. Agora, sempre que a bandeira verde for clicada, o bloco Iniciar jogo será executado, que fará com que todos os blocos dentro do jogo de início fino sejam executados, e o mesmo acontecerá quando a mensagem de jogar novamente for recebida Agora só precisamos dizer aos nossos sprites que se preparem quando receberem a mensagem de início do jogo, e começaremos com o martelo Vamos ver o código do hammer Sprite. Precisamos executar os dois scripts aqui quando a mensagem de início do jogo é recebida, em vez de quando a bandeira verde é clicada Então, primeiro, vamos separar todos os blocos dos dois blocos de bandeira verde Então, podemos nos livrar dos blocos de bandeira verde. Agora podemos ir aos eventos e adicionar um bloco quando recebi no topo de cada script. E queremos receber o início do jogo para os dois. Em seguida, vamos até o sprite da toupeira e faremos o mesmo com os dois scripts de bandeira verde O próximo passo é o pow sprite. Só temos um script para mudar aqui. Agora, para o molde dois e o mod três, vamos terminar de codificar o sprite do molde na próxima lição, que significa que poderemos adicionar todos os moldes ao estágio Então, por enquanto, podemos simplesmente remover o molde dois e modificar três sprites clicando no botão da lixeira ao lado de seus ícones e do painel de sprites E para os sprites do game over and play again, na verdade não precisamos mudar nada porque já os escondemos no início e, assim que o jogador clica no botão Jogar de Novo, o jogo começa Tudo bem E com isso, se rodarmos o jogo, podemos ver que tudo funciona como antes. E quando o cronômetro terminar, podemos clicar em Jogar novamente e ele reinicia o Uma coisa que eu não gosto, porém, é que logo após clicarmos no botão Jogar de Novo, o martelo balança assim que fica visível Isso acontece porque se pararmos o jogo e entrarmos no código do hammer sprite, logo após clicarmos no botão Play Again e um novo jogo começar, o script aqui vê que o botão do mouse está pressionado, então ele balança o martelo Isso não é grande coisa, mas acho que é meio chato e é muito fácil de consertar, então podemos muito bem fazer isso E para fazer isso, tudo o que precisamos fazer é duplicar a espera até não pressionar o mouse ou pressionar o bloco com o espaço de tecla e colocá-lo logo acima do bloco eterno Se rodarmos o jogo novamente e deixarmos o tempo acabar, clicar no botão Jogar novamente não fará com que o martelo gire E, na verdade, há mais uma melhoria que podemos fazer porque pode levar um segundo para que a primeira toupeira ou toupeiras apareçam no início do jogo Podemos esperar mais ou menos um segundo antes que o cronômetro comece a contagem regressiva Para fazer isso, vamos parar o jogo e entrar no código do pano de fundo Agora vamos para Control e vamos adicionar um bloco de espera de 1 segundo ao script de início do jogo definido logo antes do bloco eterno. Tudo bem, na próxima lição, finalmente terminaremos os mais sprites 23. Termine as toupeiras: Para finalizar o mole sprite, vamos entrar no código do mole E, na verdade, já terminamos basicamente com o código. No entanto, talvez queiramos fazer algumas modificações no código posteriormente, que queremos aplicar a todos os sprites de toupeira, e ter que alterar o código de cada sprite de toupeira individual seria Por exemplo, na próxima lição, faremos com que a dificuldade do jogo aumente, e isso afetará coisas como a frequência com que uma toupeira aparece, por quanto tempo ela permanece levantada e por quanto tempo permanece abaixada antes de decidir se aparecerá novamente Se quisermos alterar esses atributos para todos os sprites do molde de uma só vez, em vez de digitar todos os valores como esse, o que é chamado de codificação rígida, devemos substituí-los por variáveis globais Tudo bem, então vamos entrar nas variáveis e clicar no botão da variável MA. Para todas essas variáveis, queremos manter todos os sprites verificados e usaremos a primeira variável dentro do bloco aleatório de seleção que determina se a toupeira deve ou não aparecer Então, podemos chamá-lo de algo como fator de exposição de toupeiras. Esse é um nome bem desajeitado. Então, se você puder pensar em uma melhor, sinta-se à vontade para alterá-la. De qualquer forma, vamos clicar em OK e criar outro. Esta será a duração da pausa da toupeira na posição ascendente. Então, vamos chamar isso de pausa no molde. Vamos clicar em OK. E, finalmente, vamos criar mais uma chamada pausa para reduzir o molde, que determinará por quanto tempo o molde permanecerá inativo antes de decidir se deve ou não voltar a subir E não precisamos mostrar nenhuma dessas variáveis no palco, então vamos desmarcá-las aqui. Agora, vamos pegar o bloco de fatores de exibição de toupeiras e usá-lo para substituir o 50 aqui no bloco de seleção aleatória Em seguida, vamos pegar o bloco de pausa mole up e colocá-lo no primeiro bloco de espera de 1 segundo Em seguida, vamos fazer uma pausa para baixo e colocá-la dentro do bloco final de espera de 1 segundo Em seguida, precisamos acessar o código do pano de fundo e, dentro do jogo Fine Start, definiremos as novas variáveis do molde para os padrões Então, primeiro, vamos pegar um conjunto de dois blocos e colocá-lo em algum lugar próximo ao topo do roteiro. Para este, vamos escolher o fator de exibição de toupeira e, na verdade, começaremos o valor em 200 agora Como veremos, esse será um valor inicial muito bom quando colocarmos todos os moldes no palco No entanto, é claro que você pode sempre ajustar os valores para atender às suas necessidades. Tudo bem, agora vamos trazer outro conjunto para bloquear. E com este, configuraremos a pausa do molde para um. E, finalmente, faremos o mesmo com a pasta moldada. Tudo bem, e com isso, terminamos oficialmente de codificar o sprite toupeira, então agora podemos começar a preencher o Para fazer isso, basta criar várias duplicatas do sprite toupeira e movê-las para E queremos fazer isso linha por linha, começando pela parte de trás do palco e indo para a frente. Isso ocorre porque, como aprendemos anteriormente, a menos que alteremos a camada de um determinado sprite no código, o scratch os desenha na ordem em que os movemos no palco Também não queremos colocar nenhuma toupeira muito perto da borda direita do palco porque, se o fizermos, o jogador terá que mover o cursor até aqui para atingir a toupeira Tudo bem, quando terminarmos adicionar os sprites da toupeira ao palco, vamos clicar na bandeira verde e ver a mágica se desenrolar. Nada mal. No entanto, é muito fácil agora. Provavelmente poderíamos continuar atacando toupeiras para sempre, ou pelo menos até nos cansarmos do jogo Então, na próxima lição, corrigiremos isso aumentando a dificuldade em momentos diferentes ao longo do jogo. 24. Aumente o problema: Para aumentar a dificuldade do jogo, tudo o que precisamos fazer é ajustar os valores das variáveis globais que criamos para as toupeiras na lição anterior Por exemplo, podemos aumentar fator de exibição de toupeiras para mostrar menos toupeiras Podemos diminuir as pastilhas de mofo para fazê-las descer mais rápido, ou podemos aumentar as pastilhas de mofo para que permaneçam abaixadas por mais tempo antes de voltarem E podemos mudar os valores em diferentes pontos do jogo. Como, por exemplo, quando o jogador alcançou pontuações específicas. Tudo bem E como estamos lidando com variáveis globais, faremos tudo isso no código para o pano de fundo Então, a maneira de fazer isso é depois de aumentar a pontuação e o cronômetro e, quando eu receber o script de sucesso do mol, adicionaremos alguns blocos I thin para verificar se a pontuação atingiu um determinado valor Se tiver, ajustaremos as variáveis do molde. Então, para começar, vamos até Control e adicionar um bloco I thin na parte inferior do script de sucesso do mole Para a condição, vamos até os operadores e introduzimos um bloco igual. E para o primeiro bloco fino, verificaremos se a pontuação é igual a cinco. Vamos às variáveis, usar um bloco de pontuação como primeira entrada e verificar se é igual Agora vamos definir mais variáveis para valores diferentes. Vamos adicionar um conjunto de dois blocos ao bloco if thin. E para o primeiro, vamos usar o mole up pause Para tornar o jogo mais difícil, podemos diminuir a pausa para cima, que fará com que a toupeira passe menos tempo na posição levantada Isso significa que o jogador terá que se mover mais rápido para bater na toupeira Ok, então vamos configurá-lo para algo um pouco menor do que o valor inicial de um. 0,7 deve ser bom. Então, agora, sempre que o jogador atingir uma pontuação de cinco, as toupeiras permanecerão levantadas por apenas 0,7 segundos antes de voltarem para baixo. Para o próximo, aumentaremos o valor do mole down pass Isso fará com que as toupeiras permaneçam abaixadas por um longo período de tempo antes de decidirem se voltarão ou não Queremos ir um pouco mais do que um desta vez, então algo como 1,3 deve ser bom. E, finalmente, definiremos o fator de exposição de toupeiras. Na verdade, queremos diminuir o valor do fator de exibição de toupeiras para que as toupeiras tenham uma chance maior de aparecer Então, vamos configurá-lo para algo menor que 200, talvez 180. Isso meio que compensará as alterações que fizemos nas outras variáveis Mas, como veremos, o jogo definitivamente ainda ficará mais difícil. Tudo bem, então temos a primeira mudança de dificuldade quando o jogador atinge uma pontuação de cinco. Agora vamos fazer outra mudança quando eles atingirem uma pontuação de dez. Para fazer isso, podemos primeiro duplicar todo o bloco if then e, para evitar que o script seja executado automaticamente, primeiro colocarei a duplicata em algum espaço vazio depois a anexarei na parte inferior do E desta vez, vamos verificar se a pontuação é igual a dez. Vamos continuar diminuindo a fase de moldagem definindo-a para 0,4 Vamos aumentar a fase de redução do molde para 1,5 e diminuir o fator de exibição do molde para 150 E todos esses valores são bastante arbitrários, então sinta-se à vontade para experimentar alguns diferentes. Ok, vamos duplicar isso se depois bloquear. Coloque-o na parte inferior e verifique se a pontuação é igual Desta vez, configurarei a pose de toupeira para 0,2, pose para baixo para dois e o fator de exibição do molde para 100 Vamos duplicar novamente, colocá-lo na parte inferior e verificar se há uma pontuação de 30 Para as variáveis, usarei 0,1, 2,5 e 50. Tudo bem, vamos duplicar mais uma vez e obter uma pontuação de 45 Desta vez, configurarei a pausa de aumento da toupeira para zero, o que significa que, assim que uma toupeira aparecer, ela começará a descer Portanto, o jogador terá que ser bem rápido para acertá-lo Para moldar a pausa, vou com três, e para o fator de exibição de toupeiras, vou com 40, e isso deve ser bom Agora, é claro, você pode continuar com isso se quiser e adicionar verificações de pontuações que estejam entre uma dessas outras pontuações, como talvez verificar uma pontuação de 40 ou algo assim. Está bem? E agora, se rodarmos o jogo e matarmos algumas toupeiras, fica um pouco mais difícil com a pontuação cinco Mais difícil ainda com a pontuação dez. Novamente, na pontuação 30 e na pontuação 45 ou mais, fica muito difícil bater nas toupeiras Tudo bem E com isso, agora temos um jogo Whack a mole totalmente funcional No entanto, definitivamente há algumas coisas que podemos fazer para melhorar a aparência do jogo, como tornar as exibições de pontuação e cronômetro um pouco mais bonitas e adicionar efeitos sonoros E começaremos com a exibição da pontuação na próxima lição. 25. Aprimore a pontuação: Para melhorar a exibição da pontuação, vamos primeiro mover a atual um pouco para baixo. E o que podemos fazer é colocar uma estrela no canto superior esquerdo do palco para representar a pontuação. Então, podemos usar números grandes ao lado da estrela para mostrar o valor real da pontuação. Está bem? Então, para começar, criaremos um sprite estelar Desenhar estrelas e arranhar pode ser um pouco chato. Mas, felizmente, o Scratch já tem um sprite estelar muito bom que podemos usar Para encontrá-lo, vamos clicar no botão Escolher um Sprite. Em seguida, procure por Star. Aqui está. Vamos escolher isso. Agora temos um sprite estelar no painel de sprites e no palco, e podemos movê-lo para o canto superior E quando o tivermos onde quisermos, queremos ter certeza de que ele comece nesse local sempre que rodarmos o jogo, caso o movamos acidentalmente durante a edição Isso será importante para manter a exibição da pontuação inteira com boa aparência. Ok, então para fazer isso na guia de código da estrela Sprite, vamos aos eventos e trazer uma vitória com a bandeira verde clicada no Agora vamos ao movimento e adicionar um bloco go to XY ao script da bandeira verde. Os valores no bloco já devem ser os mesmos da localização da estrela no palco. E isso é tudo o que precisamos fazer com a estrela por enquanto. Criar uma boa exibição numérica para a pontuação, no entanto, exigirá um pouco mais de trabalho. Primeiro, precisaremos criar um sprite e dar a ele um traje separado para cada dígito Ao lado da estrela, criaremos clones do sprite de dígitos lado a lado com cada um mostrando o mesmo número do dígito correspondente da Ok, então, para começar, vamos criar um novo sprite, e ele precisará ser um sprite personalizado, então vamos escolher E, na verdade, teremos um sprite de dígitos separados para a pontuação e o Então, vamos chamar isso de um dígito de pontuação. Ok, agora vamos trabalhar nas roupas. Como veremos mais tarde, na verdade precisaremos de uma roupa vazia. Então, vamos deixar este em branco. No entanto, a forma como nomeamos as roupas é importante. A palavra ou palavras reais que usamos para os nomes não importam, mas precisamos usar as mesmas palavras para todas as roupas. E no final do nome do traje, precisamos adicionar o dígito que corresponde ao dígito que usamos para esse Por exemplo, podemos nomear todos os dígitos dos trajes seguidos por um dígito específico Mas como esse traje permanecerá vazio, não adicionaremos um dígito ao nome Então, podemos simplesmente chamá-lo de dígito. Agora vamos criar outra fantasia clicando no botão Escolha uma fantasia e clicando em pintar. Vamos colocar um zero dentro desse traje, então precisamos chamá-lo de dígito zero Agora vamos criar um zero dentro do traje pegando a ferramenta de texto, escolhendo preto para o preenchimento, ampliando um pouco a tela, clicando dentro dela e digitando Você pode escolher uma fonte diferente se quiser, mas vou deixar a minha no Sanseraf Está bem? Agora podemos torná-lo um pouco maior. Algo assim deve ser bom. E queremos ter certeza de encaixar o zero no centro da tela Eu também quero engrossar um pouco. Para fazer isso, posso adicionar um contorno preto a ele. Uma largura de três parece muito boa. E podemos seguir em frente e mover o sprite no palco de forma que fique logo à direita da estrela Agora precisamos criar os trajes para os dígitos restantes, de um a nove Para fazer isso, vamos duplicar o traje de dígito zero. Scratch aumenta automaticamente o número no final das roupas nomeadas em nossa homenagem, mas por algum motivo, decidiu pular o número um Então, vamos mudar o nome para o dígito um. Agora só precisamos substituir o zero do traje por um. Para fazer isso, podemos pegar a ferramenta de texto, selecionar o zero, pressionar backspace para excluí-lo e digitar um Ele ainda deve estar centralizado, mas podemos usar a ferramenta de seleção para verificar novamente Agora vamos fazer o mesmo com dois duplicando primeiro o dígito um dois duplicando primeiro o dígito E desta vez usou o número correto para o nome. Então, agora só precisamos substituir o que está aqui por um dois e ter certeza de que está centralizado Agora vamos repetir o processo para os dígitos restantes. Scratch parece manter a roupa centralizada ou pelo menos perto o suficiente do centro, então não vou me preocupar Ok, quando terminarmos o traje de nove dígitos, terminaremos com o figurino Então, agora vamos entrar na guia de código e fazer tudo isso funcionar. Primeiro, como com o Sprite estelar, queremos garantir que o sprite de dígitos de pontuação comece no local correto, caso o movamos acidentalmente Então, vamos aos eventos e começar um script de bandeira verde. Em seguida, vá para o movimento, coloque um bloco Go to XY. E certifique-se de que os valores no bloco sejam iguais à posição atual do sprite Tudo bem, então como podemos fazer com que o sprite mude para a roupa que mostrará, por exemplo, o primeiro dígito da pontuação E só para estarmos na mesma página, vamos às variáveis e colocamos um conjunto de dois blocos em algum espaço vazio, e vamos definir a pontuação para algo como 15. Em seguida, clique no bloco para definir a variável. Ok, então se quisermos obter um dígito específico da pontuação, podemos ir aos operadores, e aqui temos uma letra de bloco Vamos trazer um desses para algum espaço vazio também. Se clicarmos no bloco, obteremos esse pop-up que mostra quais serão os resultados do bloco. Está mostrando um A minúsculo porque estamos recebendo a primeira letra da palavra Apple aqui, que é uma minúscula A. Se mudarmos a letra 1 aqui para 2 e clicarmos no bloco, obteremos um P minúsculo, obteremos um P minúsculo, que é E embora diga a letra e o nome do bloco, também funciona com números. E em vez de digitar um valor na segunda entrada, podemos usar outro bloco, como um bloco variável, e obter uma letra ou dígito específico do valor da variável Então, se quisermos obter um dígito da variável quadrada, podemos ir até as variáveis, pegar um bloco quadrado e usá-lo como segunda entrada Se clicarmos no bloco agora, obteremos o segundo dígito da pontuação, que é cinco E se mudarmos os dois de volta para um e clicarmos nele, obteremos um, que é o primeiro dígito da pontuação Ok, então para trocar o traje de sprites com dígitos de pontuação traje correto pelo traje correto para um dígito específico da pontuação, precisamos pegar a palavra dígito, que é o que usamos nos nomes de todos os trajes, e combiná-la com o dígito que obtemos com E o resultado será o nome completo da roupa para a qual queremos mudar. Tudo bem, então primeiro, para unir coisas como letras e dígitos, podemos ir aos operadores e usar um bloco de junção Então, vamos trazer um para a área de código. Para a primeira entrada, podemos digitar dígito, certificando-se de usar a mesma grafia que usamos para as roupas E para a segunda entrada, podemos usar a letra do bloco aqui. Se clicarmos no bloco, ele nos dará o dígito um, que é uma combinação da palavra dígito e do primeiro dígito da pontuação Finalmente, para mudar para a fantasia de um dígito, basta acessar Looks, trazer uma roupa de troca para bloquear e colocar todo o bloco de junção dentro dela Se clicarmos no bloco, o traje muda para o dígito um mostrando um no palco Se quisermos obter o segundo dígito da pontuação, podemos alterar o um aqui para dois e clicar nele novamente. E agora o dígito da pontuação Sprite está mostrando cinco. Está bem? Agora que sabemos como obter o traje correto, precisamos ser capazes de mostrar todos os dígitos da pontuação no palco, não apenas um deles. Para isso, usaremos clones do sprite de dígitos de pontuação. E, como com o Po Sprite, na verdade não vamos exibir o sprite de dígitos de pontuação em Em vez disso, vamos usá-lo apenas para criar os clones nos locais corretos e exibir os clones Essa é uma prática comum ao trabalhar com clones e scratch, porque podemos fazer coisas com os sprites, clones que não podemos fazer com o próprio sprite, como excluí-los Está bem? Então, primeiro, vamos ocultar o sprite quando a bandeira verde é clicada adicionando um bloco de ocultar ao script da bandeira verde Em seguida, para cada clone, ele precisará saber qual dígito obter da variável de pontuação Para fazer isso, podemos criar uma variável local chamada index, que conterá o índice de um dígito específico na pontuação E ao torná-la uma variável local, cada clone receberá uma cópia separada dela, para que possamos usar um valor diferente para cada clone Tudo bem, então vamos criar a variável acessando variáveis, clicando em criar uma variável, chamando-a de índice, escolhendo somente esse sprite e clicando em OK E não precisamos mostrá-la no palco, então podemos desmarcá-la aqui Agora, vamos pegar um bloco de índice dois definido e adicioná-lo ao script de bandeira verde. Para o primeiro clone, queremos definir o índice como um. O motivo pelo qual definimos o valor antes de criar o clone é que, ao criarmos o clone, o clone criará uma cópia da variável de índice junto com o valor atual da variável Agora precisamos criar clones suficientes para todos os dígitos possíveis que a pontuação possa ter É muito improvável que alguém ultrapasse a pontuação de três dígitos Mas só para ter certeza, criaremos quatro clones. Isso permitirá que o jogador alcance uma pontuação de 9.999. Ok, então para criar quatro clones do Sprite de pontuação, vamos primeiro acessar o Controle, adicionar um bloco de repetição na parte inferior do script da bandeira verde e fazer com que ele se repita Agora, vamos adicionar um bloco create clone of myself ao bloco de repetição E entre cada criação de clone, precisamos aumentar o índice em um Então, vamos às variáveis e índice de alteração em um bloco, colocando-o dentro do bloco de repetição logo após o bloco create Clone Portanto, o primeiro clone terá um índice de um. O segundo terá um índice de dois e assim por diante. Tudo bem, agora que estamos criando os quatro clones, precisamos mostrá-los e fazer com que mudem para o traje correto Então, primeiro, vamos controlar e introduzir um quando eu começar como um bloco clone A primeira coisa que faremos é mostrar o clone. Então, vamos até Looks e traga um bloco de shows. Temos que fazer isso porque estamos escondendo o sprite original, que fará com que os clones também comecem ocultos E agora vamos usar o bloco de troca de roupas que configuramos aqui para trocar a roupa dos clones. No entanto, em vez de codificar o índice dessa forma, precisaremos usar a variável de índice Então, vamos às variáveis, trazer um bloco de índice e usá-lo como a primeira entrada da letra do bloco. Além disso, como a pontuação mudará continuamente durante o jogo, também precisamos que a roupa do clone mude continuamente para a correta Então, vamos até Control e vamos encerrar um bloco eterno em torno apenas do bloco de roupas Switch. Se rodarmos o jogo agora, o sprite de dígitos ScorR mostra a pontuação correta até que ela se torne dez Agora, os números estão todos agrupados. Isso ocorre porque também precisamos mover um pouco cada clone para a direita para que não fique na mesma posição do clone anterior Para fazer isso, vamos parar o jogo e mostrar o sprite do dígito da pontuação Agora vamos duplicar o sprite e mover a duplicata para onde gostaríamos que o segundo dígito Tudo bem, então a duplicata tem uma exposição de menos 142, e o original tem uma exposição Essa é uma diferença de 23, que vou arredondar para 25. Então, para colocar os clones nas posições corretas, depois de criar o primeiro clone, precisamos aumentar a exposição dos sprites 25 antes de criar Então, primeiro, vamos excluir o sprite duplicado de dígitos de pontuação , já que não precisamos mais dele, então vamos começar E vamos colocar uma alteração X por bloco no bloco de repetição após a criação do bloco de clone para que ela não afete a posição do primeiro clone E vamos mudar X por 25. Se rodarmos o jogo agora e marcarmos alguns pontos, mesmo quando chegarmos a dez ou mais, a pontuação será exibida corretamente. E só para ter certeza de que também funciona com pontuações de três e quatro dígitos, podemos parar o jogo e usar o bloco de pontuação extra aqui Podemos tentar algo com três dígitos, como 200, clicar no bloco para configurá-lo clicar no script da bandeira verde Agradável. Vamos também tentar uma pontuação de quatro dígitos, como 6789 Isso também parece bom. No entanto, se ultrapassarmos 9.999, ele mostrará apenas os primeiros quatro dígitos porque estamos criando apenas Sempre podemos adicionar mais clones se quisermos, mas, como eu disse, será quase impossível alcançar uma pontuação de quatro dígitos com o jogo do jeito que está atualmente Então, por enquanto, podemos ficar com quatro clones. Tudo bem E agora estamos praticamente terminados com a exibição da pontuação. No entanto, há uma coisa sobre a qual ainda não conversamos. Quando criamos as roupas para o sprite de pontuação, deixamos uma roupa vazia, chamando-a de simplesmente dígito deixamos uma roupa vazia, chamando-a de simplesmente A razão pela qual tivemos que fazer isso é porque estamos criando quatro clones do sprite Mas, na maioria das vezes, a pontuação terá menos de quatro dígitos E se usarmos um índice na letra do bloco que seja maior que o comprimento do valor do qual estamos obtendo a letra ou o dígito, o valor resultante da letra do bloco ficará em branco Só para demonstrar isso, duplicarei todo o bloco de junção e o colocarei aqui, e retirarei a letra do bloco Agora vou definir a pontuação para um número de um único dígito seguida, substituirei o bloco de índice aqui por dois Se eu clicar no bloco agora, ele não me dará nada porque não consegue encontrar a letra ou o dígito que tem um índice de dois dentro da variável de pontuação Agora, se eu colocar o bloco de volta dentro do bloco de junção e clicar nele, o bloco inteiro terá um valor de apenas a palavra dígito Então, quando isso ocorre dentro do bloco de trajes do Switch, ele troca o traje dos sprites pelo traje chamado dígito, que é o traje vazio, basicamente tornando o clone Agora, digamos que eu use um nome diferente para o traje de dígitos, como vazio Quando o bloco de troca de roupas tentar mudar para a roupa chamada dígito agora, não conseguirá encontrá-la Se eu rodar o jogo agora, tudo parece estar funcionando como antes. No entanto, isso é só porque atualmente tenho a fantasia de sprites vestida com a roupa vazia Se eu mudar para uma roupa diferente como o dígito dois, e executar o jogo, agora todos os clones que deveriam estar vazios exibirão Isso ocorre porque quando o bloco de fantasias do Switch recebe uma fantasia que não existe, ele mantém o sprite em sua roupa atual É por isso que é importante que tenhamos uma roupa vazia e que a nomeemos corretamente. Agora, não importa com qual traje iniciemos o sprite, ele ainda funcionará corretamente. Ok. Agora vou voltar para a guia de código e me livrar desses blocos extras que eu criei. Também não precisamos mais mostrar a variável de pontuação no palco. E agora só precisamos fazer tudo isso pelo cronômetro. Felizmente, porém, podemos começar usando uma duplicata do sprite de dígitos de pontuação junto com seu código, exceto que precisaremos descobrir como centralizar o cronômetro na parte superior do palco Veremos como fazer isso na próxima lição. 26. Corrija o bug de pontuação: Antes de trabalharmos na exibição do cronômetro, ocorre um pequeno bug ao atualizar a pontuação, e isso acontece sempre que atingimos várias toupeiras com um único Por exemplo, se eu acertar 2 mols de uma vez, a pontuação e o cronômetro devem aumentar em dois, mas só aumentarão Assim como com os clones anteriores do sprite Pal, a causa desse bug está relacionada à maneira como lidamos com as mensagens Se entrarmos no código do pano de fundo, sempre que atingirmos uma toupeira, sempre que atingirmos uma toupeira, o pano de fundo recebe a mensagem de acerto da toupeira e aumenta as variáveis de pontuação e cronômetro Isso funciona bem ao atingir uma única toupeira. Mas sempre que atingimos várias toupeiras, estamos transmitindo várias mensagens de acerto de toupeira simultaneamente acerto E, como vimos no sprite Pow antes, quando fazemos isso, o pano de fundo só tem a chance de executar o script quando eu recebo o script molehit uma quando eu recebo o script molehit Portanto, as variáveis de pontuação e cronômetro só são atualizadas uma vez Está bem? Portanto, a melhor maneira de corrigir isso é em vez de atualizar as variáveis no código do plano de fundo, devemos atualizá-las no código Posprite Isso ocorre porque sabemos que estamos criando o número correto de clones do pal sprite sempre que atingimos várias toupeiras Então, para fazer isso, vamos voltar ao código do pano de fundo bem rápido E então, quando eu recebo o script Mole Hit, você deseja copiar a pontuação de alteração em um e alterar o cronômetro em um bloco para o Posprite e, em seguida, removê-los daqui Então, primeiro, vamos separar os dois blocos do script, copiá-los para o Posprite e removê-los do código do pano de fundo Agora vamos ao código do Po Sprite, e queremos pegar os dois blocos de alteração por blocos que copiamos e colocá-los perto do topo do quando eu começar como um script de clone Com isso, cada vez que criarmos um clone do POW Sprite, ele atualizará as variáveis de pontuação e cronômetro Agora, antes de experimentarmos, vamos voltar ao código do pano de fundo No momento, ainda estamos atualizando a dificuldade sempre que recebemos a mensagem de mo hit. No entanto, agora é possível que recebamos a mensagem antes que o Pal Sprite realmente atualize a pontuação, o que significa que a dificuldade não será atualizada corretamente Então, em vez de executar esses blocos ITN, sempre que recebermos a mensagem mole hit, podemos executá-los continuamente enquanto o jogo estiver Para fazer isso, em vez de receber um golpe de toupeira, vamos receber Start Game E queremos executar o script continuamente. Então, vamos até Control, pegue um bloco eterno e envolva-o em todos os blocos dentro do script. Tudo bem, e com isso, se rodarmos o jogo e acertarmos 2 mols ao mesmo tempo, as variáveis de pontuação e cronômetro aumentarão em duas Incrível. Uma última coisa a ressaltar, porém, é que, se entrarmos código de um dos sprites da toupeira, não estaremos mais usando a mensagem molehid Então, se quisermos, podemos ler o código de todos os sprites de toupeira e remover os blocos de molehid transmitidos No entanto, não fará mal nenhum deixar os blocos como estão. E, a propósito, eu não deixei esse bug no jogo de propósito. Na verdade, demorei até esse ponto para perceber isso, e isso só mostra o quanto devemos ser cuidadosos ao usar mensagens e raspar. De qualquer forma, agora que resolvemos o bug, podemos começar a trabalhar para fazer com que a exibição do cronômetro tenha uma boa aparência 27. Aprimore o temporizador: Para melhorar a exibição do cronômetro, vamos remover o padrão do caminho Agora podemos duplicar o sprite do dígito da pontuação e vamos mudar o nome da duplicata para dígito do duplicata para dígito do Em seguida, queremos que o cronômetro seja exibido na parte superior central do palco Então, no código sprite com dígitos do cronômetro, vamos fazer com que sua exposição inicial seja Deixará sua posição Y igual para que fique alinhada com os dígitos da pontuação Agora vamos clicar na bandeira verde. Está bem? Portanto, os dígitos do cronômetro estão centralizados corretamente na parte superior do palco e alinhados horizontalmente com os alinhados horizontalmente No entanto, ele ainda está usando o valor da variável de pontuação, pois ainda não a alteramos para usar a variável cronômetro Então, vamos parar o jogo. E quando eu começar como um script de clone, vamos remover o bloco de pontuação do bloco de troca de roupas e substituí-lo por um bloco de cronômetro da categoria de variáveis Se o executarmos agora, ele está usando o valor correto. No entanto, quando o cronômetro tem dois dígitos, o primeiro dígito permanece centralizado no palco e o outro só é exibido à direita O que queremos é que todo o display do cronômetro apareça centralizado, independentemente de quantos dígitos ele contenha Para fazer isso, ao trocar o traje de cada clone de dígito, precisaremos atualizar continuamente a exposição de cada clone Então, primeiro, a partir do movimento, vamos colocar um conjunto de dois blocos E vamos colocá-lo em algum lugar dentro do bloco eterno do script When I start as a Clone Tudo bem, então colocar a exibição do cronômetro na posição correta exigirá um pouco de matemática Primeiro, no script de bandeira verde, temos uma alteração X por bloco que estamos usando para mover o sprite para a direita em 25 etapas antes de criar cada clone O 25 aqui é basicamente a largura que estamos usando para cada clone Então, para começar, definiremos posição de cada clone como seu índice vezes o valor da largura, o que os espaçará corretamente no palco Para fazer isso, vamos até os operadores, pegar um bloco de multiplicação e colocá-lo dentro do bloco conjunto X dois no quando eu começar como um script de clone E vamos usar o valor da largura como segunda entrada. Então, 25 no meu caso. Para a primeira entrada, vamos às variáveis e introduzimos um bloco de índice. E como agora estamos definindo a exposição de cada clone, o HangX Byblock no script de bandeira verde não tem mais efeito, então podemos prosseguir e nos livrar dele Agora, para testar isso, se clicarmos com o botão direito do mouse na exibição do cronômetro antigo aqui no estágio, podemos escolher o controle deslizante, que, como vimos anteriormente no curso, nos permite usar um controle deslizante para alterar o valor Por padrão, isso vai de 0 a 100. Mas se clicarmos com o botão direito do mouse novamente, obteremos uma opção de alteração do intervalo do controle deslizante que nos permite alterar os valores mínimo e máximo do controle deslizante Por exemplo, podemos fazer com que passe de zero para algo como 9.999 Ok. E se agora clicarmos em um dos blocos no script da bandeira verde, podemos ver o novo cronômetro ser exibido novamente com os dígitos espaçados corretamente Agora só precisamos centralizar a tela. Para fazer isso, precisaremos obter o número total de dígitos no cronômetro e subtrair metade disso do índice de cada Então, vamos parar o jogo para remover os clones. Então, vamos até os operadores e colocamos um bloco de subtração em algum espaço vazio por enquanto Então, vamos pegar um bloco de divisão e usá-lo como a segunda entrada do bloco de subtração Para a segunda entrada do bloco de divisão, podemos colocar dois. E para a primeira entrada, precisamos obter o número total de dígitos do cronômetro Para fazer isso, nos operadores, temos um comprimento de bloco. Com isso, podemos obter o número total de letras ou dígitos de um determinado valor Se colocarmos um na área do código e clicarmos nele, ele nos dará cinco, que é o número de letras na palavra maçã. Para obter o número de dígitos na variável do cronômetro, podemos duplicar o bloco do cronômetro aqui e usá-lo como entrada para o comprimento do Agora, se clicarmos no bloco, ele nos dará o comprimento da variável do cronômetro, que no meu caso é três. Tudo bem Agora podemos usar tudo isso como a primeira entrada do bloco de divisão. Agora vamos retirar o bloco de índice do bloco conjunto x dois e usá-lo como a primeira entrada do bloco e usá-lo como a primeira entrada de subtração Finalmente, podemos definir a exposição dos clones para tudo isso multiplicado pela largura do Ok, se clicarmos no script da bandeira verde agora, a exibição do cronômetro estará quase perfeitamente centralizada, mas não Isso porque ainda não levamos em conta que o scratch usa o centro de uma fantasia de sprites ao posicioná-la no palco Então, para corrigir isso, tudo o que precisamos fazer é subtrair 0,5 do valor no lado esquerdo do bloco de multiplicação. Isso fará com que cada dígito também se desloque para a esquerda na metade da largura do dígito Então, vamos trazer outro bloco de subtração. Agora vamos retirar o bloco de subtração aqui em cima e usá-lo como a primeira entrada do de subtração E a partir disso, vamos subtrair 0,5. E agora podemos colocar tudo isso na primeira entrada do bloco de multiplicação Tudo bem, se clicarmos no script da bandeira verde novamente, a exibição do cronômetro agora está perfeitamente centralizada no palco E podemos clicar na própria bandeira verde para ver ela também funciona corretamente quando o cronômetro faz a contagem regressiva. Também não precisaremos mais da exibição do cronômetro antigo, então podemos clicar com o botão direito do mouse e escolher Ocultar E com isso, temos um cronômetro e exibições de pontuação muito melhores Mas, para um efeito visual extra na próxima lição, faremos com que toda vez que batermos em uma toupeira, uma estrela voadora saia da toupeira e suba até a estrela próxima à 28. Adicione estrelas voadoras: Para criar estrelas voadoras, usaremos clones do sprite estelar que já temos e faremos com que eles comecem perto da posição de cada molde atingido, subam rapidamente até a estrela próxima à partitura e Tudo bem, então, para começar, precisamos descobrir um bom lugar no código para criar um clone de estrela cada vez que uma toupeira é atingida Poderíamos fazer isso no código do sprite toupeira, mas teríamos que fazer isso para cada sprite de toupeira, que não seria muito divertido Então, uma opção muito melhor seria fazer isso no código pow sprite, já que temos apenas um pow sprite e já estamos criando clones dele toda vez que uma toupeira é atingida Ok, então o que queremos fazer é cada vez que criamos um clone poderoso do Sprite, também queremos criar um clone do Star Sprite E, felizmente, isso é muito fácil de fazer porque um sprite não só pode criar um clone de si mesmo, mas também pode criar um clone de outro Então, vamos ao Controle e trazemos outro bloco de clones, e podemos colocar esse logo abaixo do outro aqui E para este, é claro que queremos criar um clone dos sprites estelares Tudo bem, agora só precisamos entrar no código do Star Sprite e dizer ele o que fazer quando ele começa como um Então, vamos introduzir um quando eu começar como um bloco clone. Primeiro, vamos garantir que o clone não fique escondido atrás de nenhum dos outros sprites acessando Looks e adicionando um bloco go to front later ao script Em seguida, precisamos mover o clone para a posição da toupeira que foi atingida E, como com o amigo sprite, podemos fazer isso usando os itens da lista de toupeiras de sucesso No entanto, se voltarmos ao código do Po Sprite, atualmente estamos excluindo os itens da lista antes de criar um clone da Poderíamos tentar mover os blocos de exclusão para a parte inferior do script depois de criar os clones. Mas como os blocos de clones na verdade não pausam o script, os itens ainda serão excluídos antes que o Sprite estrela tenha a chance de ser executado, como quando eu começo como um script de clone e Então, o que podemos fazer é, em vez de excluir os itens dentro do código Pow Sprite, podemos excluí-los dentro do código Star Sprite quando soubermos que os itens não serão mais necessários Tudo bem, então para fazer isso, vamos primeiro copiar os blocos de exclusão na estrela Sprite Em seguida, vamos removê-los completamente do Pow Sprite. Também podemos usar os mesmos blocos de ir para XY e alterar Y By aqui para mover cada clone do sprite estelar para a posição correta Então, vamos também copiar esses blocos para a estrela Sprite. Agora vamos voltar ao código da estrela Sprite. Primeiro, vamos mover esses blocos para uma área vazia para que possamos vê-los melhor. Não vamos fazer com que os dois criem blocos de clones aqui para que possamos removê-los. Em seguida, podemos adicionar o go para XY e alterar os blocos Y para o quando eu começar como um script clone e colocar os blocos de exclusão logo na parte inferior do script Tudo bem, se rodarmos o jogo agora, cada vez que batermos em uma toupeira, ela cria um clone de Star Sprite bem em cima Agora só precisamos fazer com que os clones das estrelas voem até a estrela ao lado da partitura Para fazer isso, vamos parar o jogo. E se entrarmos na categoria de movimento, temos esses dois blocos deslizantes Com eles, podemos fazer com que um sprite se mova para uma posição aleatória, a posição de outro sprite ou para uma posição X e Y específica, e podemos fazer com que ele chegue lá em um determinado número de segundos Queremos mover os clones para a posição do sprite estelar No entanto, como atualmente estamos trabalhando dentro do código star Sprite, scratch não nos dá a opção de deslizar até o sprite estelar Acho que é porque deslizar um sprite para si mesmo realmente não faz Então, em vez disso, podemos usar a versão XY, configurando-a para os valores da posição inicial do sprite estelar Ok, então vamos pegar um bloco XY glide two e adicioná-lo ao final do quando eu começar como um script de clone E se não movemos o sprite estelar no estágio, os valores de XY no bloco deslizante já devem ser os mesmos que temos no bloco go to XY aqui Caso contrário, certifique-se de digitar os corretos. E para a hora de planar, queremos que seja bem rápido Então, vamos tentar algo como 0,2 segundos. Além disso, no momento, ainda não estamos excluindo os clones do palco. Então, vamos prosseguir e fazer isso acessando Control e adicionando um bloco de exclusão deste clone na parte inferior do script Tudo bem, se rodarmos o jogo agora e atingirmos alguns moldes, os clones das estrelas voarão rapidamente até o placar Isso parece muito bom, mas para torná-lo ainda melhor, podemos fazer com que os clones de estrelas comecem bem pequenos cresçam até o tamanho normal quando atingirem a pontuação Para isso, vamos parar o jogo e precisaremos criar um novo quando eu começar como um script de clone Isso ocorre porque o bloco de deslizamento realmente pausa o script até que o tempo de deslizamento termine, e queremos que a animação de crescimento dos clones ocorra ao mesmo Então, vamos trazer outro quando eu começar como um bloco clone. Em seguida, iniciaremos o tamanho do clone em 0%. Então, vamos até Looks, coloque um tamanho definido para bloquear e defina o valor como zero. Como vimos o jogo terminar e jogar novamente sprites no início do curso, isso não define o tamanho do sprite como zero, mas será próximo o suficiente. Está bem? Agora só precisamos fazer com que o sprite volte ao tamanho normal Para fazer isso, podemos ir até o controle e introduzir um bloco de repetição. E vamos fazer com que se repita cinco vezes. Em seguida, vamos voltar para Looks e adicionar uma alteração de tamanho Byblock ao bloco de repetição, e vamos fazer com que ele altere o tamanho em 20% a cada vez Além disso, como é provável que esse script termine antes do outro, deixaremos o bloco delete this clone onde está Ok, se jogarmos o jogo e quebrarmos alguns moldes agora, os clones de estrelas começam pequenos e aumentam de tamanho à medida que se aproximam Além disso, como o tamanho dos clones acaba sendo um pouco maior que 100%, a animação tem um efeito pop interessante no final, e agora terminamos com o visual do jogo No entanto, ainda falta uma coisa importante : os efeitos sonoros. Então, vamos adicionar alguns na próxima lição. 29. Adicione efeitos sonoros: Para finalizar o jogo, adicionaremos alguns defeitos de som. Alguns bons lugares para reproduzir sons são quando o jogador bate em uma toupeira, quando as estrelas voadoras atingem a pontuação e quando o jogador clica no botão Play Again, vamos começar com o botão Play Again selecionando o sprite Play Again no painel Sprite Se entrarmos na guia Sons, o Sprite na verdade já tem um som aqui chamado Pop Scratch adiciona o som pop automaticamente a qualquer sprite personalizado que criamos Para ouvir o som, podemos clicar no botão Play aqui. Acho que isso soa muito bom para clicar em um botão. Então, vamos jogar sempre que o jogador clicar no sprite. Para fazer isso, vamos primeiro acessar a guia de código e escolher o som. Agora só precisamos adicionar um dos blocos de som ao bloco I thin do script clicado pelo sprite do WT Se usarmos um bloco place sound until done, ele pausará o script até que o som termine de ser reproduzido Isso não é realmente necessário, então vamos usar um bloco de som inicial. E já deve ter o som pop escolhido. Na verdade, também vamos tocar um som quando o jogo terminar. Para fazer isso, podemos acessar o código do pano de fundo e, dentro do jogo Fine Start aqui, podemos tocar um som em algum lugar aqui embaixo no bloco I then que verifica se o cronômetro terminou Se formos para a guia Sons, teremos novamente o som pop padrão, qual não precisaremos aqui, então vamos excluí-lo clicando no ícone da lixeira ao lado Para encontrar um novo som, temos um botão de escolha de som aqui embaixo. Podemos fazer upload de um som, obter um som aleatório, gravar um som e escolher entre os sons que o Scratch nos fornece. Vamos escolher essa opção. Um bom som de fim de jogo é aquele aqui embaixo chamado Oops Para adicioná-lo ao pano de fundo, basta clicar nele Agora podemos reproduzir o som quando o jogo terminar, voltando para a guia de código e adicionando um bloco de som inicial Oops ao bloco I thin aqui embaixo Se jogarmos o jogo e o deixarmos terminar, ele tocará o som Oops E se clicarmos no botão play again, ele tocará o som pop. Em seguida, vamos tocar um som para cada estrela voadora quando ela atingir a pontuação. Para fazer isso, vamos parar o jogo e selecionar o sprite estelar Se entrarmos na guia de sons, a estrela também terá um som padrão chamado coletar, que soa assim. Isso deve funcionar muito bem. Então, vamos voltar para a guia de código e colocá-la em uso. Queremos tocar esse som depois um clone atingir a estrela ao lado da partitura, o que significa que depois que o clone terminar Então, vamos pegar um bloco de coleta de som inicial e colocá-lo logo abaixo do bloco deslizante Agora, se jogarmos o jogo e matarmos algumas toupeiras, os clones das estrelas voarão e reproduzirão o Finalmente, só precisamos reproduzir um efeito sonoro assim que batermos em uma toupeira E como não queremos nos preocupar em alterar o código de cada sprite de toupeira, podemos reproduzir um som no código do Po Sprite Então, vamos selecionar o sprite Pow. Em seguida, vamos para a guia de sons. Não precisaremos do som pop, então vamos excluí-lo. Agora vamos clicar no botão Escolher um som. Depois de pesquisar um pouco, encontrei três bons candidatos para um som de toupeira O grande som do Boeing aqui. O Boeing aqui e esse maluco. E, felizmente, não precisamos escolher apenas um. Em vez disso, podemos fazer com que cada clone do pw sprite toque um dos três sons E isso é definitivamente uma coisa boa porque, acredite, tocar apenas um desses sons repetidamente toda vez que batemos em uma toupeira se torna irritante muito rápido Tudo bem, então vamos adicionar todos os três sons ao sprite clicando em Voltando para a página de escolha de um som, clicando em outra e fazendo o mesmo com a terceira. Ok, e para escolher um som aleatório para tocar, vamos gerar um número aleatório de 1 a 3 Então, para facilitar as coisas, vamos mudar o nome do primeiro som para um, do segundo para dois. E o terceiro de um a três. Então, podemos simplesmente tocar o som que tem o nome que corresponde ao número aleatório. E para fazer isso, vamos até a guia de código. Podemos tocar um som no bloco I thin aqui, onde criamos um novo clone ou podemos fazer isso no script When I start as a clone Eu vou para a segunda opção. Então, vou pegar um bloco de som inicial e colocá-lo em algum lugar antes dos blocos de repetição. Em seguida, para obter um número aleatório de 1 a 3, vamos até os operadores, pegar um bloco aleatório colocá-lo dentro do bloco de som inicial E use um e um três como valores de entrada. Ok, se jogarmos o jogo agora, ouvimos um som aleatório cada vez que batemos em uma toupeira E com isso, terminamos oficialmente nosso primeiro jogo de raspadinha. Então, parabéns por todo o seu trabalho árduo. há definitivamente mais algumas melhorias que podemos fazer, entanto, há definitivamente mais algumas melhorias que podemos fazer, então fique à vontade para continuar trabalhando nas suas. E se você fizer isso, envie-me um link para o seu jogo, porque eu adoraria ver o que você inventaria. Tudo bem, quando você estiver pronto, vemos na próxima aula, onde começaremos a trabalhar em um novo jogo. Dois. 30. Introdução de Havoc Cósmico: O próximo jogo que criaremos é um jogo de tiro espacial chamado cosmic Com este jogo, aprenderemos como criar uma tela de título que aparece no início do jogo. Também aprenderemos como tocar músicas que são executadas continuamente em segundo plano, bem como fazer com que o player possa desativar a música e os efeitos sonoros O objetivo do jogo será acumular o máximo de pontos possível atirando em asteróides com nossos lasers antes que inevitavelmente sejamos destruídos Para ajudar a melhorar a chance de sobrevivência do jogador, implementaremos a captura de tela, permitindo que o jogador se teleporte de um lado do palco para o E também fornecerá captadores que aprimorarão temporariamente as habilidades dos jogadores, como permitir que eles atirem em três direções diferentes ao mesmo tempo, destruam asteróides apenas tocando neles e uma bomba que destrói qualquer asteróide a uma destrói qualquer asteróide Vai ser muito divertido criar este . Então, vamos direto ao assunto. 31. Configuração inicial: Para começar, vamos carregar um novo projeto acessando Arquivo Novo. E vamos chamá-lo de Havoc cósmico. Tudo bem E, eventualmente, teremos algumas estrelas em movimento aparecendo no fundo. Mas, por enquanto, vamos torná-lo preto sólido. Então, vamos escolher um pano de fundo no painel do palco aqui e, na guia de cenários, vamos pegar a ferramenta retângulo, escolher preto para a cor de preenchimento e nada para o e nada Em seguida, vamos desenhar um retângulo que cubra toda a área do palco da tela Eventualmente, também criaremos uma tela de título, que incluirá um botão Iniciar que transmite a mensagem de início do jogo quando o jogador clica nela Quando os sprites receberem a mensagem de Início do Jogo, eles se prepararão para o jogo Mas até criarmos a tela de título, podemos fazer com que o pano de fundo transmita a mensagem de Início do Jogo quando a bandeira verde é clicada, iniciando o jogo imediatamente Então, vamos para a guia Código. E dos eventos, vamos trazer uma bandeira verde vencedora, clicar em bloquear Agora só precisamos adicionar um bloco de transmissão ao script e transmitir uma nova mensagem chamada Start Game. Tudo bem E com isso resolvido, começaremos a trabalhar nos sprites dos jogadores 32. Desenhe os trajes do jogador: Vamos selecionar Sprite one aqui e vamos renomeá-lo para player Agora vamos usar seus trajes, e não precisaremos do Scratchcat para Então, no traje 1, podemos selecionar todas as partes do traje e excluí-las. Desculpe, Scratchcat Ok, então o sprite do jogador será uma espaçonave e, só por diversão, criaremos várias roupas ligeiramente diferentes para o Na tela de título, o jogador poderá alternar entre os diferentes trajes. Tudo bem, então, para a primeira fantasia, vamos pegar a ferramenta retangular e ficar à vontade para usar a cor que quiser para o preenchimento Eu vou com o azul claro. E vou manter o contorno desligado. Agora vamos ampliar um pouco a tela e desenhar um retângulo com aproximadamente seis blocos de largura e 11 blocos de altura Em seguida, podemos pegar a ferramenta de remodelação e dar ao retângulo uma boa forma de nave espacial Primeiro adicionarei um nó no centro da borda superior e também adicionarei um cerca de três blocos acima da parte inferior nas bordas esquerda e direita. Agora vou excluir os dois nós de canto superiores. Para os dois nós que adicionei aqui, selecionarei os dois e os transformarei em nós pontiagudos. Em seguida, arrastarei um pouco as alças do nó superior para aumentar a curvatura Por fim, selecionarei cada uma das notas do canto inferior individualmente e as moverei um pouco para dentro. E eu pressiono a tecla Shift enquanto faço isso para manter o movimento no eixo horizontal. Em seguida, podemos lhe dar algumas asas. Para isso, vamos pegar a ferramenta retangular novamente e, para a cor de preenchimento, usarei um cinza claro Agora vamos desenhar um retângulo no lado esquerdo. Envie-o abaixo da forma do corpo. Em seguida, use a ferramenta de remodelação para dar a ela um formato mais parecido com uma asa Para a borda externa da asa, vou pegar a ferramenta de linha, alterar a largura do contorno para algo como quatro e, para a cor do contorno, primeiro usarei a imagem colorida para escolher o mesmo azul do corpo, mas vou torná-la um pouco mais Em seguida, vou desenhar uma linha cobrindo a borda da asa. Agora podemos usar a ferramenta de seleção para pegar as duas formas de asas, manter pressionada a opção de duplicá-las e arrastá-las para o outro lado enquanto pressionamos a tecla Shift para mantê-las alinhadas horizontalmente Então, podemos invertê-los horizontalmente. Em seguida, adicionaremos um propulsor na parte inferior da espaçonave Para isso, podemos pegar a ferramenta retangular mais uma vez e, para a cor de preenchimento, vou usar o mesmo azul escuro que uso para a linha nas asas Em seguida, vamos desenhar um retângulo que se sobreponha à parte inferior da forma do corpo e desça cerca de um quarteirão Agora vamos enviá-lo para o fundo e remodelá-lo um pouco, se quisermos Finalmente, vamos adicionar uma janela ao corpo. Para fazer isso, vamos pegar a ferramenta sleck e, se mantivermos pressionada a tecla Alt ou Option e clicarmos na forma do corpo, ela criará uma duplicata diretamente sobre Agora podemos tornar a duplicata em cinza escuro e reduzi-la um cinza escuro e reduzi-la pouco enquanto pressionamos tecla Alt ou a opção para mantê-la centralizada Agora podemos pegar a ferramenta de remodelação, remover os dois nós inferiores fazer outros ajustes até obtermos algo de que gostemos Tudo bem, agora que terminamos todas as formas, vamos garantir que elas estejam todas centralizadas na tela selecionando todas elas e encaixando a seleção no Agora vamos trabalhar no traje número dois. Primeiro, vamos deletar o traje atual 2. Então vamos duplicar o traje um. Para este, vou manter as formas iguais, exceto que vou usar um vermelho claro para o corpo. E vou fazer com que o propulsor e as linhas das asas tenham um tom mais escuro Ok, para outro traje, vamos duplicar o traje dois, e eu vou usar verde para este Também podemos mudar um pouco a forma. Queremos principalmente manter a largura e a altura aproximadamente as mesmas e, em particular, manter o propulsor na mesma posição para que não tenhamos problemas quando adicionarmos a chama posteriormente Para mais uma fantasia, vou duplicar a roupa três e usar roxo para as cores Sinta-se à vontade para criar mais roupas, se quiser, e trocá-las um pouco mais. Mas vou ficar com esses quatro. E, por enquanto, vamos voltar para a fantasia 1. Tudo bem, e com as roupas prontas, em seguida, faremos com que o sprite do jogador se mova pelo palco 33. Mover o jogador: Antes de começarmos a codificar o sprite do jogador, notei que as asas do sprite parecem um pouco irregulares no palco Quando vimos e batemos em algumas toupeiras, podemos corrigir isso escolhendo a ferramenta retângulo, desativando a cor do campo e a cor do contorno e desenhando um retângulo invisível ao redor Para as outras roupas, podemos selecionar o retângulo invisível, clicar no botão copiar, depois ir para uma das outras roupas e clicar no botão Colar, e ele deve colar o retângulo no mesmo local Agora podemos fazer o mesmo com os trajes restantes. Em seguida, vamos voltar para a fantasia e passar para a guia de código. Está bem? Então, para mover o sprite do jogador pelo palco, vamos deixar o jogador usar as seta ou as teclas WASD. E ao verificar se o jogador está pressionando uma tecla de movimento, o que não queremos fazer é usar o bloco de pressão da tecla de vitória da categoria de eventos para ver o porquê, vamos trazer uma e configurá-la para verificar quando a tecla de seta direita é pressionada. Agora vamos ao movimento, introduza uma alteração x por Bloco. E vamos fazer com que mude X por um. Se agora continuarmos pressionando a tecla de seta direita repetidamente, o sprite do jogador se move para a direita no palco No entanto, se mantivermos pressionada a tecla, ela se moverá uma vez, depois fará uma breve pausa começará a se mover novamente. Isso é semelhante a digitar uma letra em um processador de texto. Se mantivermos pressionada uma tecla de letra, ela digita a letra uma vez, pausa e continua digitando a preciso dizer que, embora a pausa seja muito breve, ela causaria problemas em um videogame que exige movimentos rápidos Então, vamos separar os dois blocos e nos livrar do bloco pressionado com a tecla win. Agora, o que queremos fazer em vez disso é verificar continuamente se uma tecla de movimento está sendo pressionada. Já vimos que podemos fazer isso primeiro acessando o controle, trazendo um bloco eterno, colocando um bloco I thin dentro dele e, na categoria de detecção, podemos usar um bloco pressionado por tecla como condição Se configurarmos para verificar se a tecla de seta direita está sendo pressionada, coloque a alteração X por bloco dentro do bloco I thin e clique no script. Agora, mantendo pressionada a tecla de seta para a direita, moveremos o sprite para a direita sem pausas Como também queremos permitir que o jogador use as teclas WASD para se mover, podemos fazer com que a alteração x em um bloco seja executada sempre que a tecla de seta direita ou a tecla D estiverem sendo pressionadas Para fazer isso, podemos ir até os operadores e trazer um bloco ou. E vamos usar a tecla de seta para a direita, pressione o bloco como primeira condição. Para a segunda condição, podemos duplicar o bloco de pressionamento de tecla e alterá-lo para verificar a tecla D. Se agora usarmos o bloco or como condição I thin, podemos fazer o sprite se mover para a direita mantendo pressionada a tecla de seta para a direita ou a tecla D. Em seguida, para mover para a esquerda, vamos duplicar o bloco fino I e colocar este logo abaixo do primeiro Para o movimento para a esquerda, queremos verificar se a tecla de seta para a esquerda ou a tecla A está sendo pressionada. E desta vez, queremos mudar X por menos um. Agora, se executarmos isso, podemos mover o sprite do jogador para a direita e para a esquerda Agora só precisamos fazer tudo isso para mover o jogador para cima e para baixo. No entanto, em vez de usar um monte de blocos de ITN, deixe-me mostrar um truque Se movermos um dos blocos ou para algum espaço vazio e clicarmos nele, ele terá um valor falso, como seria de esperar. E se mantivermos pressionada uma das teclas estão sendo verificadas antes de clicar no bloco, ela terá um valor verdadeiro, também conforme o esperado. No entanto, uma coisa a saber é que, na programação de computadores, falso costuma ser tratado como zero e o verdadeiro geralmente é tratado como um. Para ver por que isso é útil, vamos destacar a alteração x em um bloco e em vez disso, alterar X pelo valor do bloco O. E sim, mesmo que o bloco or tenha um formato diferente do slot de entrada, ele ainda aparecerá imediatamente. Se clicarmos no HangXBlock agora, nada acontece. Mas se mantivermos pressionada a tecla de movimento para a direita, cada vez que clicarmos no bloco, o jogador se move um para a direita. Da mesma forma, para mover para a esquerda, vamos destacar o outro bloco ou bloco, bem como a alteração x por menos um bloco. Agora, como o bloco ou sempre será zero ou um, para fazer com que ele mude x por menos um, quando uma tecla de movimento para a esquerda é pressionada, precisamos negar seu valor Para fazer isso, podemos trazer um bloco de subtração e usar o bloco or como segunda entrada Para a primeira entrada, podemos colocar um zero ou podemos simplesmente deixá-lo em branco, que terá o mesmo efeito. Agora, se colocarmos tudo isso dentro da mudança x por bloco e mantivermos pressionada a tecla de movimento para a esquerda, cada vez que clicarmos no bloco, o sprite se moverá para a esquerda Tudo bem, agora, de volta ao bloco eterno aqui, podemos nos livrar dos dois blocos finos e colocar os dois blocos de mudança X diretamente dentro do bloco eterno E podemos seguir em frente e correr o bloco para garantir que os movimentos para a direita e para a esquerda ainda funcionem corretamente. Além disso, observe que se mantivermos pressionadas uma tecla de movimento para a direita e uma tecla de movimento para a esquerda ao mesmo tempo, o primeiro bloco x de alteração será um e o segundo será negativo. Então, os blocos realmente se anularão e o sprite não se moverá Ok, agora para o movimento vertical, vamos para o movimento e vamos adicionar dois blocos Y B variáveis ao bloco eterno. Para o primeiro, vamos usar uma duplicata do bloco or do primeiro bloco change x. Alterar Y por um fará com que o sprite suba. Então, para as teclas, queremos verificar a tecla de seta para cima e a tecla W. Finalmente, para descer, podemos duplicar o bloco de subtração no segundo bloco X de alteração, colocá-lo no segundo bloco de alteração Y e fazer com que ele verifique a seta para baixo e a Vamos também fazer com que o bloco eterno seja executado sempre que o jogo começar. Para fazer isso, vamos aos eventos e vamos anexar um bloco quando eu receber o início do jogo no topo do bloco eterno. Como o pano de fundo está transmitindo a mensagem de início do jogo assim que a bandeira verde é clicada, podemos clicar na bandeira agora para ver se os movimentos horizontal e vertical estão funcionando corretamente. Uma coisa que os movimentos horizontal e vertical estão funcionando você pode notar, porém, é que, se nos movermos diagonalmente pressionando uma tecla de movimento horizontal e vertical ao mesmo tempo, o sprite parece a mensagem de início do jogo assim que a bandeira verde é clicada, podemos clicar na bandeira agora para ver se os movimentos horizontal e vertical estão funcionando corretamente. Uma coisa que você pode notar, porém, é que, se nos movermos diagonalmente pressionando uma tecla de movimento horizontal e vertical ao mesmo tempo, o sprite parece para nos movermos um pouco mais rápido do que quando nos movemos em apenas um eixo. Esse é um problema comum que vejo em jogos criados por novos desenvolvedores de jogos, e a razão pela qual isso acontece é que, quando nos movemos em apenas um único eixo, o sprite se move pelo palco em exatamente uma etapa No entanto, quando nos movemos nos dois eixos ao mesmo tempo, o sprite realmente se move em mais de uma etapa Para calcular exatamente a distância que ele se move, podemos usar o teorema de Pitágoras, que, nesse caso, seria a raiz quadrada da soma de X ao quadrado e Y ao de Quando nos movemos em apenas um único eixo, isso nos dá a raiz quadrada de um, que é um, então nos movemos a uma distância de um passo. No entanto, ao nos movermos nos dois eixos ao mesmo tempo, obtemos a raiz quadrada de dois, que é uma distância de algo como 1,414 Para que o sprite se mova apenas em uma única etapa, tudo o que precisamos fazer é dividir os valores do movimento X e Y pela distância entre os dois valores Isso é chamado de normalização. Tudo bem, então, de volta ao código, em vez de usar imediatamente os valores de movimento para alterar as posições X e Y dos sprites como estamos fazendo atualmente, vamos criar algumas variáveis temporárias para armazenar os Precisaremos de uma variável para a mudança em X, uma para a mudança em Y e mais uma para calcular a distância entre elas. Então, para tudo isso, vamos às variáveis e vamos remover a variável M padrão. Em seguida, vamos clicar em Criar uma variável. Para a mudança em X, podemos usar Delta X ou Dx para abreviar, e somente o sprite do jogador precisa acessar a variável Então, vamos escolher apenas esse sprite. Em seguida, para a alteração e Y, podemos usar DY, também apenas para este sprite Finalmente, para a distância, podemos usar o disco e criá-lo apenas para este sprite Agora, vamos retirar todos os blocos de combinação de teclas dos blocos de alteração. Então, podemos nos livrar de todos os blocos de mudança. Em seguida, vamos adicionar um conjunto de dois blocos ao bloco eterno e fazer com que ele defina Dx como o valor do bloco de movimento correto aqui Agora precisamos fazer uma alteração por bloco e alterar dx pelo valor do bloco de movimento esquerdo Se rodarmos o jogo agora, quando não estivermos pressionando uma tecla de movimento, dx será zero Quando pressionamos uma tecla de movimento para a direita, ela será uma, e quando pressionarmos a tecla de movimento para a esquerda, será menos uma. Tudo bem Agora vamos trazer outro conjunto para bloquear e fazer com que ele defina DY com o valor do bloco de movimento ascendente. Então, vamos introduzir uma mudança por bloco e alterar dy pelo valor do bloco de movimento descendente. Agora, tanto o DX quanto o DY mudam à medida que pressionamos as teclas de movimento. Em seguida, para definir a variável do disco, vamos inserir um bloco definido de dois blocos e colocá-lo logo após todos os blocos DX e DY Para definir a distância entre DX e DY, usaremos o teorema pedagoeano Primeiro, vamos até os operadores e vamos pegar esse bloco que atualmente diz abs of e vamos colocá-lo dentro do set disc two block. Em vez de obter o valor abs ou absoluto, queremos obter a raiz quadrada ou SRT para abreviar Em seguida, dentro da raiz quadrada do bloco, vamos adicionar um bloco de adição. Então, para cada uma das entradas do bloco de adição, vamos trazer um bloco de multiplicação. Tudo bem, então para o primeiro bloco de multiplicação, queremos multiplicar o valor de dx Então, vamos às variáveis e vamos adicionar um bloco DX a cada entrada Para o segundo bloco de multiplicação, queremos fazer dia vezes dia Se agora rodarmos o jogo, pressionar nada nos dará uma distância de zero. Pressionar apenas uma tecla de movimento nos dá uma distância de um, e pressionar uma tecla horizontal e vertical ao mesmo tempo nos dá uma distância de 1,414, etc. Tudo bem Agora só precisamos dividir DX e DY por disco e, em seguida, mover o sprite do player usando os valores DX e DY Quando nenhuma tecla de movimento estiver sendo pressionada, no entanto, disco será zero, e você deve se lembrar da aula de matemática que dividir por zero não é possível Se tentarmos dividir por zero na programação de computadores, isso nos dará um erro. De qualquer forma, quando a distância é zero, o sprite do jogador não deve se mover de qualquer maneira, então só realizamos as divisões e movemos o jogador se a distância não for Para fazer isso, vamos controlar. E vamos trazer um bloco fino e colocá-lo em algum espaço vazio por enquanto. Agora, para a variável de disco, o valor só será zero ou algo maior que zero. Nunca será negativo. Portanto, para a condição do bloco fino I, precisamos apenas garantir que o disco seja maior que zero. Então, vamos até os operadores e vamos trazer um bloco maior que. Agora vamos às variáveis e vamos verificar se dist é maior que zero Ok. Agora, dentro do bloco if then, precisamos dividir Dx e Dy por disco Então, vamos trazer dois conjuntos de dois blocos. Dentro de cada bloco, vamos até os operadores e adicionaremos um bloco de divisão. Tudo bem Para o primeiro, vamos fazer com que ele defina dx. Então, vamos voltar às variáveis e queremos definir dx para o valor atual de dx dividido pelo valor do disco Da mesma forma, para o segundo conjunto de blocos, queremos definir DY como dy dividido por disco. Agora vamos colocar o bloco I then dentro do bloco eterno abaixo de todos os outros blocos. Se rodarmos o jogo agora, sempre que pressionarmos apenas uma única tecla de movimento, a distância é uma, o que significa que DX e DY são divididos por um, o que não tem efeito No entanto, se pressionarmos uma tecla horizontal e vertical juntas, podemos ver que DX e DY realmente são divididos pelo valor da distância Tudo o que precisamos fazer agora é alterar as posições X e Y dos sprites pelos valores finais de DX e DY Para fazer isso, vamos ao movimento e vamos adicionar um bloco de mudança X B e uma mudança Y por bloco na parte inferior do bloco fino I. Agora queremos ir para as variáveis, alterar X pelo valor de dx e alterar Y pelo valor de DY Tudo bem, se rodarmos o jogo agora, podemos mais uma vez mover o sprite dos jogadores pela fase Mas agora o movimento diagonal parece muito mais natural. No entanto, ele está se movendo um pouco devagar, já que estamos nos movendo apenas um passo em cada quadro. Para fazê-lo se mover mais rápido, podemos multiplicar DX e DY por algum valor ao alterar as posições X e Y. Para fazer isso, vamos até os operadores e trazer dois blocos de multiplicação Agora podemos usá-los para multiplicar DX e DY por algo como cinco Em seguida, altere X e Y pelos valores resultantes, e agora o sprite do jogador se move muito mais rápido pelo palco Também não precisamos mais ver os valores das variáveis no palco, então vamos ocultá-los. Tudo bem, então o movimento do jogador está muito bom agora. No entanto, no momento, assim que soltamos a tecla de movimento, o sprite para abruptamente Para melhorar a aparência do movimento, podemos fazer com que o sprite pare um pouco mais suavemente Isso é muito fácil de fazer e veremos como, na próxima lição, 34. Suavizar o movimento do jogador: Para fazer com que o jogador seja um sprite, pare mais suavemente Vamos primeiro ir às variáveis e criar algumas novas. Vamos chamar a primeira velocidade de X e torná-la somente para esse sprite Para o segundo, vamos chamá-lo de velocidade Y. Também somente para este sprite, podemos ir em frente e ocultar as variáveis Tudo bem, então o que vamos fazer com essas variáveis é usá-las para atualizar a posição do jogador, cada quadro ou iteração do loop eterno E no início do jogo, é claro que não queremos que o jogador se mova. Então, na parte superior do script acima do bloco para sempre, vamos colocar o conjunto dois blocos e definir a velocidade x e a velocidade Y como zero. Em seguida, no bloco I then aqui, onde verificamos se a distância é maior que zero, em vez de alterar diretamente as posições X e Y do jogador, definiremos a velocidadeX e a velocidade Y Dx vezes cinco e D Y vezes cinco Vamos retirar os dois blocos de alteração e colocá-los de lado por enquanto, e vamos substituí-los no script por dois blocos do conjunto de dois. Para o primeiro, vamos definir velocidadex para Dx vezes cinco, e para o segundo, vamos definir a velocidade Y para DY Agora vamos pegar os dois blocos de troca e colocá-los abaixo do bloco, se for fino. Vamos mudar X pela velocidade X e Y pela velocidade Y. Tudo bem, se rodarmos o jogo e pressionarmos uma tecla de movimento, o sprite continuará se movendo na mesma direção mesmo depois de soltarmos a Então, o que queremos fazer agora é depois de usar os valores de velocidadeX e velocidade Y para alterar as posições X e Y em cada quadro, também queremos reduzir os valores, cada quadro, trazendo-os para zero Para fazer isso, podemos multiplicar os valores da velocidade X e da velocidade Y por um número decimal 0-1, e isso terá o efeito de reduzi-los suavemente Está bem? Então, após a alteração dos blocos X e Y, vamos trazer um conjunto de dois blocos e usá-lo para definir a velocidadeX Agora vamos aos operadores e adicionar um bloco de multiplicação ao bloco X de velocidade definido Para a primeira entrada, vamos usar um número decimal 0-1 Quanto menor o número, mais rapidamente o valor cairá e mais rápido o sprite do jogador parará e vice-versa. Para o efeito que estamos procurando, devemos usar algo bem alto, como 0,8. Agora, para a segunda entrada, vamos às variáveis e introduzimos um bloco X de velocidade. Agora podemos duplicar o bloco de velocidade x definido, colocá-lo na parte inferior e fazer com que ele defina a variável de velocidade Y. E para mudar facilmente o bloco de velocidade x aqui para o bloco de velocidade Y, podemos clicar com o botão direito do mouse e escolher a velocidade Y. Se rodarmos o jogo agora e movermos o sprite, quando soltarmos as teclas de movimento, ele parará de forma mais gradual e suave Para fazer o sprite flutuar um pouco mais antes de parar, podemos usar um número decimal maior, como talvez 0,95 E para fazê-lo parar mais rápido, podemos Mas acho que 0,8 funciona muito bem. Então é com isso que vou continuar. No entanto, se rodarmos o jogo novamente, você poderá notar que a parada é um pouco brusca Isso acontece porque o scratch realmente não gosta de usarmos valores decimais ao definir a posição de um sprite Então, para corrigir isso, precisamos apenas arredondar as variáveis speed x e speedY quando as usamos para mudar a posição dos sprites Para fazer isso, vamos até os operadores e colocamos dois blocos redondos em algum espaço vazio. Então, vamos mover o bloco de velocidade X aqui para um dos blocos redondos e o bloco de velocidade Y para o outro. E agora podemos colocar os blocos redondos nos blocos de troca. Se tentarmos novamente, não haverá mais solavancos quando o sprite parar Ok, agora basicamente terminamos com a movimentação do jogador. Mas uma característica comum que vemos em jogos de tiro espaciais como esse é que, quando o jogador chega muito perto de um lado da tela, se teletransporta instantaneamente para o outro lado da Isso é chamado de quebra de tela ou volta da tela. E na próxima lição, veremos como podemos implementá-lo em nosso jogo. 35. Implemente Wraparound: No momento, se o jogador mover até um lado do palco, o Scratch impede que o sprite se mova mais Isso é bom para as bordas superior e inferior, mas eventualmente criaremos alguns captadores para coisas como power-ups de armas e escudos que o jogador possa usar, e faremos com que os captadores se movam do topo do palco para o As pickups começarão em exposições aleatórias em todo o palco Portanto, é possível que uma picape comece a cair bem longe do jogador, tornando quase impossível para o jogador alcançá-la a tempo Portanto, para uma melhor experiência, podemos aplicar a quebra de tela quando o jogador se aproxima bem da borda esquerda ou direita, que o levará imediatamente para a borda oposta Isso também será útil ao evitar asteróides. Para implementar a quebra de tela, precisamos detectar quando o jogador atingiu uma certa distância da borda esquerda ou direita do palco e, em seguida, mudar sua posição para que ele imediatamente o coloque na borda oposta E como o centro do palco está localizado na posição 00 para mover o jogador para a borda oposta, tudo o que precisamos fazer é negar sua exposição Então, no código dos sprites do jogador, depois de mudar a posição do jogador, verificaremos se a exposição do jogador atingiu a borda esquerda ou a direita e, em caso afirmativo, vamos mudá-la para a borda oposta Para começar, vamos até Control e inserir um bloco I then. E realmente não importa se fazemos isso antes ou depois de definir as variáveis de velocidade X e velocidade Y aqui, então vou fazer isso depois. Em seguida, verificaremos se a exposição do jogador excedeu alguma posição próxima à borda direita do palco Para fazer isso, para a condição do bloco, vamos até os operadores e trazer um bloco maior que. Para a primeira entrada, vamos ao movimento e introduzimos um bloco de exposição Tudo bem, então a largura total do palco é 480 pixels. Isso significa que as exposições no palco vão de 240 negativos no lado esquerdo para 240 positivos no lado direito não queremos que o jogador vá até a borda antes de terminar, entanto, não queremos que o jogador vá até a borda antes de terminar, então podemos verificar se ele foi além de, digamos, 235 Então, para a segunda entrada do bloco maior que, vamos colocar 23, cinco. E agora tudo o que precisamos fazer dentro de se o bloco for colocar um bloco conjunto x dois e negar a exposição do jogador definindo-a para menos Se rodarmos o jogo agora e movermos o sprite para a borda direita, ele se enrolará para a borda esquerda E a parada suave ainda se aplica, o que é muito bom. Agora só precisamos fazer o mesmo com a borda esquerda. Então, vamos duplicar o bloco I than e colocá-lo abaixo do outro Desta vez, precisamos de menos de um bloco. Então, vamos salvar o bloco de exposição aqui e nos livrar do bloco maior que Agora vamos até os operadores e trazer um bloco menor. E com isso, queremos verificar se a exposição é menor que menos 235 Nesse caso, queremos mudar X para 235 positivos. Se rodarmos o jogo agora, o jogador pode passar pelas bordas esquerda e direita do palco. Perfeito. Agora, antes de prosseguirmos para a próxima lição, o código para mover o jogador ficou bem longo e também adicionaremos um pouco mais de código ao script Iniciar o jogo quando eu receber. Então, para facilitar a leitura, podemos colocar todo o código de movimento um bloco personalizado separado. Para fazer isso, vamos até Meus blocos e clique em Criar um bloco. Podemos chamar o movimento do bloco e clicar em OK. Agora podemos colocar o bloco de movimento definido aqui e vamos pegar todos os blocos que estão dentro do bloco eterno aqui e encaixá-los no bloco de movimento definido Então, de volta ao bloco eterno, só precisamos adicionar nosso novo bloco de movimento. Agora tudo parece mais limpo e ainda funciona da mesma forma que antes. Tudo bem. Agora que o jogador pode se mover pelo palco, vamos fazer com que ele também possa disparar alguns lasers 36. Crie o laser: Antes que o jogador possa começar a disparar lasers, primeiro precisamos criar o sprite laser Então, na pintura sprite, vamos até o botão Escolha um Sprite e clique em E vamos chamá-lo de laser. Tudo bem, para o traje, tudo o que precisamos fazer é desenhar um retângulo branco com cantos arredondados e um contorno colorido neon Então, vamos pegar a ferramenta retangular, escolher branco para a cor de preenchimento e escolher uma cor brilhante como ciano para a cor do contorno E defina a largura do contorno para algo como dois. Agora, embora tenhamos o ponto laser na vertical enquanto ele sobe pelo palco, na verdade queremos desenhá-lo horizontalmente Como veremos mais tarde, isso facilitará nossa vida quando criarmos a potência do laser. Vamos ampliar um pouco a tela. E vamos criar um retângulo com cerca de cinco blocos de largura e 1,5 blocos de altura Para arredondar os cantos, podemos pegar a ferramenta de remodelação, adicionar um nó ao centro do lado esquerdo e um à direita de cada um dos dois nós de canto e excluir os nós de canto Em seguida, ajuste as alças do nó central. E podemos fazer o mesmo para o lado oposto. Agora, vamos centralizar a forma na tela. E, no momento, o scratch está cortando algumas partes do sprite no palco Então, vamos corrigir isso criando um retângulo invisível ao redor do traje E é isso. Agora vamos até a guia de código e começaremos a codificar. Tudo bem, então não vamos realmente usar o sprite laser em si no jogo Em vez disso, como com o amigo sprite e bata em algumas toupeiras, vamos apenas criar clones Então, no início do jogo, vamos esconder o sprite e também queremos que ele comece voltado para cima, que é uma direção zero Então, vamos aos eventos e vamos trazer um bloco de Início do Jogo quando eu receber. Em seguida, vamos para o movimento e adicionar um bloco de ponto na direção, configurando-o para apontar na direção zero. Finalmente, vamos para Los e adicionar um bloco de esconderijo. OK. E quanto à criação de clones do sprite, faremos isso de dentro do sprite do jogador Sempre que o jogador pressiona ou mantém pressionado um botão do mouse ou uma determinada tecla, como a tecla de espaço Vamos criar um novo bloco para isso acessando Mblocks e clicando em Criar um bloco Vamos chamá-lo de disparar laser e clicar em OK. Podemos colocar o bloco de laser de tiro definido aqui e vamos adicionar o próprio bloco de laser de tiro ao bloco eterno do script inicial do jogo. Agora só precisamos verificar se o jogador está pressionando o botão do mouse ou a tecla de espaço e, em caso afirmativo, criaremos um clone do sprite laser Então, no laser de disparo definido, vamos até Control e introduzimos um I then block. Para a condição, vamos até os operadores e trazer um bloco or. Para as condições de dois ou blocos, podemos acessar o sensor e inserir o bloco de do teclado e o bloco do mouse pressionado Finalmente, dentro do bloco then, podemos criar um clone do sprite laser acessando o controle, trazendo um bloco de criação de clone e configurando-o para criar um clone Tudo bem, agora, antes de tentarmos isso, precisamos voltar ao código do Sprite a laser e dizer a ele o que fazer quando ele começa como um Então, vamos começar quando eu começar como um bloco clone. A primeira coisa que queremos fazer é mostrar o clone. Então, vamos até Looks e traga um bloco de shows. Em seguida, queremos que o clone comece na mesma posição do sprite do jogador Então, vamos entrar em movimento, colocar uma posição aleatória, bloquear e configurá-la para ir para o jogador. Depois disso, queremos que o clone se mova para cima até chegar ao topo do palco Em seguida, excluiremos o clone. Para fazer isso facilmente, vamos controlar e repetir até bloquear. Para a condição, vamos até a detecção, coloque um bloco de toque e coloque-o na borda sensível ao toque Edge aqui se refere a qualquer uma das quatro bordas do palco. Mas como os lasers só tocarão a borda superior, isso não é grande coisa Está bem? Então, o que queremos fazer agora é mover continuamente o clone até chegar ao topo Então, vamos para o movimento e vamos mover um bloco de dez etapas. Como giramos o sprite a laser para ficar voltado para a posição zero ou para cima, o bloco de mover etapas moverá o clone até o Vamos fazer com que ele se mova em dez etapas por enquanto, mas sempre podemos ajustá-lo mais tarde, se for muito rápido ou muito lento. Está bem? E, finalmente, após o bloco de repetição, vamos excluir o clone acessando Control e trazendo um bloco de exclusão deste clone Tudo bem, se rodarmos o jogo agora, podemos pressionar a tecla de espaço ou clicar dentro do palco para disparar um laser Também podemos manter pressionada a tecla de espaço ou o botão do mouse para disparar continuamente o laser. , está disparando muito rápido agora entanto, está disparando muito rápido agora, então precisaremos corrigir isso Além disso, os clones estão aparecendo no topo do Sprite do jogador e começando diretamente no centro do sprite. Vamos corrigir isso primeiro. Para garantir que o sprite do jogador apareça acima dos clones de laser no palco, podemos acessar o código do Sprite do jogador e, em algum lugar no início do script de início do jogo, podemos ir até Looks e inserir bloco Go to front later Em seguida, volte aos sprites a laser. Vamos fazer com que o clone comece mais perto da frente dos sprites do jogador Para fazer isso, podemos ir para o movimento, pegar uma alteração Y por bloco e colocá-la diretamente após o bloco de ir para o jogador. Vamos fazer com que mude Y em 20 etapas. Se rodarmos o jogo agora e dispararmos o laser, ficará muito melhor. ainda temos o problema de disparar muitos lasers ao mesmo tempo Para corrigir isso, vamos ao código do sprite do player. O que podemos fazer é fazer com que script de gravação a laser crie apenas um clone do sprite laser se um número específico de quadros tiver passado desde a criação do clone anterior Para fazer isso, precisaremos criar uma variável para armazenar quantos quadros queremos esperar entre cada clone Vamos às variáveis e vamos criar uma nova. Podemos chamá-lo de shoot delay e criá-lo apenas para este sprite E vamos esconder a variável. Tudo bem. Agora, antes do bloco eterno no script do jogo Start, vamos colocar um bloco do segundo set e definir o atraso do tiro em zero. Isso permitirá que o jogador comece a atirar imediatamente, sem demora. Em seguida, para fotografar um laser definido, vamos até o controle e vamos colocar um bloco I Thin S em algum espaço vazio no momento. Para a condição, queremos verificar se o atraso da filmagem é maior que zero. Vamos até os operadores e trazer um bloco maior que. Em seguida, vamos às variáveis e vamos verificar se o atraso da filmagem é maior que zero. Nesse caso, tudo o que queremos fazer é diminuir o atraso da filmagem em um. Vamos adicionar uma alteração por bloco à parte I e alterar o atraso da filmagem por menos um. Caso contrário, verificaremos se a tecla de espaço está pressionada ou se o mouse está pressionado e, em caso afirmativo, criaremos um clone do sprite laser Então, vamos pegar esse bloco I thin aqui e colocá-lo na parte do bloco I thin s. E mais uma coisa que precisamos fazer aqui é definir o atraso da filmagem para o que quisermos que seja. Então, logo após criar o clone, vamos adicionar um bloco de dois conjuntos e fazer com que ele defina o atraso de filmagem para algo como três Com isso, quando o script de disparo a laser executado novamente durante o próximo quadro, atraso do disparo será maior que zero, então o script reduzirá apenas atraso do disparo e não permitirá que o jogador atire. Isso acontecerá repetidamente até que o atraso no disparo se torne zero, momento em que o jogador poderá atirar novamente. Agora podemos adicionar tudo isso ao script de disparo a laser e, se rodarmos o jogo e mantermos pressionada a tecla de espaço ou o botão do mouse, os lasers disparam a uma taxa muito mais razoável Tudo bem, agora que o jogador pode disparar lasers, precisamos dar a ele algo em que realmente atirar Na próxima lição, começaremos a criar os asteróides. 37. Desenhe os trajes de asteroide: Para começar a criar os asteróides, vamos primeiro criar o sprite do asteróide acessando o botão escolher um Sprite, clicando em pintar e Ok, no editor de figurinos, vamos começar pegando a ferramenta circular e escolher um marrom claro para a cor de preenchimento Então, para o contorno, vamos usar um marrom mais escuro E vamos fazer com que a largura seja algo como seis. Agora, vamos ampliar um pouco a tela e desenhar um círculo com um diâmetro de cerca de 50 a 55 pixels. E se quisermos criar um círculo perfeito, podemos manter pressionada a tecla Shift enquanto clicamos e arrastamos. Então, podemos pegar a ferramenta de remodelação e remodelar o círculo até que ele se pareça mais com um Ok, vamos também adicionar alguns pontos ao asteróide. Para fazer isso, podemos pegar a ferramenta circular novamente definir a cor de preenchimento para o marrom escuro do contorno Desligue o contorno e desenhe uma pequena elipse no Agora podemos usar o SelegTol para fazer algumas duplicatas Em seguida, use a ferramenta de remodelação para alterar um pouco suas formas E com isso feito, vamos garantir que tudo esteja centralizado na tela Agora vamos criar mais algumas roupas para adicionar um pouco de variedade aos asteróides. Para fazer isso, podemos duplicar a primeira roupa e, em seguida, usar a ferramenta de remodelação para alterá-la um pouco E, novamente, vamos garantir que tudo esteja centralizado. Então vamos criar mais uma fantasia. Está bem? Agora que temos algumas roupas bonitas para os asteróides, trabalharemos em seguida criá-los e movê-los para 38. Gerar os asteróides: Para começar a criar asteróides e movê-los para baixo no palco, vamos ver o código dos sprites de asteróides Primeiro, vamos realmente fazer com os asteróides comecem maiores do que o tamanho normal e depois os dividiremos em fragmentos cada vez menores à medida que o jogador atira neles fragmentos cada vez menores à medida que o jogador atira Um tamanho inicial de cerca de 200 deve ser bom. Ok, então, no início do jogo, vamos garantir que o asteróide sprite comece um tamanho de 200 indo aos eventos, trazendo um bloco quando eu receber o bloco de início do jogo, depois indo para Looks e trazendo um bloco de tamanho dois, fazendo com que o tamanho seja definido para Também queremos que os asteróides apareçam abaixo de tudo no palco Para fazer isso, podemos inserir um bloco go to later e configurá-lo na camada posterior. Mais uma coisa que queremos fazer é esconder o sprite, porque vamos usá-lo principalmente para gerar clones Então, vamos trazer um esconderijo. Ok, então a maneira de gerar os clones é fazer que eles comecem acima da borda superior do palco em exposições aleatórias Em seguida, faremos com que eles desçam pelo palco até serem destruídos pelo jogador ou atingirem a borda inferior. E como queremos que isso aconteça continuamente, vamos começar controlando e introduzindo um bloqueio eterno. Em seguida, iniciaremos o sprite acima da borda superior do palco Um problema com isso, no entanto, é que o scratch, na verdade, não permite que os sprites saiam completamente de nenhuma das bordas A altura total do palco é de 360 pixels com a borda superior na posição 180 e a parte inferior em 180 negativos. Podemos colocar o sprite na posição Y de 180 com bastante facilidade. Mas se tentarmos colocá-lo bem acima da borda superior, como em 300, arranhão impede que ele suba tão alto, e parte do sprite permanece visível E, na verdade, o máximo que o sprite pode ir depende do tamanho do traje atual do sprite e da configuração do tamanho dos Se definirmos o tamanho de volta para 100, o sprite inteiro agora está fora do palco Mas assim que tentamos colocar a posição Y em algo alto, como 300 novamente, ela é empurrada para baixo até que parte dela fique visível para contornar tudo isso e fazer com que os clones comecem acima da borda superior, podemos fazer um pequeno truque de fantasia Para fazer isso, vamos voltar para a aba de fantasias. Agora vamos criar uma nova fantasia abaixo todas as outras escolhendo um botão de fantasia e escolhendo a tinta. E vamos mudar o nome do figurino para grande. Em seguida, vamos ampliar totalmente a tela, o que podemos fazer facilmente clicando nesse botão entre os botões da lupa Vamos criar um retângulo que cubra toda a área do palco da tela Vamos também centralizá-lo na tela. Agora, quando o sprite está usando uma fantasia muito grande como essa, podemos afastá-la muito mais do limite Se agora mudarmos para uma roupa diferente, o sprite permanece na mesma posição e agora está completamente fora do palco Então, o que isso significa em código é que podemos mudar temporariamente para a fantasia grande antes mover o sprite acima da borda superior depois voltar para uma das roupas normais E como tudo isso acontecerá antes da renovação do palco, na verdade não veremos a grande fantasia no palco Tudo bem, então, de volta ao código, no início do bloco eterno, vamos primeiro trocar a fantasia dos sprites pela fantasia grande indo para Los e trazendo uma fantasia de switch para o bloco grande E agora podemos começar o sprite acima da borda superior do palco Então, vamos entrar em movimento e colocar um bloco Go to XY abaixo do bloco de roupas do switch. Uma posição Y de 250 deve ser alta o suficiente. Para ter certeza de que podemos mudar para o traje grande, defina a posição Y do sprite para 250, mude para um traje normal e ajuste o tamanho de volta para 200 Ainda não vemos o sprite, então estamos bem. Tudo bem, de volta ao código. Para a exposição, podemos usar um número aleatório entre as bordas esquerda e direita do palco Para fazer isso, vamos até os operadores e trazer um bloco aleatório escolhido. Como vimos ao codificar o movimento para o sprite do jogador, o estágio vai de 240 negativos à esquerda para 240 positivos à direita não queremos que os asteróides comecem entanto, não queremos que os asteróides comecem muito perto das bordas Então, vamos com algo como menos 230 a 230. Em seguida, depois de posicionar os sprites, estamos livres para voltar a usar uma das roupas normais Vamos até Looks e trazer outro bloco de fantasias do Switch. E podemos usar um bloco aleatório de Pi para escolher uma roupa aleatória entre as três roupas normais. Vamos até os operadores, adicionar um bloco aleatório ao bloco roupas do switch e escolher um número aleatório de 1 a 3 Com isso, podemos criar um clone do sprite. Então, vamos até Control e trazer um clone de criação do meu próprio bloco No momento, porém, isso criará dezenas de clones por segundo Então, vamos adicionar uma pequena pausa trazendo um bloco de peso Para os pis, podemos ir até os operadores e usar outro bloco aleatório de seleção. E vamos escolher algo entre 0,5 e 1 segundo. Está bem? Agora só precisamos dizer aos clones o que fazer quando eles começarem Então, vamos voltar ao controle e introduzir um quando eu começar como um bloco clone Como sempre, a primeira coisa que queremos fazer é mostrar o clone Então, vamos até Looks e traga um bloco de shows. E, por enquanto, vamos fazer com que o clone se mova direto pelo palco até chegar ao fundo e, em seguida, vamos excluí-lo Então, vamos até o Controle e introduzimos um bloco eterno. Para mover o clone pelo palco, vamos entrar em movimento e introduzir uma alteração no bloco Y By. Eventualmente, daremos velocidades aleatórias aos clones, mas, por enquanto, podemos mudar a posição Y em algo como menos três Em seguida, precisamos verificar se o clone está abaixo da parte inferior do palco No entanto, como o clone está usando atualmente uma das roupas de tamanho normal, ele não pode realmente ir abaixo da parte inferior do palco Para que ele possa ficar abaixo da parte inferior, precisaremos vestir a roupa grande antes de mover o clone, como fizemos ao posicionar os sprites Então, vamos até Looks e trazer uma fantasia de switch para um bloco grande, e precisamos colocá-la acima do bloco de mudança Y. Agora, depois de mudar a posição Y, podemos verificar se o clone está abaixo da parte inferior Então, vamos ao controle e vamos colocar um bloco de TI abaixo do bloco Y de mudança. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Então vamos ao movimento e vamos verificar se a posição Y é menor que menos 250, que é o oposto do que usamos para o topo. Se o clone estiver abaixo de 250 negativos, nós o excluiremos. Então, vamos para Control e colocar delete esse bloco clone dentro do bloco IN Agora, se o clone não chegar ao fundo, ele não será excluído, então precisamos devolvê-lo ao seu traje normal No entanto, não podemos simplesmente mudar para uma roupa aleatória , porque então o clone trocará constantemente de roupa a cada quadro, o que parecerá estranho Em vez disso, precisaremos criar uma variável para armazenar o traje original do clone depois voltar para o mesmo traje no final do bloco eterno Para fazer isso, vamos até as variáveis e clique em Criar uma variável. Podemos chamá-lo de traje, e queremos ter certeza de escolher esse sprite apenas porque cada clone terá um traje separado E vamos continuar e esconder a variável. seguida, em vez de trocar a fantasia dos sprites por uma aleatória aqui, vamos primeiro trazer um conjunto de trajes de dois blocos, colocando-o logo acima do bloco de trajes do switch E vamos mover o bloco aleatório escolhido para o bloco definido. Então, podemos mudar o traje para a variável do traje. Agora só precisamos mudar para a mesma roupa no final do bloco eterno e quando eu começar como clone Vamos duplicar o traje de troca para o bloco de fantasias. Livre-se desses blocos extras e coloque a duplicata logo abaixo do bloco ITN e quando eu começar como um Acho que finalmente estamos prontos para testar os asteróides, então vamos pegar a bandeira verde Tudo bem, está parecendo muito bom. não temos certeza se os clones entanto, não temos certeza se os clones serão excluídos quando chegarem ao fundo do poço Então, vamos nos certificar criando um contador de clones. Para fazer isso, vamos primeiro criar uma nova variável. Podemos chamá-lo de clone total, e esse precisa ser uma variável global Em seguida, antes do bloco eterno do script de início do jogo, vamos reduzir um total de clones definido para zero bloco Queremos aumentar a variável total do clone sempre que um novo clone for criado Então, no início de quando eu começar como um script de clone, vamos adicionar um total de clones de alteração em um bloco Finalmente, antes de excluir um clone, queremos diminuir a variável, então vamos adicionar outro bloco de total de alterações antes que eles excluam esse bloco de clone aqui, e vamos fazer com que ele altere o total do clone Se rodarmos o jogo agora, cada vez que um clone de asteróide é criado, o contador de clones aumenta em um e diminui em um cada vez que um clone fica Se seu contador de clones estiver aumentando constantemente, em vez de ficar preso em torno de seis ou sete, talvez seja necessário tentar usar um número maior no bloco ITN aqui, onde verificamos a posição Y. Tudo bem, agora que temos nossos asteróides funcionando, seguir tornaremos seus movimentos um pouco mais aleatórios e menos chatos 39. Melhore o movimento do asteroide: Fazer com que todos os asteróides se movam direto pelo palco exatamente na mesma velocidade não é muito divertido ou natural. Então, vamos corrigir isso. E como haverá muito código envolvido na configuração dos clones de asteróides, manteremos as coisas organizadas colocando o código dentro de um Então, vamos ao MBloxs e criemos um novo. Vamos chamá-lo de asteróide configurado. E clique em OK. Podemos mover o bloco de asteróides de configuração definida até aqui. Então, vamos pegar um bloco de asteróides configurado e colocá-lo acima do bloco eterno do quando eu começar como um script de clone Tudo bem, agora vamos fazer com que cada clone tenha uma velocidade aleatória Para fazer isso, vamos começar acessando as variáveis e criando uma nova. E vamos chamar isso de velocidade. Cada clone terá sua própria velocidade, então vamos fazer isso apenas para esse sprite Agora, em definir a configuração do asteróide, vamos trazer um conjunto de dois blocos e fazer com que ele defina a variável de velocidade Mais tarde, quando o jogador atirar em um asteróide, nós o dividiremos em fragmentos menores e faremos com que os fragmentos menores possam se nós o dividiremos em fragmentos menores e faremos com que os fragmentos menores possam se mover mais rápido. Então, ao definir a velocidade, levaremos em consideração o tamanho do clone Para fazer isso, vamos até os operadores e colocar um bloco de divisão em algum espaço vazio. Para a primeira entrada, vamos usar 100 e, para a segunda entrada, vamos para Los e trazer um bloco de tamanho. Então, à medida que o tamanho diminui, o valor desse bloco aumenta. E agora vamos multiplicar o valor por algum número aleatório. Então, vamos voltar aos operadores e trazer um bloco de multiplicação, e vamos usar o bloco de divisão como a primeira entrada Para a segunda entrada, vamos selecionar um bloco aleatório e fazer com que ele escolha um número aleatório entre, digamos, dois e seis. Uma coisa a saber sobre escolher um bloco aleatório, no entanto, é que, se usarmos dois números inteiros, o bloco escolherá apenas números inteiros. Se quisermos que ele também escolha decimais, podemos simplesmente colocar um ponto após um dos Ok. Agora podemos colocar tudo isso dentro do bloco de velocidade definido. Em seguida, quando eu começar como um script clone, em vez de alterar Y por menos três, vamos alterá-lo pela variável de velocidade A variável de velocidade, no entanto, sempre será positiva, mas para mover o asteroide para baixo, precisamos usar um número negativo Então, vamos primeiro inserir um bloco de subtração. Podemos usar um zero para a primeira entrada ou deixá-la vazia. E para a segunda entrada, vamos às variáveis e introduzimos um bloco de velocidade. Se agora rodarmos o jogo, os asteróides caem em velocidades diferentes E se diminuirmos o tamanho inicial e começarmos o jogo, eles caem ainda mais rápido. Tudo bem, vamos parar o jogo e ajustar o tamanho inicial de volta para 200. Agora vamos fazer com que cada clone desça pelo palco em uma direção aleatória Para isso, podemos primeiro criar uma nova variável. Vamos chamá-lo de Der para obter orientação e torná-lo apenas para este sprite E podemos seguir em frente e ocultar a variável. Agora vamos adicionar um conjunto de dois blocos ao script de configuração do asteróide e usá-lo para definir a variável Der Agora, para definir a direção, queremos que os asteróides sempre se movam pelo palco Como podemos ver no indicador de direção no painel do sprite, uma direção de 180 é reta Para ir para a direita, podemos permitir uma direção mínima de cerca de 1:40 ou Agora, para ir para a esquerda, o rascunho está mostrando números negativos. Isso ocorre porque, no zero, direções à esquerda de zero, que são retas, são tratadas como negativas. Mas se tentarmos escolher um número aleatório entre um número negativo e um número positivo, ele incluirá os números entre zero e o número negativo e entre zero e o número positivo. Isso é o oposto do que queremos. Felizmente, porém, usar os ângulos mais comuns de zero a 360 graus para representar um círculo também funciona bem no zero. Com isso, zero está para cima, 90 está para a direita, 180 está para baixo, 270 está para a esquerda e 360 é um círculo completo, então, voltando para cima mais uma vez, isso significa que se quisermos usar uma direção mínima de 140, que é 40 subtraído de 180 para obter a direção máxima, precisamos apenas adicionar 40 a 180, que é 220 Então, de volta ao código para definir a variável Dur, vamos até os operadores e inserir um bloco aleatório de seleção E vamos escolher um número aleatório 140-220. E agora precisamos realmente definir a direção dos sprites para a variável Dur. Então, vamos para o movimento em um bloco de ponto e direção após o bloco Dur definido, depois vamos para as variáveis e torná-lo ponto e direção dur Um pouco mais tarde na lição, veremos por que nos preocupamos em criar uma variável der em vez de apenas definir diretamente a direção do sprite E se tentarmos rodar o jogo agora, ele não funcionará. Os asteróides ainda estão se movendo em linha reta para baixo. A razão para isso é que estamos usando o bloco de mudança Y aqui para mover os clones. Esse bloco muda apenas a posição Y e não se importa nem um pouco com a direção dos sprites Então, para corrigir isso, precisaremos remover o bloco. E vamos substituí-lo por um bloco de movimento de dez passos da categoria movimento. Então, podemos ir para as variáveis e mover o sprite usando o valor do bloco de velocidade Se agora rodarmos o jogo, ele nos dará o resultado que estávamos procurando. Um problema, porém, é que quando um asteróide sai de um lado do palco, ele continua funcionando até que sua posição Y finalmente caia abaixo da borda inferior Como estamos deixando o jogador passar para o outro lado, acho que seria justo deixar os asteróides fazerem o mesmo Isso é muito fácil de fazer porque podemos usar quase o mesmo código que estamos usando para o sprite do player O código para a quebra de tela são esses dois blocos I e depois aqui na parte inferior do movimento definido Para copiá-los para o código do asteróide, podemos clicar e segurar o primeiro, depois arrastá-los para o asteróide Sprite e para o painel do sprite e Agora, de volta ao código do asteróide, vamos pegar os novos blocos ITN e colocá-los logo acima do bloco de troca de traje para traje na parte inferior do script When I start as a clone Para explicar o tamanho dos asteróides, porém, queremos permitir que eles saiam um pouco mais do palco antes de mudarem de posição Então, em vez de 235 e menos 235, podemos usar 300 e menos 300 Agora, se rodarmos o jogo e deixarmos alguns asteróides saírem de um lado do palco, eles reaparecerão do outro lado. Está bem? Tudo isso parece muito bom agora. Mas mais uma maneira de melhorar o movimento dos asteróides é girá-los um pouco enquanto flutuam pelo espaço Para isso, precisaremos criar outra variável. Podemos chamá-lo de spin e criá-lo apenas para esse sprite. E vamos esconder a variável. Agora vamos adicionar outro conjunto para bloquear para definir a configuração do asteróide e definir a variável de rotação Como com todo o resto, podemos usar um valor aleatório para isso. Então, vamos até os operadores e trazer um bloco aleatório escolhido. E vamos escolher algo entre, digamos, menos três graus e três graus. Isso fará com que os asteróides possam girar no sentido anti-horário ou horário quero ter certeza de que ele também escolhe decimais No entanto, quero ter certeza de que ele também escolhe decimais, então adicionarei um ponto após um dos valores Agora, para realmente usar a variável spin, vamos até o momento em que eu começo como um script de clone Logo após mover o clone, vamos entrar em movimento e colocar um bloco giratório Agora vamos às variáveis e fazê-las girar em graus de rotação. Se tentarmos isso agora, os asteróides ficarão loucos Isso ocorre porque o bloco de giro muda a direção dos sprites. Então, na próxima vez que o bloco de movimento for executado, o clone se moverá em sua nova direção Para contornar isso, é útil entender exatamente como o bloco de movimentação funciona. O que ele realmente faz é usar trigonometria para alterar as posições X e Y do Ele muda a posição X pelo seno da direção dos sprites e muda a posição Y pelo cosseno da Então, em vez de usar um bloco de movimento, podemos realizar esses cálculos diretamente nós mesmos. Para fazer isso, vamos primeiro entrar em movimento e colocar um bloco de mudança X e um bloco de mudança Y em algum espaço vazio. Em seguida, vamos até os operadores e vamos inserir um abdômen de bloqueio. Além do abdômen, também temos opções de seno ou pecado e cosseno ou estojo Então, primeiro, vamos escolher SN e colocá-lo dentro do bloco X de mudança. Agora, vamos duplicar o sin of block, colocá-lo no bloco change Y e configurá-lo para usar a função Case Em seguida, podemos ir para as variáveis e, para os blocos SN e Case, vamos incluir um bloco DR. Esses dois blocos juntos agora têm o mesmo efeito de usar um bloco de movimento com um para as etapas. Então, se quisermos continuar usando a mesma velocidade ao mover o clone, precisaremos multiplicar o pecado e causar blocos pela variável de velocidade Então, primeiro, vamos aos operadores e introduzimos dois blocos de multiplicação Para uma das entradas de cada bloco de multiplicação, podemos acessar as variáveis e usar um bloco de velocidade Agora podemos mover o pecado e os bloqueios de causa para as outras entradas e, em seguida, mover tudo para os blocos de mudança Agora podemos nos livrar do bloco de movimento aqui. Vamos também separar temporariamente o bloco de viragem. Em seguida, vamos adicionar os blocos de mudança ao script logo após a troca do traje por bloco grande. Se rodarmos o jogo agora, os clones se movem da mesma forma que faziam antes, quando estávamos usando o bloco de movimento Mas agora estamos usando a variável der para o movimento. Em vez da direção real do clone. É por isso que precisávamos criar a variável der, porque agora usar o turn block não fará mais o clone enlouquecer O que ele fará é fazer o clone girar, como podemos ver se colocarmos o bloco volta no script e rodarmos o jogo Excelente. Tudo bem, os asteróides agora estão se movendo tranquilamente pelo palco, mas não é disso que Queremos criar o caos expulsando os asteróides do espaço Então, vamos começar a fazer isso na próxima lição. 40. Atire nos Asteroides: Para permitir que o jogador atire nos asteróides, precisamos verificar se há colisões entre cada clone de asteróide e cada clone Por enquanto, se houver uma colisão, excluiremos os dois clones Para começar, vamos examinar o código do sprite a laser. Atualmente, quando eu começo como um script de clone, estamos continuamente movendo o laser até que ele toque a borda Em seguida, estamos excluindo o clone. De forma semelhante, podemos criar outro quando eu começo como um script de clone e esperar até que o clone toque em um asteróide E quando isso acontecer, excluiremos o clone. Então, para fazer isso, vamos controlar e trazer outro quando eu começar como um bloco clone Agora vamos adicionar um bloqueio de espera até o script. Para a condição, podemos ir até a detecção, trazer um bloco de toque e configurá-lo para tocar Com isso, qualquer bloco que colocarmos sob espera até o bloco não funcionará até que o clone toque em um asteróide E quando o clone está tocando em um asteróide, queremos excluí-lo queremos excluí-lo Assim, podemos duplicar o bloco de exclusão deste clone e colocá-lo aqui. Se rodarmos o jogo agora e começarmos a atirar, os clones de laser serão excluídos quando atingirem um asteróide ou o topo do palco No entanto, os clones do asteróide ainda não são excluídos quando são atingidos, então vamos parar o jogo e voltar ao código do asteróide No bloco eterno do roteiro de When I start as a clone, verificaremos se o clone está tocando um laser, e queremos fazer isso antes de trocarmos para a roupa grande, ou então o clone preencherá todo o palco e quase sempre seremos atingidos por qualquer laser Então, para realizar a verificação de colisão, vamos até o controle e vamos colocar um bloco ITN em algum espaço vazio por enquanto Para a condição, podemos ir até o sensor, trazer um bloco de toque e verificar se está tocando e verificar se está tocando E o código que será executado quando isso acontecer acabará ficando bem longo. Então, vamos até Meus Blocos e criar um bloco personalizado para ele. Podemos chamá-lo de impacto de asteróide e clicar em OK. Podemos mover o bloco de impacto de asteróide definido para cá. E vamos adicionar um bloco atingido por asteróides ao bloco I thin. Agora podemos colocar o bloco I thin acima de tudo no bloco eterno. E, por enquanto, sempre que um asteróide for atingido, simplesmente excluiremos o clone Mas também queremos reduzir o contador de clones. Então, vamos primeiro ir às variáveis, adicionar um bloco total de alteração do clone ao script de sucesso do asteróide e alterar o total do clone por Agora podemos controlar e excluir esse bloco de clones. E, a propósito, sempre que excluímos um clone, todos os seus scripts param de ser executados Portanto, o ciclo eterno aqui parará depois que o asteróide atingido pelo bloco terminar Tudo bem, se rodarmos o jogo agora e atirarmos em alguns asteróides, os lasers ainda desaparecerão, mas os asteróides Para entender por que isso acontece, primeiro precisamos entender como Scratch executa os scripts em um projeto. Embora pareça que os sprites estejam executando seus scripts exatamente ao mesmo tempo, isso ocorre apenas porque o scratch os executa com extrema rapidez O que realmente está acontecendo, porém, é que os sprites estão se revezando, executando seus scripts durante cada quadro Se voltarmos ao código do laser sprite, assim que o bloco de espera até detectar uma colisão com um clone de asteróide, o clone do laser O que isso significa é que , no momento em que o clone do asteróide executa seu script e verifica se há colisões, todos os clones de laser que ele possa estar tocando já foram excluídos, então ele nunca detecta nenhuma tocando já foram excluídos, então ele Ok, então para corrigir isso, volta ao código do laser sprite, depois de detectar uma colisão de asteróide, precisamos dizer ao Scratch que espere até o próximo quadro antes de excluir o clone Para fazer isso, podemos inserir um bloco de espera, colocando-o entre o bloco de espera até bloco e excluir esse bloco clone, e vamos configurá-lo para esperar 0 segundos. O bloco de espera força o Scratch a não executar os blocos a seguir até que o tempo especificado tenha passado. E com a espera de 0 segundos, estamos basicamente dizendo ao Scratch que espere apenas um único quadro. Com isso, estamos dando ao clone do asteróide tempo suficiente para também detectar uma colisão e se excluir antes que o clone a laser Se rodarmos o jogo agora e atirarmos em um asteróide, tanto o laser quanto os clones do asteróide serão excluídos. Agora, antes de prosseguirmos, há mais uma coisa importante a saber sobre a detecção de colisões No código do asteróide, decidimos verificar se o clone está tocando um laser no início do bloco eterno aqui, mas apenas porque queríamos fazer isso antes de trocar para o No entanto, também é importante que façamos a verificação de colisão antes de mover o sprite A razão para isso é que, se movêssemos o asteróide antes da verificação da colisão, é possível que, depois que clone de laser detecte uma colisão com um asteróide, o asteróide possa se mover apenas o suficiente para Isso significa que o clone do laser ainda será excluído, mas o clone do asteróide não, pois não detectará uma pois não detectará Tudo bem, agora que o jogador é capaz de atirar nos asteróides, vamos tornar as coisas um pouco mais difíceis dando saúde aos asteróides, que o jogador tenha que atirar neles várias vezes 41. Dê aos asteróides saúde: Para tornar os clones de asteróides mais difíceis de destruir, daremos a cada um deles um pouco de saúde e usaremos uma variável para armazenar a Então, no sprite de asteróides, vamos às variáveis e criaremos uma nova Podemos chamar isso de saúde e fazer isso apenas para esse sprite. E vamos continuar e esconder a variável. Tudo bem, agora, no início do jogo, definiremos a variável de saúde para algum valor padrão. Então, no script inicial do jogo, vamos pegar um bloco de dois conjuntos e colocá-lo em algum lugar acima do bloco eterno. Vamos fazer com que ela defina a variável de saúde, e um padrão de três deve ser bom. Em seguida, no roteiro de sucesso do asteróide, primeiro verifique se a saúde do asteróide é maior que um Vamos até o controle e vamos colocar o bloco em algum espaço vazio. Para a condição, vamos até os operadores e trazer um bloco maior que. Agora vamos às variáveis e vamos verificar se a saúde é maior que um. Se for esse o caso, reduziremos a saúde em um. Então, vamos introduzir uma mudança por bloco e vamos mudar a saúde por menos um. Em seguida, queremos interromper o script de sucesso do asteróide para que o clone não seja Então, vamos para Control e colocar um bloco de parada dentro do bloco ITN, e vamos fazer com que ele pare esse script Agora podemos pegar o bloco ITN e colocá-lo bem no topo do impacto definido do asteróide Ok, se rodarmos o jogo agora , serão necessários exatamente três tiros para destruir um asteróide Agradável. No entanto, seria melhor se houvesse algum tipo de indicação para que o jogador soubesse quando ele atirou em um asteróide Uma coisa que podemos fazer é tornar brevemente o asteróide completamente branco Para fazer isso, vamos até Looks e vamos colocar um efeito de conjunto para bloquear dentro do bloco , embora fino, do script de impacto do asteróide E vamos usá-lo para definir o brilho para 100. Se agora atirarmos em um asteróide, ele ficará completamente branco Para fazer com que ele volte rapidamente às cores normais, podemos pegar um bloco de efeitos gráficos nítido e colocá-lo bem no topo do bloco eterno e no script de quando eu começar como um script de clone Isso precisa acontecer antes de realizarmos a colisão do laser Se rodarmos o jogo agora e atirarmos em alguns asteróides, ele terá um efeito interessante de piscar. Outra coisa que podemos fazer é fazer com que os asteróides se afastem um pouco quando o jogador atira neles. Isso é chamado de knock Back e pode dar ao jogador a chance de fugir de um asteróide Para fazer isso, precisamos apenas aumentar um pouco a posição Y do asteróide, e faremos isso usando uma animação rápida Então, primeiro, vamos ao controle e vamos colocar um bloco de repetição em algum espaço vazio e fazer com que ele se repita quatro vezes. Em seguida, vamos ao movimento e vamos adicionar uma alteração Y por Bloco ao bloco de repetição. Não queremos que a retração seja muito suave, então podemos mudar a posição Y em um número aleatório a cada vez Para fazer isso, vamos até os operadores e usaremos um bloco aleatório de seleção como entrada. Para mover o asteróide para cima do palco, longe do jogador, precisaremos mudar a posição Y por um número positivo, então algo de 1 a 3 deve funcionar Agora vamos colocar o bloco de repetição dentro do bloco , se for fino, do script de impacto do asteróide pouco antes de interromper o script Se agora rodarmos o jogo, cada vez que atiramos em um asteróide, ele volta um pouco para o palco E só por diversão, também podemos fazer os asteróides balançarem de um lado para o outro à medida que são Para isso, precisamos também alterar a posição dos clones em uma pequena quantidade a cada repetição Então, vamos ao movimento e vamos adicionar um bibloco X de alteração ao bloco de repetição Então, vamos voltar aos operadores, usar um bloco aleatório de seleção como entrada e escolher algo entre menos dois e dois. Agora vamos tentar. Incrível. Tudo bem. E na próxima lição, tornaremos os asteróides ainda mais difíceis de destruir, dividindo-os em fragmentos 42. Dividir os asteróides: Então, o que faremos a seguir é cada vez que um asteróide ficar sem saúde, reduzimos seu tamanho e criamos dois clones dele. Isso fará parecer que o asteróide se dividiu em três fragmentos menores Então, para começar, quando um asteróide ficar sem saúde, reduziremos seu tamanho pela metade Vamos até Looks e vamos colocar um bloco de tamanho dois logo abaixo do bloco se a saúde for maior que um bloco. Agora vamos aos operadores e vamos adicionar um bloco de divisão ao bloco de tamanho definido. Em seguida, vamos para Looks e vamos definir o tamanho para o tamanho atual dividido por dois. Em seguida, criaremos mais dois clones. Então, logo após definir o tamanho, vamos até Control e trazer dois blocos de criação de clones de mim mesmo Tudo bem, quando criarmos os dois novos clones, ele será executado quando eu começar como um script de clone para cada novo Isso, por sua vez, executará o script de configuração do asteróide, randomizando os atributos de cada clone Os atributos do clone original, no entanto, permanecerão os mesmos Se também quisermos randomizar seus atributos novamente, basta acessar os blocos M e adicionar um bloco de asteróide configurado após os dois criarem blocos clones Antes de rodarmos o jogo, na verdade ainda estamos excluindo o clone original Além disso, não estamos limitando o tamanho que os clones podem ficar Para corrigir esses dois problemas, excluiremos um clone quando ele cair abaixo de um determinado tamanho Sabemos que na primeira vez que dividimos um asteróide, estamos definindo o tamanho para 100, que é metade do tamanho inicial de 200 Na próxima vez que o dividirmos, voltaremos a metade do tamanho , fazendo com que seja 50. Isso deve ser pequeno o suficiente. Então, quando o tamanho de um clone cair abaixo de 50, excluiremos o clone Para fazer isso, vamos até Control, pegar um bloco if thin e agrupá-lo tanto na alteração do total do clone em menos um bloco quanto na exclusão desse bloco clone Para verificar a condição, vamos até os operadores e trazer um bloco menor. Então vamos até Looks e vamos verificar se o tamanho é menor que 50. Na verdade, queremos fazer isso antes de criar outros clones. Vamos mover o bloco de TI para a direita abaixo do bloco de tamanho definido. Se agora rodarmos o jogo e atirarmos em alguns asteróides, quando eles ficarem sem saúde, eles se dividirão em três fragmentos menores Porém, temos que ter cuidado com isso. Para ver o que quero dizer, vamos parar o jogo. Digamos que queremos permitir que os clones cheguem ao tamanho 25 antes de excluí-los Agora vamos rodar o jogo novamente, atirar em alguns asteróides até que fiquem bem pequenos e deixar que alguns dos clones menores cheguem ao fundo do palco Se ficarmos de olho no contador de clones, ele não está diminuindo como deveria Isso ocorre porque, como aprendemos quando criamos o sprite de asteróides, scratch usa o tamanho de um sprite para limitar o quão longe do palco ele pode Quando os clones ficam pequenos o suficiente, eles não conseguem atingir o limite de posição negativo de 250 Y que definimos, então eles acabam ficando presos em algum lugar logo abaixo da borda inferior Para corrigir isso, antes de mudar para o traje grande e mudar a posição aqui em cima, primeiro precisamos ajustar o tamanho para 200% Vamos pegar um conjunto tamanho dois blocos, colocá-lo acima do traje de troca para bloco grande e definir o tamanho para 200 No entanto, depois de voltar para o traje original aqui embaixo, agora também precisamos voltar ao tamanho original. Isso significa que, como com o traje, precisaremos criar uma variável para armazenar o tamanho original. Então, vamos às variáveis e vamos criar uma nova chamada tamanho. Fazendo isso apenas para este sprite Agora, antes de definir o tamanho para 200 aqui, vamos trazer um conjunto para bloquear e vamos usá-lo para definir a variável de tamanho para o tamanho atual Vamos até Looks e usaremos um bloco de tamanho como entrada. Finalmente, depois de mudar o traje para a variável do traje, podemos definir o tamanho para a variável de tamanho trazendo um bloco de tamanho dois, depois indo para as variáveis e usando um bloco variável de tamanho como entrada. E agora, se rodarmos o jogo e atirarmos em alguns asteróides, o contador de clones deve chegar a cerca de uma dúzia Tudo bem, com esse problema potencial resolvido , vamos parar o jogo e vou definir a verificação de tamanho novamente para 50. Ok, agora, estamos dividindo um asteróide somente depois que sua saúde cai para um, os novos clones começam com a saúde de um, então basta um único tiro Então, o que podemos fazer é, antes de alterar o tamanho, verificar se o tamanho é maior que 100 e, em caso afirmativo, podemos definir a variável de saúde como dois. Em seguida, serão necessárias duas fotos para dividir os clones no primeiro grupo de fragmentos Então, primeiro, vamos controlar e colocar um bloco fino em algum espaço vazio. Para a condição, vamos até os operadores e trazer um bloco maior que. Agora vamos para Los e vamos verificar se o tamanho atual é maior que 100. Dentro do bloco I thin, vamos às variáveis. Traga um conjunto de dois blocos e defina a saúde para dois. Agora vamos colocar tudo isso logo acima do bloco de tamanho definido. Se rodarmos o jogo agora, ainda são necessários três tiros para dividir um grande asteróide, mas agora são necessários dois tiros para dividir um de tamanho médio, e um tiro destrói os menores Tudo bem, definitivamente está tudo se encaixando agora. Mas para rochas gigantes explodindo no espaço, ainda parece um pouco manso demais. Na próxima lição, adicionaremos mais alguns efeitos para torná-lo ainda melhor. 43. Adicione flashes de explosão: Para melhorar a aparência do nosso jogo, adicionaremos alguns efeitos de explosão quando os asteróides se dividirem ou forem destruídos Esses efeitos incluirão flashes de luz e efeitos de partículas. Ok, então, para começar, vamos criar um novo sprite para os efeitos Então, vamos até o botão Escolher um Sprite e clicar em Pintar E vamos chamar isso de explosão. Para o primeiro traje, vamos renomeá-lo para flash Usaremos esse traje para mostrar um flash de luz na explosão, e é bem simples de desenhar. Primeiro, vamos pegar a ferramenta circular e escolher branco puro para a cor de preenchimento e desativar o contorno Agora vamos ampliar um pouco a tela. E enquanto pressionamos a tecla shift, vamos desenhar um círculo com cerca de 14 ou 15 blocos de diâmetro. Vamos seguir em frente e centralizar o círculo. Agora vamos pegar a ferramenta sleck e duplicar o círculo mantendo pressionada a tecla Alt ou Option e clicando nela Então, enquanto pressiona a tecla Alt ou Option novamente, vamos escalá-la um pouco mais. Ok. Agora, se dermos uma olhada na parte superior da caixa de diálogo de cores de preenchimento, além da opção de cor sólida que usamos até agora no curso, também temos opções de gradiente para criar gradientes suaves entre duas cores diferentes Podemos aplicar um gradiente horizontal, vertical ou radial O que queremos usar para o círculo é um gradiente radial. Vamos clicar no botão de gradiente de rádio aqui à direita. Agora temos duas cores que podemos definir. O gradiente vai da primeira cor no centro até a segunda cor na borda O que queremos é que o gradiente passe do branco no centro para o transparente na borda Para fazer isso, podemos manter a primeira cor em branco e, para a segunda cor, podemos clicar no botão vermelho da barra Ford para desligá-la Não podemos ver isso muito bem na tela, mas se fecharmos o diálogo de cores, podemos ver no palco que isso dá ao círculo menor um belo efeito de brilho Agora vamos ver como podemos usar isso. Queremos que um flash apareça sempre que um asteróide se divide ou é destruído, e queremos que ele apareça no mesmo local do Isso significa que, com a lista Hit moles que criamos e eliminamos algumas toupeiras, precisaremos criar uma lista global de variáveis para armazenar os locais das Para começar, vamos ao código do asteróide Sprite e, em variáveis, vamos clicar em Criar uma lista Podemos chamar isso de explosões, e precisa ser para todos os sprites Ok. Agora sabemos que um asteróide se dividirá ou será destruído e definirá os impactos dos asteróides Sempre que a saúde for maior que um bloco é falsa e os blocos restantes têm a chance de funcionar, então podemos adicionar a localização do asteróide à lista de explosões algum tempo depois de se a saúde for maior que um bloco, e faremos isso dentro de um Vamos até Mblocks e clique em Mika block. Vamos chamá-lo de Explode e clicar em OK. Podemos colocar define Explode em algum lugar aqui e vamos adicionar um bloco de explosão ao script de sucesso do asteróide Abaixo do I, a saúde é maior que um bloco. Agora, em Definir explosão, adicionaremos a localização dos asteróides à lista de explosões Vamos voltar às variáveis e adicionar dois blocos de explosões E, na verdade, também vamos usar o tamanho do asteróide para alterar o tamanho da explosão Então, vamos trazer mais um bloco de adição. Para os dois primeiros blocos de adição, podemos entrar em movimento e colocar um bloco de posição para o primeiro e um bloco de posição Y para o segundo. Para o terceiro, vamos para Los e trazemos um bloco de tamanho. Se rodarmos o jogo agora, cada vez que dividirmos ou destruirmos um asteróide, sua localização e tamanho serão adicionados à lista de explosões Agora só precisamos colocar os itens em uso. Então, vamos ver o código do sprite de explosão. Primeiro, como provavelmente haverá várias explosões acontecendo ao mesmo tempo, usaremos clones do sprite de explosão Como de costume, isso significa que vamos esconder o próprio sprite. Vamos aos eventos e trazer um bloco W I receive start game. Então vamos para Los e trazer um esconderijo. Em seguida, queremos limpar a lista de explosões para não usarmos itens da jogada anterior Então, vamos às variáveis e incluímos um bloco de exclusão de todas as explosões Depois disso, verificaremos continuamente se a lista de explosões tem algum item E se isso acontecer, usaremos os itens para criar flashes de luz Vamos controlar e criar um bloco eterno. Então, vamos adicionar um bloco if then a ele. Para a condição, queremos verificar se o tamanho da lista é maior que zero. Vamos até os operadores e trazer um bloco maior que. Então vamos às variáveis e vamos verificar se o comprimento das explosões é maior que zero Ok. Agora, usaremos os itens da lista para configurar a posição e o tamanho do clone Para a posição, vamos para o movimento e adicionar um bloco go to XY ao bloco I then. Os dois primeiros itens representarão as posições X e Y, respectivamente. Então, vamos às variáveis e usar um item do bloco de explosões para cada entrada do bloco go to XY, certificando-se de usar o item dois para a posição Y. Para o tamanho, podemos ir para Los, trazer um conjunto tamanho dois blocos. Em seguida, volte para as variáveis e traga um item de bloco, fazendo com que ele use o item três da lista de explosões Agora estamos livres para remover os três itens da lista. Então, vamos trazer três, excluir o item um dos blocos de explosões Finalmente, podemos criar um clone. Então, vamos até Control e trazer um clone de criação do meu próprio bloco Tudo bem, agora só precisamos dizer aos clones o que fazer quando eles Então, vamos introduzir um quando eu começar como um bloco clone. Primeiro, queremos mostrar o clone e trazê-lo para a camada frontal Então, vamos até Looks e trazemos um bloco de exibição e um bloco de acesso à camada frontal. Também queremos aumentar o contador de clones. Então, vamos às variáveis e extrair um total de clones de alteração em um bloco Em seguida, queremos que o flash apareça apenas por um curto período de tempo, então faremos com que ele desapareça rapidamente Para fazer isso, vamos controlar e introduzir um bloco de repetição e fazer com que ele se repita quatro vezes. Para atenuar o clone, podemos ir até Looks, adicionar um efeito de mudança por bloco ao bloco repetição e alterar o efeito fantasma Finalmente, depois de eliminar o clone, queremos excluí-lo Então, primeiro, vamos às variáveis e colocamos um bloco total do clone de alteração abaixo do bloco de repetição, e vamos alterá-lo por menos um Agora podemos ir para Control e excluir esse bloco de clone E isso deve ser tudo o que precisamos. Então, vamos tentar. Excelente. Os flashes aparecem brevemente no topo dos asteróides que se dividem ou são destruídos, e seu tamanho depende do tamanho do E agora que sabemos que tudo está funcionando corretamente, podemos ocultar a lista. Ok, os flashes estão prontos. Então, na próxima lição, trabalharemos nos efeitos das partículas 44. Adicionar efeitos de granulação: Os efeitos de partículas são frequentemente usados em jogos para criar coisas como explosões, fumaça, respingos de sangue e até efeitos climáticos, como chuva e até efeitos climáticos, como Eles tendem a consistir em várias cópias de um único sprite chamado partículas, com várias alterações aplicadas a elas para fazê-las parecer mais aleatórias, como alterar a cor, a velocidade, a direção e o tamanho das E no nosso jogo temos três tipos diferentes de partículas de explosão. Para os asteróides, teremos partículas de poeira. E mais tarde, quando o jogador for destruído, teremos partículas de fogo e fumaça. E podemos criar todas essas partículas dentro do sprite de explosão Tudo bem, então com o sprite de explosão selecionado, vamos para a aba de fantasias Vamos criar um novo traje clicando no botão Escolha um traje e clicando em pintar, e vamos mudar o nome para pó. O traje para cada partícula será bem simples Primeiro, vamos pegar a ferramenta circular. E para a cor de preenchimento, vamos voltar para um preenchimento sólido clicando no botão aqui no canto superior esquerdo e vamos escolher uma cor marrom. Agora, certificando-se de que o contorno esteja desligado, vamos criar um pequeno círculo cerca de quatro blocos de diâmetro Agora podemos pegar a ferramenta de remodelação e mudar um pouco a forma . E isso deve ser bom. Vamos nos certificar de centralizar a forma. Então, podemos trabalhar nas outras duas roupas. Para os outros dois tipos de partículas, podemos realmente usar a mesma forma aqui e simplesmente mudar a cor Então, primeiro, vamos duplicar o traje de poeira e mudar o nome para fogo Em seguida, podemos selecionar a forma e alterar a cor para um amarelo brilhante. Finalmente, para a partícula de fumaça, podemos duplicar um dos trajes atuais, mudar o nome para fumaça e mudar a cor para cinza claro Tudo bem, terminamos com as roupas, vamos voltar ao código. Para cada explosão, continuaremos criando um clone de flash Mas agora também queremos criar alguns clones que usem um dos trajes de partículas Para saber qual traje de partículas usar, precisaremos que o objeto explosivo nos diga Isso significa que, além de adicionar a localização e o tamanho à lista de explosões, o objeto também precisará adicionar o tipo de partícula No momento, os únicos objetos explosivos que temos são os asteróides Vamos examinar o código do asteróide. Em explosão definida aqui, precisaremos adicionar um quarto item à lista de explosões indicando qual traje de partículas usar Então, vamos às variáveis e adicionar outra adição ao bloco de explosões E para simplificar as coisas, podemos usar um dos nomes das fantasias dos sprites da explosão Para os asteróides, queremos usar o traje de poeira. Vamos adicionar a palavra poeira à lista. Agora podemos voltar ao código do sprite de explosão. Ok, então continuaremos criando um clone para o flash, mas agora vamos mover o bloco de criação de clone aqui acima do bloco de exclusão E como vamos alternar entre trajes diferentes agora, para garantir que criemos um clone usando o traje flash, vamos até Looks e colocaremos um bloco de troca de figurino acima do bloco de criação de clone, e vamos mudar para o traje flash Agora, para as partículas, primeiro precisaremos usar o traje que recebeu o item número quatro da lista de explosões Então, vamos trazer outro bloco de fantasias do Switch e colocá-lo abaixo do bloco Create Clone Agora podemos acessar as variáveis, colocar um item de bloco dentro do bloco de roupas do Switch. E escolha o item quatro da lista de explosões. E queremos ter certeza de também excluir o item. Então, vamos adicionar outro bloco de exclusão de Explosões. Está bem? E para facilitar a leitura, vamos criar os clones de partículas dentro de um bloco personalizado Para isso, vamos até Mblocks e clique em Criar um bloco. Vamos primeiro digitar create e queremos poder escolher quantas partículas criar. Então, precisaremos usar uma dessas opções de entrada aqui embaixo. Temos uma opção para uma entrada numérica ou de texto e outra para uma entrada booleana A contagem de partículas é um número, então vamos escolher a primeira opção Agora podemos digitar um nome para a entrada. Então, vamos chamar isso de contagem. Finalmente, podemos adicionar um rótulo após a entrada clicando em Adicionar um rótulo aqui e vamos digitar partículas. Tudo bem, então o título completo do preto será criar contagem de partículas Agora vamos clicar em OK para criá-lo. Podemos mover o bloco de criação de partículas definido até aqui Vamos pegar um bloco de criação de partículas da paleta de blocos e colocá-lo logo abaixo da roupa de troca para o bloco do item quatro e quando eu receber o Start game Quanto ao número de partículas, não queremos levá-lo embora porque cada partícula será um clone separado e, embora os clones e, embora os clones existam apenas por um breve período de tempo, eles podem se acumular Acho que algo como dez deveria ser bom. Em seguida, no script de criação de partículas, usaremos o valor da entrada de contagem como o número total de clones a serem Para fazer isso, vamos primeiro acessar Control e inserir um bloco de repetição. Para o número de repetições, podemos realmente usar um bloco de contagem do bloco definido aqui Agora só precisamos adicionar um bloco create clone of myself ao bloco de repetição e pronto Mas ainda precisamos dizer aos clones de partículas o que fazer quando forem criados Então, vamos falar sobre quando eu começar como um script de clone. Queremos fazer coisas diferentes, dependendo se o clone é um clone de flash ou um clone de partículas Então, para começar, vamos colocar um bloco F thin else em algum espaço vazio. Para verificar a condição, verificaremos se o clone está usando a fantasia de flash Então, primeiro vamos até os operadores e introduzimos um bloco igual. Para a primeira entrada, podemos ir até Looks e trazer um bloco de fantasias. Mas em vez do número da fantasia, queremos verificar o nome da fantasia e vamos verificar se o nome da fantasia é igual Agora podemos pegar o total do clone alterado e excluir esses blocos de clones daqui embaixo e anexá-los à parte inferior do I Agora, se o sprite estiver usando a fantasia de flash, vamos simplesmente desaparecê-la como estávamos fazendo antes Vamos pegar o bloco de repetição aqui e colocá-lo na parte I do bloco I thinlsblock Então, podemos adicionar tudo na parte inferior do script When I start as a clone Agora, se o clone não estiver usando o traje flash, ele está usando um dos trajes de partículas Então, vamos decidir o que queremos que os clones de partículas façam. Primeiro, todas as partículas começarão na mesma posição e, para um efeito de explosão, moveremos todas elas para fora ao mesmo tempo Para fazer isso, podemos dar a cada partícula uma direção aleatória, bem como uma velocidade aleatória para que pareça mais caótica Então, para começar, vamos ao movimento e adicionar um bloco de ponto e direção à parte do bloco Ins e escolheremos uma direção aleatória. Então, vamos até os operadores e trazer um bloco aleatório escolhido. Vamos deixar os clones se moverem em qualquer direção possível, para que possamos escolher um número de 1 Em seguida, para a velocidade, precisaremos criar uma variável local. Então, vamos às variáveis e criemos uma nova. Podemos chamá-la de velocidade e criá-la somente para esse sprite, sem precisar mostrar a variável Agora podemos adicionar um conjunto para bloquear abaixo do bloco de ponto e direção, e vamos fazer com que ele defina a variável de velocidade como um número aleatório. Então, vamos até os operadores, escolha um bloco aleatório e escolha algo de 3 a 8 Em seguida, em uma animação rápida, usaremos a variável de velocidade para mover o clone e também o eliminaremos Então, vamos controlar e colocar um bloco de repetição em algum espaço vazio, e vamos mantê-lo em dez repetições Para mover o clone, podemos entrar em movimento e inserir um bloco de movimento Em seguida, vamos às variáveis e usaremos um bloco de velocidade como entrada. Finalmente, para eliminar o clone, vamos até Los, introduzindo um efeito de mudança por bloco E vamos mudar o efeito fantasma em dez. Tudo bem, agora vamos pegar o bloco de repetição e colocá-lo logo abaixo do bloco de velocidade definido, e vamos tentar. Ok, então temos um pequeno problema. As partículas estão demorando muito para aparecer, então parece que estão surgindo do nada. A razão pela qual isso está acontecendo tem a ver com nosso script de partículas de caixa Como o scratch executa apenas uma única repetição de um bloco de repetição durante um único quadro ou atualização da tela, é necessário contar um total de quadros para criar todos os clones de partículas Quando isso terminar, o asteróide em que o clone deveria estar aparecendo já havia desaparecido há Felizmente, porém, há uma maneira de contornar isso, e essa é uma das principais razões para usar blocos personalizados. Se clicarmos com o botão direito do mouse no bloco de criação de partículas definido e escolhermos edições, a caixa de diálogo criar um bloco será exibida, permitindo que façamos alterações no bloco Na parte inferior da caixa de diálogo aqui, temos essa caixa de seleção que diz executar sem atualizar a tela Se o ativarmos, ele forçará o Scratch a executar todos os blocos dentro do bloco personalizado durante um único quadro. Agora, se clicarmos em OK e tentarmos novamente, todas as partículas aparecerão ao mesmo tempo e assim que o asteróide se divide ou é destruído, e agora está muito melhor No entanto, existem algumas melhorias que podemos fazer. Primeiro, as partículas estão aparecendo atualmente na parte superior do flash, mas acho que poderia parecer um pouco melhor se o flash aparecesse na parte superior. Para fazer isso, tudo o que precisamos fazer é alterar a ordem na qual criamos o clone do flash e os clones das partículas Então, vamos pegar o traje do interruptor para o flash block e retirar todos esses blocos. Agora podemos separar o traje do switch para flash e criar blocos clones dos outros blocos e, em seguida, colocar os dois blocos abaixo do bloco de partículas Agora podemos colocar tudo isso de volta na parte inferior do bloco I then. E se tentarmos novamente, o flash aparecerá no topo das partículas. Isso parece melhor na minha opinião, mas fique à vontade para mudar seu para o que era antes. Está bem? E as partículas também parecem um pouco parecidas. Para corrigir isso, podemos tornar aleatoriamente algumas partículas mais escuras do que as E, na verdade, só queremos fazer isso se a partícula for uma partícula de poeira ou fumaça Faremos outra coisa com as partículas de fogo. Então, para começar, vamos controlar e colocar um bloco se for então em algum espaço vazio. Para a condição, queremos verificar se o clone não está usando o traje de fogo Vamos até os operadores e trazer um bloco de nós. Em seguida, traga também um bloco igual. Agora vamos até Looks e traga um bloco de fantasias. E queremos verificar se o nome do traje não é igual a fogo. Ok, e para adicionar uma quantidade aleatória de escuridão ao clone, vamos primeiro adicionar um efeito de conjunto para bloquear ao bloco if then e definir o efeito de brilho Em seguida, vamos até os operadores e trazer um bloco aleatório escolhido. Usar um valor negativo para o brilho tornará o sprite mais escuro Então, vamos com algo entre menos 30 e zero. Isso não alterará em nada o brilho se zero for escolhido ou tornará o clone até 30% mais escuro Agora podemos colocar tudo isso acima do bloco de repetição de dez e quando eu começar como um clone e tentar Muito bom. Mesmo que não usemos as partículas de fogo e fumaça para os asteróides, ainda podemos testá-los. Para fazer isso, vamos entrar no código do sprite de asteróides em vez de adicionar poeira à lista de explosões, vamos Vamos tentar. A fumaça se comporta da mesma forma que a poeira, exceto que usa partículas cinzentas Agora vamos tentar adicionar fogo. E como não estamos alterando o brilho das partículas de fogo, elas são todas do mesmo amarelo. Algo que podemos fazer para melhorar a aparência das partículas de fogo é torná-las cada vez mais vermelhas à medida que se espalham. Para fazer isso, vamos voltar ao sprite da explosão. E aqui, vamos controlar e trazer outro bloco fino para algum espaço vazio. Desta vez, queremos verificar se o nome da fantasia é fogo para que possamos duplicar o nome da fantasia como bloco de fogo aqui e usá-lo para a condição do bloco ITN aqui e usá-lo para a condição do Agora, dentro do bloco I thin, vamos até Looks e introduzimos uma mudança de cor efeito por bloco. Para mudar do amarelo para o vermelho, precisamos reduzir o efeito da cor e queremos que seja um pouco sutil. Então, vamos usar algo pequeno, como menos dois. Agora podemos colocar isso em algum lugar dentro do bloco de lata repetido e experimentá-lo. Isso parece muito melhor. Tudo bem, terminamos de criar as partículas de explosão agora. Então, vamos voltar ao sprite do asteróide e mudar o tipo de partícula de volta para poeira E na próxima lição, deixaremos os asteróides se divertirem destruindo o jogador e tornaremos a destruição do jogador bastante dramática com várias explosões e uma combinação de partículas de fumaça e fogo 45. Destrua o jogador: Ao contrário dos asteróides, o jogador não terá saúde e será destruído assim que um asteróide o atingir No entanto, adicionaremos um captador de escudo mais tarde, o que tornará o jogador temporariamente invencível E se você realmente quiser, você também pode dar ao jogador um pouco de saúde da mesma forma que fizemos com os asteróides De qualquer forma, para começar, vamos ver o código Sprite do player O que queremos fazer é que, no ciclo contínuo do script de início do jogo, antes de nos mover ou atirar, verificaremos se o jogador foi atingido e, em caso afirmativo, destruiremos o jogador. Para verificar se o jogador foi atingido, vamos até Mblocks e criaremos um novo bloco personalizado Podemos chamá-lo de Check Hit e clicar em OK. Vamos adicionar um bloco de verificação no topo do bloco eterno. Em seguida, vamos mover define check hit para algum espaço vazio. Tudo bem, então em definir check hit, primeiro precisamos verificar se o jogador está tocando em um asteróide Para fazer isso, vamos controlar e inserir um bloco if then. E para a condição, vamos detectar, trazer um bloco de toque e transformá-lo em asteróide tocante e transformá-lo em asteróide tocante Se for esse o caso, destruiremos o jogador criando uma sequência de explosões no sprite do jogador No entanto, também queremos interromper o loop eterno no script de início do jogo Caso contrário, o jogador ainda poderá se mover e atirar enquanto seu sprite estiver explodindo Para fazer isso, o bloco check hit precisará informar ao bloco eterno se o jogador foi atingido ou não. Para isso, podemos criar uma variável. Então, vamos entrar em variáveis e criar uma nova. E digamos que está morto. Somente o sprite do jogador precisa usar a variável, então podemos fazer isso somente para esse sprite E podemos seguir em frente e ocultar a variável. Está bem? Logo no início do jogo , é claro que queremos que o jogador não morra. Então, vamos adicionar um conjunto para bloquear em algum lugar antes do bloqueio eterno no script de início do jogo. E vamos transformar Is dead em falso. Em seguida, volte ao kit de verificação de definição. Se o jogador estiver tocando em um asteróide, vamos colocar um bloco de segundo set e o set está pronto para ser verdade Agora, de volta ao Start game. Depois que a verificação clicar em bloquear, verificaremos se o jogador está morto e, em caso afirmativo, interromperemos o script. Então, vamos até o Controle e coloque um bloco ITN em algum espaço vazio no momento E para a condição, vamos até os operadores e trazer um bloco igual. Agora vamos às variáveis e vamos verificar se está morto, é igual Se isso acontecer, interromperemos o script atual. Vamos ao Controle, adicione um bloco de parada ao bloco ITN e faça com que ele pare esse script Agora podemos colocar o bloco ITN logo abaixo do bloco check HIT aqui Se rodarmos o jogo agora e formos atingidos por um asteróide, não poderemos mais nos mover ou atirar Está bem? Agora vamos trabalhar nas explosões dos jogadores Para isso, criaremos outro bloco personalizado. Então, vamos até Mblocks, clique em Criar um bloco e vamos chamá-lo de Explode E queremos ter certeza de não verificar a execução sem a atualização da tela aqui Isso é opcional na maioria das vezes, mas como teremos animações dentro do bloco, ele precisará de várias atualizações de tela para funcionar corretamente Então, vamos clicar em OK. Vá para Fine Explode em algum lugar aqui. E vamos adicionar um bloco Explode para definir o acerto de verificação logo após definir que está morto como falso Ok, para explodir o jogador, a maneira como faremos isso é fazer com que o sprite do jogador fique completamente branco e desapareça lentamente, além de criar várias explosões em partes aleatórias Então, primeiro, para deixar o sprite completamente branco, vamos até Looks, adicionemos um efeito de conjunto para bloquear ao script Explode e vamos definir o brilho para 100 Como estamos alterando os efeitos gráficos dos sprites, precisamos nos certificar redefini-los no início do jogo Vamos voltar ao script inicial do jogo bem rápido e adicionar um bloco claro de efeitos gráficos antes do bloco eterno. Tudo bem, de volta ao belo Explode. Vamos controlar e introduzir um bloco de repetição. E vamos fazer com que se repita 20 vezes. Por enquanto, vamos apenas eliminar o sprite. Então, vamos até Looks, introduzimos um efeito de mudança por bloco e alteramos o efeito fantasma em cinco. OK. E logo após o bloqueio de repetição, vamos trazer um bloco oculto. O motivo pelo qual estamos escondendo o sprite é que embora o efeito fantasma seja de 100%, quando o bloco de repetição terminar, tornando o sprite invisível para nós, outros sprites ainda poderão interagir com ele Escondê-lo, por outro lado, também o esconderá dos outros sprites Mas isso também significa que precisamos mostrar o sprite novamente no início do jogo Então, vamos adicionar um bloco de exibição próximo ao topo do script de início do jogo. OK. Agora vamos tentar fazer isso para ter certeza de que está funcionando corretamente. Quando um asteróide nos atinge, ficamos brancos e desaparecemos No entanto, isso acontece um pouco rápido demais, então vamos controlar e adicionar um bloco de espera ao bloco de repetição dos scripts de verificação após a alteração do bloco do efeito Ghost. Vamos esperar, digamos, 0,05 segundos e tentar. Ok, isso deve funcionar. Agora só precisamos adicionar algumas explosões. Para fazer isso, criaremos várias explosões em pontos aleatórios nos sprites do jogador e daremos a eles tamanhos aleatórios, além de escolher aleatoriamente entre fogo e partículas Isso é muita aleatoriedade. Para começar, vamos às variáveis e vamos colocar três dois blocos de explosões no topo do bloco de repetição Primeiro, precisamos adicionar uma exposição para a explosão. Para isso, podemos escolher uma posição aleatória de algum lugar um pouco à esquerda da exposição atual do jogador para algum lugar um pouco à direita Vamos começar acessando os operadores e colocando um bloco aleatório de seleção dentro do primeiro bloco de adição de dois. E, na verdade, também podemos colocar um dentro dos outros dois blocos de adição. Tudo bem, então para a exposição, o primeiro número será menor que a exposição do jogador Então, vamos inserir um bloco de subtração e o segundo número será maior Então, vamos trazer um bloco adicional. Agora, para a primeira entrada de cada bloco, vamos entrar em movimento e inserir um bloco de exposição Para as segundas entradas, vamos tentar 20. E a posição Y será praticamente a mesma. Vamos até os operadores, coloque um bloco de subtração para o primeiro número e um bloco de adição para o segundo Então, vamos voltar ao movimento e colocar dois blocos na posição Y. E vamos tentar subtrair e somar 30 dessa vez. Em seguida, para o tamanho, vamos escolher algo 50-100 Agora só precisamos adicionar o tipo de partícula. Como escolheremos aleatoriamente entre dois tipos para isso, vamos começar acessando Control e trazendo um bloco fino I para algum espaço vazio Para a condição, vamos até os operadores e trazemos um bloco igual e, para a primeira entrada, vamos trazer um bloco aleatório de seleção Vamos verificar se um número aleatório 1-2 é igual a um. Isso dará a cada tipo 50% de chance de ser escolhido. Agora, para cada parte do bloco I Thins, vamos às variáveis e adicionar um bloco de adição às explosões Para o primeiro, podemos adicionar a palavra fogo e para o segundo, podemos adicionar fumaça. Agora vamos pegar o bloco I then e colocá-lo logo abaixo do terceiro bloco de adição de dois aqui. Tudo bem. E quando o jogador for completamente destruído, eventualmente abriremos a tela de título. Mas, por enquanto, vamos parar o jogo. Para fazer isso, podemos ir para Control e adicionar um bloco stop all logo após o bloco de ocultar. Mas antes de pararmos o jogo, vamos adicionar uma pequena pausa introduzindo um bloco de espera de 1 segundo Agora vamos tentar. Recebemos algumas explosões aleatórias no sprite do jogador e o jogo para. Incrível. No entanto, ficaria ainda melhor se fizéssemos o sprite se mover em direção ao fundo do palco enquanto ele explode Para fazer isso, vamos ao movimento e vamos adicionar uma alteração Y por bloco na parte superior do bloco de repetição dos scripts de verificação. E vamos mudar isso por menos cinco ou mais. Na verdade, vamos também movê-lo um pouco de um lado para o outro. Para isso, também podemos fazer uma alteração X Byblock, depois ir até os operadores, selecionar um bloco aleatório e escolher algo entre menos quatro e quatro Agora vamos tentar. Excelente. Isso vai ser muito legal quando adicionarmos alguns efeitos sonoros posteriormente. é um pouco fácil para No entanto, é um pouco fácil para um asteróide atingir o jogador Basta cortar uma asa para destruir o jogador. Seria um pouco menos frustrante se definíssemos uma área menor no sprite do jogador que um asteróide pode atingir Veremos como fazer isso na próxima lição. 46. Crie uma caixa de sucesso de jogador: Para tornar um pouco mais difícil que um asteróide atinja o jogador, podemos criar o que é chamado de caixa de acerto para o jogador, que podemos usar para definir quais partes do sprite do jogador podem ser atingidas Para fazer isso, precisaremos adicionar outra fantasia ao sprite do jogador Então, com o sprite do jogador escolhido, vamos para a aba de roupas Primeiro, vamos duplicar uma das roupas, e vamos chamá-la de hit box Vamos apenas usar o traje da espaçonave como referência para desenhar a caixa de sucesso No entanto, queremos garantir que a fantasia da caixa de sucesso esteja abaixo todas as outras roupas, para que não interfira na troca de roupas que implementaremos posteriormente. Agora vamos pegar a ferramenta retangular com a grande fantasia que criamos para o sprite dos asteróides. Na verdade, nunca veremos a fantasia da caixa de quadril no palco, a cor realmente não importa Porém, o traje precisa ter uma cor, caso contrário os asteróides não conseguirão colidir com Para a cor de preenchimento, vou usar um cinza. E não precisamos de um esboço para isso. Tudo bem, agora vamos desenhar um retângulo cobrindo aproximadamente o corpo principal da espaçonave Então, podemos pegar a ferramenta remodelada e fazê-la cobrir apenas a parte da espaçonave que queremos que seja atingida Isso deve funcionar. Então, agora, se um asteróide atingir a ponta do nariz, as asas ou o propulsor, ele não destruirá Está bem? Agora que terminamos de desenhar a forma da caixa do quadril, precisamos nos livrar de todas as outras formas. Para fazer isso, podemos pegar a ferramenta de seleção e selecionar tudo. Em seguida, mantenha pressionada a tecla Shift e clique na forma da caixa de acerto para desmarcá-la, e agora podemos excluir as outras formas Isso é tudo para a fantasia de Hip box. Então, vamos voltar ao código do jogador Sprite. A primeira coisa que queremos fazer é começar o Sprite do jogador com uma de suas roupas normais Então, antes do bloqueio eterno no roteiro inicial do jogo, vamos até Looks e trazemos um bloco de fantasias do Switch, e eu colocarei o meu como figurino um. Em seguida, vamos ver o script check hit. E aqui, antes de verificar se estamos tocando em um asteróide, precisamos mudar para o traje da caixa de sucesso Isso fará com que uma colisão só seja detectada se um asteróide estiver tocando a forma de caixa de impacto que acabamos Ok, então vamos trazer uma fantasia de switch para bater no bloco da caixa e colocá-la logo acima do bloco de asteróides, se estiver tocando Finalmente, depois de verificar se há uma colisão, queremos trocar a roupa de volta para a original Então, vamos adicionar outro bloco de fantasias do Switch na parte inferior do roteiro. E, novamente, vou mudar para a fantasia 1. Tudo bem, se rodarmos o jogo agora, um asteróide precisa se aproximar um pouco do sprite do jogador para realmente destruí-lo No entanto, um problema que temos é que a roupa do jogador permanece na roupa do quadril enquanto ela explode Isso ocorre porque todas as coisas no script Explode acontecem antes de voltarmos para o traje original Para corrigir isso, também precisamos voltar ao traje original antes executar o bloco explosivo aqui Então, vamos duplicar o bloco de roupas do Switch aqui embaixo e colocar esse logo acima do bloco explosivo E agora tudo deve estar funcionando corretamente. Ok, com isso resolvido, vamos adicionar mais alguns efeitos de partículas ao jogo, desta vez criando uma chama proveniente do propulsor dos sprites do jogador 47. Crie a chama do Thruster: Para começar a criar uma chama propulsora para o jogador, primeiro precisaremos criar um novo Então, vamos até o botão Escolher um sprite e clicar em Paint E vamos chamá-lo de chama. O traje do sprite será muito simples, consistindo em nada além de um pequeno círculo amarelo Então, vamos pegar a ferramenta circular. Escolha um amarelo para a cor de preenchimento. E nada para o esboço. Então, vamos ampliar um pouco, manter pressionada a tecla shift e criar um círculo com cerca de quatro blocos de diâmetro. E vamos nos certificar de centralizá-lo. E agora podemos entrar na guia de código. Está bem? Então, se mostrarmos o sprite do jogador no palco, queremos que a chama fique centralizada verticalmente no sprite do jogador, mas aqui perto do propulsor, então, no código do sprite da chama, então, no código do sprite da chama, vamos começar um roteiro de início do jogo indo aos eventos e trazendo uma vitória que recebi no Queremos fazer com que a chama siga continuamente o sprite do jogador Então, vamos até o Controle e introduzimos um bloco eterno. Então vamos começar, adicionar um bloco de ir para posição aleatória ao bloco eterno e configurá-lo para ir para o jogador. isso o colocará diretamente entanto, isso o colocará diretamente no centro do jogador, então, para movê-lo um pouco para baixo, vamos colocar um bloco Y abaixo do bloco de ir para o jogador e vamos tentar alterá-lo por menos 30. Agora vamos tentar. Eu diria que parece muito bom. , se o jogador for destruído Porém, se o jogador for destruído, a chama ainda não desaparecerá. Mas vamos corrigir isso daqui a pouco. Ok, então para criar o resto da chama, usaremos clones. No entanto, ao contrário dos outros sprites que usamos para clones até agora, na verdade também usaremos o sprite original, então não o esconderemos no início do jogo Tudo bem, então para começar a criar clones do Flame Sprite, vamos até o controle e vamos adicionar um bloco clone de mim mesmo na parte inferior do bloco eterno Agora vamos introduzir um quando eu começar como um bloco clone. Primeiro, aumentaremos o contador de clones. Então, vamos às variáveis e extrair um total de clones de alteração em um bloco Em seguida, criaremos uma animação para o clone, na qual o moveremos para baixo e, ao mesmo tempo, reduziremos seu tamanho e alteraremos sua cor, deixando-o cada vez mais próximo do vermelho Como veremos, como estamos constantemente criando clones do sprite da chama enquanto fazemos isso, isso nos dará um efeito de fogo de aparência interessante Ok, então, para começar, vamos controlar e introduzir um bloco de repetição, e vamos repetir 20 vezes. Agora, para mover o clone pelo palco, vamos para o movimento e adicionar uma alteração Y por bloco ao bloco de repetição Vamos randomizar um pouco o movimento. Então, vamos até os operadores e trazer um bloco aleatório escolhido. Para descer, precisamos mudar Y por um número negativo. Então, vamos usar algo como menos três a menos quatro, certificando-se de colocar um ponto após um dos números para também usar decimais OK. E como vamos reduzir o tamanho do clone à medida que ele se move para baixo, também queremos que o tamanho do clone afete a distância que ele pode se mover para baixo durante cada Quanto menor for, menor será a distância que permitirá que ele se mova. Caso contrário, lacunas cada vez maiores aparecerão entre os clones. Portanto, para reduzir a quantidade de alteração Y com base no tamanho do clone, vamos primeiro colocar um bloco de multiplicação em algum espaço vazio Para a primeira entrada, vamos trazer um bloco de divisão e vamos usar o bloco aleatório de seleção aqui como a segunda entrada do bloco de multiplicação Agora, para o bloco de divisão, dividiremos o tamanho do sprite por 100 Então, vamos até Looks e usaremos um bloco de tamanho como primeira entrada. E vamos dividi-lo por 100. Agora podemos colocar tudo isso no bloco Y de mudança. Então, agora, à medida que o clone fica menor, ele também se move para baixo em quantidades menores Em seguida, faremos com que a cor do clone fique cada vez mais próxima do vermelho Para fazer isso, vamos adicionar um bloco de efeito de mudança de cor ao bloco de repetição. E para ir para o vermelho, precisamos reduzir o efeito da cor. Então, vamos usar algo baixo, como menos dois. Por fim, reduziremos um pouco o tamanho. Então, vamos fazer uma alteração de tamanho por bloco. E alterá-lo por menos cinco deve funcionar. Tudo bem. E depois que tudo isso for feito, excluiremos o clone Então, vamos primeiro ir às variáveis, colocar um bloco total do clone de alteração após o bloco de repetição e alterá-lo por menos um Em seguida, vamos até Control e insira um bloco de exclusão deste clone Ok, agora, só para mostrar como tudo isso funciona, vou trazer um bloco de peso e colocá-lo após o bloco create Clone no script W I receive Start Game Uma espera de meio segundo deve ser longa o suficiente para mostrar apenas um clone por vez Agora, se eu executar o jogo, podemos ver um clone de chama descendo o palco, ficando cada vez menor e ficando mais próximo do vermelho Se eu diminuir o tempo de espera, podemos ver mais clones ao mesmo tempo E se eu remover completamente o bloco de peso, os clones aparecerão próximos o suficiente para parecerem uma chama No entanto, existem algumas melhorias que podemos fazer. Primeiro, os clones param de diminuir de tamanho quando atingem um certo ponto próximo à parte inferior Além disso, se movermos o sprite do jogador para a parte inferior do palco, os clones serão empurrados para cima, grudando na borda inferior do Na verdade, esses dois problemas podem ser resolvidos com uma pequena mudança na roupa do sprite Ok, então vamos parar o jogo e entrar na aba de fantasias. Como já sabemos, o tamanho do traje de um sprite afeta tanto o quão longe o sprite pode ir da borda do palco quanto o quão pequeno podemos fazer o Tivemos um problema semelhante com o sprite do asteróide, que resolvemos criando uma grande fantasia que usamos antes de mover o Poderíamos fazer o mesmo com o sprite da chama, mas como o sprite tem apenas uma única fantasia, uma solução mais simples seria aumentar o tamanho da E para fazer isso, nem precisamos tocar no círculo. Em vez disso, podemos criar um grande retângulo invisível ao redor do círculo Então, vamos pegar a ferramenta retângulo não escolher nada tanto para a cor do campo quanto para a cor do contorno Então, vamos diminuir o zoom na tela. E vamos criar um retângulo transparente em toda a área do palco da tela Tudo bem, vamos desmarcar o retângulo para que não o movamos acidentalmente E se rodarmos o jogo agora, a chama fica melhor e também não é empurrada para cima na parte inferior do palco. No entanto, ainda parece um pouco suave demais. Então, uma última maneira de melhorá-lo é mexendo um pouco os clones de um lado Para fazer isso, vamos voltar para a guia de código e entrar no bloco de repetição de quando eu começo como um clone Vamos entrar em ação e fazer uma mudança X por bloco. E vamos alterá-lo em pequenas quantidades aleatórias. Então, vamos até os operadores e trazer um bloco aleatório escolhido. Algo como menos 0,2 a 0,2 deve funcionar. Vamos tentar. Lá vamos nós. Está parecendo muito melhor. Agora só precisamos fazer com que a chama se apague quando o jogador morrer. Para fazer isso, quando o jogador for atingido por um asteróide, transmitiremos uma mensagem que o sprite das chamas receberá Então, primeiro, vamos entrar no código do sprite do player e, em definir, verifique se a configuração está morta para verdadeira, vamos até os eventos e introduzimos um bloco de transmissão E vamos transmitir uma nova mensagem, que podemos chamar de player dide Alright, agora, de volta ao Flame Sprite, vamos trazer quando eu receber o jogador A mensagem será recebida por todos os clones, assim como pelo próprio sprite da chama Pois o sprite da chama precisará escondê-lo. Então, vamos até Looks e traga um esconderijo. Isso também significa que precisamos mostrar o sprite novamente no início Então, vamos adicionar um bloco de exibição na parte superior do script Start Game. Também queremos interromper os outros scripts no Sprite para que o bloco eterno no script Start game não continue sendo executado e criando clones Então, vamos ao Controle, adicionar um bloqueio de parada quando eu recebi o dide do jogador e configurá-lo para interromper outros scripts no Sprite OK. E quando um clone recebe a mensagem de morte do jogador, queremos excluí-la Então, vamos excluir esse bloco de clones. O sprite flamejante original simplesmente ignorará o bloqueio. Mas também queremos diminuir o contador de clones. Então, antes de excluir o clone, vamos às variáveis, inserir um bloco total do clone de alteração e alterá-lo por O problema com isso, no entanto, é que o próprio flame sprite também diminuirá o contador de clones em um, mesmo que não seja um clone mesmo que não seja um Portanto, o contador de clones não será mais preciso. Para evitar isso, precisaremos primeiro verificar se o sprite atual é realmente um clone antes de diminuir o contador de clones Infelizmente, porém, o scratch não fornece uma maneira fácil de verificar se um sprite é um clone, mas podemos fazer isso usando uma variável local Então, vamos criar um. Podemos chamá-lo de I clone e criá-lo apenas para este sprite E vamos esconder a variável. Então, por padrão, definiremos I clone como Foss, e só precisamos fazer isso uma vez, não toda vez que iniciamos um novo Então, em vez de fazer isso no script inicial do jogo, vamos aos eventos e trazer um bloco de vitória clicado na bandeira verde Agora vamos voltar às variáveis, adicionar um bloco set two ao script de bandeira verde e vamos definir I clone para Foss Em seguida, e quando eu começar como um clone, vamos colocar outro conjunto para bloquear antes do bloco de repetição e, dessa vez, o conjunto é clonado Finalmente, quando eu recebo o Dide do jogador, vamos até Control, pegamos um bloco I thin e envolvemos o bloco total do clone de alteração e o bloco de exclusão deste clone Para a condição, vamos até os operadores e introduzimos um bloco igual. Então, vamos voltar às variáveis e verificar se o clone é igual Então, agora só diminuiremos o contador de clones e excluiremos o clone se o sprite for realmente Tudo bem, agora vamos rodar o jogo. E desta vez, quando um asteróide nos atinge, a chama se apaga. E volta se começarmos de novo. Acabei de perceber, no entanto, que nosso contador de clones ainda não é totalmente preciso porque atualmente não estamos contando os clones a laser Então, enquanto estamos nisso, vamos resolver isso. Para fazer isso, vamos entrar no código do laser sprite e definir um total de clones de alteração em um bloco acima de um dos quando eu começar como um script de clone E queremos diminuí-lo antes de cada um dos blocos de exclusão desse clone Vamos trazer outro bloco total do clone de alteração para algum espaço vazio e vamos alterá-lo por menos um Agora podemos duplicar o bloco e colocá-lo antes de excluir este bloco de clone aqui, depois colocar o outro antes excluir este bloco de clone E agora o contador de clones deve estar perfeitamente preciso. Agora que o jogador está com uma boa aparência, trabalharemos a seguir para aumentar suas chances de sobrevivência ou fragmentos. Para isso, adicionaremos alguns captadores ao palco que os ajudarão a destruir os asteróides com mais facilidade 48. Desenhe os trajes de coleta: Para criar alguns captadores que o jogador possa usar, primeiro precisaremos criar outro sprite Então, vamos escolher um Sprite, clicar em pintar e chamá-lo de pickup Tudo bem, então vamos criar três captadores diferentes Uma delas será a ativação do laser, que permitirá temporariamente que o jogador atire lasers em três direções diferentes Outra será uma bomba, que destruirá todos os asteróides uma certa distância E, finalmente, criaremos um captador de escudo, que tornará temporariamente o jogador invencível, além de permitir que ele destrua asteróides apenas tocando neles asteróides apenas Ok, então isso significa que precisaremos de três roupas diferentes. Para o primeiro, vamos chamá-lo de laser. Cada traje consistirá em um anel branco brilhante ao redor de algo que indica o tipo de captador. Então, vamos começar criando o anel. Primeiro, vamos pegar a ferramenta circular, desativar a cor de preenchimento e dar a ela um contorno branco espesso Uma largura de nove ou dez deve ser boa. Agora vamos ampliar um pouco. Mantenha pressionada a tecla Shift e desenhe um anel com cerca de 12 blocos de diâmetro. E vamos garantir que esteja centralizado. Tudo bem. E só para que possamos ver tudo melhor ao fazer isso, vamos pegar a ferramenta retangular, preenchê-la em preto desligar o contorno E desenhe um retângulo grande sobre a tela. E vamos enviá-lo para baixo do anel. Em seguida, adicionaremos um efeito de brilho ao anel. Para fazer isso, primeiro pegue a ferramenta de seleção, mantenha pressionada a tecla Alt ou Option e clique no anel para duplicá-la Para este, vamos desligar o contorno. E para a cor de preenchimento, vamos dar a ela um gradiente radial Queremos começar com o branco no centro e nos tornar cada vez mais transparentes. Então, primeiro, podemos clicar nesse botão para trocar as cores, colocando branco no centro Agora vamos escolher a segunda cor e desligá-la. Tudo bem, agora vamos manter pressionada a tecla Alt ou Option e aumentar um pouco o círculo até que tenhamos uma bela auréola ao redor do lado de fora do anel Agora só precisamos cortar a parte do círculo que está dentro do anel. Para fazer isso, com o círculo ainda selecionado, vamos pegar a ferramenta de borracha e tornar a largura bem grande, algo como 90 E agora podemos clicar no centro do círculo. E com isso, nosso anel brilhante está pronto, para que possamos nos livrar do retângulo preto E como usaremos o mesmo anel para as outras duas roupas, vamos duplicar a fantasia duas vezes Podemos chamar o segundo de escudo e o terceiro de bomba. Está bem? De volta com o traje de laser no centro do ringue, adicionaremos três lasers apontando em direções diferentes E podemos usar a mesma forma de laser que estamos usando para o sprite laser Então, vamos às roupas do sprite laser. Podemos selecionar a forma, copiá-la. Em seguida, volte para a fantasia de laser do Pickup Sprites e cole-a Vamos girar a forma para deixá-la voltada para cima e para baixo. Se mantivermos pressionada a tecla shift enquanto giramos, podemos girar em incrementos de 45 graus E também vamos reduzi-lo um pouco enquanto pressionamos alt ou option para mantê-lo centralizado Eu também vou preparar um pouco para o jantar. Está bem? Agora, mantenha pressionada a tecla Alt ou Option novamente e arraste a forma para a direita para criar uma duplicata aqui Então, vamos girá-lo cerca de 15 graus no sentido horário. Agora, vamos manter pressionada a opção Alter mais uma vez e clicar nesta para duplicá-la Em seguida, vamos girá-lo horizontalmente e movê-lo para o lado esquerdo enquanto segura a tecla Shift E isso está definido para o captador a laser. Vamos trabalhar no traje de escudo. Para isso, vamos pegar a ferramenta retangular, escolher um vermelho sólido para a cor de preenchimento e um dourado para a cor do contorno Defina a largura para algo como quatro e vamos criar um quadrado dentro do anel. E vamos em frente e centralizá-la. Está bem? Agora, usando a ferramenta de remodelação, vamos remodelá-la para parecer mais com um Vou adicionar um nó no centro da borda superior, torná-lo pontudo e movê-lo um pouco para cima. Em seguida, adicionarei um nó entre os dois nós aqui e o puxarei um pouco para baixo, e farei o mesmo no outro lado. Em seguida, vou adicionar um nó ao centro da borda inferior, torná-lo pontudo e puxá-lo para baixo. Então eu vou mover este para cima e para dentro um pouco e este também. E vou adicionar mais alguns nós para que eu possa curvar um pouco as bordas. Ok, agora, usando a ferramenta circular, vou definir a cor de preenchimento para a cor dourada do escudo, desligar o contorno e criar um pequeno círculo no escudo e centralizá-lo Tudo bem, agora só precisamos criar a fantasia da bomba. Vai ser semelhante ao traje que criamos para o amigo sprite e smacks moles Para começar a usar a ferramenta de círculo, vamos escolher um amarelo para a cor de preenchimento um laranja para a cor do contorno Uma largura de quatro para o contorno, e vamos desenhar um círculo dentro do anel Agora, usando a ferramenta de remodelação, podemos colocar três nós juntos, retirar o centro e repetir Tudo bem, agora eu quero deixar todos os nós apontados. Para fazer isso facilmente, posso retirar a forma, selecionar todos os nós e clicar no botão pontiagudo. Agora vou colocá-lo de volta no centro do anel e reajustar um pouco os nós Ok, terminamos com as fantasias de Pickup Sprite. Então, agora podemos acessar a guia de código e, na próxima lição, colocaremos tudo em funcionamento. 49. Gerar os pickups: Para o pickup, os sprites exibirão apenas clones do sprite no palco Então, para começar, vamos aos eventos e inserir um bloco quando eu receber, configurando-o como Quando eu recebo Iniciar jogo. E vamos esconder os sprites indo para Los e trazendo um esconderijo. Em seguida, continuamente ao longo do jogo, decidiremos aleatoriamente se criaremos ou não uma picape para cada um dos três tipos diferentes Então, primeiro, vamos controlar e introduzir um bloco eterno. Então, dentro do bloco eterno, vamos colocar três blocos IN separados para cada um dos três tipos de coleta E para cada condição, vamos até os operadores e trazer alguns blocos iguais. Em seguida, vamos adicionar um bloco aleatório de seleção a cada um. Ajustaremos todos os números aleatórios um pouco mais tarde para que os captadores não sejam criados com muita frequência e também usaremos valores diferentes para cada tipo Mas, para fins de teste, vamos usar os números de 1 a 100 para todos eles. Além disso, realmente não importa qual número usamos como a segunda entrada dos blocos iguais, desde que seja algo entre os dois valores, mas vou definir todos os meus como mas vou definir todos os meus Tudo bem. Agora, para realmente criar os captadores, já que usaremos basicamente o mesmo código para cada um, colocaremos o código dentro de um bloco personalizado Então, vamos até o Mblocks e criemos um novo. Primeiro, vamos digitar create e, em seguida, adicionar uma entrada de texto ou número chamada type. E, finalmente, vamos adicionar uma etiqueta de coleta. Em seguida, clique em OK. Podemos mover o bloco de coleta de caixas definido até aqui e vamos colocar um bloco de coleta de caixas dentro de cada um dos blocos ein Para o primeiro, criaremos um captador a laser. Para o segundo, criaremos um captador de escudo. E, finalmente, criaremos um coletor de bombas. E queremos ter certeza de que as palavras que usamos nesses blocos correspondam aos nomes das fantasias dos sprites da picape Ok, agora no script de criação de captação, primeiro moveremos o sprite para o topo do palco e faremos uma exposição aleatória Então, para começar, vamos entrar em movimento e introduzir o bloco go to XY. Para a posição Y, não queremos começar exatamente no topo do palco, que está na posição 180. Algo como 175 deve funcionar. Para a posição, vamos até os operadores e escolha um bloco aleatório. Novamente, não queremos colocar a picape diretamente contra as bordas Então, vamos usar algo entre menos 22220. Em seguida, queremos definir o traje dos sprites com o valor da entrada de tipo Então, vamos até Looks, trazer um bloco de roupas Switch e usar um bloco de texto como entrada. Finalmente, criaremos um clone do sprite. Então, vamos até Control e trazer um clone de criação do meu próprio bloco Ok, agora precisamos dizer aos clones como se comportar. Então, vamos introduzir um quando eu começar como um bloco clone. Primeiro, queremos mostrar o clone. Então, vamos até Looks e traga um bloco de shows. Também queremos que o clone apareça acima de tudo. Então, vamos para a frente, mais tarde, no quarteirão. E, claro, queremos aumentar o contador de clones. Então, vamos às variáveis e extrair um total de clones de alteração em um bloco E, por enquanto, vamos mover a picape pelo palco. Para fazer isso, vamos controlar e introduzir um bloco eterno. Em seguida, vamos entrar em movimento e introduzir uma mudança Y por bloco. E vamos mudar isso por menos cinco ou mais. Agora vamos tentar. Tudo bem, temos nossos três tipos de captadores surgindo aleatoriamente na parte superior do estágio e descendo até a Agora só precisamos deletar os clones sempre que eles chegarem ao fundo do palco ou tocarem no player Vamos começar tocando no player. Para isso, vamos até Control e colocar um bloco ITN em algum espaço vazio Agora, quanto à condição, queremos verificar se o clone está tocando o sprite do jogador No entanto, também queremos garantir que o jogador não esteja morto no momento. Caso contrário, o jogador poderá coletar as picapes mesmo quando elas estiverem explodindo, o que seria estranho Ok, então, para verificar essas duas condições, vamos primeiro ir até os operadores e inserir um bloco e. Em seguida, podemos ir para a detecção e usar um bloco de toque como uma das condições E queremos verificar se tocar no jogador para a outra condição, queremos verificar se a variável sprites is dead do jogador está definida como falsa Para fazer isso, primeiro vamos até os operadores e introduzimos um bloco igual. Agora, se voltarmos à detecção, podemos trazer um desses blocos que atualmente indica o número do estágio do plano de fundo Se mudarmos de estágio para jogador, agora podemos escolher a variável está morta do jogador. E vamos verificar se é igual a falso. Tudo bem. E, por enquanto, vamos excluir o clone Vamos primeiro ir às variáveis, inserir um bloco total do clone de alteração e alterá-lo por menos um Em seguida, vamos controlar e excluir esse bloco de clones Agora, para verificar se o clone chegou ao final do palco, faremos quase a mesma coisa Então, primeiro, vamos duplicar o bloco ITN e encaixá-lo na parte inferior do outro, e podemos nos livrar de todo o Para a condição deste, vamos até os operadores e trazer um bloco menor que. Em seguida, vamos para o movimento e usar um bloco de posição Y como primeira entrada. E verificaremos se a posição Y é menor que algum número próximo à parte inferior do palco. Algo como 175 negativos deve ser bom. Agora podemos pegar os dois blocos IN e colocá-los dentro do bloco eterno antes de mudar a posição Y. Está bem? E se rodarmos o jogo agora, a picape deve desaparecer quando chegar ao fundo ou tocar no jogador Nas próximas aulas, faremos com que algumas coisas realmente aconteçam quando o jogador pegar uma picape Mas, por enquanto, podemos fazer com que os captadores tenham uma aparência um pouco melhor dando-lhes uma animação pulsante medida que se movem pelo palco Faremos isso separadamente quando eu começar como um script de clone Então, vamos até o Controle e trazemos outro quando eu começar como um bloco clone E como a animação acontecerá continuamente, vamos criar um bloco eterno. Tudo bem, então primeiro, depois de algumas repetições, vamos reduzir um pouco o tamanho do clone. Então, com o mesmo número de repetições, aumentaremos seu tamanho Então, vamos adicionar dois blocos de repetição ao bloco eterno e repetiremos cinco vezes para cada um. Em seguida, vamos até Looks e adicionaremos um bloco de tamanho dois definido a cada bloco de repetição. E queremos ter um pequeno intervalo entre cada repetição. Então, vamos voltar ao controle e adicionar um bloco de peso na parte inferior de cada bloco de repetição, e faremos com que cada atraso seja algo muito curto, como 0,05 segundos. Vamos também colocar um bloco de peso após o segundo bloco de repetição, novamente, esperando 0,05 segundos. Isso adicionará uma pequena pausa após o clone voltar ao tamanho normal antes de ser reduzido Portanto, para o primeiro bloco de repetição, reduziremos o tamanho dos clones em uma pequena quantidade Poderíamos fazer isso simplesmente subtraindo um pequeno número do tamanho a cada vez, mas para que pareça mais suave, dividiremos o tamanho por Então, vamos aos operadores e vamos adicionar um bloco de divisão ao primeiro bloco de tamanho definido. Para o segundo bloco de repetição, faremos o oposto multiplicando o tamanho pelo mesmo número pequeno Então, vamos adicionar um bloco de multiplicação ao segundo bloco de tamanho definido Ok, agora para a primeira entrada de cada um, vamos até Looks e trazer um bloco de tamanho. Para as segundas entradas, queremos usar o mesmo número Tem que ser maior que um, mas, caso contrário, bem pequeno. Vamos tentar 1,05. Se rodarmos o jogo agora, os captadores terão um bom efeito pulsante Tudo bem, agora vamos trabalhar para fazer os captadores realmente façam alguma coisa quando o jogador os toca, e começaremos com a ativação do laser na próxima lição 50. Crie o powerup de laser: Quando o jogador coleta uma coleta, ativamos esse tipo específico de coleta, mas queremos fazer isso apenas Isso significa que precisaremos acompanhar por quanto tempo uma determinada coleta está ativa, que podemos fazer usando variáveis globais Tudo bem. E, por enquanto, vamos trabalhar apenas na potência do laser. Então, vamos às variáveis e criar uma nova para elas. Podemos chamar isso de tempo de inicialização do laser. E queremos que seja para todos os sprites, pois tanto o sprite de captação quanto o sprite de laser precisarão acessá-lo Agora, pela primeira vez, quando eu começo como um script de clone do sprite de captação, depois de detectar que o clone está tocando o player e antes de excluir o clone, verificaremos se o clone verificaremos se Se for, definiremos o valor da variável de tempo de inicialização do laser. Tudo bem, então, para verificar o tipo de captador, vamos começar indo até o controle e trazendo um bloco fino para algum espaço vazio Para a condição, vamos até os operadores e introduzimos um bloco igual. Para verificar o tipo de coleta, podemos usar o nome da fantasia do clone. Então, vamos ao Looks. Use um bloco de fantasias como a primeira entrada do bloco de iguais. E vamos verificar se o nome do traje é igual a laser. Se isso acontecer, definiremos a variável de tempo de inicialização do laser. Então, vamos às variáveis e trazemos um conjunto para bloquear. E vamos definir o tempo de inicialização do laser. Agora, por enquanto, podemos usar molduras. O Scratch roda a cerca de 30 quadros por segundo, mais ou menos. Isso significa que a cada segundo, scratch atualiza a tela cerca de 30 vezes. Então, se quisermos ativar a potência do laser por, digamos, 10 segundos, podemos definir a variável para dez vezes 30, que é 300. Ok, agora podemos pegar o bloco ITN e colocá-lo bem no topo do bloco I touch platter E agora vamos ao código do laser sprite. No script de início do jogo aqui, queremos verificar continuamente se tempo de potência do laser tem um valor maior que zero e, se isso acontecer, reduziremos o valor em um. Mas primeiro, para garantir que a inicialização do laser não comece ativa, vamos adicionar um conjunto de dois blocos ao script de início do jogo e definir o tempo de inicialização do laser para zero. Tudo bem, agora vamos controlar e introduzir um bloco eterno. Em seguida, vamos adicionar um bloco fino de I a ele. Para a condição, vamos até os operadores e trazer um bloco maior que. Em seguida, vamos às variáveis e vamos verificar se o tempo de inicialização do laser é maior que zero. Tudo bem. Agora, dentro do bloco I then, vamos fazer uma mudança por bloco e alterar o tempo de ativação do laser por menos um. Isso apenas garantirá que a inicialização do laser permaneça ativa apenas até que o tempo acabe para realmente usar a inicialização do laser e deixar o jogador atirar em três direções diferentes. Faremos isso na primeira, quando eu começar como um script de clone Aqui, antes de repetir até tocar no bloco de borda, verificaremos novamente se tempo de inicialização do laser é maior que zero e, se for, criaremos dois clones de laser extras, um voltado para 15 graus para a esquerda e outro voltado para 15 graus para a Então, primeiro, podemos duplicar o tempo de inicialização do laser I é maior que zero bloco aqui, e vamos colocá-lo em algum espaço vazio por enquanto e podemos nos livrar da mudança por bloco Em seguida, dentro do bloco if then, primeiro giraremos o clone atual no sentido anti-horário 15 graus e, em seguida, criaremos um Então, vamos entrar em movimento e girar no sentido anti-horário em um bloco de 15 graus Então, vamos controlar e trazer um clone crítico de my block. Em seguida, faremos com que o clone fique 15 graus para a direita e criaremos outro clone Para fazer isso, vamos voltar ao movimento e girar o bloco no sentido horário 15 graus, faremos com que fique voltado para cima novamente. Então, precisaremos girá-lo em um total de 30 graus. Agora vamos voltar ao controle e trazer outro clone crítico de my block. Finalmente, precisamos fazer com que o clone original fique voltado para cima novamente. Para fazer isso, podemos girá-lo no sentido anti-horário em 15 graus novamente, ou podemos entrar em movimento, inserir um bloco de ponto e direção e fazê-lo apontar na direção zero, que é para inserir um bloco de ponto e direção e fazê-lo apontar na direção zero, Ok, agora vamos colocar tudo isso em primeiro lugar quando eu começar como um script de clone logo acima do bloco de repetição até o bloco E vamos tentar. No momento, os lasers só estão indo direto para cima. Mas se coletarmos um captador a laser, nada parece acontecer No entanto, se dermos uma olhada no contador de clones, estamos atingindo 300 clones toda vez O que está acontecendo aqui é que os dois novos clones que criamos também executam o script When I start as clone, criando mais dois clones Portanto, o número de clones cresce exponencialmente. E o bloco de ponto e direção zero aqui está fazendo com que todos os clones fiquem voltados diretamente para cima, então eles geralmente aparecem em cima do outro no palco Para corrigir isso, só queremos executar esses blocos se o clone atual for um clone voltado para cima Isso significa que precisamos adicionar à condição de blocos ITN, verificando também se a direção do clone é zero Tudo bem, então vamos até os operadores e trazer um bloco e. E vamos usar o tempo de inicialização do laser maior que zero bloco como uma das condições. Para a outra condição, vamos introduzir um bloco igual. Então vamos ao movimento e vamos verificar se a direção é igual Agora podemos usar isso e bloquear como condição para o bloqueio if then. E se rodarmos o jogo agora e coletarmos o captador laser, teremos três lasers saindo em três direções diferentes ao mesmo tempo, e o contador de clones não ficará tão louco Também podemos ver que a variável de tempo de inicialização do laser está diminuindo em um a cada quadro E se não coletarmos mais power-ups de laser, quando o valor chegar a zero, o laser volta ao normal. Incrível. Mais uma coisa a observar é que , como excluímos os clones quando eles tocam uma borda do palco, eles também são excluídos quando tocam nas bordas esquerda e direita Se realmente quiséssemos, também poderíamos aplicar o revestimento de tela nos lasers, mas acho que isso pareceria mais confuso do que qualquer coisa, então vou deixar o meu como Tudo bem, agora podemos acessar as variáveis e ocultar a variável de tempo de inicialização do laser E na próxima lição, trabalharemos no escudo. 51. Crie o Shield: Quando o jogador coleta um escudo, nós o tornamos temporariamente invencível, além de fazer com que ele possa destruir qualquer asteróide com o qual que ele possa destruir qualquer asteróide E, assim como com a ativação do laser, criaremos uma variável de tempo global para acompanhar há quanto tempo o escudo está ativo. Então, para começar, vamos criar uma nova variável. Podemos chamar isso de hora do escudo e criá-lo para todos os sprites. Em seguida, vamos ao código do sprite de captação. E, como fizemos com o captador a laser, verificaremos o captador do escudo e definiremos a variável de tempo do escudo Então, primeiro, podemos duplicar o nome do traje se o nome do traje for igual a bloco de laser e colocá-lo em algum espaço vazio no momento, e podemos nos livrar da alteração extra do total de clones e excluir os blocos de clones Para este, vamos verificar se o nome do traje é igual a escudo. E se sim, definiremos a variável de tempo do escudo. Vou deixar o meu em 300 quadros ou cerca de 10 segundos. Agora vamos colocar o bloco I then logo abaixo do nome do traje I é igual a Laser one. Em seguida, vamos ver o código do sprite do player. No script check HIT, antes de fazer qualquer uma dessas coisas, primeiro verificaremos se a variável de tempo do escudo é maior que zero e, se for, simplesmente pararemos o script e não executaremos esses blocos. Então, primeiro, vamos controlar e colocar um bloco IN em algum espaço vazio. Para a condição, vamos até os operadores e trazer um bloco maior que. Então vamos às variáveis e vamos verificar se o tempo do escudo é maior que zero. Se for, interromperemos o script atual. Então, vamos até o Controle, coloque um bloco de parada e interrompa esse script. Agora podemos colocar o bloco ITN na parte superior do kit de verificação definido. OK. A próxima coisa que faremos é criar o escudo real. Para isso, colocaremos um anel brilhante pulsante ao redor do sprite do jogador, semelhante ao que estamos fazendo E, na verdade, podemos começar com o mesmo anel brilhante que estamos usando para as fantasias dos sprites de pickup Então, vamos selecionar o sprite de captação e acessar a guia de fantasias E agora, usando a ferramenta Selecionar, vamos clicar e arrastar a partir daqui e selecionar o objeto brilhante e o anel, e vamos copiá-los. Agora vamos criar um novo sprite para o escudo descendo até o botão Escolher um Sprite e clicando em pintar, e vamos chamá-lo de escudo Para o traje, vamos começar colando os objetos que acabamos de copiar do sprite de coleta No entanto, queremos que seja bem grande, para que envolva completamente o sprite do jogador, mesmo que o anel diminua de tamanho durante a animação pulsante tamanho durante Então, com os objetos selecionados, vamos manter pressionada a tecla Alt ou option e dimensioná-los até cerca de duas vezes o tamanho atual. Isso deve funcionar. Ok, agora vamos para a guia de código. Ao contrário de muitos outros sprites do jogo, exibiremos o sprite de escudo real em vez de usar E como é possível que o jogador pare o jogo enquanto o escudo estiver ativo e o sprite visível, clique novamente na bandeira verde A primeira coisa que faremos é garantir que o sprite esteja oculto quando a bandeira verde for clicada Então, vamos aos eventos e trazer um bloco clicado com a bandeira verde do vento Então vamos até Looks e trazemos um esconderijo. Também queremos trazer o sprite para a camada frontal. Então, vamos dar uma olhada no bloco da camada frontal. Agora, toda vez que o jogo realmente começa, queremos ter certeza de redefinir a variável de tempo do escudo para zero. Então, vamos primeiro voltar aos eventos, trazer um bloco quando eu receber e receber o Start game. Em seguida, vamos às variáveis, adicionar um conjunto para bloquear ao script e definir o tempo do escudo como zero. Em seguida, verificaremos continuamente se tempo do escudo é maior que zero e, se for, mostraremos o escudo e continuaremos movendo-o para a mesma posição do sprite do jogador até que o tempo acabe Então, para começar, vamos até Control e introduzimos um bloco eterno. Em seguida, adicione um bloco fino. Para a condição, vamos até os operadores e trazer um bloco maior que. Então vamos às variáveis e vamos verificar se o tempo do escudo é maior que zero. Se for, mostraremos o sprite. Então, vamos até Looks e traga um bloco de shows. Além disso, como a animação pulsante mudará o tamanho do sprite, vamos redefinir o tamanho trazendo um tamanho definido para Agora, vamos voltar ao controle e adicionar uma repetição até bloco após o bloco de tamanho definido. Queremos repetir até que tempo do escudo não seja mais do que zero. Para fazer isso, podemos ir até os operadores e trazer um bloco de Então, podemos duplicar o tempo de escudo maior que zero bloco aqui e adicioná-lo ao bloco de Uma coisa que queremos fazer ao repetir até bloquear é mover o sprite do escudo para a mesma posição do sprite do jogador Então, vamos entrar em movimento, colocar um bloco de posição aleatória e configurá-lo para ir para o jogador. E, claro, a variável de tempo do escudo nunca seria maior que zero se não a diminuíssemos. Então, vamos às variáveis, adicione uma alteração por bloco à repetição até o bloco e altere o tempo do escudo por menos um. E, por enquanto, após a repetição até que o bloco termine, vamos esconder o sprite Então, vamos até Looks e adicione um bloco de ocultar logo após repetir até o bloco, certificando-se de que ele ainda esteja dentro do bloco if then. Ok, se rodarmos o jogo agora e coletarmos um escudo, o sprite de escudo aparecerá ao redor do sprite do jogador e agora somos invencíveis E se não coletarmos mais nenhum escudo, após cerca de 10 segundos, o escudo desaparece. Agora só precisamos adicionar a animação pulsante e fazer com que o escudo destrua os asteróides Para a animação, podemos usar basicamente o mesmo código que usamos para o sprite de captação Então, vamos ao código Sprite de coleta. O código de animação pulsante é todo o bloco eterno aqui no segundo em que eu começo como um script de clone Então, vamos copiar o bloco eterno no escudo Sprite. Agora, de volta ao código do Shield Sprite, precisaremos colocar o novo bloco forever em um script de início de jogo separado Então, vamos aos eventos e trazer um bloco quando eu receber, anexá-lo ao bloco eterno e configurá-lo para quando eu receber o Start Game. No entanto, só queremos fazer a animação se o escudo estiver realmente ativo. Então, vamos ao controle e vamos envolver um bloco ITN em torno de tudo dentro do bloco eterno Para a condição, queremos verificar se o tempo do escudo é maior que zero, para que possamos duplicar um dos blocos dos outros scripts Também vou remover o bloco de espera final aqui para que não haja atraso entre as animações de crescimento e redução Agora, se começarmos o jogo e coletarmos um escudo novamente, ele terá uma animação pulsante Está bem? Agora vamos fazer com que o jogador possa usar o escudo para destruir asteróides. Para fazer isso, vamos entrar no código do sprite do asteróide. E quando eu começo como um script de clone, atualmente estamos verificando se o asteróide está tocando um laser e, se estiver, estamos executando o bloco atingido pelo asteróide Também queremos adicionar uma verificação aqui para saber se o asteróide está ou não tocando o escudo Para fazer isso, vamos até os operadores e vamos colocar um bloco ou em algum espaço vazio. Podemos mover o bloco de laser de toque para uma das entradas ou do bloco, depois duplicar o bloco e adicioná-lo às outras entradas, configurando-o como escudo configurando-o Agora podemos usar tudo isso como condição para o bloco I then. E se rodarmos o jogo e ativarmos o escudo, agora podemos destruir os asteróides tocando-os com nosso , depois que o tempo do escudo se esgota Porém, depois que o tempo do escudo se esgota, o escudo desaparece um pouco abruptamente. Provavelmente deveríamos avisar o jogador pouco antes de o escudo desaparecer, para que ele saiba que é hora de parar de atravessar os asteróides Para fazer isso, vamos voltar ao código do sprite do escudo. Ao repetir até o bloco aqui, podemos verificar se o tempo do escudo está reduzido para os últimos dois segundos ou mais e, se estiver, podemos começar a eliminar os sprites do escudo Para fazer isso, vamos até o controle e vamos adicionar um bloco I thin na parte inferior da repetição até o bloco. Para a condição, vamos até os operadores e vamos trazer um bloco menor que. Em seguida, vamos às variáveis e usaremos um bloco de tempo do escudo como primeira entrada. Se o tempo do escudo for menor que 50, faltam pouco menos de 2 segundos, e agora começaremos a eliminar os sprites, o que podemos fazer acessando Looks, adicionando um efeito de mudança por bloco ao bloco I thin E mudando o efeito fantasma em dois. Isso também significa que precisamos reiniciar o efeito fantasma na próxima vez que o escudo ficar ativo Vamos pegar um bloco de efeitos gráficos transparente e colocá-lo acima do bloco de repetição até o bloqueio. Agora vamos tentar. Quando ativamos o escudo e o valor do tempo de escudo cai para 50, o escudo começa a desaparecer antes de desaparecer completamente Porém, um problema que temos é que, se por acaso coletarmos outro escudo coletor enquanto o escudo está desaparecendo, ele permanecerá parcialmente desbotado ele permanecerá parcialmente A razão pela qual isso acontece é que, embora coletar outro captador de escudo redefina o tempo do escudo para 300, porque ele nunca cai para zero, repita até que o bloco continue funcionando e os efeitos gráficos nunca sejam eliminados Para corrigir isso, em vez de limpar os efeitos gráficos antes da repetição até o bloqueio, podemos fazer isso sempre que o tempo do escudo não for inferior a 50 Isso significa que precisaremos substituir o tempo de escudo I menor que 50 blocos aqui, por um bloco I thin ls. Então, vamos controlar e colocar um bloco I thin ls em algum espaço vazio. Para a condição, vamos usar o tempo de escudo inferior a 50 blocos. Em seguida, vamos mover o bloco de efeito fantasma de mudança para a parte I do bloco I Thins, e agora podemos nos livrar do bloco vazio I thin Finalmente, podemos retirar o bloco de efeitos gráficos transparentes daqui e colocá-lo na parte do bloco ITN s. Então, podemos adicionar tudo isso ao final da repetição até o bloco. Se agora rodarmos o jogo e ativarmos o escudo, e coletarmos outro escudo coletor à medida que o escudo estiver desaparecendo, ele voltará a ficar totalmente Ok, agora podemos acessar as variáveis e ocultar a variável de tempo do escudo, e são duas captações concluídas A última que precisamos criar é a bomba, e faremos isso na próxima lição. 52. Crie a bomba: Como com os outros captadores, começaremos a trabalhar na bomba criando uma variável global para ela, que será definida dentro do código do sprite do captador quando o jogador coletar uma bomba. Com a bomba, no entanto, vamos simplesmente executar uma animação rápida, iniciando a bomba pequena e fazendo-a crescer, destruindo todos os asteróides com os quais ela destruindo todos os asteróides Por causa disso, ao contrário da potência do laser e do escudo, não precisamos acompanhar há quanto tempo a bomba está ativa. Em vez disso, precisamos apenas rastrear se a bomba está ativa ou não. Então, vamos começar criando uma nova variável. Vamos chamá-la de bomba ativa e torná-la para todos os sprites. E podemos seguir em frente e ocultar a variável. Em seguida, verificaremos se o clone coletado da picape está usando a fantasia de bomba e, em caso afirmativo, definiremos a bomba ativa Então, vamos primeiro duplicar aqui se o nome do traje for igual ao bloco de escudo, colocá-lo em algum espaço vazio por enquanto, eliminar o total alterado do clone e excluir esses blocos de clones total alterado do clone e excluir Agora vamos verificar se o nome do traje é igual a bomba. E se sim, vamos transformar a bomba ativa em verdadeira. Então podemos colocar esse I e depois bloquear abaixo dos outros dois. Em seguida, criaremos um sprite para a bomba. Então, vamos até o botão Escolha um Sprite, clique em pintar e chame-o de bomba O traje do sprite da bomba será simplesmente um círculo grande com gradientes de rádio brancos a transparentes Então, vamos começar pegando a ferramenta circular e, para a cor de preenchimento, vamos mudar para a opção de gradiente de rádio Vamos deixar a primeira cor completamente branca e desligar a segunda cor. E não queremos que o círculo tenha um contorno. Agora, enquanto pressiona a tecla Shift, vamos criar um círculo um pouco maior do que a área do palco da tela. E vamos nos certificar de centralizá-lo. Ok, agora vamos para a guia de código. Como é possível que o jogador colete vários coletores de bombas em um curto período de tempo, usaremos clones do Sprite da bomba e ocultaremos o próprio sprite Então, primeiro, vamos aos eventos e trazer um bloco W I receive, configurando-o para quando eu receber o Start game. Então vamos até Looks e trazemos um esconderijo. Também queremos trazer um bloco go to front later e inicializar a variável ativa da bomba para fos Então, vamos às variáveis, inserir um bloco ativo set bomb e configurá-lo para fs. Na verdade, podemos configurá-lo como qualquer coisa além de verdadeiro, mas usar false facilita a compreensão do código por outras pessoas. Ok, agora vamos verificar continuamente se a bomba ativa é verdadeira e, se for, criaremos um clone na posição atual do jogador e detonaremos a bomba Então, vamos começar controlando e introduzindo um bloco eterno. Em seguida, vamos adicionar um bloco ITN. Para a condição, vamos até os operadores e introduzimos um bloco igual. Então vamos às variáveis e vamos verificar se a bomba ativa é igual Agora, dentro do bloco if then, vamos passar para a posição dos sprites do jogador indo para o movimento, trazendo um bloco de ir para a posição aleatória e configurando-o para ir para o jogador Em seguida, vamos criar um clone acessando o controle e trazendo um bloco create clone of myself E mais uma coisa que queremos fazer aqui é transformar a bomba ativa em falsa, ou então isso nunca vai parar de criar clones. Então, vamos às variáveis, inserir um bloco ativo de set bomb e configurá-lo como falso. Em seguida, precisamos dizer aos clones o que fazer. Vamos voltar ao controle e introduzir um quando eu começar como um bloco clone Primeiro, vamos aumentar o contador de clones acessando variáveis, introduzindo uma alteração por bloco e alterando o total de clones em um Em seguida, mostraremos o clone indo para Los e trazendo um bloco de shows Agora vou começar o clone bem pequeno e fazê-lo crescer cada vez mais Então, vamos trazer um bloco de tamanho dois e definir o tamanho para 0%. Como aprendemos anteriormente, isso não fará com que o tamanho seja quase 0%, mas será muito pequeno. Está bem? Agora vamos controlar, inserir um bloco de repetição e repetir 20 vezes. Para fazer o clone crescer, vamos para Los alterando o tamanho por bloco para o bloco de repetição e vamos alterá-lo em cinco Depois da animação de crescimento, esperaremos cerca de meio segundo depois eliminaremos o clone Então, vamos ao controle, adicione um bloco de espera após o bloco de repetição e espere 0,5 segundos. Agora vamos introduzir outro bloco de repetição e, ao longo de dez repetições, eliminaremos o clone indo até Los, introduzindo um efeito de mudança por bloco e alterando o efeito fantasma em e alterando o efeito fantasma Finalmente, quando tudo isso for feito, excluiremos o clone Então, vamos primeiro diminuir o contador de clones acessando as variáveis, trazendo uma alteração por bloco e alterando o total do clone por menos Em seguida, vamos finalizar o script acessando Control e adicionando um bloco de exclusão deste clone Ok, vamos tentar tudo isso. Se coletarmos um coletor de bombas, ele aciona a bomba na posição do jogador com uma animação de crescimento rápido e um fade out Agora, só precisamos fazer com que a bomba realmente afete os asteróides. Para fazer isso, vamos entrar no código do sprite do asteróide. E quando eu começar como um script de clone, além de verificar se o clone está tocando em um laser ou no escudo, também precisaremos verificar se ele está tocando Então, vamos criar um espaço extra aqui. Então, vamos até os operadores e trazemos outro bloco ou bloco. Podemos usar o bloco ou daqui como uma das condições do novo bloco e, para a outra condição, vamos usar uma duplicata de um dos blocos de toque e configurá-lo para tocar a bomba Agora podemos usar tudo isso como condição para o bloco ITN. E deveria ser isso. Então, vamos tentar. Agora, qualquer asteróide que toque em uma bomba é destruído. Incrível. Ok, agora que sabemos que todos os captadores funcionam conforme o esperado, vamos tornar as coisas um pouco mais difíceis para o jogador acessando o código do sprite de captação e reduzindo a chance de intervalo para cada Para o captador a laser, eu vou com um em 500 Para o escudo, vou escolher um em 800. E, finalmente, um em 1.000 para a bomba. Isso deve fazer com que a picape apareça com muito menos frequência, mas ainda assim com frequência suficiente Tudo bem, nosso jogo está se saindo muito bem agora. A próxima coisa que faremos é criar algumas estrelas que se movem para baixo no fundo. Isso adicionará uma sensação de profundidade ao jogo. Agora, poderíamos fazer isso usando clones, mas com todos os efeitos de partículas, asteróides, lasers e captadores, já estamos chegando bem perto Então, precisaremos usar um método diferente para criar cópias de sprites É aí que entra a extensão da caneta, e aprenderemos tudo sobre ela na próxima lição. 53. Como usar a extensão de caneta: A extensão Pen é uma ferramenta muito poderosa disponível no zero. Ele tem muitos usos e, embora não usemos necessariamente todos os seus recursos em nossos jogos, ainda é bom conhecê-los. Está bem? Então, para demonstrar os recursos da extensão Pen, criei um novo projeto chamado No Surprise Pen Extension. E para realmente começar a usar a extensão Pin, primeiro precisamos descer até o canto inferior esquerdo da paleta de blocos Aqui temos um botão que diz adicionar extensão. Se clicarmos no botão, ele nos levará à biblioteca de extensões, onde podemos escolher entre várias extensões para adicionar ao nosso projeto. As extensões nos permitem adicionar funcionalidades mais avançadas aos nossos projetos. Por exemplo, com a extensão musical, podemos compor nossa própria música para nossos projetos Com o sensor de vídeo, podemos detectar movimento na webcam do usuário E com a conversão de texto em fala, podemos inserir algum texto e fazer com que rascunho o leia em voz alta usando vozes diferentes. Eu recomendo experimentar todas as extensões e aprender mais sobre elas quando tiver uma chance. Mas, por enquanto, o que estamos procurando é a extensão do pino aqui. Se clicarmos nela, a extensão Pin será adicionada ao nosso projeto. Agora temos essa nova categoria de blocos de pinos. E, como nas outras categorias, podemos usar os blocos de Pin dentro de um código Sprites Por exemplo, se adicionarmos um bloco fixo ao código do Scratchcats e clicarmos no bloco, entrarmos em movimento e inserirmos um bloco de movimento Cada vez que clicamos nele para mover o Scratchcat, ele desenha uma linha entre sua posição anterior e sua posição atual Isso também funciona quando o giramos e o movemos em direções diferentes Então, o que o bloco pin down faz é conectar um alfinete ao sprite e pressioná-lo contra o palco Se voltarmos à categoria de pinos, o oposto do bloco de alfinetes é o bloco de alfinetes. Se colocarmos uma e clicarmos nela, a caneta não tocará mais no palco Então, agora, enquanto movemos o Scratch cat, ele não desenha mais linhas. Para fazê-lo desenhar novamente, basta clicar novamente no bloco de alfinetes. Também temos blocos para alterar diferentes configurações do pino. Por exemplo, com o bloco de cores da caneta definida, podemos escolher uma cor específica para o alfinete. Agora o Scratch cat desenhará usando a nova cor. E se quisermos alterar a largura das linhas, podemos usar um bloco de alteração do tamanho do pino ou um bloco de definição do tamanho do pino. Com o bloco de alteração do pino B e o bloco do pino de ajuste dois, podemos ajustar um atributo específico da cor do pino, incluindo sua tonalidade, saturação, brilho e transparência Por exemplo, se quisermos tornar as linhas parcialmente transparentes, podemos usar um bloco de fixação de dois pinos para definir a transparência. Isso vai de 0 a 100, com zero sendo totalmente opaco e 100 sendo totalmente transparente Portanto, um valor de 50 tornará as linhas 50% transparentes. Definir a transparência como 100 tornará as linhas totalmente transparentes e defini-la como zero as tornará totalmente opacas novamente. Finalmente, se quisermos remover todas as linhas do palco, podemos usar um bloco de apagar tudo Ok, então algo que podemos fazer com tudo isso é dar ao usuário a habilidade de desenhar. Para fazer isso, podemos fazer com que o sprite desenhe linhas continuamente conforme segue o ponteiro do mouse e faremos ele comece a fazer isso quando a bandeira verde for Então, vamos primeiro aos eventos e trazer uma vitória com a bandeira verde clicada no bloco Quando a bandeira for clicada, primeiro apagaremos tudo Então, vamos adicionar o bloco apagar tudo ao script. E para começar a desenhar, precisamos colocar o bloco de alfinetes. Agora só precisamos continuar seguindo o ponteiro do mouse. Então, vamos até o Controle e introduzimos um bloco eterno. Em seguida, vá para o movimento, adicione uma posição aleatória ao bloco eterno e configure-o para ir para o ponteiro do mouse Se clicarmos na bandeira verde agora, Scratch cat segue continuamente o mouse e desenha linhas. Agora podemos continuar usando a fantasia de gato Scratch, se quisermos, ou podemos usar uma fantasia em branco. Para fazer isso, podemos acessar a guia de fantasias, descer até o botão escolher uma fantasia e clicar em pintar. Agora podemos usar a nova fantasia em branco em vez da fantasia de gato Scratch. Então, parece que estamos realmente fazendo o desenho. Outra coisa que podemos fazer é fazer com que o desenho só aconteça quando o usuário estiver pressionando o botão do mouse. Para fazer isso, vamos voltar para a guia de código, acessar Control e colocar um bloco if then else em algum espaço vazio. Para a condição, verificaremos se um botão do mouse está pressionado acessando o sensor e inserindo um bloco para baixo do mouse Se um botão do mouse estiver pressionado, começaremos a desenhar colocando o alfinete no chão. Então, vamos mover o bloco de pinos para baixo daqui para a parte I do bloco I thin s. E se um botão do mouse não estiver pressionado, moveremos o pino para cima adicionando o bloco pin up às partes ts. Se agora colocarmos o bloco I Tints no bloco eterno e executarmos o projeto, ele agora só será desenhado enquanto pressionarmos o botão do mouse Também vamos fazer com que possamos pressionar as teclas de seta para alterar a cor e o tamanho da caneta. Para fazer isso, vamos aos eventos e trazemos quatro blocos pressionados com a tecla de vitória. Para o primeiro, vamos usar a tecla de seta para a direita. E vamos fazer com que pressioná-lo mude a cor do pino em uma pequena quantidade positiva. Para isso, vamos fixar e alterar a cor do pino em dez blocos. Em seguida, faremos o oposto fazendo com que a tecla de seta esquerda mude a cor em menos dez. Para a próxima, vamos escolher a tecla de seta para cima e fazer com que ela aumente o tamanho do pino trazendo um bloco para alterar o tamanho do pino. Finalmente, vamos fazer com que a tecla de seta para baixo altere o tamanho em menos um. Se executarmos o projeto agora, enquanto desenhamos, podemos usar as teclas de seta direita e esquerda para alterar a cor e as teclas de seta para cima e para baixo para alterar o tamanho. Mais um recurso importante da extensão de pinos, e o que usaremos com mais frequência em nossos jogos, é a capacidade de estampar uma fantasia de sprites Fazemos isso usando o bloco de carimbos e, para ver como funciona, vamos primeiro acessar a guia de fantasias e voltar para uma fantasia de gato Scratch Agora, de volta ao código, vamos fazer com que pressionar a tecla de espaço carimbe a fantasia de gatinho Para fazer isso, podemos ir aos eventos, um bloco pressionado com a tecla Win Space, depois voltar ao pino e adicionar um bloco de carimbo ao script Se executarmos o projeto agora, sempre que pressionarmos a tecla de espaço, ele carimbará uma cópia do Scratch cat no local atual E, como você pode ver, as configurações atuais do pino, como cor e tamanho, não afetam os carimbos Isso ocorre porque os selos são cópias exatas do traje atual do sprite. Portanto, se quisermos mudar a aparência dos selos, precisamos primeiro mudar a aparência do traje antes de carimbar Por exemplo, se acessarmos Looks e adicionarmos um bloco de efeito de mudança de cor na parte superior do script pressionado com a tecla de espaço Win e executarmos o projeto, quando pressionarmos a tecla de espaço agora, ela primeiro mudará a cor da roupa depois carimbará a roupa usando a nova cor estampagem é semelhante à clonagem, exceto que quando criamos um carimbo, não podemos fazer mais ajustes nele, como fazemos com clones usando o bloco when I start as No entanto, um benefício que a estampagem tem sobre clonagem é que não há limite para estampar Então, podemos basicamente carimbar um sprite para sempre, se quisermos Com esse conhecimento, agora podemos voltar ao projeto de destruição cósmica e usar estampagem para criar as estrelas ao 54. Crie as estrelas: Então, de volta ao caos cósmico, a primeira coisa que precisamos fazer é adicionar a extensão Pin ao projeto Então, vamos até aqui e clicar no botão Adicionar extensão. Em seguida, vamos escolher a extensão Pin. Em seguida, criaremos um novo sprite que usaremos para criar as estrelas Então, vamos até o botão Escolher um Sprite e clicar em Pintar E vamos chamá-la de estrela. Para o traje, simplesmente criaremos um pequeno círculo com gradientes de rádio brancos a transparentes. Vamos pegar a ferramenta circular e, para a cor de preenchimento, vamos escolher o gradiente de rádio, tornar a primeira cor branca e a segunda cor transparente Vamos garantir que o contorno esteja desativado. Agora vamos ampliar um pouco. E enquanto pressionamos a tecla shift, vamos desenhar um círculo com cerca de dois blocos de diâmetro. E também vamos nos certificar de centralizar o círculo. Agora, quando realmente criamos as estrelas, vamos colocá-las em três camadas separadas. As estrelas em cada camada consecutiva serão menores e se moverão mais lentamente do que as estrelas na camada anterior Isso criará o que é chamado de efeito de paralaxe, em quanto mais próximo um objeto está do jogador, maior e mais rápido ele parece ser Vemos esse efeito com bastante frequência nos planos de fundo de duas plataformas ou jogos D e o usaremos novamente nossa própria plataforma ou jogo posteriormente no curso O motivo pelo qual estou mencionando isso agora é que usaremos código para reduzir o tamanho dos sprites dependendo da camada em que estão No entanto, como a fantasia do sprite já é muito pequena, estamos muito limitados em quão pequeno podemos definir o tamanho do sprite Se tentarmos configurá-lo para algo muito pequeno, como dez, ele imediatamente voltará para um número muito maior Para corrigir isso, precisaremos aumentar o tamanho da fantasia dos sprites E, como aprendemos antes, uma maneira simples de fazer isso é adicionar uma grande caixa invisível ao traje. Então, vamos pegar a ferramenta de retângulo e desativar a cor de preenchimento e a cor do contorno, e o retângulo não precisa ser tão Algo assim deve funcionar. E vamos também centralizá-lo. Agora podemos usar um tamanho muito menor para o sprite. Não acho que vamos ser tão pequenos, mas caso queiramos , agora é possível. Ok, vamos definir o tamanho de volta para 100 por enquanto e vamos para a guia de código. Ao contrário dos outros sprites até agora, criaremos as estrelas assim que a bandeira verde for clicada e as exibiremos durante todo o jogo Então, em vez de usar um bloco W que recebo no início do jogo, vamos aos eventos e trazemos um bloco de vitória clicado na bandeira verde Agora, como as estrelas se moverão, precisaremos criar novos carimbos a cada quadro usando as posições atualizadas Isso significa que precisaremos acompanhar a posição atual de cada estrela. Para isso, usaremos uma lista de variáveis. Então, vamos às variáveis e criar uma nova lista. Podemos chamá-la de posição das estrelas e criá-la apenas para esse sprite Ok, então, no script da bandeira verde, vamos limpar a lista trazendo um bloco de exclusão total e excluindo todas as posições das estrelas Em seguida, para criar as estrelas, usaremos um bloco personalizado. Então, vamos até Meus Blocos e criemos um novo. Primeiro, vamos digitar create stars com dois pontos no final. Queremos poder digitar quantas estrelas criar para cada uma das três camadas. Então, vamos adicionar um número ou entrada de texto e chamá-lo de contagem um. Em seguida, vamos adicionar um rótulo e digitar na primeira camada. Agora vamos adicionar outra entrada chamada contagem dois, um rótulo na camada dois, outra entrada chamada contagem três e, finalmente, um rótulo na camada três. E para esse bloco, definitivamente queremos verificar a execução sem a atualização da tela Isso ocorre porque usaremos blocos repetidos para criar todas as estrelas e queremos criá-las em um único quadro. Está bem? Agora vamos criar o bloco. Podemos mover o bloco definido até aqui. E vamos adicionar um bloco de criação de estrelas ao script da bandeira verde. Agora, para criar o número de estrelas, não queremos exagerar e criar muitas. Uma razão é que, como as estrelas se moverão, teremos que recarimbá-las a cada quadro, e quanto mais selos criarmos, lento o jogo Outro motivo é que ter muitas estrelas só vai bagunçar o fundo Ok, então para a primeira camada, onde as estrelas serão maiores, eu vou com 20. Para a camada dois, vou com 50 e vou com 100 para a camada três. Sempre podemos ajustar esses valores posteriormente. Agora vamos trabalhar no script create Star. E aqui, vamos para Controle e vamos trazer três blocos de repetição separados para cada uma das três camadas. Para o primeiro, repetiremos a contagem uma vez. Vamos repetir a contagem duas vezes para a segunda e contar três vezes para a terceira. E o que faremos em cada um dos blocos de repetição é mover o sprite para uma posição aleatória no palco Em seguida, adicione essa posição à lista de posições das estrelas e também adicionaremos o número da camada atual à lista. Então, primeiro, para mover o sprite, vamos para o movimento e vamos adicionar um bloco de posição aleatória a cada bloco de repetição Em seguida, vamos às variáveis e vamos colocar um bloco Add to em algum espaço vazio. Vamos fazer com que seja adicionado às posições das estrelas. Em seguida, vamos criar duas duplicatas do bloco anexando-as todas juntas. Para o primeiro, vamos entrar em movimento e trazer um bloco de exposição Para o segundo, vamos usar um bloco de posição Y. Agora podemos duplicar os blocos e adicioná-los à parte inferior do primeiro bloco de repetição. No terceiro bloco de adição ao bloco, vamos adicionar um para a camada um Agora podemos duplicar os blocos novamente, colocá-los no segundo bloco de repetição e adicionar dois à lista Finalmente, podemos colocar os três blocos de adição restantes no terceiro bloco de repetição e adicionar três. Se clicarmos no script da bandeira verde agora, não veremos nada acontecer no estágio ainda não veremos nada acontecer no estágio além da mudança de posição do sprite estelar, mas devemos ter muitos itens adicionados à lista de posições das estrelas E cada vez que clicamos no script, devemos obter valores de posição X e Y diferentes. Ok, podemos ir às variáveis e ocultar a lista agora e, na próxima lição, trabalharemos desenhando e animando as estrelas 55. Anime as estrelas: Para desenhar as estrelas, criaremos outro bloco personalizado. Então, vamos para Meus blocos, clique em Criar um bloco e vamos chamá-lo de desenhar estrelas. Para desenhar as estrelas, usaremos um bloco de repetição para percorrer todos os itens na lista de posições das estrelas e carimbar o sprite estelar usando as informações E como queremos desenhar todas as estrelas em um único quadro, precisamos verificar a execução sem atualizar a tela Agora vamos criar o bloco. Ok, vamos procurar desenhar estrelas aqui. E no script da bandeira verde, queremos executar continuamente o bloco de desenho de estrelas. Então, depois de criar as estrelas, vamos controlar e criar um bloco eterno. Então, vamos voltar aos meus blocos e adicionar um bloco de desenho de estrelas ao bloco eterno. Em seguida, em definir desenhar estrelas, a primeira coisa que faremos é apagar todos os carimbos atuais Então, na categoria de alfinetes, vamos incluir um bloco de apagar tudo Depois disso, examinaremos todos os itens na lista de posições das estrelas e criaremos carimbos usando as informações da posição E à medida que percorremos os itens, precisaremos acompanhar o índice atual na lista. Isso significa que precisaremos criar uma variável. Então, vamos às variáveis e vamos criar uma nova, chamando-a de index e tornando-a somente para esse sprite E não precisamos mostrar a variável. Agora, em estrelas de desenho definidas, vamos trazer um conjunto para bloquear e vamos definir o índice como um para o primeiro item da lista. Em seguida, para percorrer a lista, vamos até Control e repita até bloquear. Queremos repetir até que o índice seja maior que o comprimento das posições das estrelas. Então, para a condição, vamos até os operadores e trazer um bloco maior que. Para a primeira entrada, vamos às variáveis e introduzimos um bloco de índice. E para a segunda entrada, vamos inserir um comprimento de bloco e configurá-lo para o comprimento das posições das estrelas. E como usaremos três itens da lista para cada carimbo, dois para as posições X e Y e um para o número da camada, precisamos ter certeza de aumentar o índice em três no final da repetição até o bloco Então, vamos fazer uma alteração por bloco e vamos alterar o índice em três. Com isso em cada repetição, o item no valor atual do índice será a posição X. Índice mais um será a posição Y e índice mais dois será a camada. Então, para mover o sprite para as posições X e Y corretas, vamos para o movimento e inserir um bloco Go to XY E queremos ter certeza de fazer tudo antes de alterar o índice. Tanto para X quanto para Y, vamos às variáveis e trazer alguns itens de blocos. Definindo-os para o item das posições das estrelas. Para X, podemos usar o item no valor do índice atual trazendo um bloco de índice. Para Y, queremos obter o item no índice mais um. Então, vamos primeiro ir até os operadores e trazer um bloco adicional. Então, vamos voltar às variáveis e obter o item no índice mais um. Em seguida, usaremos o número da camada para determinar o tamanho e a transparência da estrela. Então, primeiro, para o tamanho, vamos até Los e adicionaremos um bloco de tamanho dois antes do bloco de índice de alteração. Quanto maior a camada, menor queremos que a estrela seja. Além disso, acho que o tamanho de 100% é um pouco grande demais. 80% parece um pouco melhor. Então, para a camada um, vou usar 80%, depois vou subtrair outros 20% para cada camada consecutiva, então 60% para a camada dois e 40% para a camada três Para fazer isso, primeiro vou até os operadores e coloco um bloco de multiplicação em algum espaço vazio Para a primeira entrada, duplicarei o índice do item mais um dos blocos de posições iniciais aqui Mas, para obter a camada, quero adicionar duas ao índice e multiplicar a camada por 20 Então, a camada um me dará 20. camada dois me dará 40 e a camada três me dará 60. Agora eu só preciso subtrair tudo isso de 100, então vou trazer um bloco de subtração, usar 100 como a primeira entrada e usar tudo isso como a Agora eu posso usar isso como o valor para definir o tamanho. Para a transparência, faremos algo semelhante usando o efeito fantasma. Então, vamos até Looks para trazer um efeito de conjunto, dois blocos. E vamos definir o efeito fantasma. Quanto maior a camada, mais alto queremos que o efeito fantasma torne as estrelas cada vez mais transparentes. Além disso, para a primeira camada, deixaremos o efeito fantasma em zero. Então, para isso, vamos começar acessando os operadores e trazendo um bloco de multiplicação para algum espaço vazio Para a primeira entrada, vamos duplicar o índice do item mais dois blocos aqui E vamos multiplicar por 30. No momento, no entanto, isso definirá o efeito fantasma para 30 quando a camada for uma. Para definir o efeito fantasma para zero na camada um, podemos simplesmente subtrair um do número da camada Para fazer isso, vamos inserir um bloco de subtração. Use o item do bloco como a primeira entrada e subtraia por um Então, podemos colocar isso na primeira entrada do bloco de multiplicação e colocar o bloco multiplicação dentro do bloco de efeito fantasma definido Ok. E antes de movermos as estrelas, vamos ver se tudo isso está funcionando. Para fazer isso, basta colocar alfinete e adicionar um bloco de carimbo depois de tudo isso Agora, se virmos até aqui e clicarmos no script da bandeira verde, teremos todas as nossas estrelas posicionadas aleatoriamente com diferentes tamanhos e E cada vez que executamos o script, eles devem aparecer em posições diferentes. Além disso, uma coisa que esqueci de mencionar na lição anterior é que tudo o que criamos com a extensão do pino, incluindo linhas e carimbos, sempre é desenhado no palco antes dos sprites Então, se clicarmos na própria bandeira verde, podemos ver que todos os carimbos de estrelas aparecem abaixo dos sprites Uma coisa que você pode notar se olhar bem de perto, no entanto, é que uma das estrelas aparece no topo dos asteróides Na verdade, é o sprite estelar em si, não um selo. Para corrigir isso, depois de toda a estampagem, precisamos apenas esconder o sprite estelar Então, depois que eles repetirem até um quarteirão, vamos até Looks e trazemos um bloco de esconderijos. No entanto, isso também significa que precisamos mostrar o sprite antes de carimbar Então, vamos adicionar um bloco show acima do bloco de repetição até. Isso deve resolver o problema. Está bem? Agora que sabemos que as estrelas estão sendo desenhadas corretamente, vamos começar a movê-las para baixo no palco. Para fazer isso, precisamos diminuir a posição Y de cada estrela em uma pequena quantidade a cada quadro. No entanto, também precisaremos verificar se a estrela caiu abaixo da parte inferior do palco e, em caso afirmativo, vamos colocá-la no topo do palco e começar a movê-la para baixo novamente. Então, para começar, vamos ao movimento. E logo após o bloco de carimbos, vamos fazer uma mudança Y por bloco Semelhante à configuração do tamanho e do efeito fantasma, usaremos a camada para determinar até onde mover o sprite Para fazer isso, podemos primeiro duplicar o grande bloco de multiplicação no bloco de efeito fantasma definido aqui e adicioná-lo ao bloco de alteração Y. Para garantir que estamos sempre alterando Y por um número negativo, podemos subtrair quatro aqui, que é um a mais do que o número total de camadas Isso também fará com que quanto mais alta a camada, devagar a estrela se moverá E para o valor da multiplicação, podemos usar algo bem pequeno, como 0,5 Em seguida, verificaremos se a posição Y caiu abaixo do palco e, em caso afirmativo, a colocaremos no topo do palco. Para fazer isso, vamos controlar e colocar um bloco de TI em algum espaço vazio. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vamos ao movimento e vamos verificar se a posição Y é menor que menos 179, que está a um pixel da parte inferior do palco E se for, vamos colocar um conjunto Y de dois blocos e configurá-lo para 179 ou um pixel a partir do topo Agora vamos colocar o bloco I thin logo abaixo do bloco de mudança Y. Finalmente, precisamos também substituir o item atual da posição Y na lista de posições das estrelas pela posição Y atualizada. Para fazer isso, podemos primeiro acessar as variáveis e adicionar um item de substituição do bloco após o bloco I thin e fazer com que ele use a lista de posições das estrelas. Para que o item seja substituído, queremos usar o índice mais um, para que possamos usar uma duplicata do bloco aqui E para substituí-lo pelo valor, queremos usar a posição Y do sprite indo para o movimento e trazendo um bloco de posição Y. Se rodarmos o jogo agora, podemos ver que as estrelas estão se movendo muito bem no palco Mas como estamos mantendo as exposições das estrelas iguais, ela começa a parecer um pouco repetitiva depois de um Para melhorá-lo, sempre que movemos uma estrela para o topo do palco, também podemos dar a ela uma nova exposição aleatória Para fazer isso, dentro do bloco ITN, onde verificamos se a estrela caiu abaixo do palco, vamos também introduzir uma alteração no bloco X By Em seguida, vamos até os operadores e trazer um bloco aleatório escolhido. E vamos escolher um número entre menos 24240, que estará em todo o palco E agora, além de substituir a posição Y na lista, também precisamos substituir a posição. Então, vamos às variáveis e vamos trazer outro bloco de substituição de item configurando-o para usar a lista de posições das estrelas. Para o item, podemos usar a variável de índice. E para o valor, vamos entrar em movimento e introduzir um bloco de exposição Agora, as estrelas devem parecer ainda mais aleatórias. Ok, feito isso, vamos deixar o jogador marcar pontos enquanto destrói todos esses asteróides 56. Como manter a pontuação: Vamos permitir que os jogadores marquem pontos sempre que atirarem nos asteróides ou coletarem picapes E, como no jogo Smack So moles, criaremos uma boa exibição para a pontuação no topo do palco Mas antes de fazermos isso, vamos realmente fazer a pontuação funcionar. Para começar, primeiro precisaremos criar uma variável de pontuação global. Então, vamos às variáveis e criemos uma nova. Vamos chamar isso de pontuação e fazer com que seja para todos os sprites. No início do jogo, precisaremos definir a pontuação para zero, e podemos cuidar disso dentro do pano de fundo Então, vamos ver o código do pano de fundo e, no script da bandeira verde, antes de transmitir o jogo inicial, vamos colocar um conjunto para bloquear e definir a pontuação como zero Em seguida, trabalharemos para aumentar a pontuação. Para isso, vamos primeiro entrar no código Sprite do asteróide. No script de sucesso do asteróide, se o asteróide ainda estiver saudável quando o jogador atirar nele, aumentaremos a pontuação em Por outro lado, quando o asteróide ficar sem saúde e explodir, aumentaremos a pontuação em dois Então, primeiro, vamos fazer uma alteração por bloco e colocá-la dentro do bloco if then em algum lugar antes do bloco de repetição para que a pontuação seja atualizada instantaneamente, e vamos alterar a pontuação por uma. Em seguida, logo após o bloco ITN, antes de executar o bloco Explode, vamos fazer outra alteração por bloco e vamos mudar a pontuação em dois Também aumentaremos a pontuação quando o jogador pegar uma picape Agora vamos ver o código do sprite de captação. No primeiro, quando eu começo como um script de clone, temos um bloco ITN para verificar se o clone está tocando o jogador, e aqui vamos Vamos pegar uma mudança por bloco, colocá-la no topo do bloco ITN e vamos mudar a pontuação em três desta vez Se agora rodarmos o jogo e ficarmos olho na exibição da pontuação aqui, podemos vê-la aumentar à medida que atiramos em asteróides e coletamos picapes Ok, agora que sabemos que a pontuação funciona corretamente, vamos dar uma melhor exibição Semelhante à tela do cronômetro e às toupeiras do Smack So, centralizaremos a pontuação no topo do palco usando bons E para evitar problemas, podemos começar usando o mesmo sprite que usamos para os dígitos do cronômetro e as toupeiras do Smack So Há duas maneiras de fazer isso. Primeiro, se ainda tivermos acesso ao nosso projeto SMC e toupeiras, podemos copiar o sprite de dígitos do cronômetro usando a mochila Para fazer isso, primeiro clique em Salvar agora aqui. Se o projeto ainda não foi salvo automaticamente, clique no ícone da pasta aqui para acessar nossa página M Stuff. E aqui, vamos encontrar o SMxyBolsPject e clicar no botão C interno Agora devemos estar dentro do editor do projeto Smack and Moles. Na parte inferior, se clicarmos em Mochila, ele exibirá o conteúdo da mochila, que no meu caso está vazio no momento E agora podemos arrastar coisas do projeto para a mochila No painel de sprites, temos um sprite de dígitos de pontuação e um sprite de dígitos de cronômetro Você deve se lembrar de que os dígitos do SCOR são exibidos no canto superior esquerdo do palco e os dígitos do cronômetro são exibidos na Como queremos exibir a pontuação na parte superior central e a destruição cósmica, começaremos usando o sprite do dígito do cronômetro aqui Para fazer isso, primeiro precisamos clicar e arrastar o sprite para a mochila Isso cria uma cópia de tudo dentro do Sprite, incluindo seus trajes e códigos E agora com o sprite dentro da mochila, vamos voltar às minhas coisas Se agora clicarmos em C dentro do Projeto Cosmic Havok, abra o painel da mochila Ainda devemos ver o sprite do dígito do cronômetro aqui. Para adicionar o sprite ao nosso projeto atual, podemos clicar e arrastá-lo da mochila para o painel Sprite O sprite agora está em nosso projeto e podemos removê-lo da mochila, se quisermos Para fazer isso, podemos clicar com o botão direito do mouse no ícone Sprites na mochila e escolher Excluir E podemos clicar no cabeçalho da mochila aqui novamente para ocultar o conteúdo Agora, se por algum motivo você não tiver acesso ao seu projeto Smexibs, forneci o dígito do cronômetro Sprite Depois de baixar o sprite em nosso computador, podemos carregá-lo em nosso projeto clicando no botão Escolher um Sprite e clicando em Carregar Sprite Se navegarmos até o local em que baixamos o arquivo, veremos um arquivo chamado Trdigit dot Sprite Se selecionarmos o arquivo e clicarmos em Abrir, agora temos o dígito do cronômetro Sprite em Está bem? Agora que temos o dígito do cronômetro Sprite dentro do projeto Cosmic Havoc, vamos mudar o nome dele para dígito SCR, já que o usaremos para a dígito SCR, já que o usaremos Em seguida, dentro do código do sprite de dígitos SCR. B o sprite estava usando a variável timer e batendo em algumas toupeiras, copiar o sprite neste projeto criou automaticamente uma variável de cronômetro, como podemos ver se dermos uma olhada Em vez do cronômetro, queremos usar a variável SCOR. Então, vamos nos livrar dos dois blocos de cronômetro no código e substituí-los por blocos de pontuação E não precisaremos nem um pouco da variável de cronômetro, então podemos clicar com o botão direito do mouse na paleta de blocos e Além disso, como estamos usando clones, devemos aumentar o contador de clones Então, vamos adicionar uma alteração por bloco na parte superior do quando eu começar como um script de clone e vamos alterar o total de clones em um Outra coisa que queremos fazer é fazer com que os clones sempre apareçam acima de todo o resto. Então, vamos até Looks e vamos para o bloco de camada frontal, e queremos colocá-lo dentro do bloco eterno para que o clone se mova continuamente para a camada frontal à medida que é atualizado Caso contrário, os clones da pickup aparecerão no topo da pontuação Se tentarmos rodar o jogo agora, a pontuação será exibida na parte superior central do palco, mas só poderemos vê-la quando um asteróide estiver atrás dela E isso porque todas as roupas de dez dígitos são pretas, o que, obviamente, é da mesma cor do fundo Então, para corrigir isso, vamos até a aba de fantasias e vamos mudar a cor de cada traje para branco, começando com o dígito zero Para fazer isso, usando a ferramenta de seleção, vamos selecionar o zero e alterar a cor de preenchimento e a cor do contorno para branco Outra coisa que devemos fazer é adicionar uma borda preta ao redor de cada dígito Caso contrário, sempre que o jogador atirar em um asteróide que está atrás do placar, o asteróide piscará em branco e o jogador não conseguirá ver a Para criar uma borda preta, podemos primeiro manter pressionada a tecla Alt ou opção e clicar no zero para duplicá-la Então, podemos dar à duplicata um preenchimento preto e um contorno preto Aumente a largura do contorno um e envie-a abaixo do zero branco Agora vamos seguir as mesmas etapas para o dígito um. Primeiro, vamos selecionar um e dar a ele um preenchimento branco e um contorno branco Em seguida, mantenha pressionada a tecla Alt ou Option e clique nela para duplicá-la, tornar a cor de preenchimento e a cor do contorno brancas, aumentar a largura do contorno e enviá-la para a E vamos repetir para as roupas restantes. Ok, quando terminarmos com as roupas, vamos voltar para a guia de código. Se rodarmos o jogo agora, nossa nova exibição de pontuação deve estar funcionando muito bem. Agora podemos ocultar a exibição da pontuação antiga. Uma coisa a ter em mente, no entanto, é que atualmente estamos criando apenas quatro clones para a partitura Isso significa que a exibição da pontuação deixará de atualizada quando a pontuação atingir 9.999 Embora pontuar tão alto seja muito difícil, definitivamente não é impossível Então, por segurança, devemos aumentar o número de clones. Acho que sete clones deveriam ser mais do que suficientes. Outra coisa que podemos fazer é adicionar um efeito interessante em que, sempre que um dígito muda, ele começa um pouco maior e diminui rapidamente para o tamanho Para fazer isso, primeiro precisamos fazer com que um clone só troque roupa se o valor do bloco de junção aqui for realmente diferente do nome da roupa atual do clone Para isso, usaremos um bloco personalizado. Então, vamos entrar nos meus blocos e criar um novo. Vamos trocar de tipo de roupa dois e vamos criar uma entrada chamada figurino. Em seguida, vamos clicar em OK. Agora vamos mover o bloco de troca de roupa definido para cá. E quando eu começar como clone, vamos adicionar um bloco de troca de roupa ao bloco para sempre E para inserir o traje, vamos usar o bloco de junção que está atualmente dentro do bloco de roupas Switch. Agora vamos mover o bloco de troca de roupa para o script de troca de roupa. E mudaremos o traje para o valor da entrada do traje. No entanto, só queremos fazer isso se o valor de entrada do traje for diferente do nome atual do traje do clone Vamos até o controle e vamos enrolar I e depois contornar o bloco de roupas do Switch. Para a condição, vamos até os operadores e primeiro vamos trazer um bloco de nós depois trazer um bloco igual Para a primeira entrada do bloco de iguais, vamos até Looks e trazemos um bloco de fantasias E vamos verificar se o nome da fantasia não é igual à entrada da fantasia. Ok, e além de trocar a roupa, também aumentaremos o tamanho do clone Então, vamos adicionar um bloco de tamanho dois ao bloco if then e vamos definir o tamanho para algo como 160% Finalmente, Ben, quando eu começo como um clone na parte inferior do bloco eterno, queremos reduzir suavemente o tamanho volta para 100 em alguns quadros Para fazer isso, podemos primeiro fazer uma alteração de tamanho por bloco, depois vamos até os operadores, adicionar um bloco de divisão ao bloco de alteração de tamanho e usar um bloco de subtração como a primeira entrada do bloco de divisão E aqui, se subtrairmos o tamanho de 100 e dividirmos por algum número , o tamanho diminuirá suavemente para Então, vamos colocar 100 e a primeira entrada do bloco de subtração, depois ir para Looks e usar um bloco de tamanho como segunda Vamos dividir tudo isso por dois. Quanto maior o número que usamos aqui, mais lentamente o tamanho diminuirá. Agora vamos tentar. Lá vamos nós. Isso está parecendo incrível. Todos nós praticamente temos um jogo totalmente funcional agora. Tudo o que nos resta fazer é adicionar a tela de título, alguns efeitos sonoros e algumas músicas, e começaremos com a tela de título na próxima lição. 57. Crie o Button inicial: A tela de título consistirá em várias coisas, incluindo o logotipo, uma tela para alternar entre as roupas de sprite do jogador, um botão de partida, uma tela para a pontuação mais alta e botões de alternância para efeitos sonoros De tudo isso, o item mais importante é o botão Iniciar, pois ele realmente permitirá que os jogadores comecem o jogo. Então é nisso que vamos trabalhar primeiro. Para começar, precisamos criar um sprite para o botão Iniciar Então, vamos escolher um Sprite, clicar em Paint e chamá-lo de botão Iniciar Para o traje, vamos pegar a ferramenta retangular e vamos usar gradientes tanto para a cor de preenchimento quanto para a cor do contorno Primeiro, para a cor de preenchimento, vamos escolher a opção de gradiente vertical aqui Para a primeira ou a cor superior, vamos usar um amarelo. E para a cor do fundo, vamos usar laranja. Para o contorno, vamos também usar um gradiente vertical. Para a cor superior, usaremos branco e vamos usar cinza escuro para a cor inferior. Para a largura do contorno, algo como cinco deve ser bom Agora vamos ampliar um pouco a tela. Vamos criar um retângulo bem grande. Vou fazer o meu com cerca de 32 blocos de largura e 12 blocos de altura. Agora vamos contornar os cantos. Como vimos anteriormente, podemos fazer isso usando a ferramenta de remodelação , adicionando um nó em cada lado de um nó de canto, excluindo o nó de canto e repetindo para os cantos repetindo Também vou selecionar os dois nós no canto inferior esquerdo aqui e vou usar a tecla de seta direita para movê-los um pouco para a direita. Pressionar a tecla cerca de 20 vezes deve ser bom. Talvez também precisemos ajustar um pouco a alça aqui para que ela siga o ângulo. Agora farei o mesmo com os dois nós no canto inferior direito, exceto que vou usar a tecla de seta esquerda para movê-los para a esquerda. Em seguida, vamos pegar a ferramenta de seleção e centralizar o botão. Por fim, adicionaremos um pouco de texto ao botão. Então, vamos pegar a ferramenta de texto e usar branco para a cor de preenchimento. Em seguida, vamos criar um texto com a palavra início. Agora vamos centralizá-la com a ferramenta de seleção e aumentá-la um pouco enquanto pressionamos a tecla Alt ou a opção. Devido à forma como o rascunho cria texto, ele parece um pouco alto no botão, então vou movê-lo para baixo pressionando a tecla de seta para baixo algumas vezes para que o texto se destaque um pouco melhor Vamos usar um pouco de sombra projetada. Para isso, podemos manter pressionada a tecla Alt ou Option e clicar no texto para duplicá-lo, torná-lo preto, movê-lo para baixo e um pouco para a direita E clique no botão para trás para movê-lo abaixo do texto branco Está parecendo muito bom. Não importa onde o coloquemos no palco no momento, pois precisaremos movê-lo um pouco depois de criarmos os outros itens da tela de título. Está bem? Agora vamos para a guia de código. Quando a bandeira verde é clicada, em vez de começar o jogo imediatamente, primeiro abriremos a tela de título Se inserirmos o código do pano de fundo, no momento estamos transmitindo a mensagem de início do jogo quando a bandeira verde é Em vez disso, o que queremos fazer é transmitir uma nova mensagem, que podemos chamar de show title screen. Também queremos fazer isso depois que o jogador morrer. Se entrarmos no código do sprite do jogador, quando o jogador for atingido, estaremos transmitindo a mensagem vermelha do jogador Então, o que podemos fazer é fazer com que pano de fundo receba a mensagem de data do jogador e, em seguida, transmita a mensagem da tela de título do programa Então, no código de fundo, vamos primeiro aos eventos e trazer um W que recebi do jogador ded Block Antes de mostrar a tela de título, no entanto, queremos esperar o suficiente para as animações de explosão dos sprites dos jogadores Então, vamos até o Controle e introduzimos um bloco de espera, e uma espera de cerca de 4 segundos deve ser boa. Agora podemos voltar aos eventos, trazer um bloco de transmissão. E transmita a tela de título do Show. Agora vamos ao código do botão Iniciar Sprite. E aqui, vamos trazer um bloco Quando eu recebo e configurá-lo para Quando eu receber Mostrar tela de título. A primeira coisa que faremos é esconder o sprite. Então vamos esperar cerca de meio segundo e desaparecer no sprite Então, primeiro, vamos até Looks e traga um bloco de esconderijos. Agora vamos para o controle, coloque um bloco de espera e espere 0,5 segundos. Depois disso, mostraremos o sprite. Então, vamos voltar para Looks e trazer um bloco de shows. Então, vamos torná-lo invisível trazendo um efeito de conjunto, dois blocos e definindo o efeito fantasma para 100. Para desvanecer o sprite, vamos controlar e introduzir um bloco de repetição, e vamos repetir 20 vezes Então, vamos voltar para Examinar um efeito de mudança por bloco para o bloco de repetição e alterar o efeito fantasma em menos cinco. Se clicarmos na bandeira verde agora, após uma breve pausa, o botão Iniciar aparecerá. Em seguida, faremos com que clicar no botão inicie o jogo. Para fazer isso, verificaremos se o sprite está sendo clicado e, se estiver, desapareceremos e, em seguida, transmitiremos a mensagem de início do jogo No entanto, não queremos usar a vitória neste bloco clicado pelo Sprite para isso, pois isso permitirá que o jogador continue clicando no botão enquanto ele está desaparecendo e também enquanto está Isso pode causar problemas. Então, em vez disso, no script da tela de título do programa, depois de desaparecer no sprite, usaremos um bloco eterno para verificar continuamente se o sprite está sendo Para fazer isso, vamos até Control e adicionaremos um bloco eterno na parte inferior do script. Em seguida, vamos adicionar um bloco if then ao bloco forever. Para a condição, verificaremos se um botão do mouse está atualmente pressionado, mas também queremos verificar se o ponteiro do mouse está atualmente sobre os sprites Caso contrário, clicar em qualquer lugar dentro do palco iniciará o jogo. Então, para verificar se essas duas condições são verdadeiras, vamos primeiro acessar os operadores e inserir um bloco e. Em seguida, vamos para a detecção e vamos usar um bloco de mouse para baixo como uma das condições do bloco e usar um bloco de ponteiro do mouse sensível ao toque como a E só por diversão, vamos também fazer com que pressionar a tecla de espaço inicie o jogo. Para fazer isso, vamos colocar um bloco de pressionamento de tecla em algum espaço vazio no momento Em seguida, vamos aos operadores e, desta vez, usaremos um bloco or. Podemos usar o bloco de pressionamento de teclas como uma das condições do bloco ou do bloco Use o bloco e aqui como a outra condição e, em seguida, use o bloco inteiro ou o bloco como condição para o bloco if then. Agora precisamos realmente começar o jogo. Para isso, criaremos um bloco personalizado. Então, vamos até Meus Blocos e criemos um novo. Podemos chamá-lo de Iniciar jogo e clicar em OK. Vamos mover o bloco de início do jogo definido para aqui e vamos adicionar um bloco de início de jogo ao bloco if then. Ao iniciar o jogo, queremos impedir que o bloco eterno seja executado novamente. Então, vamos para Control, coloque um bloco Stop após o bloco de início do jogo e interrompa esse script. Em seguida, para o script Iniciar jogo, eliminaremos o sprite e, em seguida, transmitiremos a mensagem de Início do jogo Então, para eliminar o Sprite, vamos colocar um bloco de repetição e repetir 20 vezes Então vamos para Looks, adicionar um efeito de alteração por bloco ao bloco de repetição e alterar o efeito fantasma em cinco. Depois, vamos ocultar o sprite adicionando um bloco de ocultação na parte inferior do script Finalmente, vamos aos eventos, trazer um bloco de transmissão e transmitir o Start Game. Se rodarmos o jogo agora, podemos pressionar a tecla de espaço ou clicar no botão Iniciar para iniciar o jogo. E se morrermos, o jogo ainda termina e o botão Iniciar não aparece. Isso ocorre porque, se acessarmos o código Sprite do player na parte inferior de Define Explode, estamos interrompendo todos os scripts no momento Podemos remover isso agora e também podemos remover o bloco de espera, já que agora estamos esperando dentro do pano de fundo. Tudo bem, vamos tentar de novo. Se começarmos o jogo e morrermos, o jogador explode. Fazemos uma breve pausa e o botão Iniciar aparece novamente. No entanto, como não estamos interrompendo os scripts, os asteróides e os captadores ainda estão funcionando normalmente Para corrigir isso, vamos primeiro entrar no código Sprite do asteróide E aqui queremos interromper todos os scripts do Sprite quando ele receber a mensagem da tela ShowTitle Para fazer isso, vamos trazer um bloco W que eu recebo e configurá-lo para quando eu receber a tela ShowTitle Então vamos para o Controle, coloque um bloco de parada. E configure-o para interromper outros scripts no sprite. Tudo o que isso fará, no entanto, é congelar os clones do asteróide no palco. Portanto, se o sprite for um clone, também queremos excluí-lo reduzir o contador de clones Mas, como discutimos, ao criar o sprite da chama, não apenas os clones receberão a mensagem da tela de título do programa, mas também o sprite original do asteróide Então, se simplesmente reduzirmos o contador de clones no script, o contador não será preciso Para resolver esse problema com o sprite flame, criamos uma variável I Clone, que definimos como falsa quando a bandeira verde é clicada e como verdadeira no script when I start as a como verdadeira no script when I start as Então, quando eu recebo o dide do jogador, verificamos se o sprite é um clone e só então reduzimos o contador e excluímos o Podemos fazer algo semelhante com o sprite do asteróide. Então, primeiro, podemos realmente copiar isso se eu clonar igual ao bloco verdadeiro nos sprites de asteróides Agora, se voltarmos ao asteróide Sprite, podemos adicionar o novo bloco IN ao script da tela de título do programa Isso também deve criar automaticamente uma variável is clone para o sprite, como podemos ver se verificarmos as Agora, precisamos definir a variável como falsa quando a bandeira verde é clicada e verdadeira em quando eu começo como um script clone Então, primeiro, vamos aos eventos e trazemos uma bandeira verde, clicamos em bloquear Então, vamos voltar às variáveis, trazer um conjunto para bloquear e definir seu clone como falso Em seguida, perto do início de quando eu começo como clone, vamos inserir outro conjunto para bloquear e definir esse clone Agora só precisamos fazer o mesmo com o sprite de captação. E para facilitar nossa vida, podemos copiar o roteiro da bandeira verde e o roteiro da tela de título do programa na pickup Sprites Agora vamos ao Pickup Sprite e reorganizar No W, eu começo como um script de clone, não vamos esquecer de trazer um bloco do conjunto dois e definir seu clone Agora, se rodarmos o jogo e morrermos após uma breve pausa, todos os asteróides e captadores desaparecerão antes que o botão Iniciar volte a ser ativado na verdade, temos um problema No entanto, na verdade, temos um problema com o contador de clones, pois podemos ver que se pararmos o jogo quando o valor total do clone for maior que zero, clicar na bandeira verde não reiniciará a variável, então agora o contador não é Isso acontece porque atualmente estamos redefinindo o contador de clones e o sprite de asteróides e o do jogo quando eu recebo Para corrigir isso, vamos remover o bloco total do clone definido daqui Em vez disso, vamos ao código do pano de fundo e vamos adicionar um bloco de conjunto dois ao script de bandeira verde, definindo o total do clone Agora, se rodarmos o jogo novamente, o contador de clones deve começar em sete para os clones de sete dígitos de pontuação Se clicarmos em Start Game and Die, se tudo estiver funcionando corretamente, quando o botão Iniciar voltar a funcionar, o contador de clones deverá voltar para sete Agradável. Ok, para finalizar o botão Iniciar, vamos adicionar alguns efeitos a ele. Primeiro, de volta ao botão Iniciar, o código Sprite, no início definido do jogo, antes de desaparecer, os sprites aumentarão Para fazer isso, vamos até Looks, adicione um efeito de conjunto ao bloco antes do bloco de repetição e vamos definir o efeito de brilho para algo bem alto, e vamos definir o efeito de brilho como 80. Isso significa que também precisamos redefinir o efeito de brilho no script da tela de título do programa. Então, vamos adicionar um efeito de conjunto ao bloco próximo ao topo do script e definir o brilho para zero. Agora, se rodarmos o jogo e clicarmos no botão Iniciar, ele ficará mais claro antes de desaparecer Isso acontece se pressionarmos a tecla de espaço também. Em seguida, quando o jogador passar o mouse sobre o botão, daremos uma animação de crescimento E quando eles afastarem o mouse do botão, nós o reduziremos ao tamanho normal Na verdade, fizemos isso com o botão Play Again e batemos em algumas toupeiras E se quisermos, podemos copiar o código para o fundo e usá-lo na destruição cósmica Mas caso você não tenha acesso ao seu projeto S Maxims, vou refazer o código dentro do cosmic Então, para começar, vamos até o controle e vamos adicionar um bloco se, então outro na parte inferior do bloco para sempre e mostrar a tela de título. Para a condição, vamos detectar e inserir um bloco tocante de ponteiro do mouse Na parte I, aumentaremos um pouco o brilho e daremos uma animação de crescimento suave. Para fazer isso, vamos até Looks, trazendo um efeito definido para bloquear. E vamos definir o efeito de brilho para 20. Em seguida, vamos introduzir uma alteração no tamanho do Byblock. Para a entrada, vamos até os operadores, traga um bloco de divisão. Em seguida, use um bloco de subtração como a primeira entrada do bloco de divisão Para o bloco de subtração, vamos usar 120 como a primeira entrada e, para a segunda entrada, vamos voltar para Looks e trazer um bloco de tamanho E vamos dividir tudo por dois. Isso fará com que o tamanho cresça suavemente até 120. Na parte s, queremos remover o efeito de brilho e reduzir o tamanho para 100. Então, primeiro, vamos usar duplicatas dos dois blocos na parte I. Desta vez, definiremos o brilho para zero e subtrairemos o tamanho de 100 Agora vamos tentar. Parecendo bem. No entanto, se rodarmos o jogo novamente, o botão Iniciar começará brevemente em tamanho grande. Para corrigir isso, próximo ao topo do script, precisamos apenas adicionar um tamanho definido para 100 blocos. Lá vamos nós. Ok, agora terminamos com o botão Iniciar. Então, a seguir, trabalharemos no logotipo. 58. Crie o logotipo: Para começar a criar o logotipo para a tela de título, vamos criar um novo sprite clicando novamente no botão Escolha um sprite e clicando em pintar, e vamos chamá-lo Para o traje, usaremos muito branco. Então, para tornar tudo mais fácil de ver, vamos primeiro usar a ferramenta retângulo para criar um retângulo grande com um preenchimento preto sólido e sem Excluiremos isso um pouco mais tarde. Para o logotipo real, começaremos criando um texto. Então, vamos pegar a ferramenta de texto, escolher branco para a cor de preenchimento e criar um texto com as palavras cosmic havoc em Em seguida, vamos pegar a ferramenta de seleção, aumentá-la bem e centralizá-la. Também podemos engrossar um pouco adicionando um contorno branco Uma largura de dois parece muito boa. Em seguida, adicionaremos alguns desenhos acima e abaixo do texto que parecem cometas voando pelo espaço Para fazer isso, vamos pegar a ferramenta retângulo e, para a cor de preenchimento, vamos usar a opção de gradiente horizontal Usaremos branco como primeira cor e tornaremos a segunda cor transparente. E não queremos um esboço para isso. Agora, começando um pouco abaixo do texto e alinhado com o lado esquerdo, vamos criar um retângulo fino que é quase tão longo quanto o Agora vamos ampliar um pouco no lado esquerdo do retângulo Em seguida, vamos pegar a ferramenta de remodelação e adicionar um nó próximo ao centro do lado esquerdo Agora vamos selecionar os dois nós de canto selecionando um, depois segurando Shift e selecionando o outro, e vamos usar a tecla de seta para a direita para movê-los um pouco para a direita. Depois, podemos ajustar as alças do nó central até que fique bem arredondado. Agora vamos para o lado direito. Vamos adicionar um novo nó ao centro. Em seguida, torne o nó apontado clicando no botão apontado aqui em cima. Agora vamos excluir os dois nós de canto. OK. Agora vamos diminuir um pouco o zoom. Em seguida, vamos pegar a ferramenta de seleção, manter pressionada a opção ou e arrastar o objeto para duplicá-lo Vamos colocar isso acima do texto, clicar no botão de virar horizontal aqui e alinhá-lo com o lado direito do texto Finalmente, podemos substituir os Os no texto por asteróides. Para fazer isso, vamos primeiro usar os trajes de sprites de asteróides e selecionar e copiar todos os objetos em um de seus trajes normais Agora vamos voltar ao logotipo do traje Sprite e colar os objetos, depois movê-los para cima de um dos Os e redimensioná-los para caber um pouco melhor no espaço Agora podemos voltar ao asteróide Sprite e copiar um traje diferente Volte para o logotipo, clique em Colar e cubra o outro O. Agora, no momento, ainda podemos ver os Os por trás dos asteróides, o que não queremos Então, para corrigir isso, vamos selecionar o texto e pegar a ferramenta de texto. Então, vamos substituir cada O por alguns espaços. Lá vamos nós. Agora podemos nos livrar do retângulo preto Para a posição do logotipo Sprite, queremos centralizá-lo próximo ao topo do palco Parece que um X de zero e um Y de 100 devem ser bons. Agora vamos para a guia de código. Para começar a codificar o sprite, vamos aos eventos, trazer um bloco W I receive e configurá-lo para W I receive show title screen Primeiro, caso movamos acidentalmente o logotipo, vamos garantir que ele comece na posição correta, indo para o movimento e trazendo um bloco Go to XY, e ele já deve estar definido como X de zero e Y de 100 Em seguida, como o botão Iniciar, ocultaremos o sprite, esperaremos meio segundo e, em seguida, desapareceremos o sprite Então, vamos até Looks e traga um esconderijo. Em seguida, vamos até o Controle, coloque um bloco de pesos e configure para esperar 0,5 segundos. Agora queremos mostrar o sprite. Então, vamos voltar para Looks e trazer um bloco de shows. Em seguida, iniciaremos o sprite de forma invisível, trazendo um efeito de conjunto para bloquear e definindo o efeito fantasma para 100 Depois, para inserir o sprite, vamos até o controle, insira um bloco de repetição e repita 20 vezes Então vamos para Los mais uma vez, adicionar um efeito de mudança por bloco ao bloco de repetição e alterar o efeito fantasma em menos cinco. Se rodarmos o jogo agora, o logotipo aparecerá ao mesmo tempo que o botão Iniciar a pontuação está sendo exibida no topo do logotipo, entanto, a pontuação está sendo exibida no topo do logotipo, o que corrigiremos em breve. Mas primeiro, queremos também esmaecer o logotipo ao clicarmos no botão Iniciar No script de início do jogo definido pelos botões Iniciar, atualmente estamos eliminando o sprite transmitindo a mensagem Iniciar o Então, o que poderíamos fazer no logotipo Sprite é receber a mensagem de início do jogo e, em seguida, desaparecer o No entanto, como estamos transmitindo a mensagem depois de desvanecer o botão Iniciar, fazer isso fará com que o logotipo desapareça depois que o botão Iniciar já tiver terminado de desaparecer , o que pareceria Queremos que eles desapareçam ao mesmo tempo. Então, antes de apertar o botão Iniciar, podemos transmitir uma mensagem diferente para os outros sprites da tela de título notem que é hora de desaparecer Para fazer isso, vamos aos eventos e vamos adicionar um bloco de transmissão na parte superior do jogo Define Start. Vamos transmitir a nova mensagem, e podemos chamá-la de partida inicial. Agora vamos voltar ao Logo Sprite e vamos inserir um bloco quando eu receber, configurando-o para quando eu receber o início do jogo Então, para eliminar o sprite, primeiro vamos até o controle, coloque um bloco de repetição e repita 20 vezes Agora vamos para Los, alterando o efeito por bloco para o bloco de repetição e alterando o efeito fantasma em cinco. Finalmente, vamos esconder os sprites colocando um bloco oculto abaixo do bloco de repetição Se rodarmos o jogo agora e clicarmos no botão Iniciar, os dois sprites desaparecerão ao mesmo tempo Em seguida, faremos com que a pontuação não apareça na tela de título. Para fazer isso, vamos ver o código do pano de fundo. Para ocultar facilmente a pontuação quando a bandeira verde é clicada, em vez de definir a variável de pontuação como zero no script da bandeira verde, podemos defini-la com o valor vazio Isso funciona porque fará com que os clones de dígitos de pontuação usem o traje de dígitos vazios Também queremos fazer isso depois o jogador morrer e antes de mostrar a tela de título novamente, para que possamos duplicar a pontuação definida para nada. Bloquear aqui, livrar dos blocos extras e colocá-lo quando eu recebi a morte do jogador logo acima da tela de título do programa transmitido No entanto, também precisamos nos certificar de definir a pontuação para zero quando um novo jogo começar. Para fazer isso, vamos aos eventos e trazemos um bloco quando eu receber. Configurando para quando eu receber Iniciar jogo. E antes de aumentar a pontuação, vamos adicionar uma pequena pausa acessando vamos adicionar uma pequena pausa acessando Control e iniciando um bloco de espera de 1 segundo Em seguida, vamos às variáveis, trazemos um conjunto para bloquear e definir a pontuação como zero. Se rodarmos o jogo agora, a pontuação não aparece na tela de título, mas quando clicamos em Iniciar jogo, após cerca de um segundo, a pontuação aparece Devemos fazer os asteróides e os captadores, também esperar um segundo antes de aparecer para que a pontuação não fique zero depois o jogador já tiver marcado alguns pontos Para fazer isso, vamos primeiro acessar o código do asteróide sprite e, antes do bloco eterno, e quando eu receber Start Game, vamos até Control e aguarde um bloco de 1 segundo Agora vamos ao sprite de pickup. E, novamente, antes do bloco eterno do script inicial do jogo, vamos esperar 1 segundo. E vamos tentar. Lá vamos nós. Além disso, quando o jogador morre, antes que a tela de título volte a aparecer, a pontuação desaparece junto com os asteróides e picapes Tudo bem, para finalizar o logotipo, vamos incliná-lo para a esquerda e para a direita Acho que ficaria bem legal. Para fazer isso, vamos voltar ao código do sprite do logotipo. Para conseguir esse efeito, usaremos um pouco de trigonometria Pode ser um pouco confuso no começo, mas vou explicar à medida que avançamos Primeiro, vamos criar uma nova variável acessando variáveis e clicando em criar uma variável. Usaremos a variável para controlar o ângulo do sprite Então, vamos chamá-lo de ângulo e torná-lo apenas para esse sprite. Agora, na parte inferior do script da tela de título do programa, vamos colocar um conjunto para bloquear e definir o ângulo como zero. Em seguida, vamos controlar e introduzir um bloco eterno. Em seguida, vamos para o movimento e adicionar um bloco de ponto e direção ao bloco eterno. Depois disso, vamos às variáveis, altere por bloco e mude o ângulo por um. O que faremos aqui é que, à medida que atualizamos continuamente o valor da variável de ângulo, usaremos o seno do valor para definir a direção dos sprites Para ver como isso vai funcionar. Vamos até os operadores, coloque um abdômen de bloco em algum espaço vazio. E em vez de abs, vamos escolher a função sin. Se usarmos um zero como valor e clicarmos no bloco, obteremos zero de volta porque o seno de zero é zero Usar números de 0 a 90 nos dará valores de 0 a 1. Se usarmos 90, isso nos dará um. À medida que ultrapassamos 90, o valor começa a cair para zero. Até chegarmos a 180, quando se torna zero novamente, 180-270, obtemos valores negativos entre zero e menos E, finalmente, em 360, voltamos ao zero e os valores se repetem. Isso cria o que é chamado de onda senoidal, e podemos usá-la para dar ao nosso sprite uma rotação suave Usar valores tão pequenos, porém, é bastante inútil, pois só fará o sprite girar em até um grau, que nem será perceptível O que podemos fazer é multiplicar o valor por outro valor para torná-lo maior Para fazer isso, vamos incluir um bloco de multiplicação. E vamos usar o envio do bloco como a primeira entrada e multiplicá-lo por cinco Isso nos dará valores entre menos cinco e cinco. No entanto, usar esses valores como a direção do sprite fará com que ele aponte para do sprite fará com que ele cima e para baixo à medida que se inclina Para torná-lo horizontal, podemos adicionar 90 ao valor, nos dando algo assim. Então, vamos trazer um bloco adicional. Use tudo isso como a primeira entrada e adicione a 90. Finalmente, em vez de digitar o número do centavo do bloco, usaremos a variável de ângulo Então, vamos às variáveis e introduzimos um bloco angular. E agora podemos colocar tudo isso no bloco de ponto e direção. Se rodarmos o jogo agora, o logotipo se inclina suavemente para a esquerda e para Para aumentar a quantidade de inclinação, podemos multiplicar por um número maior que cinco Mas acho que cinco parece muito bom. Também podemos aumentar a velocidade de inclinação alterando o ângulo em um valor maior, como dois Isso é melhor. No entanto, há algumas melhorias que podemos fazer. Primeiro, se pararmos o jogo quando o logotipo estiver inclinado e clicarmos na bandeira verde novamente, o sprite começará inclinado Isso não é terrível, mas causa um salto quando a direção muda imediatamente para 90 no início da animação de inclinação. Para corrigir isso, podemos ir para o movimento e adicionar um bloco de ponto na direção 90 próximo ao topo do script da tela de título do programa. Muito melhor. Em seguida, se clicarmos no botão Iniciar, mesmo que não possamos mais ver o logotipo, a animação de inclinação continua sendo executada Isso é muito ineficiente. Para impedir que ele seja executado quando não for mais necessário, podemos acessar o Controle, colocar um bloco de parada em algum espaço vazio, configurá-lo para interromper outros scripts e sprites e colocá-lo na parte superior ou inferior do script Start Game Colocá-lo na parte superior impedirá o sprite se incline antes que desapareça, e colocá-lo na parte inferior interromperá a inclinação após o sprite De qualquer forma, agora iniciar o jogo impedirá que o script da tela de título do logotipo Sprite show seja executado continuamente Finalmente, porque sabemos que quando a variável do ângulo atinge 360, os valores do seno recomeçam Em vez de deixar a variável aumentar até o infinito, podemos reduzi-la a zero quando atingir 360 Uma maneira de fazer isso é ir até os operadores e trazer um bloco de modificação. O modo ou módulo dividirá o primeiro valor pelo segundo valor e nos fornecerá o restante Então, por exemplo, dois mod dez nos dá dois, que é o restante de 2/10, mas dez mod dez nos dá zero, pois dez, é claro, se divide igualmente, resultando em zero para 13 mod dez é três e 20 mod dez é zero. Basicamente, os resultados sempre serão um número entre zero e o número certo subtraído por um Então, o que podemos fazer é depois de alterar o ângulo em dois, podemos ir para as variáveis, podemos ir para as variáveis, trazer um conjunto para bloquear, adicionar o bloco mod a ele e definir o ângulo para o ângulo mod 360. Isso forçará o valor do ângulo a permanecer de 0 a 359. Isso não é totalmente necessário, mas é definitivamente mais eficiente. Como deixar o valor do ângulo ficar cada vez maior pode consumir a memória do nosso computador desnecessariamente Se rodarmos o jogo, podemos ver que a animação de inclinação funciona da mesma forma que antes Tudo bem, agora podemos ocultar a variável de ângulo, e isso cuida de dois itens da tela de título Em seguida, trabalharemos para dar ao jogador a habilidade de trocar sua roupa de sprites 59. Troque fantasias de jogadores: No centro da tela de título, teremos uma grande tela teremos uma grande tela mostrando o traje atual dos sprites do jogador, bem como um botão de seta em cada lado no qual o jogador pode clicar para alternar entre as roupas Começaremos adicionando a exibição de fantasias no centro do palco. Primeiro, vamos mover o botão Iniciar um pouco para baixo para que fique fora do caminho. E, na verdade, vamos definir a posição inicial do botão Iniciar. Vamos centralizá-lo verticalmente com um X de zero, e acho que um Y de menos 100 deve ser bom Então, no código do sprite do botão Iniciar, podemos ir para o movimento E adicione um bloco go to XY próximo ao topo do script da tela de título do programa, colocando-o na posição correta. Agora vamos ao código Sprite do player. O que faremos é exibir o sprite do jogador no centro do palco e torná-lo um pouco maior do que o normal E, como acontece com o logotipo e o botão Iniciar, primeiro esperaremos meio segundo depois apareceremos no sprite Então, para começar, vamos aos eventos e inserir um bloco quando eu receber, configurando-o para quando eu receber a tela de título do programa. Vamos primeiro esconder o sprite indo até Los e trazendo um bloco de esconderijo Vamos também adicionar um bloco de efeitos gráficos claro para limpar os efeitos que usamos ao destruir o jogador Em seguida, vamos ao Controle, coloque um bloco de pesos e espere 0,5 segundos. Em seguida, vamos mover o sprite para o centro do palco indo para o movimento, trazendo um bloco go to XY e fazendo com que ele vá para 00 Em seguida, mostraremos o sprite indo para Los e trazendo um bloco de shows E também vamos aumentá-lo trazendo um bloco de tamanho dois, e algo em torno de 150% deve ser bom Finalmente, vamos desvanecer o sprite. Como já fizemos isso várias vezes, gostaria de desafiar você a pausar o vídeo agora e criar o código você mesmo Como dica, primeiro precisamos tornar o sprite transparente, depois torná-lo cada vez mais opaco e faremos isso em mais de 20 repetições Tudo bem, então primeiro, para tornar o sprite transparente, vamos trazer um efeito definido para bloquear e definir o efeito fantasma para 100 Então vamos controlar, colocar um bloco de repetição e repetir 20 vezes. Agora vamos voltar para Los alterando o efeito por bloco para o bloco de repetição e alterando o efeito fantasma por menos cinco. E é isso. Se agora rodarmos o jogo, o sprite do jogador desaparece com os outros sprites da tela de título e também é maior e centralizado no palco Agora precisamos corrigir algumas coisas para quando o jogo começar, porque se clicarmos no botão Iniciar, o sprite do jogador permanece grande e também está centralizado no palco Seria melhor se começasse perto da parte inferior do palco, fora de perigo. Então, o que faremos é verificar mensagem de início do jogo que transmitimos ao clicar no botão Iniciar e desvanecer o sprite dos jogadores Então, no script de início do jogo, vamos ajustar o tamanho de volta para 100, mover o sprite para a parte inferior do palco e adicioná-lo rapidamente Então, para começar, eliminaremos o Sprite quando ele receber a mensagem de início do jogo Para fazer isso, vamos aos eventos, trazer um bloco de recebimento W I e configurá-lo para receber o jogo inicial. Agora podemos adicionar uma duplicata do bloco de repetição do script da tela de título do programa Mas desta vez, queremos mudar o efeito fantasma em cinco positivos. Em seguida, vamos abrir mais espaço para o script Start Game. Agora, como não estamos escondendo o sprite depois que ele desaparece, não precisamos mais do bloco de exibição aqui para que possamos nos livrar dele Além disso, como vamos inserir o sprite novamente, não queremos limpar os efeitos gráficos, então vamos remover esse bloco também Agora, antes do bloco eterno, vamos definir o tamanho de volta para 100 acessando Looks e trazendo um tamanho definido para 100% do bloco. Em seguida, para a posição, vamos entrar em movimento e colocar o bloco Go to XY. E queremos usar zero para X centralizá-lo verticalmente, e para Y, vamos tentar algo como menos 100 Finalmente, podemos adicionar uma duplicata do bloco de repetição na tela de título Mostrar, mas tornaremos a animação um pouco mais rápida repetindo dez vezes e alterando o efeito fantasma Agora vamos tentar. Clicar em Iniciar desvanece o sprite do jogador e, em seguida, ele volta menor e próximo à parte inferior do palco Agora, também precisamos trabalhar na chama, que atualmente está aparecendo na tela de título. Então, vamos entrar no código do Flame Sprite. Primeiro, quando a bandeira verde é clicada, vamos esconder o sprite acessando Looks e trazendo um bloco de esconderijo Já estamos escondendo isso quando o jogador morre, então ele deve ser escondido sempre que a tela de título aparecer novamente. Em seguida, e quando eu receber o Start Game, em vez de mostrar imediatamente o sprite, vamos esperar um pouco acessando Control e adicionando um bloco de espera antes do bloco de exibição Um peso de 0,5 segundos deve funcionar. Agora vamos tentar. Digamos que parece muito bom. Agora só precisamos criar os botões para permitir que o jogador troque a roupa. Para fazer isso, precisaremos criar um novo sprite. Vamos escolher um sprite, clicar em pintar e começaremos com o botão direito Vamos chamá-lo de botão. Para o traje, criaremos um triângulo reto. Para fazer isso, primeiro vamos pegar a ferramenta retângulo e, para a cor de preenchimento, vamos escolher a opção de gradiente horizontal Para a primeira cor, vamos usar um cinza claro. E para a segunda cor, vamos usar branco puro. Em seguida, para o contorno, vamos também atribuir um gradiente horizontal Vamos usar branco puro para a primeira cor e cinza médio a escuro para a segunda cor. Em seguida, vamos definir a largura do contorno para cinco. Isso pode, por algum motivo, redefinir a cor do contorno para preto sólido Então, vamos tentar isso de novo. Escolha a opção de gradiente horizontal, torne a primeira cor branca e a segunda cor um cinza médio a escuro Lá vamos nós. Agora vamos ampliar um pouco a tela, manter pressionada a tecla Shift e desenhar um quadrado com cerca de nove ou dez blocos de diâmetro. Em seguida, vamos pegar a ferramenta de remodelação e excluir o nó inferior esquerdo Em seguida, vamos pegar a ferramenta de seleção e girá-la uma vez no sentido horário enquanto pressionamos a tecla Vamos também centralizá-lo. Agora podemos voltar à ferramenta de remodelação e arredondar os cantos usando o método de nó extra que usamos antes Vou fazer o da direita um pouco mais arredondado do que os outros. E para consertar os cantos que estão sendo cortados no palco, vamos pegar a ferramenta retangular e dar a ela um preenchimento e um contorno sólidos e transparentes E vamos criar um retângulo invisível ao redor da forma. Ok, agora vamos para a guia de código. Para começar, queremos posicionar o botão corretamente. Vamos centralizá-lo horizontalmente no palco com um Y de zero, e parece que um X de 70 deve funcionar Então, para começar a codificar o sprite, vamos aos eventos, trazer um bloco W I receive e receber a tela de título do programa Em seguida, vamos entrar em movimento e colocar o bloco go to XY, certificando-se de que ele esteja na posição desejada. Em seguida, como acontece com todos os outros sprites da tela de título, vamos esconder o sprite, esperar meio segundo e depois desaparecê-lo Além disso, como no botão Iniciar, faremos com que o botão de seta cresça quando o jogador mouse sobre ele e encolha quando ele se afasta dele. Então, se entrarmos no código Sprite do botão Iniciar, podemos basicamente usar os mesmos blocos que estamos usando no script de exibição da tela de título, começando pelo bloco Ocultar com algumas exceções, é claro Então, vamos duplicar todos esses blocos clicando com o botão direito do esses blocos clicando com o botão direito no bloco Ocultar e escolhendo duplicar, e vamos colocá-los em algum espaço vazio Não precisamos do primeiro bloqueio aqui para iniciar o jogo, então vamos nos livrar dele. Também não alteraremos o efeito de brilho quando o player passar o mouse sobre o botão direito, então também podemos remover os dois blocos de efeitos de brilho definidos Esse aqui em cima também. Agora podemos copiar tudo isso para o sprite do botão direito e removê-lo daqui Agora, se voltarmos ao código do botão direito, podemos anexar todos os novos blocos na parte inferior do script da tela de título do programa. Além disso, quando o jogo começa, queremos interromper a execução de qualquer script no Sprite e eliminá-lo Se usarmos o código do Logo Sprite, é exatamente isso que estamos fazendo com inicial do jogo W irCeive Assim, também podemos copiar isso para o sprite do botão direito. Em seguida, volte para o botão direito Sprite e reorganize um pouco as coisas E agora, se rodarmos o jogo, o botão direito aparece junto com todo o resto, ele cresce e diminui, e se começarmos o jogo, ele Vamos clicar na bandeira verde novamente para que possamos ver a tela de título, e agora vamos trabalhar para fazer com que o botão mude a roupa do jogador sempre que clicarmos nele. Para fazer isso, primeiro precisaremos criar uma variável global para acompanhar o traje atual do jogador. Vamos às variáveis e criar uma nova. Podemos chamá-la de fantasia de jogador e fazê-la para todos os sprites E, na verdade, vamos criar mais uma variável global para permitir que os botões direito e esquerdo saibam quantas roupas existem para alternar. Vamos chamar isso de trajes totais para jogadores. E clique em OK, e podemos seguir em frente e ocultar as duas variáveis. Tudo bem, se formos até o jogador Sprite e conferirmos as roupas, atualmente temos quatro roupas de nave espacial e uma fantasia de hit box Obviamente, não queremos incluir a roupa da caixa de sucesso ao trocar, então podemos definir o total de roupas dos jogadores para quatro, que permitirá que os botões saibam que eles só devem usar roupas de uma a quatro. Ok, então para configurar tudo isso, vamos ver o código Sprite do player E aqui, vamos começar um script de bandeira verde indo a eventos e trazendo um bloco clicado em uma bandeira verde para ganhar Agora vamos voltar às variáveis e adicionar dois blocos de dois conjuntos ao script de bandeira verde. Vamos começar o jogador Sprite com o traje 1. Então, para o primeiro bloco de dois sets, vamos colocar o traje do jogador em um. E para o segundo bloco, vamos definir o total de roupas dos jogadores para quatro. Também precisamos realmente vestir a fantasia dos sprites como uma fantasia Então, vamos até Looks, trazer um bloco de roupas do Switch, e podemos escolher uma roupa da lista aqui ou, para deixar mais claro, podemos acessar as variáveis e trazer um bloco de roupas para um jogador. Agora precisamos corrigir algumas coisas nos outros scripts. Por exemplo, em Iniciar o jogo, não precisamos mais trocar a roupa para remover esse bloqueio. E aqui em definir check hit, depois de mudar para o traje da caixa de sucesso, em vez de mudar para o traje um, queremos mudar para a variável de traje do jogador Então, vamos adicionar um bloco de fantasias de plater a cada um dos trajes do Switch para vestir um bloco Em seguida, quando o jogador clicar no botão direito ou esquerdo, atualizaremos a variável de traje do jogador, bem como transmitiremos a mensagem para que o sprite do jogador saiba que precisa mudar para uma roupa diferente Vamos continuar recebendo a mensagem e o sprite do jogador Para fazer isso, podemos ir a eventos e trazer um bloco de recebimento W I, e vamos receber uma nova mensagem, que podemos chamar de troca de roupa de jogador. E, por enquanto, podemos simplesmente adicionar uma duplicata do bloco de traje do switch para traje do switch para o traje do jogador do script da bandeira verde Agora vamos finalizar o código para o sprite do botão direito. E aqui, quando o jogador clica Sprite, queremos aumentar a variável de traje do jogador e transmitir a mensagem de mudança de traje do jogador Então, primeiro, vamos ganhar esse bloco clicado pelo sprite. E, na verdade, criaremos um bloco personalizado para trocar a roupa. Então, vamos até Meus blocos e criemos um novo. Podemos chamar isso de mudar a roupa do jogador e clicar em OK. Vamos trazer o bloco de roupa definido para mudar de jogador até aqui e adicionar um bloco de troca de roupa de jogador para ganhar esse sprite clicado Em seguida, no script de troca de roupa do jogador, vamos às variáveis, introduzimos uma mudança por bloco e vamos trocar a roupa do jogador por uma. Agora também precisamos verificar se o traje do jogador é maior do que o total de trajes do jogador e, se for, vamos colocá-lo novamente em um. Então, vamos controlar, trazer um se estiver bloqueado. E para a condição, vamos até os operadores e trazer um bloco maior que. Então, vamos voltar às variáveis e verificar se o traje do jogador é maior do que o total de trajes do jogador. Se sim, vamos trazer um conjunto para bloquear e vamos colocar o traje do jogador em um. Finalmente, após o bloqueio do ITN, precisamos ir aos eventos, trazer um bloco de transmissão e transmitir a roupa do jogador Também vamos piscar os sprites dos botões deixando-os mais brilhantes brevemente Para fazer isso, podemos acessar Looks, inserir um efeito de conjunto para bloquear e definir o efeito de brilho para algo bem alto, como 70. Em seguida, vamos controlar, inserir um bloco de espera e esperar por um período muito curto, como 0,1 segundo. Depois disso, removeremos o efeito de brilho voltando para Los, trazendo outro efeito definido para bloquear e definindo o brilho para zero. Se rodarmos o jogo agora, ao clicarmos no botão direito, ele pisca e o sprite do jogador muda para a próxima roupa E se começarmos o jogo, o sprite do jogador continua usando a roupa escolhida Além disso, se morrermos e trouxermos a tela de título de volta, ela ainda usará o traje escolhido. OK. E só por diversão, vamos também fazer com que pressionar a tecla de seta direita troque a roupa. Para fazer isso, no bloco eterno da tela de título Mostrar, vamos até Control e introduzimos um bloco ITN. Para a condição, vamos até a detecção, um bloco pressionado com a tecla e configure-o para a tecla pressionada com a seta direita E se for, podemos mudar a roupa do jogador indo até os blocos M e trazendo um bloco de troca de roupa do jogador. Se rodarmos o jogo agora, também podemos pressionar a tecla de seta para a direita para trocar a roupa. No momento, porém, manter pressionada a tecla de seta direita trocará continuamente o traje muito rápido. Se não quisermos que isso aconteça, podemos fazer com que o bloco de troca de roupa de jogador aqui só funcione depois o jogador soltar a tecla de seta direita. Para fazer isso, vamos até Control e adicionar uma espera até o bloqueio logo antes do bloco de troca de roupa de jogador. Para a condição, vamos até os operadores e trazer um bloco de nós Então, podemos duplicar o bloco pressionado com a seta direita da tecla aqui e adicioná-lo ao bloco de Se tentarmos novamente, agora manter pressionada a tecla de seta para a direita não fará nada. Mas assim que o lançamos , o traje muda. Tudo bem, agora terminamos com o sprite do botão certo Para o botão esquerdo, podemos usar praticamente o mesmo sprite com algumas pequenas alterações Então, primeiro, vamos duplicar o sprite do botão direito, e vamos chamá-lo de botão esquerdo Agora vamos para a guia de roupas e, usando a ferramenta Selecionar, vamos selecionar tudo na roupa e virá-la horizontalmente Em seguida, na guia de código, queremos colocar o botão esquerdo no lado oposto do palco como o botão direito. E podemos fazer isso facilmente negando o valor X nos scripts de bandeira verde, vá para o bloco XY Agora, aqui embaixo, em vez de verificar a tecla de seta direita, queremos verificar a tecla de seta esquerda em ambos os blocos. Agora precisamos fazer algumas mudanças e definir como mudar o traje do jogador. Primeiro, queremos trocar o traje do jogador por menos um em vez de um seguida, em vez de verificar se traje do jogador é maior do que o total de trajes do jogador, queremos verificar se é menor que um e, se for, definiremos o valor do total de trajes do jogador. Vamos retirar o bloco total de roupas do jogador a partir daqui e adicioná-lo ao bloco de trajes do jogador definido. Então, vamos retirar o bloco de roupas do jogador e colocá-lo de lado, e vamos substituir o bloco maior que por um bloco menor que. E vamos verificar se o traje do jogador é menor que um, e deve ser isso. Vamos tentar. Agora podemos usar os dois botões para alternar entre as roupas. Muito incrível. Mais uma coisa que podemos fazer para deixar essa aparência um pouco melhor é fazer com que o sprite do jogador desapareça e suba, depois volte de baixo usando o Isso fará com que pareça que a espaçonave antiga está voando para longe e a nova está voando Para fazer isso, vamos entrar no código Sprite do player. E quando eu receber a roupa de troco de jogador, vamos retirar o bloco de troca de roupas por enquanto e colocá-lo de lado. Agora vamos ao controle e vamos adicionar um bloco de repetição ao script. Queremos que isso aconteça bem rápido. Então, vamos repetir apenas quatro vezes. Agora vamos mover o sprite um pouco para cima a cada repetição, indo para o movimento e trazendo uma alteração Y por dez blocos. Então, vamos eliminar o sprite indo até Los, adicionando um efeito de mudança por bloco ao bloco de repetição e alterando o efeito fantasma Depois disso, trocaremos o traje. Vamos colocar o bloco de fantasias do Switch aqui na parte inferior do roteiro Em seguida, precisamos definir a posição Y do sprite de forma que fique abaixo do centro do palco O sprite começa no centro com um Y de zero e estamos subindo dez passos quatro vezes Isso significa que acaba com um Y de 40. Para que a animação pareça correta, basta definir a posição Y para menos 40 antes de movê-la de volta para zero. Então, vamos entrar em movimento, colocar um conjunto Y de dois blocos e configurá-lo para menos 40. Por fim, faremos toda a animação novamente, exceto que o sprite aparecerá Então, vamos duplicar o bloco de repetição e colocá-lo na parte inferior, e podemos nos livrar dos dois blocos inferiores Para este, vamos alterar o efeito fantasma em menos 25. Ok, vamos tentar. Muito legal. Tudo bem. A próxima coisa que faremos é acompanhar a pontuação mais alta do jogador e exibi-la na parte inferior esquerda da tela de título. 60. Acompanhe a pontuação alta: Para implementar uma pontuação alta, criaremos uma variável global para monitorá-la. E durante todo o jogo, compararemos continuamente a pontuação mais alta com a pontuação atual do jogador. Se a pontuação atual for maior que a pontuação mais alta, a pontuação atual se tornará a nova pontuação máxima e exibiremos a pontuação mais alta no canto inferior esquerdo da tela de título. Ok, então, para começar, vamos às variáveis e criar uma nova. Podemos chamar isso de pontuação alta e fazer isso para todos os sprites. E, por enquanto, manteremos a variável exibida no palco. Em seguida, para definir a pontuação máxima, vamos ao código do pano de fundo E quando eu receber o Start Game, verificaremos continuamente se pontuação é maior que a pontuação máxima e, se for, definiremos a pontuação máxima como pontuação. Tudo bem. Então, primeiro, vamos até Control e adicionaremos um bloco eterno na parte inferior do script e, em seguida, adicionaremos um bloco ITN ao bloco eterno Para a condição, vamos até os operadores e trazer um bloco maior que. Em seguida, vamos às variáveis e vamos verificar se a pontuação é maior que a pontuação alta. Nesse caso, vamos colocar um conjunto para bloquear e definir uma pontuação alta para marcar. Se agora rodarmos o jogo, a pontuação mais alta começa em zero e, à medida que marcamos pontos, a pontuação mais alta é definida com o mesmo valor da pontuação. No entanto, se morrermos, a pontuação máxima não será zerada. E se começarmos o jogo novamente, a pontuação mais alta permanece a mesma até que a pontuação atual aumente. Tudo bem, agora que sabemos que a pontuação máxima está funcionando, vamos exibi-la no canto inferior esquerdo da tela de título. Para isso, primeiro teremos um texto que diz pontuação alta e, ao lado disso, usaremos dígitos para exibir a pontuação máxima real como estamos fazendo com a pontuação normal Está bem? Então, primeiro, vamos criar um novo sprite para o texto descendo até o botão Escolher um Sprite, escolhendo tinta, e podemos chamá-lo de texto com pontuação alta Para o traje, vamos pegar a ferramenta de texto, escolher branco para a cor de preenchimento, ampliar a tela e criar um texto com dois pontos de alta pontuação Agora podemos pegar o SleckTol e centralizar o texto no Canvas E acho que parece muito bom no tamanho atual. Tudo bem, agora podemos mover o sprite para onde quisermos, na parte inferior esquerda do palco Em seguida, vamos para a guia de código. Tudo o que precisamos fazer com o sprite de texto de alta pontuação é exibi-lo quando a tela de título aparecer e desaparecê-lo quando o jogo começar, assim como estamos fazendo com outros sprites da tela de título Então, para começar, vamos ver o código dos sprites do logotipo. A partir daqui, podemos copiar quando eu recebo a tela de título do programa e quando recebo os scripts iniciais do jogo para o sprite de texto de maior pontuação entanto, para o script da tela de título do programa, não alteraremos o ângulo do texto da pontuação mais alta, portanto, não precisamos do bloco de ângulo definido ou do loop eterno. Primeiro, podemos separar os blocos do script, depois copiar o script restante no sprite de texto de alta pontuação e reanexar os blocos ao E podemos copiar todo o script inicial do jogo como está. Agora podemos acessar a tecnologia Sprite de maior pontuação e reorganizar um pouco os scripts E quando recebo a tela de título do programa, é claro que não queremos usar 0100 como a posição do sprite Então, no bloco go to XY, vamos substituir as entradas X e Y atuais valores das posições X e Y pelos valores das posições X e Y para o sprite de texto de alta pontuação Vou usar menos 175 para X e menos 160 para Y. Além disso, como não vamos girar o sprite, o ponto na direção 90 do bloco aqui é desnecessário, então podemos nos livrar dele se quisermos E isso é tudo para o sprite tecnológico de alta pontuação. Se rodarmos o jogo agora, ele desaparece com os outros sprites da tela de título e, se clicarmos em Iniciar, ele desaparece Ok, agora vamos trabalhar nos dígitos da pontuação mais alta. Para facilitar nossa vida, podemos começar duplicando o dígito da pontuação Sprite E vamos mudar o nome desse para dígitos de alta pontuação Para posicionar o sprite, vamos até o sprite de texto de maior pontuação bem rápido e mostrá-lo no palco Então, vamos voltar ao dígito Sprite de maior pontuação e mostrá-lo também Se você ainda não vê o sprite, provavelmente está usando o traje vazio Então, para ver isso, basta ir até a guia de fantasias e escolher uma das roupas que não estão vazias. Está bem? Agora vamos voltar para a guia de código. O tamanho do sprite é um pouco grande, então vamos alterá-lo para algo em torno de 60% Então, podemos movê-lo, para que fique logo à direita do texto de pontuação mais alta. Agora, no bloco go to XY do script de bandeira verde, podemos usar a posição atual do sprite como entradas Para X, usarei menos 105 e menos 160 para Y, que é a mesma posição Y estou usando para o texto com quadrados altos Em seguida, ao contrário da pontuação, a pontuação mais alta não mudará enquanto a exibirmos, então não precisamos definir continuamente a exposição ou o traje de cada dígito Em vez disso, podemos definir as exposições ao criar os clones e ajustar roupas da maneira certa quando a tela de título aparece Definiremos o tamanho continuamente, fazendo com que os dígitos comecem um pouco maiores e diminuam até o tamanho normal, que parecerá muito legal, mas faremos isso somente enquanto a tela de título Então, quando eu começar como clone, vamos salvar a alteração de tamanho por bloco e a troca de roupa por bloco Então, podemos nos livrar do resto do loop forever, deixando apenas o total do clone de alteração em um bloco e o bloco show dentro do quando eu começo como um script de clone Agora, para definir a exposição de cada clone, faremos isso no bloco de repetição do script de bandeira verde movendo o sprite para a direita um pouco depois de criar Então, vamos ao movimento, adicionar uma alteração x por bloco na parte inferior do bloco de repetição e vamos alterá-la por 15. Em seguida, como a pontuação mais alta pode ser diferente, cada vez que a tela de título aparece, é aí que vamos definir as roupas para cada clone Para fazer isso, vamos primeiro aos eventos, começar um novo script Quando eu receber e receber a tela de título do programa. E aqui vamos esperar um curto período de tempo e depois trocar a roupa. Então, vamos até o Controle e introduzimos um bloco de espera, e vamos esperar 0,75 segundos. Então, podemos trazer o bloco de troca de roupas que salvamos aqui. Em vez de usar a variável de pontuação, porém, queremos usar pontuação alta, para que possamos clicar com o botão direito do mouse no bloco de pontuação e alterá-lo para pontuação alta. Também queremos definir continuamente o tamanho para o valor padrão de 60 enquanto a tela de título estiver sendo exibida porque começaremos com os dígitos um pouco maiores depois os reduziremos E não queremos que nenhuma espera aconteça antes de fazermos isso, então precisaremos fazer isso separadamente quando eu receber o script de tela do ShowTitle Então, vamos aos eventos e trazer outro quando eu receber o bloco e receber a tela de título do programa. Então, vamos controlar e introduzir um bloco eterno. E agora podemos pegar a alteração de tamanho por bloco que salvamos aqui e adicioná-la ao bloco eterno. No momento, porém, o bloco trará o tamanho de volta para 100%. Então, vamos mudar o 100 aqui para 60. Além disso, no roteiro de mudança de figurino, fazer o tamanho passar de 160 para 60 é um pouco demais. Então, no bloco de tamanho definido aqui, vamos substituir o 160 por 90. Se rodarmos o jogo agora, atualmente vemos todos os clones de dígitos, e somente o primeiro está realmente mostrando os dígitos corretos Isso está acontecendo porque estamos criando os clones ao longo sete repetições do bloco de repetição no script de bandeira verde E, como aprendemos antes, cada repetição ocorre durante um quadro separado E como o pano de fundo está transmitindo a mensagem da tela de título do programa quando a bandeira verde é clicada, quando o dígito de maior pontuação Sprite recebe a mensagem, ele criou apenas o primeiro clone Isso significa que somente o primeiro clone tem a chance de executar os scripts da tela de título do programa e mudar para a roupa correta Para corrigir isso, precisamos que o bloco de repetição execute todas as repetições durante um único quadro, que podemos fazer usando um bloco personalizado com o recurso de execução sem atualização de tela Vamos até Meus Blocos e criemos um novo. Podemos chamar isso de criar clones. Verifique a opção Executar sem atualizar a tela e clique em OK. Vamos mover o bloco de criação de clones definido para algum espaço vazio Em seguida, vamos mover o bloco de repetição do script de bandeira verde para o script de criação de clones e vamos adicionar um bloco de criação de clones na parte inferior do script e vamos adicionar um bloco de criação de clones de bandeira verde Na verdade, vamos também mover o índice definido para um bloco do script de bandeira verde para o topo dos clones de criação definidos, onde isso faz um pouco mais de sentido Se agora rodarmos o jogo, veremos apenas o número correto de dígitos e eles mostrarão corretamente a pontuação mais alta No entanto, se mudarmos para a guia de fantasias bem rápido, mudarmos para uma das roupas não vazias e rodarmos o jogo, veremos brevemente todos os clones de dígitos Para garantir que isso não aconteça, só precisamos fazer com que todos os clones comecem usando o traje vazio Para fazer isso no script de criação de clone, vamos até Looks, adicione um bloco de troca de figurino na parte superior do script e mude para o traje de dígitos Agora, se mudarmos manualmente para uma roupa diferente novamente e rodarmos o jogo, não veremos todos os dígitos extras , se clicarmos no botão Iniciar, Porém, se clicarmos no botão Iniciar, os dígitos da pontuação mais alta não desaparecerão. Para corrigir isso, quando começamos o jogo, precisamos trocar as roupas de volta para a roupa vazia. Para fazer isso, de volta ao código, vamos primeiro acessar os eventos e trazer outro quando eu receber o bloco e receber a mensagem de início do jogo. E aqui, além de trocar o traje, também podemos parar os outros roteiros. Para que o loop Forever no segundo script da tela de título do programa não continue sendo executado desnecessariamente Está bem? Então, vamos para Control, adicionar um stopblock quando eu receber Start Game e interromper outros scripts e sprites E agora podemos ir até Looks, trazer um bloco de roupas de troca e mudar para a fantasia de dígitos Isso fará com que os dígitos desapareçam pouco antes do início do jogo Se quisermos que eles desapareçam assim que clicarmos no botão Iniciar, em vez de receber a mensagem de início do jogo aqui, podemos receber a mensagem de início do jogo. Acho que parece um pouco melhor. uma maneira de melhorar a exibição da pontuação máxima No entanto, uma maneira de melhorar a exibição da pontuação máxima é que, em vez de todos os dígitos aparecerem ao mesmo tempo, podemos adicionar um pouco de atraso entre cada um para fazer isso E quando eu recebo a tela de título do programa, depois de esperar 0,75 segundos e antes de trocar a roupa, podemos usar o valor atual do índice de clones para fazer com que espere um pouco mais Para isso, vamos até Control e adicionaremos outro bloco de espera após o primeiro. Para o tempo de peso, queremos pegar o valor do índice dos clones e multiplicá-lo por algum outro valor pequeno Vamos aos operadores e adicionar um bloco de multiplicação ao segundo bloco de peso Em seguida, vamos às variáveis e vamos fazer o índice vezes 0,1. Com isso, quanto maior o índice de clones, mais tempo ele esperará antes de aparecer Então, se rodarmos o jogo agora, os dígitos aparecerão um após o outro Para ver isso ainda melhor, vamos colocar um conjunto de blocos em algum espaço vazio e definir a pontuação máxima para algo com muitos dígitos, como um, dois, três, quatro, cinco, seis Vamos clicar no bloco para definir a variável e, se agora rodarmos o jogo, podemos ver todos os seis dígitos aparecerem um após o outro Isso parece muito incrível. Tudo bem, vou definir a pontuação máxima para zero e me livrar do bloco de pontuação máxima definida. E mais uma melhoria que podemos fazer é quando o jogador morre após atingir uma nova pontuação máxima, podemos exibir um texto na tela que diz algo como uma nova pontuação máxima. Para fazer isso, primeiro precisamos criar um novo sprite para o texto Então, vamos ao botão Escolher um Sprite, clicar em Paint e chamá-lo de NWHigh Para o traje, usaremos texto branco. Então, para facilitar a visualização na tela, vamos primeiro pegar a ferramenta retângulo, escolher uma cor de preenchimento aleatória sem contorno e, em seguida, criar um retângulo grande cobrindo a área do palco da Agora vamos pegar a ferramenta de texto. Escolha branco para a cor de preenchimento. E crie algum texto. Queremos que o texto diga uma nova pontuação máxima em duas linhas separadas. Mas se pressionarmos a tecla enter para ir para a próxima linha e começar a digitar, o texto não estará centralizado Então, em vez de criar um objeto de texto com duas linhas, criaremos um objeto de texto separado para cada linha. Ok, então para o primeiro, vamos digitar novo máximo. Agora vamos pegar a ferramenta de seleção e centralizar o texto na tela. Então, vamos começar a movê-la para cima e, se mantivermos pressionada a tecla Shift, podemos mantê-la centralizada verticalmente Em seguida, mantendo pressionada a tecla Alt ou a opção, vamos clicar e arrastar o texto novamente para criar uma cópia e vamos movê-la um pouco para baixo. Em seguida, usando a ferramenta de texto, vamos alterar o texto desta para pontuação. Agora podemos pegar a ferramenta de seleção e centralizar o objeto de texto. E, se necessário, podemos usar as teclas de seta para cima e para baixo para ajustar um pouco o posicionamento. Agora vamos selecionar os dois objetos de texto e centralizar a seleção na tela. Então, enquanto pressiona Alt ou Option, vamos aumentá-las um pouco. Em seguida, daremos aos objetos de texto uma sombra preta. Para fazer isso com os dois objetos ainda selecionados, vamos copiá-los e colá-los. Vamos dar às cópias uma cor de preenchimento preta. Coloque-os um pouco para baixo e à direita dos originais e clique no botão Voltar algumas vezes para colocá-los abaixo E agora podemos nos livrar do retângulo. Está bem? Agora vamos para a guia de código. Queremos garantir que o sprite não apareça quando rodarmos o jogo pela primeira vez Então, vamos aos eventos e começar um script de bandeira verde. E aqui, vamos até Looks e traremos um esconderijo. Além disso, verifique se o sprite está centralizado no palco Então, vamos ao movimento, vamos para o bloco XY e vamos para 00. Ok, agora, para mostrar o Sprite, faremos com que o cenário transmita a mensagem quando o jogador morrer e atingir uma nova pontuação, e faremos com que o novo sprite de maior pontuação receba a mensagem e apareça no palco Para fazer isso, vamos aos eventos e trazer um bloco quando eu recebi. Vamos receber uma nova mensagem, que podemos chamar de novo High Score. Aqui, primeiro queremos mostrar o sprite. Vamos até Looks e traga um show block. Também queremos que esteja na camada frontal. Vamos dar uma olhada no bloco da camada frontal. Em seguida, vamos desbotar o sprite, que significa que precisamos fazer com que ele comece de forma transparente. Vamos adicionar um efeito definido para bloquear e definir o efeito fantasma para 100. Agora vamos controlar e repetir dez blocos. Finalmente, vamos voltar ao Looks, adicionar um efeito de alteração por bloco ao bloco de repetição e alterar o efeito fantasma em menos dez. entanto, nada disso funcionará no momento, porque o pano de fundo ainda não está transmitindo a nova mensagem de pontuação máxima Vamos ver o código do pano de fundo. Quando eu recebo a morte do jogador, queremos transmitir a nova mensagem de pontuação máxima, mas só queremos fazer isso se o jogador realmente atingir uma nova pontuação máxima Isso significa que precisaremos acompanhar se o jogador atingiu ou não uma nova pontuação máxima, o que podemos fazer usando uma variável. Vamos às variáveis e criar uma nova. Podemos chamar isso de nova pontuação máxima. E não precisamos mostrar a variável. Queremos estabelecer um novo recorde para quedas cada vez que o jogador inicia um novo jogo. Então, antes do bloqueio eterno e quando eu receber o início do jogo, vamos trazer um conjunto para bloquear e definir uma nova pontuação máxima em quedas. Em seguida, sempre que o jogador atingir uma nova pontuação máxima, queremos definir a variável como verdadeira. Isso acontece dentro do bloco eterno sempre que a pontuação é maior que a pontuação máxima. Vamos adicionar um bloco de dois conjuntos ao bloco if then aqui e vamos definir a nova pontuação máxima como verdadeira. Finalmente, e quando eu receber morte do jogador antes de fazer qualquer outra coisa, verificaremos se o jogador alcançou uma nova pontuação máxima e, em caso afirmativo, transmitiremos a nova mensagem de pontuação máxima Então, primeiro, vamos controlar e colocar um bloco se for então em algum espaço vazio. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e vamos verificar se a nova pontuação máxima é igual Se sim, vamos aos eventos, traga um bloco de transmissão e transmita uma nova pontuação máxima. Agora vamos colocar o bloco ITN na parte superior do script de morte do jogador No momento, no entanto, isso fará com que o novo texto de pontuação mais alta apareça assim que o jogador morrer. Para esperar um pouco antes de mostrar o texto, vamos voltar aos novos sprites de maior pontuação E quando eu receber uma nova pontuação máxima, vamos até Control e adicionaremos um bloco de espera de 1 segundo no topo do script. Está bem? Se agora rodarmos o jogo, marque alguns pontos e sejamos destruídos. Depois de um segundo, isso nos diz que obtivemos uma nova pontuação máxima. No entanto, quando a tela de título volta a aparecer, o texto não desaparece. Para corrigir isso, precisamos ocultar o novo sprite de alta pontuação sempre que a tela de título aparecer Para fazer isso, vamos aos eventos, começar um novo quando eu receber o script e receber a tela de título do programa. Agora só precisamos ir até Looks e trazer um esconderijo. Agora, o novo texto de pontuação máxima deve desaparecer assim que a tela de título voltar a aparecer. Tudo bem, agora que sabemos que exibição da pontuação mais alta está funcionando corretamente, podemos ir para as variáveis e ocultar a variável da pontuação mais alta. Também não adicionaremos mais clones ao jogo, então também podemos ocultar a variável total do clone Está bem? E na próxima lição, melhoraremos um pouco o campo do nosso jogo adicionando alguns efeitos sonoros e música. 61. Adicione sons e música: Para todos os efeitos sonoros e músicas que usaremos neste jogo, forneci um arquivo zip como recurso para download contendo todos os arquivos de áudio Depois de baixarmos o arquivo zip em nosso computador e descompactá-lo, podemos usar os arquivos em nosso projeto Para fazer isso, vamos primeiro ao player Sprite. Em seguida, vamos para a guia Sons. Podemos excluir o som do miado, pois, é claro, não precisaremos dele Em seguida, vamos até o botão Escolha um som e clique em Carregar som. E navegue até o local onde descompactamos os arquivos de áudio O sprite do jogador usará dois sons, o som do laser ao disparar um laser e o som do Wish, que será reproduzido na tela de título quando o jogador alternar entre as roupas Então, vamos primeiro fazer o upload do arquivo WAV a laser escolhendo-o e clicando em Abrir Em seguida, vamos trazer de volta a caixa de diálogo de upload do arquivo e também fazer o upload do woosh dot E agora podemos testar os sons clicando no botão play de cada um. Tudo bem, então para realmente começar a usar os sons do jogo, vamos para o Cetap e para a categoria de som de Blocks Como vimos anteriormente no curso, temos dois blocos para reproduzir sons. Reproduza o som até terminar, que pausará o script atual até que o som termine de ser reproduzido e iniciará o som, que permitirá que o script continue em execução enquanto o som estiver sendo reproduzido Também podemos interromper todos os sons do projeto. Podemos alterar e definir o tom dos sons ou a barra esquerda (panorâmica direita), que é a posição atual de reprodução dentro do arquivo de som Podemos apagar todas as alterações feitas nos efeitos sonoros e podemos alterar e ajustar o volume. Ok, então para o jogador Sprite, o primeiro som que tocaremos é o som Whoosh Quando o jogador troca de roupa na tela de título, e um bom lugar para reproduzir o som seria no topo, quando eu recebia a troca de roupa do jogador antes de qualquer uma das animações Não queremos pausar o script enquanto o som está sendo reproduzido Então, vamos pegar um bloco de som inicial, adicioná-lo ao topo do script e tocar o som Whoosh Se agora rodarmos o jogo, sempre que alternarmos entre roupas na tela de título, ele reproduzirá o som desejado. Muito legal. Ok. Em seguida, tocaremos o som do laser quando o jogador dispara um laser, e isso acontece no laser de disparo definido. Só queremos reproduzir o som quando realmente criamos um clone a laser Então, dentro do espaço da tecla I pressionado ou do bloco do mouse pressionado aqui, novamente, não queremos pausar o script, vamos pegar um bloco de som inicial, colocá-lo na parte inferior do bloco I e depois reproduzir o som do laser Se agora rodarmos o jogo, clicarmos no botão Iniciar e dispararmos alguns lasers, ele reproduzirá o som do laser Ok, isso é tudo para o sprite do jogador. Então, vamos passar para o próximo sprite que tem sons, que é o asteróide Vamos até a guia Sons, exclua o som pop padrão desça até Escolher um som e Escolher Carregar som. O sprite do asteróide reproduzirá apenas um único som, o som de sucesso aqui, que será reproduzido sempre que um asteróide for atingido por Quando um asteróide explode, também tocaremos um dos sons de explosão, mas faremos isso dentro dos sprites da Tudo bem, então vamos fazer o upload do arquivo WAV hit dot. O som do hit soa assim. Ok, vamos para a guia de código e tocaremos o som do hit no script de sucesso do asteróide se o asteróide ainda Então, vamos pegar um bloco inicial de batida de som e adicioná-lo ao se a saúde for maior que um bloco em algum lugar antes do bloqueio de repetição. Se jogarmos o jogo agora e atirarmos em um asteróide, ele reproduzirá o som do sucesso Quando um asteróide se divide ou é destruído, no entanto, ele ainda não emite nenhum som Quando isso acontecer, tocaremos um som de Explode, e faremos isso nos sprites de explosão Então, com o sprite de explosão selecionado, vamos até a guia Sons, exclua o som pop e faça o upload de um novo som Quando ocorrer uma explosão, tocaremos aleatoriamente o som Explode um ou o som Explode two Então, vamos primeiro fazer o upload do explode um WAV e, em seguida, fazer o upload do Explode E aqui está o som das explosões. Ok, vamos para a guia de código. Agora, quando ocorre uma explosão, sempre haverá um flash. Portanto, para reproduzir um som de explosão, só precisamos fazer isso quando um clone de flash é criado Esse será o caso. Quando eu começar como clone, sempre que o nome do traje for igual a flash, verifique se é verdadeiro, então vamos pegar um bloco de som inicial e adicioná-lo ao bloco I figurino name equals flash antes do bloco Para o som, queremos pegar a palavra explodir e juntá-la aleatoriamente com um ou dois Para fazer isso, vamos primeiro acessar os operadores e usar um bloco de junção como entrada para o bloco de som inicial. Para a primeira entrada do bloco de junção, vamos digitar a palavra explodir E para a segunda entrada, vamos selecionar um bloco aleatório e escolher 1-2. Se agora jogarmos o jogo e dividirmos ou destruirmos um asteróide, ele reproduzirá aleatoriamente um dos sons de explosão Ele também reproduz os sons quando o jogador é destruído. Incrível. Ok, a seguir, vamos escolher o sprite de captação Vamos até a aba de sons, apague o som pop e faça o upload de um novo. Sempre que o jogador pegar uma picape, jogaremos o Cletsund Então, vamos fazer o upload do arquivo. Tudo bem, vamos voltar para a guia de código. Tocaremos o som de Collect e, quando eu começar como um script de clone, aqui sempre que o sprite estiver tocando Então, vamos para a categoria de som, pegue o bloco Start Sound Collects e adicione-o ao topo do bloco If touch player Agora, sempre que coletamos um captador, ele reproduz o som de coleta Em seguida, tocaremos um som para o sprite da bomba. Então, com o sprite selecionado, vamos aos sons, exclua o padrão e faça o upload de um novo Sempre que uma bomba for ativada, tocaremos o som do fogo. Então, vamos adicioná-lo ao Sprite. Ok, e o código para o sprite da bomba, tocaremos o som do fogo e, quando eu receber o Start game, sempre que a variável ativa da bomba se tornar verdadeira Então, vamos pegar um bloco de disparo sonoro inicial e adicioná-lo ao bloco I bomb active equals true. Se agora jogarmos o jogo e coletarmos uma bomba, ela reproduzirá o som do fogo O efeito sonoro final será para quando o jogador pressionar o botão Iniciar na tela de título Então, vamos ao botão Iniciar Sprite. Na guia de sons, vamos excluir o som pop e fazer o upload de um novo som. Quando o player clicar no botão, tocaremos o som Iniciar Então, vamos fazer o upload do start dot WAv para reproduzir o som, vamos para a guia de código e faremos isso em um jogo inicial definido Então, vamos pegar um bloco inicial do som Start e adicioná-lo ao topo do script. Agora, se rodarmos o jogo e clicarmos no botão Iniciar, ele reproduzirá o som inicial. Tudo bem, para finalizar o áudio, só precisamos adicionar a música e tocaremos a música dentro do código do pano de fundo Então, primeiro, com o pano de fundo selecionado, vamos para a guia Sons Novamente, podemos excluir o som pop. Então vamos escolher um som, fazer o upload de um novo. E para a música, é claro que queremos fazer o upload de músicas com pontos WAV E aqui está uma prévia da música. Ok, agora vamos para a guia de código. Queremos começar a música assim que o jogador clicar na bandeira verde e continuar tocando até parar o jogo Isso significa que devemos começar a música no script da bandeira verde. Então, vamos adicionar um bloco de música de som inicial na parte inferior do script. Se clicarmos na bandeira verde agora, ela funcionará. Mas quando chega ao final do arquivo de música, ele simplesmente para completamente. Queremos fazer o loop da música para que ela comece a tocar novamente assim que terminar Para fazer isso, vamos tentar acessar Control, pegar um bloco eterno e enrolá-lo no bloco de som inicial Se rodarmos o jogo, isso não funcionará. E isso porque o bloco forever continua reiniciando imediatamente a música repetidamente Então, na verdade, nunca ouvimos a música. Em vez disso, o que queremos fazer é tocar a música até o fim antes de reiniciá-la E é exatamente para isso que serve o som do lugar até Don Block. Então, vamos nos livrar do bloco de som inicial, voltar ao som e adicionar uma música de som local até o Bloco D ao bloco eterno. Com isso, assim que a música terminar de tocar, o bloco forever será executado novamente reiniciando a Então, vamos tentar. Se esperarmos até que a música termine, ela imediatamente começará a tocar novamente. Excelente. Tudo bem, nosso jogo está cheio e soando muito bem Às vezes, no entanto, o player pode não querer reproduzir todo esse áudio ou pode querer reproduzir apenas a música ou apenas os efeitos sonoros. Então, começando com a próxima lição, adicionaremos alguns botões à tela de título que permitirão ao player ativar e desativar a música ou os efeitos sonoros 62. Crie as alternâncias de áudio: Para permitir que o player ative e desative os efeitos sonoros e a música, começaremos criando os botões de alternância que serão exibidos na tela de título e começaremos com a opção de efeitos sonoros Então, vamos criar um sprite para ele descendo até o botão Escolha um Sprite, clicando em pintar e chamando-o de Alternar efeitos sonoros Os botões de alternância serão brancos. Então, para facilitar a visualização ao criar as roupas, vamos primeiro pegar a ferramenta retangular, escolher preto como cor de preenchimento e sem contorno Em seguida, amplie a tela. E enquanto pressiona a tecla Shift, vamos criar um quadrado de cinco por cinco blocos. E vamos centralizar o quadrado na tela. Criaremos as outras formas dentro do quadrado. Ok, então primeiro, vamos desmarcar o quadrado. Em seguida, vamos escolher branco como cor de preenchimento. Agora vamos criar um retângulo estreito próximo ao lado esquerdo do quadrado preto e fazer com que ele tenha cerca de dois blocos de altura Queremos que o retângulo seja centralizado horizontalmente na tela, então vamos pegar a ferramenta de seleção e encaixá-la no centro e começar a movê-la de volta para centro e começar a movê-la E se mantivermos pressionada a tecla shift enquanto fazemos isso, podemos mantê-la centralizada horizontalmente Em seguida, enquanto pressiona a tecla Alt ou a opção, vamos clicar e arrastar o retângulo para criar uma cópia E enquanto pressiona a tecla Shift, vamos mover essa para a direita da outra. Queremos tornar esse retângulo mais largo. Então, usando a alça da balança no centro do lado direito, vamos estender o lado direito cerca de um quarteirão além do centro do quadrado preto. Agora vamos transformar a forma em um trapézio, tornando o lado direito mais largo que o Para fazer isso, vamos pegar a ferramenta de remodelação. Em seguida, vamos primeiro selecionar o nó superior direito. E enquanto pressiona a tecla shift, vamos movê-la para perto do topo do quadrado. Em seguida, vamos selecionar apenas o nó inferior direito, segurar a tecla shift e movê-la para baixo até perto da parte inferior do quadrado. Por fim, criaremos uma forma de onda sonora no lado direito. Para isso, vamos pegar a ferramenta de linha. Vamos usar branco para a cor do contorno. E uma largura de três deve ser boa. Agora, começando um pouco à direita da forma trapezoidal, vamos clicar e arrastar, vamos clicar e arrastar, manter pressionada a tecla Shift e criar uma linha vertical com cerca de dois blocos Se quisermos ter certeza de que está centralizado horizontalmente, podemos pegar a ferramenta de seleção, encaixar a linha no centro da tela e movê-la de volta para a direita enquanto pressionamos a tecla Shift Tudo bem, agora vamos pegar a ferramenta de remodelação, adicionar um nó bem no centro da linha e arrastá-lo para a direita linha e arrastá-lo para a enquanto pressiona a tecla shift Depois, podemos ajustar um pouco as alças para torná-las mais arredondadas. Ok, eu acho que isso parece muito bom. Agora podemos usar a ferramenta Selecionar para ajustar o posicionamento das formas, se quisermos. Também podemos selecionar todas as formas brancas e, se clicarmos nesse botão de grupo aqui em cima, ele agrupa todas as formas. Isso significa que podemos selecionar o grupo inteiro clicando em apenas uma das formas. E agora podemos mover facilmente o grupo inteiro agora para o retângulo preto; na verdade, não queremos excluí-lo E o motivo é que o arranhão só nos permite clicar nas partes de um sprite em que o traje realmente tem cor Então, se excluíssemos o quadrado, clicar entre essas duas formas brancas ou aqui não teria efeito. Isso pode ser um pouco chato para o jogador. Então, para facilitar que eles cliquem no botão, deixaremos o quadrado preto, permitindo que o jogador clique em qualquer lugar dentro do quadrado para clicar no botão. O quadrado preto, é claro, cobrirá todas as estrelas que possam estar atrás do botão, mas é tão pequeno que não será realmente perceptível. Ok, então vamos usar esse traje quando os efeitos sonoros forem ativados. Então, vamos mudar o nome para on. Também precisamos de uma fantasia para indicar que os efeitos sonoros estão desligados. Na maioria das vezes, a fantasia fora usará as mesmas formas da fantasia vestida, então podemos começar duplicando a fantasia vestida e mudando o nome para desligada Para tirar a roupa, vamos transformar as formas brancas em cinza. Agora, porque temos as formas brancas agrupadas e porque duas das formas têm apenas uma cor de preenchimento e uma tem apenas uma cor de contorno Para alterar as cores das formas, primeiro precisamos desagrupá-las. Para fazer isso com o grupo selecionado, podemos clicar no botão desagrupar aqui Agora podemos selecionar as formas individuais novamente. Vamos primeiro selecionar as duas formas à esquerda e dar a elas um preenchimento cinza médio. Em seguida, vamos selecionar a forma à direita e usar o mesmo cinza para a cor do contorno da forma Tudo bem, e para deixar ainda mais claro que os efeitos sonoros estão desativados, vamos também colocar um X vermelho em cima das formas Para fazer isso, vamos pegar a ferramenta de linha e usar vermelho puro para a cor do contorno E vamos tornar a largura um pouco mais grossa. Quatro devem funcionar. Agora, começando na parte inferior esquerda do quadrado preto, vamos clicar e arrastar. E se mantivermos pressionada a tecla shift, podemos desenhar uma linha de 45 graus até o canto superior direito do quadrado. Em seguida, vamos pegar a ferramenta de seleção e centralizar a linha. Agora, mantenha pressionada a tecla Alt ou a opção e clique na linha para duplicá-la E só precisamos virar este na horizontal ou na vertical E lá vamos nós. As roupas para o botão de efeitos sonoros Sprite estão Agora, precisamos executar etapas semelhantes para criar as roupas para o botão de alternância de música Para começar, vamos duplicar a opção de efeitos sonoros Sprite e vamos mudar o nome para alternar e vamos mudar o nome Para o traje, deixaremos o quadrado preto, mas podemos excluir o grupo de objetos brancos. Para o botão de alternância de música, desenharemos um símbolo de nota musical Para isso, vamos pegar a ferramenta circular. Use branco para a cor de preenchimento e nada para o contorno. E vamos criar uma pequena elipse na parte inferior esquerda do quadrado Agora vamos pegar a ferramenta retângulo e desenhar um retângulo fino que se sobreponha ao topo da elipse e elevá-lo até cerca de um bloco acima Em seguida, vamos pegar a ferramenta seleção e selecionar as duas formas brancas. Em seguida, vamos copiá-los e colá-los e mover as cópias um pouco para cima e para perto do lado direito do quadrado. Por fim, conectaremos as partes superiores dos dois retângulos usando outra forma retangular Então, primeiro, vamos pegar a ferramenta retangular novamente e ampliar um pouco mais Em seguida, crie um retângulo alinhado com o lado esquerdo do primeiro retângulo e sobrepondo a parte superior dele, e vamos arrastar para a direita até que ele se alinhe com o lado direito do E podemos usar a ferramenta de seleção para ajustar um pouco o posicionamento e o tamanho, se necessário. Ok, agora podemos pegar a ferramenta de remodelação e selecionar os dois nós no lado direito do retângulo horizontal E enquanto pressiona a tecla Shift, vamos arrastá-los um pouco para cima. E agora temos uma nota musical. Assim, podemos selecionar todas as formas brancas agora, agrupá-las e centralizar o grupo na tela. Também podemos pressionar opção e redimensionar um pouco o grupo, se quisermos Manter o quadrado preto será especialmente útil para esse botão, pois seria muito difícil clicar em uma das formas brancas. Tudo bem, agora para a roupa desligada, vamos primeiro copiar o grupo, depois mudar para a roupa desligada, colar o grupo e movê-lo para o lado por enquanto. Como todas as formas no grupo de notas musicais usam apenas uma cor de preenchimento, podemos alterar a cor de preenchimento do grupo como um todo. Queremos usar a mesma nota que estamos usando para as formas do botão de efeitos sonoros Então, vamos clicar no botão do conta-gotas e, em seguida, clicar em uma das formas cinza Agora podemos nos livrar dos efeitos sonoros, alternar formas, encaixar o grupo de notas musicais no centro e clicar no botão de voltar algumas vezes para colocá-lo abaixo das Ok, agora terminamos com as roupas para os dois botões de alternância de áudio Então, vamos fazer com que eles apareçam corretamente na tela de título. Vamos colocar os botões no canto inferior direito. O botão de música funcionará aqui mesmo , próximo ao canto inferior direito, e o botão de efeitos sonoros ficará logo à esquerda do botão de Agora vamos para a guia de código. Faremos com que os efeitos sonoros e a música sempre comecem ativados quando o jogador clica na bandeira verde Portanto, queremos garantir que os botões comecem usando seus próprios trajes Para fazer isso, vamos aos eventos e trazemos uma bandeira verde vencedora, clicamos em bloquear Em seguida, vamos até Looks, trazer um bloco de roupas Switch e trocar para o On Costume. E como a posição do sprite não mudará, também podemos seguir em frente e garantir que ele seja posicionado corretamente no script da bandeira verde Então, vamos entrar em movimento e introduzir um bloco Go to XY. Atualmente, estou no código para alternar efeitos sonoros Sprite e vou ajustar um pouco os valores no bloco go to Para X, usarei 185 e, para Y, usarei 160 negativos, que é a mesma posição Y que estou usando para o tecnológico de alta pontuação e o sprite de dígitos com pontuação mais alta Ok, como com os outros sprites da tela de título, desapareceremos nos botões de alternância quando a tela de título aparecer e desapareceremos ao iniciar o Além disso, como os botões esquerdo e direito o mouse sobre os botões de alternância faz com que eles cresçam e se afastar deles faça botões de alternância faz com que eles cresçam e se afastar deles com que eles encolham Então, podemos realmente acessar, por exemplo, o código do botão direito Sprite e copiar alguns scripts Queremos tanto quando eu receber tela de título Mostrar quanto quando eu receber o jogo inicial. Para mostrar a tela de título, porém, não precisamos das teclas de seta aqui embaixo. Então, antes de copiar o script, vamos retirar o bloco I pressionado com a tecla de seta direita. Em seguida, copie o resto do script para a opção de efeitos sonoros Sprite E vamos nos certificar de colocar o bloco I then de volta onde estava abaixo do I, tocando nos pontos ou no bloco do mouse E podemos copiar o script de início do jogo quando eu recebo como está. Ok, agora vamos voltar para a opção de efeitos sonoros do Sprite e reorganizar um pouco os scripts Como já estamos definindo a posição dos sprites e o script da bandeira verde, podemos nos livrar do bloco go to XY e, quando eu receber, mostrar a tela de título Tudo bem, agora, para alternar a música Sprite, vamos primeiro copiar todos esses três scripts Em seguida, vamos até o código do botão de música Sprite e limpá-lo um pouco A única alteração que precisamos fazer é no valor da entrada X no bloco go to XY. Vou usar 215 e pronto. Se agora rodarmos o jogo, os botões de alternância de áudio aparecerão com os outros sprites da tela de título E se clicarmos no botão Iniciar, os sprites desaparecerão. Incrível. Ok. E na próxima lição, faremos com que o jogador possa realmente clicar nos botões para ativar e desativar os efeitos sonoros e a música 63. Implemente a alternância de áudio: Se entrarmos na categoria de blocos de som, vimos antes que alteramos o volume e definimos blocos de volume que podemos usar para ajustar o volume dos sons que tocamos. Uma coisa importante a saber sobre esses blocos é que eles afetam apenas o volume dos sons dos sprites atuais Então, se quiséssemos, por exemplo, tornar todos os sons do sprite do player inaudíveis, poderíamos acessar o código dos sprites do player, colocar um bloco de volume definido em algum espaço vazio, alterar a entrada para zero e E se agora rodarmos o jogo, trocar a roupa não reproduz mais o som estridente. E se começarmos o jogo, disparar lasers não reproduz mais o som do laser A música e os efeitos sonoros dos outros sprites, no entanto, não são afetados em nada Para que possamos ouvir sons do sprite dos jogadores novamente, só precisamos usar um valor maior que zero para as entradas de volume definidas, como 100%, que é o padrão Se clicarmos no bloco, os sons do sprite do player agora tocam da mesma forma que antes Ok, vamos seguir em frente e nos livrar do bloco de volume definido. E o que podemos fazer é quando o player desativa os efeitos sonoros, podemos transmitir uma mensagem que faz com que todos os sprites que usam sons ajustem seu volume para E para ativar os efeitos sonoros, transmitiremos uma mensagem diferente que fará com que os sprites voltem o volume para Da mesma forma, para alternar a música, transmitiremos mensagens que fazem com que o fundo ajuste seu volume para 0% ou 100% Tudo bem, porque alternar a música será mais fácil de implementar, começaremos com Vamos ver o código do botão de alternância de música Sprite. Faremos com que o jogador possa clicar no botão de alternância de música ou pressionar uma tecla no teclado para alternar a Vamos aos eventos e vamos trazer a vitória neste Sprite, bloco clicado e um bloco pressionado com a tecla de vitória Para alternar a música, usaremos a Ok, agora queremos usar o traje de Sprites para determinar se devemos ligar ou desligá-la E como usaremos o mesmo código para o clique do WinAsprite e para o script do WinKeyPress, colocaremos o código Então, vamos ao Mblock e criemos um novo. Podemos chamá-lo de alternar e clicar em OK. Vamos mover o bloco de alternância definido para algum lugar aqui e adicionar um bloco de alternância para quando esse sprite clicou e quando MK esse sprite clicou Agora, para o script de alternância, transmitiremos uma mensagem diferente dependendo da roupa atual do sprite Então, para verificar a roupa, vamos até o Controle e trazer um bloco I then s. Para a condição, vamos até os operadores e introduzimos um bloco igual. Então vamos para Looks, adicione um bloco de fantasias ao bloco de iguais. E vamos verificar se o nome do traje é igual a on. Nesse caso, queremos transmitir uma mensagem que diga ao pano de fundo que desligue a música No entanto, também queremos trocar a roupa pela roupa desligada. Então, vamos primeiro adicionar um bloco de troca de roupa à parte se do bloco se, então é, e vamos desligar a roupa. Agora vamos aos eventos, trazemos um bloco de transmissão e vamos transmitir uma nova mensagem, que podemos chamar de desligar a música. Para a parte de Els, é claro que queremos ativar a música. Então, vamos duplicar o traje do Switch e blocos de transmissão e adicioná-los à parte dos Elts. E desta vez, queremos mudar para o traje ligado e transmitir uma nova mensagem chamada Turn Music On. Se agora rodarmos o jogo, clicar no botão de alternância de música ou pressionar a tecla mudará sua roupa Agora precisamos fazer com que isso realmente afete a música. Para fazer isso, vamos ao código do pano de fundo. E aqui queremos receber as duas mensagens de alternância de música e ajustar o volume Então, vamos trazer When I receive Blocks. Para o primeiro, vamos receber Turn music on. Em seguida, vamos tocar o som e um volume definido para o bloco de 100%. Para o outro, vamos receber, desligar a música, colocar um bloco de volume definido e configurá-lo para 0%. E com isso, se rodarmos o jogo novamente, poderemos ligar e desligar o volume da música Agora, uma coisa a ter em mente é que, mesmo que não consigamos ver um sprite no palco, é quando os scripts pressionados por teclas ainda serão executados Portanto, se clicarmos no botão Iniciar, mesmo que não possamos mais ver o botão de alternância de música, ainda poderemos pressionar a tecla para ligar e desligar a música Além disso, se morrermos e abrirmos a tela de título, o sprite de alternância de música estará usando a Tudo bem, e outra coisa a ter em conta é que o Scratch salva todas as alterações de volume que fazemos Então, se desligarmos a música, pararmos o jogo e clicarmos na bandeira verde novamente, ainda não conseguiremos ouvir a música, e agora o Sprite não está usando a Para garantir que isso não aconteça no script de bandeira verde para o pano de fundo, vamos adicionar um volume definido a 100 blocos em algum lugar antes do bloco eterno Isso fará com que o volume da música sempre comece em 100% quando clicarmos na bandeira verde. Ok, agora precisamos trabalhar na alternância dos efeitos sonoros. Para começar, vamos voltar ao código do botão de música Sprite A partir daqui, vamos primeiro copiar o script de alternância definido para o Sprite de alternância efeitos sonoros Em seguida, copie o script de clique Win this Sprite e o script de pressionamento da tecla Win Agora vamos aos efeitos sonoros Toggle Sprite e limpar Para o script de pressionar a tecla win, é claro que queremos usar uma tecla diferente. Faria sentido usar a tecla, mas como estamos permitindo que o jogador use a tecla para se mover para baixo, precisaremos usar outra coisa para alternar os efeitos sonoros Acho que uma boa alternativa seria a tecla X. Tudo bem, no script de alternância, queremos transmitir mensagens para alternar os mensagens para alternar Então, no bloco de transmissão da parte I, vamos transmitir uma nova mensagem, que podemos desligar o termo efeitos sonoros. E na parte externa, vamos transmitir uma nova mensagem chamada termo efeitos sonoros em. Ok, para que essas mensagens funcionem, queremos que todos os sprites que usam sons recebam as mensagens e ajustem seu volume adequadamente Então, vamos começar com os sprites do jogador. E aqui, vamos encontrar um espaço vazio. Então vamos aos eventos e trazemos dois blocos W que recebi. Para o primeiro, vamos receber os efeitos sonoros de ativação. Em seguida, vá para o som e coloque um volume definido para 100 blocos. Para o outro, vamos desligar os efeitos sonoros, colocar um bloco de volume definido e configurá-lo para 0%. Também queremos garantir que o volume seja redefinido para 100% quando a bandeira verde for clicada Então, vamos até o script de bandeira verde e adicionar um volume definido a 100 blocos a ele. Se rodarmos o jogo agora e desativarmos os efeitos sonoros, não ouviremos mais o som de chiado ao trocar de roupa . Também não ouviremos o som do laser ao fotografar lasers. E podemos usar a tecla X para e desativar os efeitos sonoros durante Tudo bem, agora precisamos fazer o mesmo com os sprites restantes que usam sons O próximo na lista é o asteróide sprite. Então, primeiro, a partir do código Sprite do player, vamos copiar os scripts de ativação dos efeitos sonoros e desativá-los no sprite do asteróide Então vamos ao código do asteróide Sprite, reorganizar E vamos adicionar um volume definido a 100 blocos ao script da bandeira verde. Parece que isso deve ser tudo o que precisamos fazer, mas na verdade teremos um problema. Para ver o que quero dizer, vamos rodar o jogo, desligar os efeitos sonoros e começar o Se atirarmos em alguns asteróides, ele ainda reproduz o som do sucesso A razão pela qual isso acontece é que os clones são tratados como sprites separados, eles têm sua própria configuração de volume E quando um novo clone é criado, ele não copia a configuração de volume atual dos sprites originais Portanto, se desativarmos os efeitos sonoros antes que qualquer clone de asteróide seja criado, eles não receberão a mensagem de desligar os efeitos sonoros e seu volume não será definido Para corrigir isso, podemos acompanhar a alteração do volume em uma variável. E ao criar um novo clone, podemos definir seu volume usando o valor da variável de volume Ok, então, para começar, vamos às variáveis e criar uma nova. Vamos chamá-lo de volume, e queremos fazer isso para esse sprite apenas porque criaremos uma variável de volume separada para cada sprite que usa sons e Agora, quando a bandeira verde é clicada, queremos definir a variável de volume como 100 e, na verdade, não precisamos nos preocupar com o volume do sprite de asteróide original, então podemos eliminar o volume definido como 100 no script da bandeira verde, substituí-lo por um conjunto de dois blocos de variáveis e definir a variável de volume Em seguida, no termo efeitos sonoros ativados e desativados de scripts, ainda queremos manter os blocos de volume definidos. Isso ocorre porque, se alternarmos os efeitos sonoros usando a tecla X durante o jogo, alguns clones podem já existir e queremos ter certeza de definir o No entanto, também queremos definir a variável de volume com o mesmo valor, para que possamos usá-la ao criar quaisquer clones futuros Ok, então vamos pegar um conjunto para bloquear e adicioná-lo à parte inferior dos efeitos sonoros do turno no script, e vamos definir a variável de volume. Podemos usar 100 como entrada ou podemos acessar o som e usar um bloco de volume, que obterá o volume atual do sprite E agora podemos duplicar o volume definido para o bloco de volume e adicioná-lo à parte inferior do script de desativação dos efeitos sonoros Tudo bem, agora vamos descobrir quando eu começar como um script de clone E aqui queremos definir o volume real dos clones usando o valor da variável de volume Isso funcionará porque os clones copiam os valores das variáveis originais dos sprites Então, vamos adicionar um bloco de volume definido em algum lugar antes do bloco eterno. Em seguida, vamos às variáveis e vamos definir o volume para a variável de volume. Com tudo isso, se desligarmos os efeitos sonoros , a variável de volume será definida como zero. E quando um clone for criado posteriormente, seu volume será ajustado para a variável de volume, que será zero, então não devemos ouvir o som de sucesso Ok, vamos rodar o jogo e tentar. Se desligarmos os efeitos sonoros e iniciarmos o jogo, não ouviremos mais o som de impacto ao atirar em um asteróide E podemos usar a tecla enquanto tocamos para conversar com os efeitos sonoros ligados e desligados. Excelente. No entanto, ainda ouvimos os sons de explosão, então trabalharemos no sprite de explosão a O sprite de explosão também usa clones, então precisaremos fazer as mesmas coisas que estamos fazendo com o sprite de asteróides, ou seja, definir a variável de volume para 100 quando a bandeira verde é clicada, definir o volume real e a variável de volume no termo efeitos sonoros ativados e desativar scripts e definir o volume real para a variável de volume então precisaremos fazer as mesmas coisas que estamos fazendo com o sprite de asteróides, ou seja, definir a variável de volume para 100 quando a bandeira verde é clicada, definir o volume real e a variável de volume no termo efeitos sonoros ativados e desativar scripts e definir o volume real para a variável de volume em quando eu começo como um script de clone. Ok, então vamos começar copiando o volume definido para 100 blocos do script da bandeira verde para os sprites de explosão E enquanto estamos nisso, os sprites de captação e bomba também usam sons e Então, vamos economizar algum tempo copiando o bloco para esses sprites também Agora, vamos copiar o termo efeitos sonoros dentro e fora dos scripts em todos os três sprites E, finalmente, do script Quando eu começo como um clone, vamos copiar o volume definido para o bloco de volume em todos os três sprites E certifique-se de recolocar esses blocos depois. Agora vamos ao código do sprite de explosão. Vamos colocar o volume definido no bloco de volume e , quando eu começar como um script de clone, em algum lugar antes do bloco F, depois s. Agora, vamos mover o quando recebi os scripts para algum espaço vazio e, na verdade, precisaremos criar um script com bandeira verde para o volume definido como 100 blocos. Vamos aos eventos, trazer um bloco clicado com bandeira verde e adicionar o bloco de volume definido a ele Se agora rodarmos o jogo, desligarmos os efeitos sonoros e destruirmos alguns asteróides, não ouviremos os sons de explosão Também não os ouviremos se o jogador for destruído. Tudo bem, agora precisamos fazer o mesmo com os sprites de coleta e bomba Então, vamos primeiro examinar o código do sprite de captação. Vamos colocar o volume definido no bloco de volume e, quando eu começar como clone, antes do bloco eterno Em seguida, vamos mover o quando eu receber scripts para algum espaço vazio. E adicione o volume definido ao bloco 100 ao script da bandeira verde. Então vamos ao código da bomba Sprite. Vamos colocar o volume definido no bloco de volume em algum lugar antes dos blocos de repetição. E quando eu começo como um clone, movo o quando eu recebo scripts para algum espaço vazio, inicio um script com bandeira verde e adiciono o volume definido a 100 blocos a ele Se agora rodarmos o jogo e desligarmos os efeitos sonoros, não ouviremos os sons dos captadores ou da bomba Finalmente, precisamos lidar com o som do botão Iniciar. O sprite do botão Iniciar não usa clones, então não precisamos nos preocupar em definir uma variável de volume Em vez disso, podemos ir até o Sprite do jogador e copiar, alternadamente, os scripts de ativar e desativar os efeitos sonoros, que simplesmente define o volume dos sprites Agora vamos ao botão Iniciar Sprite e reorganizar os scripts Também precisamos ter certeza de redefinir o volume para 100% quando a bandeira verde é clicada Então, vamos começar um script de bandeira verde. Em seguida, vá para o som e adicione um volume definido a 100 blocos. E agora, se rodarmos o jogo e desligarmos os efeitos sonoros, não ouviremos o som do botão Iniciar quando clicarmos nele. Incrível. E com tudo isso, terminamos oficialmente com a destruição cósmica Então, excelente trabalho, mais uma vez, completando outro jogo de raspadinha completo. E assim como com Smack So moles, se você decidir adicionar algumas coisas ao seu jogo cosmic havoc, envie-me um link porque eu adoraria dar Tudo bem. E quando você estiver pronto, vemos na primeira aula do jogo final deste curso. 64. Introdução à aventura de Glim: O jogo final que criaremos neste curso, e nosso maior jogo até agora, é um jogo de plataforma em dois D chamado Glm's Neste jogo, jogaremos como um pequeno alienígena fofo chamado Glm, que está preso em um planeta desconhecido Um cara malvado chamado Nadnarb roubou a nave espacial de Glen e, se Glen quiser sair deste planeta, ele terá que coletar todas as moedas em cada nível para recomprar cada nível No entanto, isso não será tão fácil, porque o jogador terá que superar vários inimigos e obstáculos ao longo dos níveis. Além disso, se o jogador conseguir coletar todas as moedas nos primeiros três níveis do jogo, ele ficará cara a cara com Nadnarb, que decide que quer manter a nave espacial do jogador, então o jogador terá que lutar contra ele se realmente quiser Vai ser um desafio, mas todo o trabalho árduo e esforços definitivamente valerão a pena. Tudo bem, vamos começar. 65. Carregue o projeto Starter: Para este jogo, vamos nos concentrar mais na codificação e menos na criação dos gráficos Então, eu forneci um projeto inicial que já contém todos os sprites junto com suas roupas Só precisaremos escrever o código que faça tudo funcionar. Para carregar o projeto inicial, você tem algumas opções Primeiro, forneci o arquivo do projeto como um recurso para download chamado glomsadventurstarter Se você baixar o arquivo, poderá abri-lo a partir de um novo projeto do zero acessando o menu Arquivo, escolhendo carregar do seu computador, navegando até o local do arquivo, selecionando o arquivo e clicando em Abrir. Isso abrirá uma mensagem dizendo que substituirá o conteúdo do projeto atual. É por isso que é importante garantir que façamos isso a partir de um novo projeto ou de um projeto que não queremos manter. Tudo bem, então se clicarmos em OK, ele substituirá o projeto pelo projeto inicial do Glims Adventure . Como alternativa, você pode acessar a página principal da minha conta Scratch , localizada em scratch dot mit dot EDU slash USERS SweaterCat scratch dot mit dot EDU slash USERS SweaterCat Também fornecerei um link para a página como recurso para download Na página da minha conta, em Projetos compartilhados, você deve ver um projeto chamado Glims Adventure Starter Se você clicar no projeto, você será direcionado para a página do Projeto. E aqui, se você clicar no botão de remix na parte superior, ele criará uma cópia do projeto dentro de suas próprias contas Ok, e quando tivermos o projeto inicial carregado, vamos mudar o nome para simplesmente Glims Agora vamos dar uma olhada rápida no conteúdo do projeto. Como mencionei antes, incluí todos os sprites que precisaremos para o jogo, junto com todas as suas roupas Primeiro, temos o sprite do jogador. Como acontece com todos os sprites, a área do código está vazia no momento E se dermos uma olhada na guia de fantasias, o sprite contém todas as roupas que usaremos ao longo do jogo Eles consistem principalmente em trajes para os vários estados do jogador, como inatividade, caminhada e salto E para muitos dos estados, haverá uma animação. Por exemplo, Idle tem duas roupas chamadas Idle zero e Isso significa que o estado ocioso tem uma animação de dois quadros. Então, quando o jogador está ocioso ou não está se movendo, o traje do sprites do jogador alternará continuamente entre os dois, fazendo com que o sprite pareça estar animado Da mesma forma, a animação de caminhada tem um total de seis quadros, denominados caminhada zero a caminhada cinco E conforme o jogador caminha pelo palco, o traje começa na caminhada zero, depois vai para a caminhada um, anda dois até a caminhada cinco e depois volta para a caminhada zero e repete o processo. Ok. O próximo sprite que temos é o sprite de controle Na verdade, essa não precisa de nenhuma roupa, pois vamos simplesmente usá-la para verificar se o jogador está pressionando algum controle de movimento. O próximo é o sprite de nível. Ele contém todas as plataformas quais o jogador andará ou pulará. O jogo terá um total de quatro níveis, e cada nível consistirá em várias partes dispostas em linhas e colunas, como as células de uma grade, e o jogador poderá se mover livremente colunas, como as células de uma grade, e o jogador poderá se mover livremente entre as várias partes de um nível. O traje do nível de teste aqui é apenas um traje temporário que usaremos quando começarmos a codificar o sprite do jogador Para os níveis reais que aparecerão no jogo, cada traje começa com o nível da palavra seguido pelo número do nível. Depois disso, temos um traço seguido por outro número, depois outro traço seguido por outro Esses dois números indicam a linha e a coluna em que uma parte específica de um nível aparecerá dentro da grade de níveis. linha zero estará na parte inferior da grade e o número da linha aumentará um à medida que avançarmos na grade. coluna zero estará no lado esquerdo e o número aumentará à medida que nos movemos para a direita. Assim, por exemplo, o traje de nível um traço 0-0 aparecerá na linha zero, coluna zero, canto inferior esquerdo da grade, e o traje de nível um traço 1-1 aparecerá na linha um, coluna um, então acima e à direita do nível Não se preocupe se isso estiver confuso no momento, porque tudo fará sentido quando começarmos a codificar o sprite de nível Está bem? O próximo sprite que temos é o meio ambiente. Usaremos o sprite ambiental para adicionar coisas como plantas e pedras aos níveis apenas para deixá-los bonitos Com o sprite de nível, precisaremos detectar colisões entre ele e o sprite do jogador para evitar que o sprite do jogador caia no sprite do jogador caia O sprite do ambiente, no entanto, serve apenas para ver, então vamos deixar o jogador passar direto pelos objetos É por isso que precisamos que seja um sprite separado do sprite de nível Além disso, os nomes dos trajes do sprite do ambiente correspondem exatamente aos nomes de alguns dos trajes dos sprites do nível Isso nos permitirá escolher facilmente a roupa correta para exibir para o sprite do ambiente à medida que a roupa do sprite de nível Os objetos em cada um dos trajes do ambiente também se alinham perfeitamente com os ladrilhos do traje de nível correspondente. Só para mostrar um exemplo, posso copiar todas as peças e o traje de nível 100 dos sprites de nível 100 E cole-os na fantasia de nível 100 dos sprites do ambiente fantasia de nível 100 dos sprites do E agora podemos ver que tudo está alinhado corretamente. Ok, a seguir, temos os sprites de fundo. É claro que usaremos esse sprite para criar o plano de fundo do jogo O plano de fundo consistirá em várias camadas que serão roladas com o jogador à medida que ele se move no jogo. As camadas rolarão independentemente umas das outras e em velocidades diferentes, criando um efeito de paralaxe, semelhante ao que fizemos com as camadas de estrelas no jogo cosmic O sprite líquido aqui ficará na parte inferior de cada nível do jogo, e o jogador terá que evitar cair nele, caso contrário perderá uma vida Na maioria dos níveis, o sprite líquido usará o traje de água, mas também tem um traje de lava que usaremos para o nível de chefe Em seguida, temos o sprite blackout. O sprite blackout é um grande quadrado preto que cobre todo o palco Vamos usá-lo para aumentar e diminuir o brilho da tela medida que fazemos a transição entre os diferentes níveis Em seguida, usaremos o sprite de moedas para exibir as moedas que o jogador deve coletar em cada nível As moedas terão uma animação que as fará parecer que estão girando O efeito de deslizamento inclinado e os sprites de partículas de poeira aqui são apenas alguns efeitos especiais serão adicionados a determinadas Usaremos o sprite de partículas de poeira para criar um efeito de poeira quando o jogador cair de volta no chão depois de pular e usaremos o efeito de deslizamento de inclinação quando o jogador deslizar quando o jogador deslizar Os sprites do caracol, da abelha, da mosca e do peixe serão para os inimigos que o jogador enfrentará ao longo dos níveis O jogador deve evitar os inimigos ou pular sobre eles para derrotá-los. E, como acontece com o sprite do jogador, os sprites inimigos têm roupas correspondentes aos seus vários estados, como Move e Dad, e também terão algumas Em seguida, temos o ponto de desova Sprite. O traje para isso é um retângulo preto simples e, na verdade, o tornará invisível e colocará tornará invisível e colocará clones dele em pontos diferentes em cada nível O objetivo principal deles será fazer com sempre que o jogador cair no líquido, se ainda tiver alguma saúde restante, ou reapareça no local do ponto de spa pelo qual passou mais recentemente O próximo sprite é o sprite de saída. Colocaremos um sprite de saída no final de cada nível. E uma vez que o jogador tenha coletado todas as moedas em um nível, a saída ficará ativa. Se o jogador entrar em contato com o sprite de saída, ele passará para o próximo nível Dependendo do nível, o sprite de saída será uma bandeira de uma cor escolhida aleatoriamente ou uma porta que começa fechada e se abre quando se torna ativa Em seguida, temos o sprite de bloqueio. As roupas desse sprite são basicamente peças com cadeados, e elas impedirão que o jogador acesse certas partes de alguns níveis Assim como no sprite do ambiente, os nomes das roupas correspondem à parte do nível em que os ladrilhos devem aparecer No entanto, os nomes dos trajes de Sprite com cadeado também indicam qual chave o jogador deve coletar para desbloquear e remover as peças E para as chaves que o jogador deve coletar, usaremos o sprite de chaves aqui Ok, o próximo sprite são os sprites do jump pad. Isso aumentará a altura do salto do jogador, permitindo que ele alcance partes de um nível que são muito altas para serem alcançadas normalmente. O próximo é o sprite de pausa. Usaremos o traje do botão de pausa aqui para exibir um botão de pausa no canto superior direito da fase durante o jogo Se o jogador clicar no botão Pausar, pausaremos o jogo e abriremos a sobreposição de pausa, que consistirá em botões nos quais o jogador pode clicar para continuar jogando ou sair do jogo Em seguida, temos o Sprite do coração e o sprite do contador de moedas Eles sempre aparecerão no canto superior esquerdo do palco durante o jogo. Usaremos o sprite contador de moedas para exibir o número de moedas restantes para o jogador coletar no nível atual Esse sprite consiste principalmente em roupas para os dígitos de zero a nove e funcionará de forma semelhante às exibições de pontuação que criamos nos dois jogos anteriores E com o sprite do coração, mostraremos quanta saúde o jogador tem atualmente O próximo sprite é o sprite chefe. Obviamente, usaremos esse sprite para o chefe que o jogador deve derrotar para completar o jogo Semelhante ao sprite do coração para a saúde do jogador, usaremos o sprite da barra de saúde do chefe para mostrar a saúde do Durante a luta contra o chefe, o chefe lançará foguetes que buscarão o jogador e usaremos o sprite do foguete E quando um foguete atingir o jogador, jogaremos a animação Explode, que faremos usando o sprite de explosão O próximo é o sprite de sobreposição de texto. Com esse sprite, exibiremos algum texto no primeiro e no último nível do jogo O texto explicará ao jogador o que está acontecendo e o que ele deve fazer. O próximo é o sprite da tela de título. Assim como no cosmic havoc, exibiremos uma tela de título no início do Este consistirá em um plano de fundo, o título do jogo, o botão play e alguns botões para ativar desativar a música e os efeitos sonoros Finalmente, temos o sprite da tela N. Mostraremos isso quando o jogador derrotar o chefe, informando que concluiu o jogo com sucesso Tudo bem, então, claramente, temos muito trabalho pela frente, mas vamos construir tudo passo a passo, aprendendo muitas coisas ao longo do caminho. E antes que percebamos, teremos uma plataforma ou jogo incrível e totalmente funcional . E, como sempre, começaremos deixando o jogador se movimentar pelo palco. 66. Loop de jogo e manipulação de controle: Agora, obviamente, este jogo terá muitas partes móveis. E para manter tudo funcionando corretamente, especialmente quando começarmos a detectar colisões entre os vários sprites, precisaremos controlar quando certos eventos acontecem ao longo Faremos isso com a ajuda de um loop de jogo, que será executado durante cada frame do jogo e transmitirá mensagens aos sprites, dizendo a eles o que fazer e quando fazer E como o loop do jogo controlará todos os sprites, criaremos o código para ele dentro do pano de fundo Ok, então na área de código do pano de fundo, vamos começar indo aos eventos e trazendo um bloco clicado na bandeira verde do vento E aqui vamos executar o loop do jogo. E como ele funcionará continuamente, precisaremos controlar e introduzir um bloco eterno. Agora, no jogo Loop, transmitiremos uma série de mensagens. Os sprites então receberão as mensagens e executarão determinadas ações Com a primeira mensagem, verificaremos se o jogador está pressionando alguma tecla de controle. Então, vamos voltar aos eventos e criar um bloco de transmissão. E vamos transmitir uma nova mensagem, que podemos chamar de controles de verificação. E antes de escrevermos o código para verificar os controles, vamos transmitir as outras três mensagens do loop do jogo. Esses três serão usados para atualizar os sprites. Para o primeiro, vamos trazer outro bloco de transmissão e transmitir uma mensagem chamada Atualizar um. Em seguida, transmitiremos outra, que chamaremos de Atualização 2. E, finalmente, vamos transmitir mais uma chamada Atualização três. O motivo pelo qual estamos usando três mensagens de atualização separadas fará mais sentido à medida que avançarmos. Mas, basicamente, usaremos o primeiro para verificar coisas como colisões entre o sprite do jogador e o sprite inimigo Usaremos o segundo para realizar coisas como movimentos, animações e outras ações, e usaremos o último para garantir que tudo esteja posicionado corretamente no palco Ok. Agora vamos lidar com a mensagem de verificação de controles, verificando se o jogador está pressionando algum controle para mover seu sprite, e faremos isso dentro do sprite de controle A razão para isso é principalmente para não bagunçar o pano de fundo ou o código Sprite do player Além disso, seria mais fácil adicionarmos alguns controles extras no futuro, como talvez um joystick na tela para jogadores em dispositivos móveis Tudo bem, então no código do Control Sprite, vamos começar trazendo um bloco de controles de cheque W recebi Para controlar se uma tecla de controle está sendo pressionada ou não, criaremos algumas variáveis globais. Então, vamos às variáveis e criemos uma nova. E vamos chamar isso de eixo X e torná-lo para todos os sprites O valor dessa variável será um, menos um ou zero, dependendo se o jogador está pressionando uma tecla de controle direita, uma tecla de controle esquerda ou nenhuma. Da mesma forma, vamos criar outra variável, chamá-la de eixo Y e também criá-la para todos os sprites Este terá um valor de um se o jogador estiver pressionando uma tecla de controle para cima, menos um, se estiver pressionando uma tecla de controle para baixo ou zero se não estiver pressionando uma tecla de controle para cima ou para baixo. Para definir os valores das variáveis, usaremos o mesmo truque que usamos na destruição cósmica Então, primeiro, vamos trazer um bloco definido de dois eixos X e adicioná-lo ao script quando eu receber. Para os controles corretos, verificaremos se a tecla de seta para a direita ou a tecla D estão sendo pressionadas. Então, vamos aos operadores e adicionar um bloco O ao bloco set two. Em seguida, vamos detectar e usar um bloco de pressionamento de tecla para cada uma das condições do bloco ou Para o primeiro, vamos verificar se a tecla de seta para a direita está pressionada. E para o segundo, vamos verificar se a tecla D está pressionada. Se rodarmos o jogo agora, podemos ver que o valor do eixo X é falso quando não estamos pressionando a tecla de controle direita, mas se mantivermos pressionada uma das teclas, o valor se torna verdadeiro. E, como aprendemos em cosmic havoc, scratch e outras linguagens de programação geralmente tratam um valor verdadeiro como um e um valor falso como Então, agora, para verificar se uma tecla de controle esquerda está sendo pressionada, vamos voltar às variáveis e alterar o eixo X por bloco. Se mudarmos o eixo X por zero e rodarmos o jogo, agora podemos ver que o scratch usa um ou zero em vez de dois ou falso. E agora o que queremos fazer é subtrair o valor atual do eixo X, independentemente de uma tecla de controle esquerda estar sendo pressionada ou não Então, primeiro, vamos aos operadores e adicionaremos um bloco de subtração ao bloco de mudança do eixo X. Vamos usar um zero como primeira entrada e, para a outra, podemos duplicar o bloco O aqui e verificar se a seta esquerda ou a tecla A estão sendo pressionadas Agora, se rodarmos o jogo, o valor é zero quando não estamos pressionando uma tecla de controle. É um quando pressionamos a tecla de controle direita e é negativo quando pressionamos a tecla de controle esquerda. Está bem? Agora só precisamos fazer o mesmo com os controles verticais. Então, o que podemos fazer é duplicar esses dois blocos e adicioná-los ao final do script Para isso, queremos definir e alterar a variável YxS. Para os controles para cima, vamos verificar a seta para cima e a tecla W. Para as teclas para baixo, usaremos a seta para baixo e a tecla S. Se tentarmos agora, pressionar uma tecla de controle para cima muda o eixo Y para um, e pressionar uma tecla de controle para baixo muda para negativo, e também podemos usar os controles horizontal e vertical ao mesmo tempo. Tudo bem, agora que sabemos que as teclas de controle estão funcionando corretamente, podemos acessar as variáveis e ocultar as exibições das variáveis de controle e, em seguida, usaremos as variáveis para mover os sprites do jogador 67. Adicionar movimento do jogador: Para o movimento do jogador, começaremos movendo o sprite para a esquerda e para a direita no palco Faremos isso verificando o valor do eixo X durante cada iteração do loop do jogo e, se o valor não for zero, moveremos o sprite do jogador para a esquerda ou para a direita em determinadas quantidades Para esse determinado valor, usaremos uma variável local. No código do sprite do jogador, vamos criar uma nova variável Podemos chamar isso de aceleração. E faça isso apenas para esse sprite, e podemos seguir em frente e ocultar a variável O valor da aceleração sempre permanecerá o mesmo. Então, vamos configurá-lo quando o jogador clicar na bandeira verde. Para fazer isso, vamos aos eventos e trazer um bloco clicado com bandeira verde Em seguida, vamos às variáveis e adicionamos um bloco de aceleração definido ao script de bandeira verde e vamos configurá-lo para dois. Em seguida, lidaremos com o movimento do jogador toda vez que o sprite receber a segunda mensagem de atualização Então, primeiro, vamos aos eventos e inserir um bloco quando eu receber, verificando a atualização da mensagem. Para manter tudo limpo e limpo, criaremos vários blocos personalizados para lidar com ações diferentes. Caso contrário, os scripts ficarão confusos muito rapidamente. Então, para o movimento horizontal, vamos aos blocos M e criaremos um novo. Podemos chamá-lo de lidar com movimento horizontal. E clique em OK. Vamos mover o bloco definido para algum lugar aqui e adicionar um bloco de movimento horizontal com alça quando eu receber a Atualização 2. Agora, para o movimento horizontal, no momento, vamos simplesmente pegar o valor da variável do eixo X, que novamente será um, menos um ou zero, e multiplicaremos pelo valor da aceleração Em seguida, altere a exposição dos sprites do jogador pelo resultado dessa multiplicação Então, primeiro, vamos ao movimento e vamos adicionar uma alteração x por bloco ao script de movimento horizontal da alça. Para a entrada, vamos até os operadores e introduzimos um bloco de multiplicação Então vamos às variáveis e vamos fazer o eixo X vezes a aceleração. Agora, se rodarmos o jogo, podemos mover o sprite do jogador para a esquerda e para a direita Nada muito sofisticado agora, mas pelo menos funciona. Para torná-lo um pouco melhor, porém, podemos suavizar o movimento um pouco, como fizemos em Cosmic Para fazer isso, podemos usar uma variável SpeedX para aumentar gradualmente a velocidade do jogador diminuí-la quando ele solta a tecla de movimento Então, primeiro, vamos criar uma nova variável chamada Speed x e torná-la somente para esse sprite E vamos adicionar um conjunto para bloquear ao script de bandeira verde e inicializar a velocidade x para zero Agora vamos adicionar uma alteração por bloco na parte superior do script de movimento horizontal. E vamos usá-lo para alterar a velocidade x por Xxs vezes a aceleração usando o bloco a partir daqui Se agora mudarmos exposição dos sprites pela Velocidade x e rodarmos o jogo, atualmente não há nada limitando o valor da velocidade x, então continuaremos nos movendo cada vez mais rápido enquanto pressionamos a tecla de A velocidade x também nunca volta a zero, mesmo depois de soltarmos a tecla de movimento. Para corrigir isso, precisaremos adicionar um pouco de atrito. Faça isso, vamos trazer um conjunto de dois blocos e colocá-lo logo acima do bloco espião de mudança, e vamos usá-lo para definir SpeedX para o valor atual de si mesmo multiplicado por um número decimal Isso colocará um limite superior e inferior no valor do SpeedX moverá gradualmente de volta a zero quando o jogador soltar a tecla de movimento Então, primeiro, vamos aos operadores e adicionamos um bloco de multiplicação ao bloco SpeedX definido Então, vamos voltar às variáveis e fazer SpeedX vezes, digamos Quanto mais próximo de um o valor estiver, mais rápido o sprite atingirá sua velocidade máxima e mais rápido ele parará completamente Agora, se rodarmos o jogo, a partida e a parada são um pouco mais suaves e SpeedX agora tem um limite superior de oitos e um limite inferior de oitos parece um pouco nervoso quando o sprite para. Isso ocorre porque quando o sprite está prestes a parar, estamos tentando mudar a posição usando valores muito pequenos de velocidade X, que não funciona muito bem no zero E, em qualquer caso, as posições X e Y de um sprite devem sempre ser números inteiros Se tentarmos usar um valor decimal, ele será arredondado. Portanto, para corrigir esse problema, em vez de tentar alterar X pelo valor exato de SpeedX, podemos alterá-lo pelo valor arredondado Para fazer isso, vamos até os operadores e colocar um bloco redondo em algum espaço vazio. Vamos mover o SpeedXBlock aqui para o bloco redondo e o bloco redondo para o bloco Change E agora parar acontece um pouco mais suavemente. OK. Agora podemos ir às variáveis e ocultar a variável velocidade x e, em seguida, adicionaremos um pouco de gravidade para que o jogador não flutue no ar. 68. Adicione gravidade: Para começar a trabalhar no movimento vertical, vamos até Meus Blocos e criaremos um novo bloco personalizado. Vamos chamá-lo de manipular movimento vertical e clicar em OK. Vamos mover o bloco definido para algum espaço vazio e adicionar um bloco de movimento vertical da alça quando eu receber a Atualização dois, logo após o bloco de movimento horizontal da alça. Semelhante ao movimento horizontal, criaremos uma variável de velocidade Y que usaremos para alterar a posição Y dos sprites. No entanto, também reduziremos o valor da velocidade Y de cada quadro em uma certa quantidade, que chamaremos de gravidade. Isso fará com que o sprite sempre caia na parte inferior do palco Então, primeiro, vamos às variáveis e criaremos uma nova. Podemos chamá-la de velocidade Y e criá-la apenas para esse sprite. E vamos adicionar um bloco de conjunto dois ao script de bandeira verde e usá-lo para definir a velocidade Y como zero. Em seguida, criaremos uma variável para a gravidade. Na verdade, também usaremos a gravidade para os sprites inimigos Então, tornaremos a variável de gravidade global e a definiremos dentro do código do pano de fundo Então, no código de fundo, vamos criar uma nova variável global chamada gravidade Agora vamos adicionar um conjunto para bloquear na parte superior do script da bandeira verde e vamos definir a gravidade para menos 1,5. Esse é um valor arbitrário que descobri que funciona bem para esse jogo em particular O principal é que ele precisa ser negativo para mover os sprites para baixo. Está bem? Agora vamos voltar ao código dos sprites do jogador No script de movimento vertical da alça, vamos introduzir uma alteração por bloco e usá-la para alterar a velocidade Y pela variável gravidade. Então, podemos usar a variável speed Y para alterar a posição Y do sprite indo para movimento e trazendo uma mudança Y por bloco, depois voltando às variáveis e usando um bloco SpeedY como entrada Se agora movermos o sprite do jogador para o topo do palco e rodarmos o jogo, ele cairá a uma velocidade cada vez mais rápida até o fundo entanto, agora não podemos ver o sprite dos jogadores, então vamos fazer com que ele pare de cair quando essa posição Y ficar abaixo de, digamos, menos 140 Para fazer isso, vamos controlar e adicionar um bloco if na parte inferior do script de movimento vertical. E para a condição, vamos até os operadores e trazer menos de um bloco. Agora vamos ao movimento e vamos verificar se a posição Y é menor que menos 140. Se for esse o caso, vamos colocar um conjunto Y dois blocos e configurá-lo para menos 140. Além disso, vamos às variáveis e adicionar um conjunto de dois blocos ao bloco I then, e vamos definir a velocidade Y como zero para que velocidade Y não diminua continuamente quando o jogador não está realmente caindo. Se agora movermos o sprite de volta para cima e rodarmos o jogo, ele cai até chegar perto do fundo e depois para. Tudo bem, agora podemos esconder a variável de velocidade larga e a variável de gravidade, e o próximo passo será deixar o jogador pular. 69. Deixe o jogador pular: Para fazer o sprite do jogador pular, tudo o que precisamos fazer é definir a velocidade Y para algum valor positivo sempre que o jogador pressionar uma tecla de controle para cima, e a gravidade se encarregará de trazer o sprite de volta para Então, primeiro, para o valor que usamos para definir a velocidade Y, vamos criar uma nova variável. Podemos chamar isso de força de salto e fazer isso apenas para esse sprite Vamos esconder a variável. Em seguida, vamos adicionar um conjunto de dois blocos ao script de bandeira verde. E vamos usá-lo para definir a força de salto para 12. Esse é outro número arbitrário que descobri que funciona bem com este jogo Em seguida, volte para definir o movimento vertical da alça. Antes de alterar a velocidade Y pela gravidade, verificaremos se o jogador está pressionando uma tecla de controle ascendente e, em caso afirmativo, definiremos a velocidade Y como a variável de força de salto. Então, primeiro, vamos separar todos esses blocos do script por enquanto Em seguida, vamos para o controle e adicionar um bloco I then ao script. Para verificar se o jogador está pressionando uma tecla de controle para cima, podemos verificar se a variável do eixo Y é igual a um. Então, para a condição, vamos até os operadores e trazer um bloco igual. Então vamos às variáveis e vamos verificar se o eixo Y é igual Se isso acontecer, vamos colocar um conjunto para bloquear e definir a velocidade para pular a força. Agora podemos recolocar esses outros blocos na parte inferior do script E se rodarmos o jogo, pressionar a seta para cima ou a tecla W fará com que o sprite se mova para cima e a gravidade o derrubará quando soltarmos a tecla No momento, porém, enquanto pressionarmos uma tecla de salto, o sprite continuará subindo Para corrigir isso, podemos acompanhar se o sprite está ou não no ar e definir a velocidade Y para a força de salto somente se o jogador pressionar uma tecla de salto quando ainda não estiver no Para acompanhar isso, vamos criar uma nova variável. Podemos chamá-lo no ar e fabricá-lo apenas para esse sprite. O valor do erro será zero quando o jogador não estiver no ar ou um quando ele estiver no ar. Primeiro, para garantir que o jogador possa pular no início do jogo, vamos ver o script da bandeira verde e definir o erro como zero. Em seguida, de volta ao script de movimento vertical no bloco I then, onde verificamos se o eixo Y é igual a um, só definiremos a velocidade Y como força de salto se o valor de erro for zero no momento Vamos até o controle e vamos enrolar um bloco fino I ao redor do bloco Y de velocidade definido. Para a condição, vamos até os operadores e introduzimos um bloco igual. Então, vamos voltar às variáveis e verificar se o erro é igual a zero. Agora vamos pegar um conjunto para bloquear e colocá-lo dentro do bloco de acesso IY logo após o bloco I e erro. Vamos definir o erro como um. Com isso, quando o sprite começar a pular, na próxima vez que esse bloco for executado, haverá um erro, então SpeedY não será configurado para Podemos ver que isso funciona se rodarmos o jogo e mantivermos pressionada a tecla de salto. No entanto, no momento, erro nunca volta a zero, então não podemos mais pular. Para corrigir isso dentro desse bloco fino inferior, onde impedimos que o sprite se mova, precisamos colocar outro conjunto a bloco e definir err E agora, quando o sprite chegar ao fundo, podemos pular novamente. O problema agora, porém, é que não podemos pular muito alto. Poderíamos simplesmente usar um valor maior para a variável de força de salto. Mas uma característica comum em plataformas ou jogos é permitir que o jogador mantenha pressionada a tecla de salto para aumentar a altura do salto até um certo ponto, é claro. Além disso, se pressionarmos uma tecla de salto, o sprite imediatamente pula novamente assim que chegar ao Para corrigir esses dois problemas, vamos primeiro criar uma nova variável. Vamos chamar isso de pular e fazer isso apenas para esse sprite. Usaremos a variável de salto para acompanhar há quanto tempo o jogador está pressionando uma tecla de salto Enquanto o valor estiver abaixo de um número especificado, continuaremos definindo a velocidade como largura para a força de salto. Isso permitirá que o jogador pule um pouco mais alto se segurar uma tecla de salto. Então, para começar, como de costume, vamos até o script da bandeira verde e vamos trazer outro conjunto para bloquear e definir o salto para zero Agora, de volta ao movimento vertical da alça, o bloqueio I then aqui atualmente só permite que a velocidade Y seja configurada para força de salto uma vez imediatamente após o jogador pressionar a tecla de salto Então, em vez de permitir isso apenas quando o erro for igual a zero, também permitiremos se o valor do salto for maior Para fazer isso, vamos até os operadores e colocar um bloco ou em algum espaço vazio no momento. Agora vamos usar o bloco no ar igual a zero aqui como uma das condições do bloco ou E para o outro, vamos trazer um bloco maior que. Em seguida, vamos às variáveis e vamos verificar se o salto é maior que zero Agora podemos usar isso ou bloquear como condição para o bloqueio I then. Em seguida, vamos pegar uma alteração por bloco e colocá-la dentro do bloco if then acima do bloco Y de velocidade definida, e vamos mudar o salto em um E agora só queremos definir a velocidade Y para a força de salto se o salto for atualmente menor que um determinado número Então, vamos controlar e enrolar um bloco em torno apenas do bloco Y de velocidade definida. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Agora, usando uma duplicata do bloco de salto aqui, vamos verificar se o salto é menor que sete Com isso, uma vez que começarmos a pular, erro será zero, então eu bloqueio as corridas, alterando a variável de salto 0-1 E como o salto será menor que sete, velocidade wi é configurada como força de salto Então, se continuarmos pressionando a tecla de salto, na próxima vez que pressionarmos esse bloco I, o erro será um, mas agora o salto será maior que zero, então o bloco ainda funcionará salto será de 1 a 2, o que é menor que sete, então a velocidade wi será novamente configurada para a força de salto, fazendo com que o sprite suba ainda mais Isso continuará até que o salto atinja Agora, no momento, o salto nunca voltará a zero e não poderemos pular novamente. Portanto, para que isso funcione corretamente, precisamos ter certeza de definir o salto para zero quando o jogador não estiver pressionando a tecla de salto Para fazer isso, precisaremos substituir o eixo I y igual um bloco aqui por um bloco I acho que ts. Então, primeiro, vamos até o Controle e traremos um bloco, acho que é, para algum espaço vazio. Vamos usar o eixo Y igual um bloco daqui como condição e mover os blocos de dentro do bloco ITN para a parte I do bloco I thin ts E para a parte dos LTs, vamos às variáveis, colocar um conjunto para bloquear e definir o salto para zero Então, podemos substituir o bloco ITN vazio aqui pelo novo bloco ITN ls, certificando-se de reconectar tudo Agora, se rodarmos o jogo, segurar uma tecla de salto fará com que o sprite pule mais alto E se continuarmos pressionando a tecla, a variável de salto continua aumentando, então não pulamos imediatamente novamente quando chegamos ao fundo Para pular novamente, precisamos primeiro soltar a configuração da tecla de salto, voltando para zero, depois pressioná-la novamente. Além disso, se pressionarmos e soltarmos rapidamente uma tecla de salto, o sprite não subirá tão alto No momento, podemos ocultar as variáveis no ar e no salto. E a seguir, tornaremos as coisas um pouco mais empolgantes trazendo algumas plataformas nas quais o jogador possa andar e pular. 70. Andando ao nível: Se entrarmos no sprite de nível aqui e dermos uma olhada nas roupas, mencionei brevemente, algumas lições atrás, que usaremos a roupa de nível de teste aqui para fins de teste Vamos escolher o traje do nível de teste e tornar o sprite do nível visível no palco Ok, então, se voltarmos ao código do sprite do jogador, porque o nível consiste em várias plataformas em várias alturas, não podemos simplesmente manter o sprite do jogador em uma posição Y específica, como temos feito até agora Em vez disso, precisaremos verificar continuamente se o sprite do jogador está colidindo com o sprite de nível e ajustar a posição Y do sprite do jogador para que ele pareça estar Está bem? E para manter tudo limpo e organizado, faremos isso dentro de um bloco personalizado Então, vamos ao MBloxs e criemos um novo. Vamos primeiro digitar move verticalmente B e criar uma nova entrada chamada DY Em seguida, clique em OK. Vamos mover o bloco definido até aqui. E no script de movimento vertical da alça, podemos salvar a velocidade definida Y como zero e definir um erro zero blocos e nos livrar do resto do bloco ITN aqui Vamos também deixar de lado a alteração Y pelo bloco de velocidade Y e substituí-la por um bloco de movimento vertical E para a entrada, podemos usar o bloco Y de velocidade aqui. Tudo bem, agora e defina o movimento vertical, vamos mover a mudança Y por bloco para dentro dela, e vamos mudar Y pela entrada DY Em seguida, verificaremos se o sprite do jogador está tocando o sprite do nível Na verdade, faremos isso várias vezes ao longo do código. Portanto, para evitar reescrever o código várias vezes, faremos a verificação dentro de um bloco personalizado Então, vamos criar um novo bloco. Por enquanto, usaremos o bloco apenas para verificar se estamos tocando nos sprites de nível, mas eventualmente também o usaremos para verificar se estamos tocando outros objetos sólidos, como o sprite do lock e o sprite do Vamos chamar o bloco de verificação tocando sólido e clicar em OK. Podemos mover o bloco definido para algum lugar aqui. E vamos adicionar um cheque tocando um bloco sólido na parte inferior do script de movimentação vertical Ok, e defina verificar se o jogador está tocando um sólido, precisaremos de alguma forma de deixar o script de movimento vertical saber se o jogador está ou não tocando Para isso, criaremos uma nova variável. Então, vamos às variáveis e vamos criar uma nova, chamando-a de sólida tocante E fazendo isso apenas para esse sprite, podemos seguir em frente e ocultar a variável A primeira coisa que faremos no script de verificação de tocar em sólido é colocar um conjunto para bloquear e definir o toque em sólido Isso significa que o sprite não está tocando em um sólido. Em seguida, verificaremos se o sprite está tocando o nível. Então, vamos controlar e introduzir um bloco IN. Para a condição, vamos até a detecção, coloque um bloco de ponteiro do mouse e verifique se estamos tocando no e verifique se estamos tocando Se for esse o caso, vamos às variáveis, coloque um conjunto para bloquear e defina o toque como sólido como um Isso significa que estamos tocando em um sólido. Está bem? Agora, de volta ao script move verticalmente, depois de executar a verificação tocando o bloco sólido, podemos usar a variável touch solid Para fazer isso, vamos controlar e inserir um bloqueio se, então. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se tocar em um sólido é igual Nesse caso, queremos mover o sprite do jogador um pouco para que ele não toque mais no Uma maneira de fazer isso seria mover o sprite de volta para cima de acordo com o quanto ele se moveu para baixo durante o quadro atual A quantidade movida para baixo é dada pela entrada DY, que tem o mesmo valor da velocidade Y. Então, o que podemos fazer é pegar o valor absoluto de DY e adicioná-lo de volta à posição Y do sprite. Então, se o sprite desceu em, digamos, dez passos, podemos movê-lo de volta para cima em dez passos Para fazer isso, vamos ao movimento e adicionar um bloco de alteração Y B ao bloco I then. Para a entrada, vamos até os operadores e inserir um abdômen de bloco. E queremos obter o valor absoluto de DY. Isso tornará o valor positivo, empurrando o sprite de volta para cima Também queremos definir a velocidade Y e as variáveis de erro de volta para zero. Então, vamos pegar os blocos que salvamos aqui e adicioná-los ao bloco I then. Agora vamos mover o sprite do jogador para que fique um pouco acima do chão e experimentá-lo Definitivamente, não é perfeito, mas geralmente nos mantém nas plataformas. Porém, à medida que pulamos para cima e para baixo, o sprite faz uma breve pausa perto do fundo antes Isso está acontecendo porque, se o valor de SpeedY ficar muito alto, o sprite pode passar de alguns passos acima do nível para alguns degraus no nível durante um único quadro Assim, o sprite voltará à sua posição original, alguns passos acima do nível, começará a cair novamente. No entanto, a solução é bem simples. Em vez de mover o sprite de volta para cima em toda a quantidade que ele desceu, podemos movê-lo de volta apenas um passo de cada vez até que ele não toque mais no cada vez até que ele não toque mais Então, primeiro, podemos nos livrar da alteração Y por abs do bloco DY aqui. E agora precisaremos usar um bloco de repetição até que se repita até que tocar no sólido seja igual Então, vamos ao Controle, pegue uma repetição até bloquear e coloque-a dentro do bloco if then abaixo dos dois blocos definidos. Para a condição, podemos duplicar o sólido em contato igual a um bloco aqui e alterá-lo para sólido em contato é igual a zero Dentro da repetição até o bloco, aumentaremos a posição Y em um. Em seguida, verifique se o sprite ainda está tocando o nível. Então, vamos entrar em movimento, inserir um bloco Y alteração e alterá-lo por um. Em seguida, vamos até Mblocks e colocamos um cheque tocando no bloco sólido abaixo do bloco Y de alteração. entanto, isso não funcionará no momento, porque a repetição até que o bloco esteja acontecendo vários quadros e, como a gravidade está movendo o sprite em mais de um passo em cada quadro, ele continua se movendo para baixo Para corrigir isso, precisamos fazer com que seja repetido até que bloco passe por todas as repetições em um único quadro Como vimos em cosmic havoc, podemos fazer isso usando blocos personalizados, executados sem o recurso de atualização de tela Para habilitá-lo para o script de movimentação vertical, podemos clicar com o botão direito do mouse em seu bloco de definição, escolher editar, Marcar executar sem atualizar a tela aqui e clicar em OK Se agora movermos o jogador um pouco acima do chão e rodarmos o jogo novamente, o sprite sempre ficará no topo das plataformas dos níveis e não parará mais na parte inferior de um salto Tudo bem, estamos progredindo muito bem com as colisões de nível agora, mas ainda temos alguns problemas a serem corrigidos Primeiro, se pularmos enquanto estivermos embaixo de uma plataforma flutuante baixa, passaremos direto por ela e pousaremos em cima Em segundo lugar, se entrarmos em uma parte vertical do nível, subimos imediatamente até o topo. E terceiro, podemos acessar as plataformas com diferentes partes do sprite do jogador, como braços e capacetes Resolveremos todos esses problemas nas próximas aulas. 71. Mais colisões de nível: O primeiro problema que resolveremos com as colisões de nível é fazer não possamos pular pela parte inferior das plataformas O problema agora é que presumimos que todas as colisões com o nível ocorram apenas perto da parte inferior do sprite do jogador Então, estamos subindo para sair do nível. O que também precisamos fazer é verificar se a parte superior do sprite do jogador está tocando o nível e, em caso afirmativo, moveremos o sprite um passo de cada vez para baixo até que ele não toque no Quando estamos pulando, o valor da entrada DY e do movimento vertical será positivo E quando estamos caindo ou quando gravidade está nos puxando para o nível, DY será negativo Então, basicamente, quando estamos tocando em um sólido, se o DY for positivo, queremos descer um passo de cada vez E se for negativo, queremos subir um passo. Para fazer isso, vamos controlar e colocar um bloco I then s em algum espaço vazio. Para a condição, vamos até os operadores e trazer um bloco maior que, e vamos verificar se DY é maior que zero. Isso significa que estamos pulando, então é provável que o nível esteja colidindo em algum lugar próximo ao topo do sprite, e isso significa que precisamos descer um passo de cada vez Então, vamos ao movimento, adicionar uma alteração Y por bloco à parte I e alterá-la por menos um. Para verificar o toque em um bloco sólido aqui, queremos anexá-lo à parte inferior do bloco I e depois s, pois precisamos verificar se estamos tocando em um sólido, independentemente do valor de Agora podemos mover a alteração Y em um bloco para a parte de saídas colocar tudo isso dentro da repetição até o bloco. Se agora rodarmos o jogo, as colisões com a parte inferior ainda funcionarão normalmente Mas agora, se pularmos e atingirmos o fundo de uma plataforma, isso nos impede de passar por ela. Mas se chegarmos aqui embaixo da plataforma suspensa mais baixa e pressionarmos uma tecla de salto, podemos ver que o sprite meio que fica na parte inferior da plataforma por um breve período Isso está acontecendo porque nosso salto tem menos de sete quarteirões nos scripts de movimento vertical da alça Mesmo que nossa cabeça esteja tocando a parte inferior de uma plataforma, desde que o salto seja menor que sete, ele continuará tentando mover o sprite para Para corrigir isso, se estivermos tocando em um sólido e DY for maior que zero, podemos definir o salto para um valor alto, que impedirá que o sprite tente subir Então, no script move verticalmente, vamos às variáveis e adicionamos um conjunto para bloquear à parte I do bloco In s. Agora, só precisamos definir salto para sete para que isso funcione, mas caso decidamos usar um número maior que sete posteriormente, vamos configurá-lo para algo muito alto, como 99 Agora, se rodarmos o jogo, se pularmos e nossa cabeça bater em uma plataforma, imediatamente caímos de volta ao chão, mesmo se mantivermos pressionada a tecla de pular. Outro pequeno problema que temos , porém, é que quando nossa cabeça atinge uma plataforma, somos capazes de pular novamente no ar. Isso ocorre porque atualmente estamos colocando o ar em zero sempre que tocamos o nível, independentemente de estarmos caindo ou pulando Isso nos permite pular imediatamente novamente assim que tocarmos o nível. Então, para corrigir isso, só queremos definir no ar zero se o valor de DY não for maior que zero. Podemos fazer isso movendo o conjunto no ar para o bloco zero para a parte de saídas do bloco de entrada e saída. Se tentarmos novamente, não poderemos mais pular no ar depois que nossa cabeça atingir o fundo de uma plataforma. Tudo bem Agora vamos corrigir o problema em que entrar em uma parte vertical do nível repentinamente nos move para o topo. Isso está acontecendo porque atualmente só estamos movendo o jogador para cima ou para baixo quando ele está tocando o nível Então, assim que o script de movimentação vertical perceber que estamos tocando o nível e o valor de DY não é maior que zero, ele imediatamente empurra o sprite cima até que ele não toque mais no Para evitar isso, depois de mover o sprite horizontalmente, que acontece antes de movê-lo verticalmente, queremos verificar se o lado esquerdo ou direito do sprite do jogador está tocando o nível e, se estiver, vamos movê-lo para trás um passo de cada vez até que ele não toque no Então, quando o script de movimento vertical for executado, qualquer colisão detectada será entre o nível e a parte inferior ou superior do sprite do jogador, Ok, então, para lidar com colisões ao se mover horizontalmente, vamos ao MyBlock e criar um novo Para este, vamos digitar move horizontalmente adicionando uma nova entrada chamada Certifique-se de verificar a execução sem atualizar a tela. Em seguida, clique em OK. Vamos mover o bloco definido abaixo do script de movimento horizontal da alça. E no script de movimento horizontal da alça, vamos retirar o bloco X de mudança, substituí-lo por um bloco de movimento horizontal e usar o bloco X de velocidade redonda aqui como Em seguida, podemos mover o bloco change X para o script move horizontally e alterar X pela entrada Dx Em seguida, como no script de mover verticalmente, queremos verificar se o sprite está tocando em um sólido e, em caso afirmativo, movê-lo repetidamente trás em um passo até que ele não toque Assim, podemos começar duplicando tudo no script de movimentação vertical, começando com a primeira verificação tocando bloco sólido e adicionando-a ao script de movimentação horizontal Obviamente, em vez de definir a velocidade Y como zero, queremos definir a velocidade x como zero. E em vez de usar DY aqui, queremos usar Dx E como são movimentos horizontais, não precisamos fazer nada com a variável de salto ou com a variável de erro Também precisamos mudar X em vez de Y. Então, vamos nos livrar dos blocos de mudança Y. Em seguida, vá para o movimento e adicione uma alteração X por bloco a cada parte do bloco if then s. Se o valor de DX for positivo, estamos nos movendo para a direita Então, para sair do nível, precisamos nos mover para a esquerda. Então, vamos mudar X por menos um. Caso contrário, precisamos nos mover para a direita, então mudaremos X por mais um. Ok, acho que estamos prontos para tentar. Agora, se entrarmos em uma parte vertical do nível, isso nos impede de avançar e não nos leva até o topo, ótimo. No entanto, temos um pequeno problema que atualmente não é óbvio para nós. Para ver o problema, vamos acessar a guia de fantasias para ver o nível dos sprites Agora vamos pegar uma dessas pequenas plataformas suspensas e copiá-la e colá-la. E vamos mover a cópia para baixo até que fique um pouco acima do chão Agora, vamos nos certificar de desmarcar tudo para que não movamos as coisas acidentalmente Então, vamos rodar o jogo. Se caminharmos até a parte do chão que está saliente, não podemos atravessá-la Ficar preso em pequenos solavancos como esse pode ser muito irritante Seria muito melhor deixar o jogador passar por cima dos solavancos Para fazer isso, quando colidimos com o nível enquanto nos movemos horizontalmente, antes de mover o sprite para trás para sair do nível, podemos primeiro verificar se movê-lo um pouco para cima Se sim, estamos prontos para ir. Não precisamos mover o sprite para trás. Caso contrário, vamos movê-lo de volta para onde estava e, em seguida, movê-lo para trás No script de movimentação horizontal, a primeira coisa que queremos fazer dentro de um sólido, se tocar em um sólido é igual a um bloco, é começar a mover o sprite do jogador um passo de cada vez, totalizando vez, totalizando Em cada etapa, verificaremos se o sprite está tocando o nível e, se não estiver, podemos interromper todo o script de movimento horizontal Então, para começar, vamos controlar e colocar um bloco de repetição em algum espaço vazio, e queremos repetir dez vezes. Para cada repetição, queremos mover o sprite um passo para cima Então, vamos ao movimento, introduzindo uma mudança Y por bloco e alterando-a por um. Em seguida, queremos verificar se o sprite ainda está tocando em um sólido Então, primeiro, vamos aos blocos M e colocar um cheque tocando no bloco sólido logo abaixo do bloco Y de alteração. Então, vamos até o controle e colocamos um bloco fino logo abaixo dele. Para a condição, podemos usar uma duplicata do sólido em contato igual ao bloco zero aqui. Se for esse o caso, o sprite não está mais tocando no nível e não precisamos fazer mais nada Então, interromperemos todo o script inserindo um bloco de parada e configurando-o para interromper esse script. Agora, se o bloco de repetição terminar, significa que o sprite ainda está tocando Portanto, precisaremos movê-lo para trás para sair do sólido No entanto, o sprite agora está dez degraus mais alto do que deveria, então primeiro precisamos movê-lo dez etapas para baixo Para fazer isso, basta voltar ao movimento, anexar uma alteração Y por bloco na parte inferior do bloco de repetição e alterar Y por menos dez. Agora podemos pegar tudo isso e colocá-lo bem no topo do sólido em contato I igual a um bloco, mesmo antes da velocidade definida de X a Isso ocorre porque, se conseguirmos mover o sprite sobre uma protuberância, não precisamos interromper seu movimento horizontal E agora, se rodarmos o jogo, podemos andar diretamente sobre pequenos solavancos no nível Porém, se a protuberância for superior a dez degraus, não conseguiremos andar sobre ela, que é exatamente o que queremos E isso, na verdade, também nos permite subir encostas. Eventualmente, porém, faremos com que deslizemos por uma ladeira se tentarmos caminhar sobre ela Tudo bem, podemos voltar às roupas para o nível de sprite E livre-se dessa peça extra do traje de nível de teste que adicionamos. O problema final que precisamos resolver é onde diferentes partes do sprite do jogador podem entrar no nível 72. Use a caixa de sucesso do jogador: Como estamos verificando colisões com o nível usando o traje atual do sprite do jogador, as partes do traje que estão se destacando, como braços e capacetes, também podem colidir com o Para corrigir isso, podemos mudar temporariamente para uma roupa mais simples antes de verificar se há colisões e depois voltar para uma roupa mais complicada Isso é semelhante ao que fizemos em Cosmic Havoc, onde usamos um traje de hit box mais simples ao verificar colisões entre o sprite do jogador e os asteróides Se acessarmos a aba de fantasias do sprite do jogador, na parte inferior, temos algumas roupas de quadril, uma normal e outra para quando o jogador estiver agachado, que abordaremos um pouco mais tarde Por enquanto, antes de verificar se há colisões, mudaremos temporariamente para o traje normal de quadril, que é um retângulo simples E só para mostrar qual área do sprite do jogador a caixa do quadril cobrirá, vou até a fantasia de Idle Zero e copiarei as partes da fantasia E cole-os na fantasia da caixa de quadril. Agora podemos ver que a caixa do quadril ignora os braços do sprite do jogador, assim como a maior parte do capacete Isso nos permitirá chegar mais perto de partes do nível, além de evitar que nossos braços ou capacete fiquem presos no nível Ok, então, para começar, vamos ao código Sprite do player Antes de manipular o movimento horizontal e vertical no script Quando eu receber a Atualização 2, queremos trocar a roupa dos sprites do jogador fantasia do hipbox. Na verdade, faremos isso quando o jogador receber a mensagem da Atualização 1 Isso fará sentido mais tarde , quando começarmos a verificar se há colisões entre o sprite do jogador e o inimigo e os sprites de itens colecionáveis Então, primeiro, vamos reduzir um pouco o script W I receive Update two. Em seguida, vamos aos eventos, trazer um novo bloco quando eu receber e configurá-lo para quando eu receber a Atualização 1, e tentaremos manter todos esses scripts bem limpos fazendo tudo dentro de blocos personalizados. Então, vamos até os blocos M e criemos um novo. Vamos chamá-lo de set hit box e clicar em OK. Podemos seguir em frente e adicionar um bloco de caixa de acesso definido ao script W I receive Update one. Então, vamos trazer o bloco definido de set hit box para algum lugar aqui. Como vimos anteriormente, o sprite do jogador na verdade tem duas caixas de acerto e, eventualmente, usaremos o estado do jogador para determinar qual caixa de acerto usar Mas, por enquanto, vamos usar apenas o traje normal de hit box. Então, em um conjunto definido de caixa de sucesso, vamos até Looks, trazer uma roupa de troca para bloquear e trocar a fantasia para caixa de sucesso. Agora, como o sprite recebe a mensagem de Atualização um antes da mensagem de Atualização dois, seu traje mudará para o traje de caixa de quadril antes de verificar se há colisões com o nível Tudo bem, depois de tudo isso feito, queremos voltar a usar uma roupa normal Para isso, vamos até o Mblocks e criaremos um novo bloco personalizado Vamos chamá-lo de animado e clicar em OK. Agora, vamos colocar um bloco animado na parte inferior do script Update to e mover o bloco animado definido para cá Eventualmente, usaremos o script animado para animar o traje dos Sprites Mas, por enquanto, vamos até Looks, trazer um bloco de roupas Switch e mudar para a fantasia Idle Zero Se agora rodarmos o jogo, não podemos dizer que muita coisa está diferente porque o sprite está voltando para a roupa de idle zero antes que a tela seja atualizada, mas agora os pés do sprite podem subir mais para o nível e, se subirmos até uma parte vertical do nível, podemos nos aproximar dela porque o capacete não colide mais com o Além disso, se pularmos em uma plataforma e cairmos de lado, nossos braços e capacete não se agarrarão a ela Incrível. Tudo bem, então eu sei que você provavelmente está tão cansado de ver apenas uma única roupa para o jogador Sprite quanto eu Então, a seguir, trabalharemos na animação dos sprites. 73. Correção de erros e tempo de coiote: Antes de começarmos a animar o jogador, há um bug no salto que devemos corrigir bem rápido Se pularmos em uma plataforma e começarmos a cair, poderemos pular no ar Isso acontece porque, no script de movimento vertical da alça, só configuramos a variável no ar como uma quando o jogador está pulando, mas na verdade também precisamos configurá-la como uma quando o jogador Para fazer isso, podemos mover o conjunto no ar para um bloco daqui e colocá-lo no script de movimentação vertical antes da primeira verificação ao tocar no bloco sólido E agora não podemos pular no ar depois de cair de uma plataforma No entanto, isso torna um pouco difícil pular ao sair da borda de uma plataforma. Se o sprite estiver um pouco fora da plataforma, não podemos pular Esse é um problema comum que vejo em plataforma feitos por novos desenvolvedores de jogos Uma solução para esse problema é usar algo chamado tempo de coiote. Tem o nome do coiote da série de desenhos animados Coyote e Em quase todos os episódios, enquanto persegue o corredor, o coiote corre alguns metros da beira de um penhasco antes de finalmente perceber Da mesma forma, com o tempo de coiote em uma plataforma ou jogo, podemos permitir que o jogador pule mesmo que esteja um pouco fora da borda de uma O jogador pode nem perceber que isso está acontecendo, mas parece melhor para ele e é muito menos frustrante Para implementar o tempo do coiote em nosso jogo, o que podemos fazer é, em vez de usar apenas zero ou um para a variável de erro, aumentar continuamente seu valor enquanto o jogador está no ar e permitir que ele pule, desde o valor seja menor que um pequeno número especificado Então, primeiro, no script de movimento vertical da alça, vamos retirar o bloco Nir igual zero do bloco ou aqui e colocá-lo Em seguida, vamos até os operadores, substituí-lo por um bloco menor que e vamos verificar se o erro é menor que quatro. Isso deve ser suficiente. Agora podemos nos livrar do bloco de iguais e, no script move verticalmente, vez de definir o erro como um, queremos aumentá-lo em queremos aumentá-lo Então, vamos remover o conjunto no bloco de erro daqui. Em seguida, vamos às variáveis, substituí-las por uma alteração por bloco e uma alteração no erro por uma. E vamos nos certificar de recolocar esses blocos na parte inferior do script Se mostrarmos a variável ar bem rápido e executarmos o jogo, podemos ver que ela é zero quando estamos no chão e, se pularmos, ela aumenta continuamente até atingirmos o solo novamente. Isso também acontece quando caímos de uma plataforma. E agora, se começarmos a cair da lateral de uma plataforma, ainda poderemos pular em uma fração de segundo. Isso definitivamente parece mais satisfatório. Tudo bem, podemos esconder a variável no ar novamente. E agora acho que estamos prontos para começar a animar. 74. Animações ociosas e de caminhada: Para animar, o jogador precisará acompanhar seu estado atual Se dermos uma olhada nas roupas dos sprites do jogador, possíveis estados em que o jogador pode estar são inatividade, andar, pular, cair, pousar, agachar-se, deslizar na parede e deslizar Além disso, alguns estados têm vários figurinos ou quadros de animação, e precisaremos acompanhar isso também. De volta ao código, criaremos algumas novas variáveis. Vamos chamar o primeiro estado e criá-lo somente para esse sprite Para o segundo, vamos chamá-lo de quadro NM e também criá-lo apenas para esse sprite Agora, vamos inicializar as variáveis quando a bandeira verde é clicada adicionando mais alguns blocos de conjuntos de dois blocos aos scripts da bandeira verde Vamos colocar o estado em inativo por enquanto. E vamos definir um quadro em zero. Juntar esses dois valores nos dirá qual deve ser o nome do traje atual do sprite Então, no momento, temos zero ocioso. Então, o que podemos fazer agora é voltar para definir animate. E em vez de mudar diretamente o traje para idle zero, podemos trocá-lo pelo traje fornecido pela combinação de state e num frame Para fazer isso, vamos até os operadores e adicionar um bloco de junção ao bloco de troca de roupas. Então, vamos voltar às variáveis e queremos unir o estado com um quadro. Se agora rodarmos o jogo, nada muda porque ainda estamos usando apenas a fantasia idle zero O estado ocioso, no entanto, na verdade tem dois quadros Então, para animar o player, podemos alternar um quadro para frente e para trás isso não é tão simples quanto mudar o valor de 0 a 1 a cada quadro, porque isso fará com que a animação seja executada muito rápido. Em vez disso, podemos aumentar um quadro em uma pequena fração em cada quadro Para fazer isso, vamos adicionar uma alteração por bloco na parte inferior do script animado e vamos alterar um quadro de um em 0,1 Na primeira vez que isso acontecer, porém, o bloco de fantasias do Switch procurará uma fantasia ociosa 0.1, que, obviamente, não existe Então, em vez de unir o estado com o valor exato do quadro Atom, precisamos cortar a parte decimal do quadro Atom Para fazer isso, vamos até os operadores e vamos colocar uma aba de bloco em algum espaço vazio. A função que queremos usar aqui é floor. piso corta a parte decimal de um número, deixando-nos com apenas a parte numérica inteira Então, agora podemos mover o bloco de estrutura de tom aqui para o piso do bloco e, em seguida, colocar o piso do bloco no bloco de junção. Outra coisa que queremos fazer é garantir que a estrutura do piso do tom nunca ultrapasse um, já que as roupas que estamos usando são Id zero e Id um. Para fazer isso, vamos às variáveis e colocar um conjunto de dois blocos abaixo do bloco change tom frame e fazer com que ele defina nom frame Agora vamos até os operadores e adicionar um bloco mod ao bloco set two. O que queremos fazer aqui é voltar às variáveis e modificar o valor atual do nom frame com dois Isso garantirá que o quadro nom sempre permaneça menor que dois Agora, se tentarmos, teremos uma pequena animação agradável. Podemos ver que o valor do quadro anim vai 0 a 1 0,9 em incrementos de 0,1 depois volta Tudo bem, agora vamos passar para a animação da caminhada. Para isso, precisaremos lidar com as mudanças no estado dos jogadores e faremos isso dentro de um bloco personalizado. Então, vamos ao Mbloxs e criemos um novo. Podemos chamá-lo de estado de atualização e clicar em OK. Queremos executar o script de estado de atualização antes de executar o script animado Estamos executando o script animado e quando eu recebo a atualização dois Então, para executar primeiro o script de estado de atualização, vamos pegar um bloco de estado de atualização e colocá-lo logo acima do bloco animado Agora vamos mover o bloco de estado de atualização definido aqui para algum espaço vazio. O que estamos fazendo aqui é verificar se o jogador está se movendo horizontalmente e, em caso afirmativo, definiremos o estado para Caso contrário, vamos configurá-lo como inativo. Está bem? Então, primeiro, vamos controlar e adicionar um bloco ITN s ao script Para verificar se o jogador está andando, podemos verificar se o valor absoluto da velocidade x é maior que zero. Então, vamos controlar. Use um bloco maior que como entrada e, em seguida, coloque um bloco Abso na primeira entrada do bloco maior que Agora vamos às variáveis e vamos verificar se abs da velocidade x é maior que zero. Nesse caso, mudaremos o estado para andar. Mudar o estado, no entanto, requer algumas coisas. Primeiro, é claro, precisamos colocar um conjunto para bloquear e definir o estado para andar. Mas também precisamos trazer outro conjunto para bloquear e definir um quadro para zero Isso garantirá que a nova animação funcione corretamente e comece do início. No entanto, como essa condição sempre será verdadeira enquanto o jogador estiver se movendo horizontalmente, isso fará com que o quadro Atom seja continuamente definido como zero Para corrigir isso, podemos fazer com que esses blocos sejam executados apenas se o estado atual do jogador ainda não for o novo estado, pois isso exigirá vários blocos e , como vamos vários blocos e repetir isso várias vezes ao longo do script de estado de atualização, faremos todas as mudanças de estado reais dentro de um novo bloco Então, vamos ao Mbloxs e criemos um novo. Primeiro, vamos digitar set state two. Em seguida, adicione uma nova entrada chamada Novos estados e clique em OK. Vamos mover o conjunto de dois blocos do script de estado de atualização para o script de estado definido e vamos definir a variável de estado para a nova entrada de estado. E como só queremos fazer tudo isso se o novo estado for diferente do estado atual, vamos controlar e envolver um bloco se, então em torno dos dois blocos definidos. Para a condição, vamos até os operadores e vamos primeiro trazer um bloco não, depois trazer um bloco igual. Agora vamos às variáveis e vamos verificar se o estado não é igual à entrada do novo estado. Ok, agora podemos acessar Meus Blocos e adicionar um bloco de estado definido a cada parte do Bloco de ENTRADAS e do estado de atualização. Para o primeiro, queremos definir o estado para andar e defini-lo como ocioso para o segundo No entanto, ainda não terminamos. Ainda precisamos lidar com a animação de caminhada e os scripts animados Se dermos uma olhada na guia de fantasias, a animação da caminhada tem um total de seis quadros, da caminhada zero à caminhada cinco. Isso significa que, para caminhar, em vez de modificar um quadro com dois, precisamos modificá-lo com seis Além disso, talvez queiramos usar uma velocidade diferente para a animação da caminhada. Ok, então o que podemos fazer é usar I e depois blocos para verificar o estado atual decidir como lidar com a variável nom frame Então, primeiro, vamos até o controle e, em seguida, vamos contornar a alteração e definir os blocos aqui. Isso é para o estado ocioso. Então, vamos até os operadores e usaremos um bloco igual como condição Em seguida, vamos às variáveis e verificamos se o estado é igual Agora podemos duplicar o bloco I e anexá-lo à parte inferior Para este, vamos verificar se estado é igual a andar. Nesse caso, vamos alterar o tom frame em 0,5 e, para o bloco definido, vamos usar o mod six. Agora vamos tentar. Tudo bem, uma vez que começamos a andar, mudamos para a animação de caminhada. Quando paramos, no entanto, não voltamos para a animação ociosa A menos que seja, batemos em uma parede. A razão pela qual isso está acontecendo é que, se dermos uma olhada no script move horizontally, quando nos deparamos com uma parede, definimos a velocidade x como zero, e isso faz com que o estado mude para No entanto, no script de movimento horizontal da alça, estamos constantemente reduzindo o valor do SpeedX, mas ele nunca se torna exatamente zero, a menos que batamos em uma parede Se mostrarmos a variável velocidade x e rodarmos o jogo, quando nos movermos horizontalmente e pararmos, parece que ela eventualmente se torna zero na tela, mas na verdade é um número muito pequeno, como 0,00 001 ou algo assim 0,00 001 Para corrigir isso, se voltarmos ao script de atualização do estado, em vez de definir o estado para andar, se o valor absoluto da velocidade X for maior que zero, podemos primeiro obter o valor arredondado da velocidade X e, em seguida, obter o valor absoluto disso. Então, vamos até os operadores e colocar um bloco redondo em algum espaço vazio. Em seguida, vamos mover o bloco SpeedX da aba do bloco para o bloco redondo e adicionar o bloco redondo ao bloco Abso Com isso, ele ignorará valores muito pequenos do SpeedX, levando-nos de volta ao estado ocioso quando pararmos visivelmente Na verdade, podemos usar a mesma lógica para tornar o script de movimento horizontal um pouco mais eficiente. Se o valor arredondado da velocidade X for zero, executar o bloco de movimento horizontal aqui é na verdade uma perda de tempo, pois ele não moverá o sprite Então, o que podemos fazer é fazer com que o bloco de movimento horizontal só seja o bloco de movimento horizontal executado se o valor absoluto do valor arredondado da velocidade X for maior que zero Para fazer isso, vamos primeiro controlar e enrolar um I e depois bloquear o bloco de movimento horizontal Para a condição, vamos até os operadores e trazer um bloco maior que. Então, vamos usar um abs de bloco como a primeira entrada. Agora podemos duplicar o bloco de velocidade redonda aqui e colocá-lo no abdômen do bloco E vamos verificar se é maior que zero. Se rodarmos o jogo novamente, tudo parecerá o mesmo de antes, mas agora não estamos executando o script de movimentação horizontal, a menos que estejamos realmente nos movendo horizontalmente menos que estejamos realmente nos movendo Está bem? E podemos realmente melhorar um pouco a animação de caminhada fazendo com que a velocidade da animação aumente e diminua gradualmente junto com a variável velocidade X. Isso tornará a animação mais lenta quando começarmos a caminhar e quando pararmos Para fazer isso, vamos voltar ao script animado. No bloco change tom frame aqui para o estado de caminhada, podemos usar o valor absoluto da velocidade x para determinar a velocidade da animação. Como a velocidade X pode ficar bem alta, porém, queremos usar apenas uma fração do valor. Então, primeiro, vamos adicionar um bloco de multiplicação ao bloco de alteração Então, vamos usar um abs de bloco como uma das entradas. Agora vamos às variáveis e vamos fazer abs de SpeedX vezes Agora, se rodarmos o jogo e começarmos a andar, a animação começa lenta e fica mais rápida, e também fica mais lenta quando soltamos a tecla de movimento Tudo bem, a última coisa que precisamos fazer com a animação de caminhada é fazer com que o sprite realmente fique voltado para a esquerda quando estiver andando para a esquerda , em vez de estar sempre voltado para a direita Para fazer isso, precisamos voltar ao script de movimento horizontal da alça. Vamos abrir um pouco de espaço aqui. Aqui, queremos verificar o valor da variável do eixo X. Se for zero, não queremos mudar a direção dos sprites Se for um, definiremos a direção para 90, que está voltada para a direita e, se for menos um, definiremos a direção para menos 90, que está voltada para a esquerda. No entanto, isso também gira o sprite, o que não queremos Para corrigir isso, temos três botões de alternância aqui. O padrão de tudo ao redor permite que o sprite gire 360 graus Também não giramos, impedirá que o sprite E nós temos a esquerda e a direita. Isso fará com que o sprite esteja sempre voltado esquerda ou diretamente para a direita Ok, então no script de movimento horizontal, vamos controlar e colocar um bloco se então em algum espaço vazio. Para a condição, queremos verificar se o eixo X não é igual a zero, então vamos até os operadores, trazemos um bloco não e, em seguida, trazemos um bloco igual. Agora vamos às variáveis e vamos verificar se o eixo X não é igual a zero. Para ficar na direção correta, tudo o que precisamos fazer é definir a direção dos sprites com o valor do eixo X multiplicado por 90 Então, primeiro, vamos ao movimento e adicionar um bloco de ponto e direção ao bloco I then. Em seguida, vamos aos operadores e adicionamos um bloco de multiplicação ao bloco de ponto e direção, e vamos multiplicar o eixo X por 90 Além disso, o bloco X de velocidade de alteração que estamos usando aqui na verdade não tem efeito quando o eixo X é zero, então também podemos movê-lo para o novo bloco fino I. Em seguida, podemos colocar o bloco I thin na parte superior do script e anexar todo o resto. E vamos tentar. Muito melhor. Tudo bem, terminamos com as animações de inatividade e caminhada. Então, a seguir, trabalharemos nas animações para pular e cair 75. Animações de salto, queda e terra: Se dermos uma olhada nas roupas dos sprites dos jogadores, temos três estados relacionados a pular e cair Temos que pular, cair e pousar. Usaremos o salto quando o jogador estiver pulando ou subindo no ar Usaremos o outono quando eles caírem de volta ao solo e usaremos brevemente o estado da terra quando eles pousarem novamente no solo. Além disso, observe que todos os três estados usam animações de quadro único Ok, então, de volta ao código, vamos ao script de estado de atualização. Quando o jogador estiver no ar, ele estará no estado de salto ou no estado queda, dependendo do valor da velocidade Y. Um valor positivo significa que ele está pulando e um valor negativo significa que está Então, primeiro, verificaremos se o jogador está no ar verificando se a variável Nir é maior que zero Então, vamos controlar e colocar um se for o bloco em algum espaço vazio no momento. Para a condição, vamos até os operadores e trazer um bloco maior que. Então vamos às variáveis e vamos verificar se Nir é maior que zero Agora vamos definir o estado dependendo do valor da velocidade Y. Então, vamos voltar ao controle e adicionar um bloco I thin else ao bloco I thin Para a condição, podemos duplicar o bloco maior que aqui e verificar se a velocidade Y é maior que zero Nesse caso, definiremos o estado para pular. Então, vamos para Mblocks, adicionar um bloco de estado definido à parte I e usar jump como entrada Caso contrário, vamos adicionar um bloco de estado definido à outra parte e configurá-lo para cair. Agora vamos pegar todos esses blocos e colocá-los no topo do script de estado de atualização. Agora, no momento, esse bloco inferior do ITN Ls definirá imediatamente o estado para andar ou inativo Então, o que queremos fazer é que, se o erro N for maior que zero, queremos interromper o script atual, impedindo que o bloco inferior I thin Ls seja executado. Para fazer isso, vamos controlar, adicionar um bloco de parada na parte inferior do bloco de erro IN é maior que zero e usá-lo para interromper esse script. OK. E como os estados de salto e queda usam animações de quadro único, na verdade nem precisamos fazer nada por eles no script animado Então, vamos tentar. A animação de marcha lenta e de caminhada ainda funciona e, agora, se pularmos, ela muda para o estado de salto à medida que subimos e para o estado de queda à medida que descemos Isso também funciona quando pulamos e caímos das plataformas. Uma coisa irritante, porém, é que, se usarmos o tempo do coiote, ou seja, pulamos logo após cair de uma plataforma, ele muda brevemente para a outono antes de trocar para a roupa Isso parece estranho. Como o tempo do coiote nos permite pular se o valor de erro for menor que quatro, em vez de mudar para o estado de salto ou queda, sempre que o erro for maior que zero aqui, podemos fazer isso quando for maior que três, e agora ele não mudará para o estado de quedas quando usarmos o tempo do coiote Tudo bem, tudo o que precisamos fazer agora é mudar brevemente para o estado da terra quando o jogador cair de volta no chão. Isso deve ocorrer quando o jogador está no estado de queda e a variável no ar é igual a zero. Então, para verificar isso, vamos primeiro colocar um bloco if then em algum espaço vazio. Para a condição, vamos até os operadores e trazer um bloco e. E vamos usar um bloco igual para cada condição. Agora vamos às variáveis e, de um lado, vamos verificar se estados iguais caem Para o outro lado, verificaremos se o erro é igual a zero. Se for esse o caso, vamos para os blocos M, trazer um bloco de estado definido e configurá-lo para pousar. Também queremos que você vá até o Controle, coloque um bloco de parada e interrompa esse script. Agora vamos colocar isso e, em seguida, bloquear logo abaixo do primeiro no script de estado de atualização. E vamos tentar. Quando pulamos e pousamos de volta no chão, mudamos para o estado terrestre, mas apenas para um único quadro. Provavelmente seria melhor se permanecêssemos no estado e por alguns momentos antes de passarmos para o modo inativo ou andarmos Podemos fazer isso usando a variável anim frame. Para ver o que quero dizer, vamos até o script animado e vamos duplicar o bloco if state equals walk aqui e anexá-lo Para este, queremos verificar se o estado é igual à terra. Agora vamos remover esses blocos do bloco change tom frame e vamos alterá-lo em 0,1. Também podemos nos livrar do bloco set tom frame aqui. Agora, como vimos antes, assim como os estados de salto e queda, o estado terrestre tem uma animação de quadro único. Isso significa que não queremos que o valor de nom frame alcance um ou mais Então, o que podemos fazer é voltar ao script de estado de atualização. Antes de mudar para o estado de caminhada ou inatividade, podemos interromper o script se estivermos atualmente no estado e o valor do quadro Atom for menor que 0,5 Isso nos manterá no estado e por cinco quadros. Está bem? Então, primeiro, vamos trazer outro bloco para algum espaço vazio. Para a condição, vamos até os operadores e trazer um bloco e. E vamos colocar um bloco igual em um lado e um bloco menor que no outro Agora vamos às variáveis e vamos verificar se o estado é igual a terra, quadro Atom é menor que 0,5 Se sim, vamos controlar, colocar um bloco de parada e interromper esse script. Agora, vamos colocar tudo isso logo acima da parte inferior, se então bloquear. E vamos tentar. Lá vamos nós. Tudo bem, feito isso, trabalharemos em seguida para deixar o jogador se agachar pressionando uma tecla de controle para baixo 76. Deixe o jogador agachar-se: Se dermos uma olhada novamente nas roupas de sprite dos jogadores, temos uma única fantasia para os estados agachados Este traje tem uma altura menor do que os trajes dos outros estados. O objetivo principal de se agachar é permitir que o jogador se esconda sob inimigos que voam baixo para que eles não sejam atingidos Então, com isso em mente, vamos voltar ao script de estado de atualização. Na parte superior do script, verificaremos se o jogador está pressionando uma tecla de controle e, em caso afirmativo, definiremos o estado para agachamento e, em caso afirmativo, definiremos o estado e interromperemos o resto do Eu gostaria de dar isso a você como um desafio. Então, pause o vídeo agora e veja se você consegue fazer o estado de agachamento funcionar. Ok, então, para começar, vamos colocar um bloco I e depois em algum espaço vazio. Se o jogador estiver pressionando uma tecla de controle para baixo , a variável do eixo Y será menos um. Então, para a condição, vamos primeiro ir até os operadores e trazer um bloco igual a. Em seguida, vá para variáveis e verifique se o eixo Y é igual a menos um. Se for esse o caso, iremos até meus blocos, traremos um bloco de estado definido e o configuraremos como Crouch Finalmente, vamos até Control, introduza um stop block e interrompa esse script. Agora podemos colocar tudo isso no topo do script do estágio de atualização. E se dermos uma corrida, agora podemos pressionar a seta para baixo ou a tecla S para nos agacharmos Soltar a chave nos coloca de volta no estado ocioso. Isso é muito bom, mas agora, podemos nos mover horizontalmente enquanto estamos agachados, o que é muito estranho Para corrigir isso, podemos impedir que o jogador se mova horizontalmente quando estiver agachado Para fazer isso, vamos até o script de movimento horizontal da alça. No bloco, se não, o eixo X for igual a zero aqui, podemos fazer com que a velocidade X só mude se o jogador não estiver agachado no momento Para fazer isso, vamos envolver o bloco X da velocidade de alteração com um bloco if then. Para a condição, vamos até os operadores e introduzimos um bloco de nós e, em seguida, um bloco igual Agora vamos às variáveis e vamos verificar se o estado não é igual a Crouch Vamos tentar. Agora, se nos agacharmos e tentarmos andar, ele fica voltado para a direção em que estamos tentando nos mover, mas na verdade não Se também quisermos impedir que a direção mude, podemos mover o bloco de ponto e direção aqui para este bloco, se então, bloquear também, mas vou deixar o meu como está. Agora, outro problema que temos é que atualmente podemos começar a nos agachar no ar. Isso ocorre porque um estado de atualização, sempre que pressionamos uma tecla de controle, ele nos coloca no estado agachado Em vez disso, o que queremos fazer é fazer com que só possamos mudar para o estado agachado se não estivermos no ar no momento Para fazer isso, vamos até os operadores e colocar um bloco em algum espaço vazio. Vamos mover o eixo Y igual a menos um bloco aqui para um lado do bloco e, para o outro lado, vamos colocar um bloco igual Em seguida, vamos às variáveis e verificamos se o erro é igual a zero. Se agora usarmos tudo isso como condição para nos agacharmos, não poderemos nos agachar enquanto pulamos ou caímos Tudo bem, estamos quase terminando com o estado agachado. Mas, no momento, se um inimigo voasse diretamente acima de nós, ele realmente nos atingiria. Isso ocorre porque, se usarmos as roupas, ainda estamos usando a roupa normal de quadril para detectar colisões, mesmo quando estamos agachados Em vez disso, enquanto estamos agachados, queremos usar a caixa de quadril agachada, que é basicamente uma versão mais curta da caixa que é basicamente uma versão mais curta de Para fazer isso, vamos ao script set hip box. : E aqui queremos R: E aqui queremos verificar se estamos atualmente agachados e, em caso afirmativo, mudaremos para a fantasia de caixa de quadril agachado Caso contrário, continuaremos mudando para a caixa normal do quadril. Então, vamos até o Controle e introduzimos um bloco se , então outro. Em seguida, vamos mover a roupa do switch para o bloco Hip Box na outra parte e anexá-la ao roteiro. Para a condição, podemos usar uma duplicata de um desses blocos de estado igual ao do script de estado de atualização e verificar se o estado e verificar se Nesse caso, vamos trazer uma cópia do bloco de roupas Switch e trocar para a fantasia Crouch Hip Na verdade, não podemos dizer há algo diferente no jogo no momento, mas assim que adicionarmos inimigos voadores, poderemos testá-lo. Tudo bem, nossa mecânica de jogador está funcionando muito bem Tudo o que precisamos fazer agora é adicionar o deslizamento nas encostas e o deslizamento e o salto 77. Deslizando em encostas: No momento, podemos subir e descer encostas, o que é bom, mas parece um pouco estranho como se estivéssemos flutuando no ar Então, o que faremos em vez disso é fazer com que o sprite deslize ladeira abaixo Se dermos uma olhada nas roupas, aqui embaixo, temos uma fantasia Slope Slide Zero Esse traje é quase exatamente igual ao traje de outono zero, exceto que é um pouco mais embaixo. Isso fará com que o sprite pareça estar sentado na encosta OK. E também temos um traje de sensor de inclinação aqui. É simplesmente um pequeno retângulo que usamos para determinar o ângulo da superfície em que estamos enquanto caminhamos pelo nível Se a superfície não for plana, provavelmente estamos em um declive Então, faremos com que os jogadores deslizem para baixo até atingirem uma superfície plana. Tudo bem, então, para começar, vamos voltar ao código. Primeiro, vamos ver aqui o script Quando eu receber a atualização 2. E aqui, antes de atualizar o estado e animar, verificaremos se precisamos deslizar em uma ladeira e faremos isso dentro de um bloco personalizado Então, vamos ao Mblock e criemos um novo. Podemos chamá-lo de deslizar em declive e clicar em OK. Vamos adicionar um slide no bloco inclinado logo acima do bloco de estado de atualização aqui Em seguida, vamos mover o bloco definido para algum espaço vazio. Ao decidir se devemos ou não realizar o deslizamento de inclinação, só precisamos fazer isso se o jogador estiver atualmente no chão Se eles estão no ar, então, obviamente, eles não estão em um declive Então, primeiro, vamos controlar e adicionar um bloco if ao slide em scripts de inclinação Para a condição, vamos até os operadores e trazer um bloco maior que. Então vamos às variáveis e vamos verificar se no ar é maior que zero. Se for esse o caso, o jogador está no ar e não precisamos fazer nada, então podemos voltar ao controle, colocar um stop block e interromper esse script. Em seguida, usaremos o traje do sensor de inclinação para verificar se o jogador está atualmente em uma ladeira, e também faremos isso em um bloco personalizado Então, vamos até MyBlocks e criemos um novo. Vamos chamá-lo de set slope sensor. E para este, queremos ter certeza de verificar a execução sem atualizar a tela. Em seguida, clique em OK. E vamos adicionar um bloco de sensor de inclinação definido na parte inferior do slide em scripts de inclinação Para configurar o sensor de inclinação, vamos primeiro voltar às roupas e, com a roupa do sensor de inclinação selecionada, vamos mudar a cor do quadrado para que possamos vê-lo melhor no palco Agora, se alternarmos entre o traje da caixa de acerto e o traje do sensor de inclinação, podemos ver que o quadrado do sensor de inclinação está bem na parte inferior central do sprite Isso significa que, se estivermos em uma superfície plana, o quadrado estará bem no topo da superfície. Mas se estivermos em um declive, o quadrado será um pouco mais alto que a superfície No entanto, esse também será o caso se estivermos pendurados na lateral de uma plataforma Portanto, para verificar se estamos em um declive, podemos mover o quadrado para baixo até que ele atinja a superfície Desde que a distância não seja muito pequena ou muito grande, podemos presumir com segurança que estamos em um declive Está bem? Então, vamos ver como podemos fazer isso no código. Primeiro, no script definido do sensor de inclinação, queremos ter certeza de usar o traje do sensor de inclinação Então, vamos até Looks, trazer um bloco de roupas e mudar para o sensor de inclinação Em seguida, começaremos a mover o sprite para baixo até que ele toque em um sólido e precisaremos usar uma variável para acompanhar a distância Então, vamos às variáveis e criemos uma nova. Podemos chamá-lo de sensor de inclinação e fabricá-lo apenas para este sprite Então, vamos pegar um conjunto para bloquear e adicioná-lo ao script, e vamos usá-lo para definir o sensor de inclinação para zero no início Em seguida, queremos verificar se estamos tocando em um sólido no momento Então, vamos até meus blocos e traga um cheque tocando em um bloco sólido Se não estivermos tocando em um sólido, queremos descer repetidamente um degrau até chegarmos lá Então, vamos até o Controle e repita até o bloqueio. Agora, para a condição, queremos repetir até que a variável sólida em contato seja igual No entanto, digamos que estamos pendurados em uma plataforma alta Mover o sprite para baixo cada vez demorará uma eternidade e tornará o jogo mais lento Portanto, depois de descer, digamos, 30 degraus, se ainda não estivermos tocando em um sólido, provavelmente estamos pendurados em uma borda e não precisamos continuar verificando se há uma inclinação Está bem? Então, para a condição de repetição até, vamos até os operadores e primeiro introduzimos um bloco or. E vamos usar um bloco igual para os dois lados. Em seguida, vamos às variáveis e vamos verificar se tocar no sólido é igual a um ou no sensor de inclinação é igual um ou no sensor de inclinação Até que uma dessas condições seja atendida, queremos aumentar o valor do sensor de inclinação, bem como mover o sprite um degrau abaixo Então, primeiro, vamos adicionar uma alteração por bloco à repetição até bloco e vamos mudar o sensor de inclinação por um Em seguida, vamos ao movimento, introduzindo um bloco de alteração Y B e alterando-o por menos um. Em seguida, precisamos realizar outra verificação sólida tocante. Então, vamos até MyBlocks e traga um cheque tocando em um bloco sólido Agora, após a repetição até que o bloco termine, precisamos mover o sprite de volta à sua posição Y original, bem como voltar para o traje correto de quadril Para mover o sprite de volta para cima, basta alterar sua posição Y pelo valor atual do sensor de inclinação Então, vamos ao movimento e anexar uma alteração Y por bloco na parte inferior da repetição até o bloco. Então, podemos mudar Y usando uma duplicata do bloco do sensor de inclinação aqui Se clicarmos no script, podemos ver que o quadrado desce um degrau cada vez até atingir o nível ou o sensor de inclinação se tornar 30 e, em seguida, volta imediatamente para sua posição original E, finalmente, vamos ao MyBlock e adicionaremos um bloco set hit box na parte inferior do script do sensor de inclinação definido Ainda não terminamos, mas vamos continuar rodando o jogo para garantir que as coisas estejam funcionando corretamente até o momento. Quando estamos em um declive, sensor de inclinação tem um valor maior que um e menor que Quando pendurado sobre uma borda, o valor é 30 e, quando em uma superfície plana, o valor é um. A razão pela qual não é zero é porque estamos lidando com o movimento vertical antes que a inclinação deslize Portanto, o sprite do jogador está próximo mas não está atingindo totalmente os sprites de nível Está bem? Então, no script de slide sobre inclinação, agora podemos usar o valor do sensor de inclinação Se o valor for um, estamos em uma superfície plana e, se for 30, provavelmente estamos pendurados em uma borda Então, em qualquer um desses casos, podemos parar o script. Para fazer isso, vamos primeiro controlar e adicionar um bloco de TI na parte inferior do script. Para a condição, vamos até os operadores, trazer um bloco ou e colocar um bloco menor que em um lado e um bloco igual no Em seguida, vamos às variáveis e vamos verificar se o sensor de inclinação é menor que dois, o que significa que estamos em uma superfície plana, ou se o sensor de inclinação é igual a 30, o que significa que estamos pendurados significa que estamos Se alguma dessas condições for verdadeira, vamos controlar, inserir um bloco de parada e interromper esse script. Caso contrário, estamos em um declive, então começaremos a deslizar O problema, porém, é que atualmente não sabemos em qual direção devemos deslizar. No momento, temos apenas uma única inclinação, que vai para baixo e para a direita, mas também teremos inclinações no jogo que vão para baixo e para a esquerda Portanto, precisamos determinar a direção da inclinação Além disso, agora, assim que metade do sprite ultrapassar a encosta, o sensor de inclinação detectará a inclinação e o sprite começará a deslizar prematuramente Queremos esperar até que o sprite esteja totalmente inclinado antes de começarmos a deslizar Na verdade, podemos resolver esses dois problemas com uma única técnica. Primeiro, moveremos o sprite para a esquerda alguns passos depois verificaremos se ele está tocando o nível Em seguida, vamos movê-lo para a direita a alguns passos de sua posição original e, novamente, verificar se ele está tocando o nível Se nenhum desses movimentos com que o sprite toque o nível, então ele ainda não está na encosta No entanto, se o sprite estiver em um declive que vai para a direita, mover-se para a esquerda causará uma colisão de nível, e se mover para a direita não Da mesma forma, se a inclinação for para a esquerda, mover-se para a direita causará uma colisão de nível e se mover para a esquerda não Ok, então vamos começar criando uma nova variável para manter a direção da inclinação Então, vamos às variáveis e criamos uma nova, chamando-a de slope dr e tornando-a somente para esse sprite A primeira coisa que queremos fazer é definir a inclinação dur como zero. Então, vamos trazer um conjunto para bloquear. E vamos realmente colocá-lo acima da parte inferior do bloco fino aqui, porque se não estivermos em um declive, a direção deve ser zero E vamos usar o bloco para definir a inclinação dur em zero. Em seguida, se ainda não paramos o script, moveremos alguns passos para a esquerda e verificaremos se estamos tocando em um sólido Para fazer isso, vamos ao movimento, uma alteração X por Bloco e alterá-la por menos dois. Então vamos até MyBlocks e traga um cheque tocando em um bloco sólido Se estivermos tocando um sólido, estamos em uma inclinação voltada para a direita, então definiremos a inclinação DR Então, primeiro, vamos controlar e introduzir um bloco ITN. E para a condição, vamos até os operadores e trazer um bloco igual. Em seguida, vá para variáveis e verifique se tocar em um sólido é igual Nesse caso, vamos colocar um conjunto de dois blocos e definir a inclinação d como um Em seguida, queremos fazer uma verificação semelhante, exceto que moveremos o sprite duas etapas à direita de sua localização original E se estivermos tocando um sólido, estamos em uma inclinação voltada para a esquerda, então definiremos a inclinação DR O que podemos fazer é primeiro duplicar todos esses blocos, começando pelo bloco X de alteração e anexando-os à parte inferior. Para mover o sprite duas etapas à direita de sua localização original, podemos alterar X E agora, se estivermos tocando em um sólido, definiremos a inclinação DR como menos Tudo bem. Agora, se depois de toda essa inclinação, o DR ainda for zero, então o sprite ainda não está totalmente inclinado, então não faremos Caso contrário, estamos em uma ladeira, então vamos deslizar para baixo Primeiro, porém, queremos colocar o sprite de volta em sua localização original Então, vamos ao movimento, introduzindo uma alteração x por Bloco e alterando-a por menos dois. Em seguida, garantiremos que a inclinação du não seja igual a zero. Então, vamos primeiro controlar e introduzir um bloqueio se, então. E para a condição, vamos até os operadores, trazer um bloco não e um bloco igual. Em seguida, vá para variáveis e verifique se a inclinação dur não é igual a zero Se for esse o caso, podemos definir o estado do jogador como slide inclinado No entanto, também precisamos nos certificar de que estamos voltados na direção correta. Isso ocorre porque podemos estar tentando subir da parte inferior da encosta, então precisaremos virar a direção dos sprites antes de deslizar para antes Para fazer isso, vamos ao movimento. E adicione um bloco de ponto e direção ao bloco if then. Para obter a direção do sprite, basta multiplicar a direção da inclinação Então, vamos aos operadores e adicionamos um bloco de multiplicação ao bloco de ponto e direção Então, podemos usar uma duplicata do bloco DR de inclinação aqui e multiplicá-la Agora podemos ir para M Blocks, adicionar um bloco de estado definido ao bloco if then e configurá-lo para o slide de sublinhado inclinado Precisamos ter certeza de usar essa grafia exata para que corresponda ao traje do slide inclinado Tudo bem agora, para que isso funcione, precisamos fazer algumas coisas no script de estado de atualização. Primeiro, no início do script, verificaremos se estamos no estado de deslizamento inclinado Então, vamos controlar e colocar um bloco IN em algum espaço vazio. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se o estado é igual à inclinação Novamente, certifique-se de usar a grafia correta. Em seguida, queremos verificar a inclinação do valor. Se não for igual a zero, ainda estamos em um declive Isso significa que queremos permanecer no estado de inclinação, então vamos interromper o script Caso contrário, deixaremos o script continuar em execução, o que nos levará para um estado diferente. Está bem? Então, vamos voltar ao controle e colocar um bloco if then dentro do bloco atual. E para a condição, vamos até os operadores e trazer um bloco de nós Em seguida, um igual é bloqueado. Agora podemos ir às variáveis e verificar se a inclinação DR não é igual a zero Se for esse o caso, vamos controlar. Coloque um bloco de parada e interrompa esse script. Tudo bem, vamos colocar tudo isso no topo do script de estado de atualização e tentar. Agora, permanecemos no estado de deslizamento de inclinação sempre que estamos em um declive e nos mover para uma superfície plana nos leva ao estado de caminhada Legal. Em seguida, queremos fazer com que o sprite deslize pela encosta automaticamente Para fazer isso, vamos até o script de movimento horizontal da alça. Na parte superior do script, primeiro verificaremos se estamos atualmente no estado de slide inclinado Então, vamos colocar um bloco if then em algum espaço vazio por enquanto. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se o estado é igual ao slide de inclinação. Há algumas coisas que queremos fazer aqui. Primeiro, queremos mover o sprite na direção da inclinação Para mover o sprite horizontalmente, alteramos a variável velocidade X. Então, vamos introduzir uma mudança por Block e alterar o SpeedX. Para alterar o valor, podemos pegar a variável de aceleração e multiplicá-la pela variável de inclinação Dur Então, vamos aos operadores e adicionar um bloco de multiplicação ao bloco X da velocidade de mudança Em seguida, volte às variáveis e faça inclinação do tempo de aceleração. Em seguida, queremos impedir que o jogador se mova manualmente Caso contrário, eles poderão subir a encosta. Para fazer isso, podemos colocar um conjunto para bloquear e definir o eixo X como zero. Isso garantirá que pressionar uma tecla de controle horizontal não tenha efeito. Agora podemos colocar isso na parte superior do script de movimento horizontal e experimentá-lo. Ok, agora nós realmente deslizamos pela encosta e não conseguimos subir a encosta No entanto, o deslizamento é um pouco irregular. Isso acontece porque a gravidade não é forte o suficiente para nos manter na encosta o tempo todo Para corrigir isso, precisamos garantir que o sprite esteja sempre descendo o suficiente para tocar a encosta E como isso está relacionado ao movimento vertical, faremos isso dentro do script de movimento vertical da alça. Assim como no movimento horizontal, primeiro queremos verificar se estamos no estado de deslizamento inclinado Então, vamos controlar e colocar um bloco INN em algum espaço vazio. E para a condição, podemos usar uma duplicata do bloco deslizante de inclinação igual ao estado horizontais da alça Para mover o sprite para baixo o suficiente, podemos pegar o valor do sensor de inclinação e subtraí-lo do valor Y da velocidade atual E outra coisa que queremos fazer é evitar que o jogador pule ou se agache enquanto desliza. Portanto, podemos começar duplicando esses dois blocos no estado I igual a inclinação do bloco deslizante e lidar com o movimento horizontal e adicioná-los ao nosso novo Mas desta vez, queremos mudar a velocidade Y e queremos alterá-la pelo valor negado do sensor de inclinação para que possamos nos livrar do bloco de aceleração aqui e substituí-lo por um negativo e multiplicá-lo pela variável do sensor de inclinação E aqui queremos definir o eixo Y como zero. Agora vamos mover o bloco I then para o topo do script de movimento vertical e experimentá-lo. Incrível. Agora nos mantemos na encosta enquanto deslizamos para baixo. Tentar subir de baixo, porém, fica meio louco. Para corrigir isso, podemos fazer com que o sprite deslize um pouco pelo chão antes de sair do estado de deslizamento inclinado Para fazer isso, vamos até o script de estado de atualização. E aqui estamos parando somente se inclinação DU não for igual a zero Então, assim que saímos da encosta, mudamos imediatamente para um novo estado Então, o que podemos fazer em vez disso é verificar o valor absoluto da velocidade x e, se for maior que, digamos, 0,5, pararemos o script. Isso fará com que o sprite continue deslizando por um curto período de tempo depois de chegar ao fundo da encosta Então, para fazer isso, vamos pegar um bloco se o bloco e colocá-lo logo abaixo do bloco se não inclinado dr é igual a zero, certificando-se de que ele esteja dentro do bloco deslizante de estado if equals slope certificando-se de que ele esteja dentro do estado if equals Para a condição, vamos até os operadores e primeiro trazer um bloco maior que. Em seguida, coloque um abdômen bloqueado no lado esquerdo. Agora vamos às variáveis e vamos verificar se o abs da velocidade X é maior que 0,5. Se sim, vamos controlar, colocar um bloco de parada e interromper esse script. E vamos tentar. Incrível. Agora, deslizamos um pouco mais na parte inferior. No momento, porém, temos que esperar até terminarmos completamente de deslizar antes de podermos pular Provavelmente seria melhor deixar o jogador pular assim que chegar ao fundo. Para fazer isso, podemos fazer com que só paremos o script aqui se o valor absoluto da velocidade x for maior que 0,5 e a variável de salto for igual a zero Quando pular é igual a zero, o jogador não está tentando pular, então permaneceremos nos estados de deslizamento da inclinação Caso contrário, permitiremos que o script nos mude para os estados de salto. OK. Então, primeiro, vamos até os operadores e colocar um bloco A em algum espaço vazio. Então, vamos mover o abs da velocidade x maior que 0,5 bloco para um lado do bloco A e usar o bloco A como a nova condição. Para o outro lado do bloco A, vamos colocar um bloco igual. Em seguida, vá para variáveis e verifique se pular é igual a zero. entanto, isso não funcionará no momento, porque se voltarmos ao script de movimento vertical da alça, evitaremos que o jogador pule, desde que esteja no estado de deslizamento inclinado Em vez disso, só queremos realizar esses dois blocos se a inclinação DR também não for igual a zero Então, novamente, vamos até os operadores e colocar um bloco A em algum espaço vazio, mover o bloco deslizante de inclinação igual ao estado para o bloco A e usar o bloco A como a nova condição Para o outro lado, vamos colocar um bloco de nós e um bloco igual Em seguida, vá para variáveis e verifique se inclinação du não é igual a zero Com isso, só evitaremos que o jogador pule se ele estiver realmente em uma ladeira e não deslizando em uma Está bem? Acho que estamos prontos para tentar. Agora podemos pular assim que chegarmos ao fundo de uma ladeira. Excelente. E só para garantir que tudo funcione corretamente com as inclinações voltadas para a esquerda, vamos selecionar o nível do sprite, mudar sua direção para menos 90 e definir seu tipo de rotação para a esquerda e para a direita Então experimente. Perfeito. Tudo bem, vamos mudar a direção do nível de volta para 90. E finalmente terminamos com o deslizamento da encosta. Essa foi definitivamente desafiadora. Mas, felizmente, agora estamos quase terminando a mecânica do jogador e guardamos o melhor para o último deslizamento e salto na parede 78. Deslizando nas paredes: Quando o jogador pula contra uma parede, em vez de pará-lo imediatamente e jogá-lo de volta no chão, vamos deixá-lo se agarrar à parede e deslizar lentamente E enquanto deslizamos pela parede, vamos deixá-los pular. Isso permitirá que eles pulem de uma parede para outra que possa estar próxima. Se usarmos as roupas do sprite dos jogadores, temos uma fantasia aqui embaixo para os estados deslizantes da parede Essa fantasia fará com que o sprite pareça estar agarrado à parede enquanto desliza por ela Ok, então, para começar, vamos ao código e ao script Quando eu receber a Atualização 2. E aqui vamos adicionar um novo bloco personalizado para lidar com o deslizamento da parede Então, vamos até MyBlocks e criemos um novo. Vamos chamá-lo de deslizar na parede e clicar em OK. Agora vamos adicionar um slide no bloco de parede ao script Atualizar para. Não importa se primeiro deslizamos em declive ou deslizamos na parede, desde que façamos ambos após os blocos de movimento e antes do bloco de estado de atualização Tudo bem, agora vamos pegar o slide definido no bloco de parede e movê-lo para algum espaço vazio. Ok. Para deslizar na parede, o jogador deve estar no ar e se movendo em direção à parede. E se eles ainda estiverem pressionando a tecla de movimento horizontal enquanto caem no chão, começaremos a deslizar a parede Faremos isso dessa forma porque o jogador nem sempre quer deslizar na parede toda vez que bate em uma parede, pois isso pode atrasá-lo e ser muito irritante Desde que soltem a tecla de movimento horizontal antes de começarem a cair, não deslizarão na parede. Com isso em mente, no script do slide na parede, primeiro verificaremos se o jogador está no ar e caindo. Para fazer isso, vamos controlar e inserir um bloco if then. Para a condição, vamos até os operadores e trazer um bloco e. Por um lado, vamos colocar um bloco maior que. E para o outro lado, vamos primeiro trazer um bloco não, depois trazer um bloco maior que. Agora vamos às variáveis e vamos verificar se o erro é maior que zero. E a velocidade Y não é maior que zero. Isso garantirá que o sprite esteja atualmente no ar e comece a cair no chão Em seguida, precisamos ter certeza de que o jogador ainda está pressionando a tecla de movimento horizontal e se o sprite está realmente próximo a uma parede Para fazer isso, basta alterar a exposição do sprite usando o valor atual do eixo X e verificar se o sprite está tocando um sólido Então, primeiro, vamos começar e introduzir uma mudança X por bloco. Em seguida, vamos às variáveis e alteramos o eixo X pelo X. Com isso, se o sprite já estiver contra a parede e o jogador continuar tentando se mover em direção à parede, isso empurrará o sprite contra a parede, provocando uma colisão a parede, provocando Para verificar a colisão, vamos primeiro até os blocos M e trazer um cheque tocando no bloco sólido Então, vamos controlar e introduzir um bloqueio “se então”. E para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se tocar em um sólido é igual Se for esse o caso, podemos acessar os blocos MI, inserir um bloco de estado definido e configurá-lo para o slide de sublinhado na parede, certificando-se de usar a grafia correta E se dermos uma olhada na roupa do slide de parede, ela está, por padrão, voltada para a direita, como todas as outras roupas. Então, de volta ao script slide on wall, quando começamos a deslizar na parede, também queremos mudar a direção dos sprites Para fazer isso, vamos entrar em movimento e inserir um bloco de ponto e direção. Em seguida, vá até os operadores e use um bloco de subtração como entrada Vamos usar um zero como a primeira entrada do bloco de subtração e, para a segunda entrada, vamos voltar ao movimento e introduzir um bloco de direção Isso fará com que o sprite fique na direção oposta. Finalmente, independentemente de começarmos ou não a deslizar na parede, queremos mover o sprite de volta à sua posição original Para fazer isso, basta alterar X por zero menos o eixo X. Então, vamos pegar outra alteração X por bloco e colocá-la logo abaixo do sólido I tocando é igual a um bloco, certificando-se de que esteja dentro do bloco externo I fino Para a entrada, podemos usar uma duplicata do bloco de subtração aqui E livre-se do bloco de posição, depois vá para as variáveis e substitua-o por um bloco do eixo X. Tudo bem, estamos quase prontos para testá-lo. Mas primeiro, precisamos acessar o script de estado de atualização e lidar com o estado do slide de parede. Para fazer isso, verificaremos se estamos no estado de deslizamento da parede e ainda no ar. Nesse caso, permaneceremos no estado de slide de parede interrompendo o script. Então, vamos controlar e colocar um bloco se for então em algum espaço vazio. Para a condição, vamos até os operadores, trazer um bloco e, em seguida, colocar um bloco igual em um lado e um bloco maior que no outro Agora vamos às variáveis e verificar se o estado é igual slide de sublinhado da parede e, em caso de erro, é maior que zero Se sim, vamos controlar, colocar um bloco de parada e interromper esse script. Com isso, permaneceremos no estado de deslizamento da parede até atingirmos o chão. Agora vamos pegar o bloco I then, e podemos fazer isso logo após a verificação do slide de inclinação ou antes dela Ok, é hora de fazer um teste. Se agora pularmos nessa parede enquanto pressionamos a tecla de controle direita, podemos deslizar para baixo e voltar à marcha lenta quando atingirmos o chão Além disso, se pularmos na parede, mas soltarmos a tecla de movimento antes de começarmos a cair, não deslizaremos na parede. Perfeito. deslizar a parede é um pouco inútil agora, entanto, deslizar a parede é um pouco inútil agora, porque a gravidade está nos puxando para baixo muito rápido Para corrigir isso, queremos ignorar a gravidade e deslizar para baixo a uma velocidade constante mais lenta Para fazer isso, vamos até o script de movimento vertical da alça. Aqui embaixo, perto da parte inferior, é onde estamos usando a gravidade para puxar o sprite para baixo cada vez mais rápido Então, o que podemos fazer é primeiro verificar se estamos no estado de deslizamento da parede e, em caso afirmativo, definiremos a velocidade wy como um pequeno valor negativo, fazendo com que o sprite se mova para baixo a uma taxa constante lenta Caso contrário, continuaremos alterando a velocidade Y pela gravidade. Está bem? Então, primeiro, vamos colocar um bloco de ideias em algum espaço vazio Podemos mover o bloco Y de velocidade de mudança aqui para a parte ts, anexar o bloco I thin outs ao script e anexar o bloco de movimentação vertical à parte inferior Para a condição, vamos duplicar o bloco deslizante de estado igual à inclinação daqui Mas agora verifique se é igual ao slide sublinhado na parede. Nesse caso, podemos ir para as variáveis, trazer um conjunto para bloquear e definir a velocidade wy para menos três. Vamos ver se funciona. Muito legal. se tentarmos deslizar nessa entanto, se tentarmos deslizar nessa parte que não atinge o solo, podemos ver que continuamos deslizando na parede mesmo depois de descermos da parte inferior da parede Para corrigir isso, precisaremos verificar continuamente se ainda estamos contra a parede e, caso contrário, sairemos dos estados de deslizamento da parede. Para fazer isso, vamos voltar ao slide sobre scripts de parede. Na parte superior do script, primeiro verificaremos se já estamos nos estados de slide da parede e, em caso afirmativo, faremos algo semelhante ao que estamos fazendo aqui, alterando a exposição do sprite e verificando se há uma Então, primeiro, vamos controlar e colocar um bloco ITN em algum espaço vazio Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se o estado é igual ao slide de parede. Agora aqui estamos usando o valor de X x para mover o sprite Mas se também fizermos isso aqui, isso forçará o jogador a continuar pressionando a tecla de movimento para deslizar pela parede. Queremos permitir que eles soltem a chave assim que começarem a deslizar Então, o que podemos fazer em vez disso é pegar a direção do sprite, que deve estar de costas para a parede, dividido por menos 90, o que nos dará um ou menos um, então alterar a exposição nessa quantidade Isso moverá o sprite para trás em um passo. Se isso causar uma colisão com a parede, então ainda estamos na parede, então continuaremos deslizando Caso contrário, sairemos dos estados de deslizamento da parede. Então, para começar, vamos ao movimento e adicionar uma alteração X Byblock ao bloco I then Em seguida, vamos até os operadores e usaremos um bloco de divisão como entradas Para o bloco de divisão, vamos voltar ao movimento e dividir a direção por menos 90. Agora queremos verificar se estamos tocando em um sólido. Então, vamos até M Blocks e traga um cheque tocando em um bloco sólido Se não tocarmos em um sólido, sairemos dos estados de deslizamento da parede Então, vamos controlar e introduzir um bloqueio se então. E para a condição, vamos usar uma duplicata do sólido em contato igual a um bloco aqui, exceto que queremos verificar se é igual a zero Se for esse o caso, sairemos dos estados de deslizamento da parede. Para fazer isso, podemos ir até Mblocks, trazer um bloco de estado definido e configurá-lo com o valor vazio O script de estado de atualização então se encarregará de nos colocar no estado correto. Finalmente, independentemente de estarmos tocando ou não em um sólido, queremos mover o sprite de volta à sua posição original, bem como interromper o script para que esse outro bloco fino não seja executado Então, primeiro, vamos duplicar o bloco X de alteração aqui, nos livrar desses outros blocos e colocá-lo logo abaixo do bloco interno, embora fino Mas desta vez, queremos dividir a direção por 90 positivos. Agora vamos controlar em um bloco de parada logo abaixo do bloco X de alteração e interromper esse script. Então, vamos pegar tudo isso e colocá-lo na parte superior do slide no script de parede. se tentarmos fazer isso agora, Porém, se tentarmos fazer isso agora, isso realmente fará com que nossa parede deslize completamente Agora é como se estivéssemos constantemente aproximando e nos afastando da parede. A razão pela qual isso está acontecendo é que no script de movimento horizontal da alça, sempre que o eixo X não é zero, ele usa o valor voltado para nós na direção em que estamos tentando nos mover. Então, quando o script slide on wall é executado novamente e estamos no estado de slide de parede, na verdade estamos voltados para a parede em vez de para longe dela. Isso significa que mudar X pela direção dividido por menos 90 na verdade nos afasta da parede. Para corrigir isso, podemos evitar que o script de movimento horizontal mude a direção dos sprites se estivermos no estado de deslizamento da parede Para fazer isso, vamos enrolar um bloco se, então ao redor do bloco de ponto e direção. Vamos nos certificar de remover o bloco de agachamento, se não, estado igual a ser igual a este e anexá-lo à parte inferior do novo bloco , se não for o Portanto, só temos o bloco de ponto e direção dentro do novo. Para a condição, podemos realmente duplicar o bloco de agachamento de estado não igual. Mas a verificação do estado não é igual ao slide de parede. O roteiro agora só mudará nossa direção se não estivermos no estado de deslizamento de parede. Se tentarmos novamente, podemos deslizar nas paredes novamente e paramos de deslizar assim que não estivermos mais contra a parede Também podemos parar de deslizar nos afastando da parede. Também podemos deslizar pelas laterais das plataformas suspensas, o que é muito legal. Tudo bem, agora que o deslizamento da parede está funcionando muito bem, estamos prontos para pular na parede 79. Saltando nas paredes: No momento, se deslizarmos em uma parede, não poderemos pular. Isso ocorre porque, na parte inferior do script de movimento vertical da alça, definimos a velocidade Y um valor constante sempre que estamos no estado de deslizamento da parede , substituindo quaisquer alterações que possamos ter feito nela ao tentar pular Então, o que podemos fazer é fazer com que isso defina apenas a variável de velocidade Y se estivermos no estado de deslizamento da parede e não tentarmos pular. Para fazer isso, vamos até os operadores e colocar um bloco em algum espaço vazio. Vamos mover o bloco deslizante de parede de estado igual para um lado do bloco e usar o bloco como Para o outro lado, podemos trazer um bloco igual. Em seguida, vá para variáveis e verifique se pular é igual a zero. Isso significa que o jogador não está tentando pular, então continuaremos deslizando lentamente o jogador pela parede. Caso contrário, deixaremos a gravidade assumir o controle normalmente. entanto, isso ainda não funcionará, porque o erro de valor será maior que quatro, que nos impedirá de pular de qualquer maneira Para corrigir isso, vamos controlar e colocar um bloco if then em algum espaço vazio. Para a condição, vamos usar uma duplicata de todo esse estado igual a deslizamento de parede e pular é igual deslizamento de parede e pular Em seguida, vamos às variáveis, adicionar um conjunto para bloquear ao bloco ITN e definir com erro como um Agora vamos colocar esse bloco I thin logo acima daquele que verifica se o erro é menor que quatro. Certificar-se de que também esteja dentro do eixo FY é igual a um bloco. O que isso fará é que, se estivermos pressionando uma tecla de salto, mas atualmente estivermos no estado de deslizamento da parede e ainda não pularmos, ela será configurada como erro 1 Como um é, obviamente, menor que quatro, o próximo bloco fino nos permitirá pular mesmo se estivermos nos estados de deslizamento da parede. Se rodarmos o jogo agora e deslizarmos na parede, podemos pressionar a tecla de pular para pular ou mais deslizar até a parede. Mas isso não é bem o que queremos. Em vez disso, o que queremos fazer é empurrar o sprite para fora da parede, permitindo que o jogador pule de parede em parede Para fazer isso, também precisaremos trazer o script de movimento horizontal para a imagem, usando-o para aplicar alguma força horizontal aos sprites Sabemos que estamos pulando na parede se ainda estivermos no estado de deslizamento da parede e a variável de salto for maior que zero Então, para verificar isso, vamos encontrar algum espaço vazio. Em seguida, vá para o controle e coloque um I e depois bloqueie. Para a condição, vamos até os operadores e trazer um bloco e. De um lado, podemos usar uma duplicata do bloco deslizante de parede de estado igual aqui E para o outro lado, vamos trazer um bloco maior que. Em seguida, vá para variáveis e verifique se o salto é maior que zero Se for esse o caso, podemos alterar a velocidade X uma quantidade grande o suficiente para empurrar o sprite para fora da parede Então, vamos fazer uma mudança por bloco e alterar a velocidade X. Como o sprite estará costas para a parede enquanto desliza para baixo para empurrar o sprite para longe da parede, podemos dividir sua direção por 90, nos dando um ou menos um, e então multiplicar isso podemos dividir sua direção por 90, nos dando um ou menos um, nos dando um ou menos um, então multiplicar Então, primeiro, vamos aos operadores e adicionamos um bloco de multiplicação ao bloco X da velocidade de mudança e, em seguida, colocamos um bloco de divisão em um lado Agora vamos para o movimento e vamos dividir a direção por 90. E multiplique por algo alto, como dez. Agora podemos pegar o bloco ITN e colocá-lo na parte superior do script de movimento horizontal da alça, e vamos experimentá-lo Agora, se pularmos enquanto deslizamos por uma parede, somos empurrados para fora da parede No entanto, no momento, se mantivermos pressionada a tecla de movimento oposta, podemos facilmente voltar para a mesma parede. O comportamento ideal seria impedir temporariamente que o jogador se movesse de volta para a mesma parede. Para fazer isso, vamos primeiro tentar duplicar o eixo X definido como bloco zero aqui e adicioná-lo ao bloco I then para pular na parede Isso deve impedir que o jogador tente se mover horizontalmente No entanto, ainda não funciona. Isso ocorre porque, assim que nos afastamos da parede, o script slide on wall nos tira dos estados de slide de parede. Isso significa que na próxima vez o script de movimento horizontal for executado, não estaremos mais no estado de deslizamento da parede, então o jogador poderá se mover livremente. Para evitar que o jogador volte imediatamente para a mesma parede, precisaremos continuar empurrando-o para longe dela ao longo de várias iterações do loop do jogo Para fazer isso, precisaremos acompanhar se o jogador está pulando na parede ou não, e podemos fazer isso usando uma nova variável Então, vamos às variáveis e criemos uma nova. Podemos chamar isso de salto na parede e fazer isso apenas para esse sprite Saltar na parede terá um valor de um se estivermos pulando na parede ou zero se não estivermos Então, primeiro, vamos ver o roteiro da bandeira verde, colocar um conjunto para bloquear e fazer com que a parede pule para zero Agora, de volta ao script de movimento horizontal. Em vez de verificar se estamos deslizando e pulando na parede, podemos simplesmente verificar se estamos pulando na parede Então, vamos nos livrar de todo esse bloco de condições aqui. Em seguida, vamos até os operadores e substituí-lo por um bloco igual. Agora vamos às variáveis e verificar se pular na parede é igual Além disso, como agora pressionaremos o sprite várias vezes em vez de uma, podemos usar uma força muito menor Descobri que usar a variável de aceleração realmente funciona muito bem aqui. Em seguida, precisamos acessar o roteiro do movimento vertical e descobrir quando colocar o salto na parede em um Devemos começar a pular na parede se estivermos atualmente no estado de deslizamento da parede e tentando pular Já estamos verificando isso usando o estado I igual ao slide de parede e pular é igual Então, além de configurar o erro como um, podemos trazer outro conjunto para bloquear e definir o salto de parede para um Estamos quase prontos agora, mas também precisamos decidir quando fazer com que a parede salte de volta a zero para que o jogador possa se mover novamente. Podemos fazer isso quando o sprite começar a se mover de volta para o chão Para fazer isso, vamos novamente encontrar algum espaço vazio. Em seguida, vá para o controle e coloque um bloqueio se for então. Para a condição, vamos até os operadores e trazer um bloco e. Para um lado, vamos trazer um bloco igual, e para o outro lado, vamos trazer um bloco não, depois um bloco maior que Agora vamos às variáveis e verificar se pular na parede é igual um e se a velocidade Y não é maior Se for esse o caso, podemos colocar um conjunto para bloquear e fazer com que a parede salte para zero Com isso, se estivermos pulando na parede e o sprite ainda não estiver subindo, definiremos o salto na parede para zero, que permitirá que o jogador se Agora podemos adicionar tudo isso ao topo dos scripts de movimento vertical. E mais uma coisa que queremos fazer é na parte inferior, vez de verificar se estamos no estado de deslizamento da parede e pular é igual a zero, queremos verificar se pular na parede é igual a Se deixarmos ela ligada para pular e rodarmos o jogo, manter pressionada a tecla de salto ao começarmos a deslizar na parede aumenta a variável de salto Isso faz com que a gravidade entre em ação, nos puxando para baixo mais rápido Mas se mudarmos para verificar se pular na parede é igual a zero, isso não acontece E agora, se pularmos de uma parede, não podemos voltar imediatamente em direção a ela. Também podemos pular facilmente de parede em parede. Muito legal. No entanto, há uma pequena coisa que é difícil de notar, mas quando você o faz, pode ser um pouco irritante Quando começamos a pular na parede, por um breve período, passamos para o estado ocioso antes de mudar para os estados de salto Isso acontece porque, quando pulamos de uma parede pela primeira vez, estamos configurando erroneamente para uma aqui. Mas se dermos uma olhada no script de estado de atualização, ele não nos mudará para o estado de salto até que o erro seja maior que três. Fizemos isso há algum tempo para que usar o tempo do coiote ao pular não nos leve brevemente ao Mas agora, quando começamos a pular paredes, ele ignora isso se depois bloquear e nos coloca no estado de caminhada ou no estado ocioso por alguns quadros Para corrigir isso, podemos fazer com que também nos coloque no estado de salto se estivermos pulando na parede no momento Para fazer isso, vamos até os operadores e trazer um bloco or. Vamos mover o bloco de ar maior que zero para um lado do bloco ou e usar o bloco ou como condição. Agora vamos adicionar um bloco igual ao outro lado. Em seguida, vá para as variáveis e verifique se pular na parede é igual E agora ele deve nos mudar imediatamente para o estado de salto quando começarmos a pular na parede Tudo bem, com isso feito, podemos ir em frente e esconder todas essas variáveis E podemos finalmente dar uma pausa no sprite do jogador e passar para outras partes do jogo E começaremos saindo desse nível de teste chato. 80. Gere os níveis: Se dermos uma olhada nas roupas do sprite de níveis, há algum tempo, vimos que cada nível consiste em várias partes, que se disporão como as células de uma grade Conforme o jogador se move dentro de um nível, rola o nível sem problemas , como se uma câmera estivesse seguindo o jogador Além disso, cada traje de um nível é construído usando essas peças individuais. Na parte inferior, forneci os blocos que usei para os níveis, bem como alguns extras , caso você queira criar seus próprios níveis ou adicionar aos existentes. Infelizmente, porém, é muito difícil alinhar as coisas perfeitamente no editor de figurinos do Scratch. Portanto, eu recomendo usar algum software gráfico vetorial como o Adobe Illustrator ou Inkscape, ao criar Se você clicar com o botão direito em uma fantasia, poderá exportá-la para o formato de arquivo SVG Em seguida, você pode abrir o arquivo dentro de um aplicativo de gráficos vetoriais, e a maioria deles nos dá a opção de unir objetos De qualquer forma, antes de começarmos a criar níveis extras, vamos ver como podemos fazer com que os atuais funcionem. Fazer isso exige que acompanhemos em qual nível estamos atualmente e faremos isso dentro do código do pano de fundo Então, primeiro, vamos criar uma nova variável global, que podemos chamar de nível. E podemos seguir em frente e ocultar a variável. No script de sinalização da tela de fundo, antes do loop do jogo, vamos colocar um conjunto para bloquear e definir o nível como um OK. Agora vamos voltar ao nível dos sprites Se dermos uma olhada nas roupas mais uma vez, para gerar um nível, precisaremos examinar todas as roupas desse nível específico e usar os índices de linha e coluna para posicionar cada parte dentro do jogo Para fazer isso, podemos pegar o nome do traje de cada parte e dividi-lo em segmentos usando os hífens O primeiro segmento nos dirá qual nível a peça pertence. O segundo nos diz o índice da linha e o terceiro nos diz o índice da coluna. Ok, então, para começar, vamos voltar para a guia de código. Primeiro, vamos aos eventos e trazemos um bloco clicado com bandeira verde Colocaremos todo o código de geração de níveis dentro de um bloco personalizado. Então, vamos ao Mbloxs e criemos um novo. Podemos chamá-lo de generate e queremos ter certeza de verificar a execução sem atualizar a tela. Em seguida, clique em OK. Vamos adicionar um bloco de geração ao script de bandeira verde e mover o bloco de geração definido até aqui. O que faremos aqui é primeiro trocar o traje de sprite de nível pelo traje vazio aqui em cima Em seguida, mudaremos continuamente para a próxima roupa até encontrarmos a primeira que pertence ao nível atual. Esse será o caso se o nome contiver a palavra nível, seguida pelo número do nível atual, que nos é fornecido pela variável de nível. Então, de volta ao script Generate, vamos até Looks, trazer um bloco de roupas para trocar e trocar para a roupa em branco. Em seguida, vamos até Control e repita até bloquear. Queremos mudar repetidamente para o próximo traje até encontrarmos o primeiro contendo a palavra nível seguido pelo valor da variável de nível. Para fazer isso, vamos até os operadores e vamos usar um bloco contém como condição da repetição até o bloco. Então, vamos pegar um bloco de junção e usá-lo como a segunda entrada do bloco que contém. Para a primeira entrada do bloco contém, vamos até Looks e trazemos um bloco de fantasias. E queremos verificar o nome da fantasia em vez do número. Para o bloco de junção, vamos colocar o nível da palavra na primeira entrada. E para a segunda entrada, vamos às variáveis e introduzimos um bloco de nível. Agora, dentro da repetição até o bloco, vamos até Looks e trazemos o próximo bloco de fantasias. Para o nível um, isso deve nos impedir de usar o traje de nível um, 00. Então, vamos tentar. Incrível. E podemos nos mover dentro do nível. O primeiro traje para o nível dois é Nível dois, zero, zero. Então, se usarmos o código do pano de fundo, definirmos a variável de nível como dois e rodarmos o jogo, isso deve nos levar até aquele traje No entanto, talvez precisemos clicar duas vezes na bandeira verde para que ela funcione. Vamos corrigir isso um pouco mais tarde. Também podemos ir para o nível três e para o nível quatro, que é o nível final. Agora, se tentarmos o nível cinco, que não existe, teremos um comportamento estranho com o sprite de nível alternando constantemente entre suas várias roupas Isso está acontecendo porque examinamos todas as roupas, nunca encontrando uma para o nível cinco. E quando executamos o próximo bloco de fantasias em um sprite que está usando sua última roupa, sua roupa na verdade volta para a primeira roupa e o ciclo se repete Portanto, no script de geração do sprite de nível, eles se repetirão até que o bloco se transforme essencialmente em um bloco eterno Não é provável que tentemos acidentalmente gerar um nível inexistente, mas caso possamos interromper o script se ele vasculhar todas as roupas e não encontrar uma que combine Para fazer isso, depois de percorrer o próximo bloco de fantasias, precisamos apenas verificar se a fantasia voltou para a roupa em branco Então, vamos controlar e adicionar um se então abaixo do próximo bloco de fantasias. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, usando uma duplicata do bloco de nome da fantasia aqui, podemos verificar se o nome da fantasia é igual Nesse caso, podemos ir até o controle, inserir um bloco de parada e interromper esse script. Agora, se tentarmos carregar o nível cinco, o script de geração será interrompido assim que voltarmos para a roupa em branco. Ok, vamos até o pano de fundo, redefina o nível para um e verifique se ele ainda funciona Para colocar o sprite do jogador de volta ao palco, talvez tenhamos que parar o jogo e definir manualmente sua posição Y para algo como zero Tudo bem, agora que podemos obter a primeira roupa do nível atual, a próxima etapa é percorrer todas as roupas de níveis e criar um clone de sprite de nível para cada uma, e precisaremos usar os índices de linha e coluna para posicionar adequadamente o clone e precisaremos usar os índices de linha e coluna para posicionar adequadamente o posicionar adequadamente Para fazer isso, precisaremos dividir o nome do traje atual em seus segmentos individuais separados por hífen Um grupo de caracteres alfanuméricos como esses nomes de figurinos é normalmente chamado de string na programação de computadores E usar um caractere específico para separar uma string é chamado de dividir a Para dividir a sequência do nome do traje, criaremos um bloco personalizado Então, de volta ao nível do código sprite, vamos até o Mblocks e criaremos um novo Primeiro, vamos digitar string dividida e adicionar uma entrada chamada string. Em seguida, vamos adicionar um rótulo e digitar no caractere. Em seguida, adicione outra entrada chamada caractere. Isso nos permitirá inserir a string e o caractere para dividir a string, o que nos permitirá reutilizar facilmente o código em Ok, queremos ter certeza de verificar a execução sem atualizar a tela e, em seguida, criar o bloco E vamos seguir em frente e mover o bloco definido para cá. Agora, para dividir o nome do traje, queremos fazer isso no script de geração após a repetição até que o bloco termine Então, vamos pegar um bloco de corda dividido e prendê-lo na parte inferior da repetição até o bloco. A corda que queremos dividir é, obviamente, o nome do traje. Então, vamos duplicar um bloco de nome de traje e usá-lo como a primeira entrada do bloco de cordas divididas E para o personagem, queremos usar um hífen Agora vamos passar para o script de string dividida e ver como podemos realmente dividir a string. Precisaremos de algo para manter os valores de cada segmento individual. Para isso, podemos usar uma lista de variáveis. Então, vamos às variáveis e clique em Criar uma lista. Podemos chamá-lo de segmentos de string e criá-lo apenas para esse sprite A primeira coisa que queremos fazer no script de string dividida é garantir que a lista esteja vazia. Então, vamos incluir um bloco de exclusão de todos os segmentos de string. Em seguida, percorreremos cada caractere na entrada da string e o dividiremos sempre que o caractere atual corresponder às entradas do caractere Para fazer isso, precisaremos de uma variável para acompanhar o índice de caracteres atual na string, bem como uma para armazenar temporariamente os caracteres que formarão um segmento. Então, para a primeira nova variável, vamos chamá-la de index e torná-la somente para esse sprite E para o segundo, vamos chamá-lo de TIP. Além disso, somente para esse sprite, queremos percorrer a string, começando pelo primeiro caractere da string, que tem um índice de um Então, vamos trazer um conjunto para bloquear e definir o índice como um. Também queremos que a variável TIP comece vazia. Então, vamos trazer outro conjunto para bloquear e definir temp para o valor vazio Agora, para percorrer os caracteres na string, aumentaremos continuamente o valor do índice até percorrermos todos os caracteres. Para fazer isso, vamos até Control e repita até bloquear. Para a condição, vamos até os operadores e trazer um bloco maior que. Em seguida, vamos colocar um pedaço de bloco no lado direito. Agora vamos às variáveis e vamos verificar se o índice é maior que o comprimento das entradas da string O comprimento da string nos dará o número total de caracteres que a string contém. Portanto, se o índice for maior que isso, sabemos que terminamos examinar todos os caracteres. Agora, até que isso aconteça, queremos verificar se o caractere no índice atual é o mesmo que a entrada do caractere. Faremos coisas diferentes dependendo se esse for o caso ou não. Então, vamos até o Controle e introduzimos um bloco I then s. Para a condição, vamos até os operadores e primeiro introduzimos um bloco igual. Em seguida, coloque uma letra de bloco no lado esquerdo. Agora vamos às variáveis e vamos verificar se o índice de letras da string é igual ao caractere. Com a letra do bloco, podemos obter o caractere em um índice específico em uma string. Agora, se for esse o caso, chegamos a um caractere que corresponde à entrada do caractere, que no nosso caso será um hífen Isso significa que é hora de dividir a string e armazenar os resultados na lista de segmentos da string. Mas primeiro, até chegarmos a um hífen, precisaremos armazenar temporariamente os caracteres até esse ponto Faremos isso usando a variável TIP. Vamos pegar um conjunto para bloquear, adicioná-lo à parte de saídas do bloco I then outs e definir a variável TIP. Para a entrada, queremos combinar o valor atual da variável TEMP com o caractere no índice atual Para fazer isso, vamos até os operadores e trazer um bloco de junção. Agora vamos às variáveis e usaremos um bloco temporário como a primeira entrada do bloco unido Para a segunda entrada, queremos obter o caractere no índice atual para que possamos usar uma duplicata do índice de letras do bloco de string aqui Agora, quando chegarmos a um hífen, queremos armazenar o valor atual da variável TIP dentro da lista de segmentos de string Então, vamos pegar uma adição ao bloco e colocá-la na parte I. E vamos usá-lo para adicionar temperatura aos segmentos de string. Em seguida, queremos esvaziar a variável temporária para que possamos começar a obter apenas os caracteres dos segmentos a seguir Então, vamos trazer um conjunto para bloquear e definir a temperatura para o valor vazio No momento, porém, a repetição até o bloco continuará para sempre, já que o índice sempre será um. Para corrigir isso, precisamos pegar uma alteração por bloco, colocá-la na parte inferior da repetição até o bloco e usá-la para alterar o índice por um. Se agora rodarmos o jogo, podemos ver que ele divide o nome do traje usando os hífens e adiciona segmentos individuais à lista de segmentos de string No entanto, estamos recebendo apenas dois segmentos, um para o nível e outro para o índice da linha. Também devemos obter um terceiro para o índice da coluna. O motivo pelo qual não estamos obtendo o índice da coluna é que ele não é seguido por um hífen no nome do traje Poderíamos examinar todos os nomes das roupas e adicionar um hífen ao final de cada uma, mas, felizmente, há uma maneira muito mais fácil Após a repetição até que o bloco termine, o valor atual de TIP será, na verdade, o índice da coluna. Então, o que podemos fazer é adicionar outro bloco de adição ao bloco, colocá-lo na parte inferior do script e usá-lo para adicionar TIP à lista de segmentos de string. Isso agora nos dará todos os três segmentos. Só por diversão, vamos testar isso usando outras sequências de caracteres e caracteres Para fazer isso, podemos acessar Meus Blocos e colocar um bloco de string dividido em algum espaço vazio. Para a string, podemos usar algumas palavras separadas por pontos de interrogação, por exemplo, e ter certeza de usar um ponto de interrogação como entrada de caracteres Se agora clicarmos no bloco, ele divide a string usando os pontos de interrogação e adiciona todos os segmentos à lista Tudo bem, agora que sabemos que tudo isso funciona corretamente, podemos nos livrar desse bloco extra de strings divididas e voltar aos scripts de geração O que queremos fazer agora é examinar todas as roupas do nível atual e criar um clone de cada uma Para fazer isso, mudaremos continuamente para a próxima roupa até chegarmos a uma que não pertença ao nível atual. Isso acontecerá quando o item no índice um da lista não contiver o nível da palavra, seguido pelo valor do nível atual. Então, vamos controlar e repetir até bloquear. Para a condição, vamos até os operadores e primeiro trazer um bloco de nós e, em seguida, trazer um bloco igual Para a primeira entrada do bloco de iguais, vamos às variáveis e trazemos item um do bloco de segmentos de string E queremos verificar se não é igual ao nível da palavra seguido pelo valor da variável de nível, então podemos simplesmente usar uma duplicata do bloco de junção do outro bloco de repetição e cauda Ok, então, à medida que examinamos as roupas do nível atual, criaremos um novo clone de sprite de nível para cada uma e, para evitar que o código fique muito confuso, faremos isso dentro de um Então, vamos ao MyBlock e criar um novo. Para posicionar o clone, queremos fornecer entradas de linha e coluna Então, vamos primeiro digitar create Clone at Row seguido por dois pontos Em seguida, vamos adicionar uma entrada de linha, um rótulo de dois pontos da coluna E uma entrada da coluna. Pense, clique em OK. Vamos adicionar um bloco create Clone ao bloco de repetição até o bloco. A linha e a coluna são fornecidas pelos valores nos índices dois e três da lista de segmentos de string. Então, vamos às variáveis e usar um item de bloco para cada entrada do bloco create Clone Vamos usar o item dois para a entrada da linha e o item três para a coluna. Mas isso parece um pouco confuso. Então, criaremos algumas variáveis para manter a linha e a coluna atuais e usá-las aqui em vez dos blocos de itens. Para fazer isso, vamos criar uma nova variável, que podemos chamar de row e criá-la somente para esse sprite Então, vamos criar outra, chamá-la de coluna e também criá-la apenas para esse sprite E vamos continuar ocultando as variáveis de linha e coluna. Agora, vamos adicionar dois blocos do conjunto de dois blocos logo acima do bloco create Clone Vamos definir a linha para o item dois da lista usando o bloco aqui e definir a coluna para o item três usando este. Em seguida, podemos usar as variáveis de linha e coluna para criar entradas do bloco Clone Isso parece um pouco mais limpo e também usaremos as variáveis de linha e coluna novamente um pouco mais tarde. Agora vamos pegar o bloco de criação de clone definido e movê-lo para algum lugar aqui E aqui, usaremos as entradas de linha e coluna para posicionar os sprites e, em seguida, criaremos um clone cada parte de um nível No entanto, cada parte de um nível, na verdade, ocupa todo o estágio. Isso significa que, dependendo de onde uma peça está localizada dentro da grade de níveis, suas posições X e Y podem estar na casa dos milhares. No entanto, as posições X e Y de um sprite são praticamente restritas aos limites do palco Isso significa que precisaremos usar variáveis para manter a posição de cada parte do nível no jogo, que podemos chamar de posição mundial. Então, primeiro, vamos criar algumas novas variáveis. Vamos chamá-lo de X e garantir que verifiquemos esse sprite somente porque cada clone terá valores exclusivos de X e Y. Em seguida, vamos criar outro, chamá-lo de Y e, novamente, criá-lo apenas para esse sprite E podemos ir em frente e esconder todas as variáveis agora. Ok, então para obter a exposição mundial de um nível de peças, podemos pegar o índice da coluna e multiplicá-lo por 480, que é a largura do palco Da mesma forma, para obter a posição Y mundial, podemos pegar o índice da linha e multiplicá-lo por 360, que é a altura do palco Então, vamos adicionar dois conjuntos de dois blocos ao script crit Clone. Em seguida, vamos até os operadores e colocamos um bloco de multiplicação dentro de cada um Agora vamos definir X para as entradas da coluna multiplicadas por 480 e definir Y para as entradas da linha multiplicadas Agora só precisamos realmente criar o clone. Vamos até Control e trazer um clone de criação do meu próprio bloco Agora, de volta ao script Generate, depois de criar um clone usando o traje atual, precisamos continuar com o próximo traje Então, primeiro, vamos até Looks e adicionaremos um próximo bloco de fantasias logo abaixo do bloco Create Clone Também precisamos dividir o nome do traje novamente, então vamos usar uma duplicata do bloco de cordas divididas aqui E isso agora deve criar um clone usando cada um dos trajes do nível atual Porém, se tentarmos rodar o jogo agora, isso reunirá todos os clones na fase Isso ocorre porque no script create Clone, estamos definindo a posição mundial de um clone, mas não sua posição real no palco Para corrigir isso, antes de criar um clone do meu bloco, vamos entrar em movimento e inserir um bloco go to XY Em seguida, vamos às variáveis e usaremos as variáveis X e Y como entradas Isso fará com que somente a parte inferior esquerda do nível fique visível. Porém, para que isso seja realmente útil, precisamos de alguma forma de permitir que o jogador se mova dentro do nível e descubra qual parte ou partes de um nível devem estar visíveis a qualquer momento. Faremos isso na próxima lição. 81. Como rolar um nível: Conforme o jogador se move no palco, moverá ou rolará clones do sprite de nível na direção oposta Isso fará com que pareça que uma câmera está seguindo o jogador o tempo todo. Para lidar com a rolagem, vamos ver o código do pano de fundo Primeiro, precisaremos acompanhar a posição de rolagem atual dentro de algumas variáveis globais. Vamos criar alguns novos. Vamos chamar o primeiro de ScrollX. Também poderíamos chamá-la de câmera x, já que será a posição central da câmera, mas vou ficar com scroll x. Da mesma forma, para a posição Y, vamos criar outra que podemos chamar de scroll Y ou câmera Y. Agora, na maior parte, o ponto focal da câmera será a posição do jogador Às vezes, porém, focamos a câmera em outros pontos. Por exemplo, ao mostrar ao jogador que a saída do nível se tornou ativa. Então, vamos também criar algumas variáveis para isso. Podemos chamar o primeiro de focal X. E chamar o segundo de focal Y. Tudo bem, e a posição inicial de rolagem pode ser diferente dependendo do nível Mas, por enquanto, vamos inicializá-lo para 00. Então, no script da bandeira verde, vamos colocar o conjunto de dois blocos antes do loop do jogo e vamos definir a rolagem x e a rolagem Y como zero. Em seguida, para realizar a rolagem real, faremos isso durante a terceira e última mensagem de atualização Isso permitirá que as coisas que acontecem durante a primeira e a segunda atualizações, como animações e detecção de colisões, aconteçam antes de rolarmos o nível Mesmo que o pano de fundo esteja transmitindo a mensagem da Atualização 3, ele também pode receber a Vamos aos eventos e trazer um bloco W I receive e vamos receber a Atualização 3. E aqui vamos simplesmente executar um novo bloco personalizado que usaremos para rolagem Vamos até o Mblocks e criar um novo. Vamos chamá-lo de rolagem e clicar em OK. Agora vamos adicionar um bloco de rolagem quando eu receber a Atualização três e vamos mover o bloco de rolagem definido até aqui. Mais tarde, faremos algumas coisas extras com a rolagem. Mas, por enquanto, vamos simplesmente fazer com que a posição de rolagem permaneça igual à posição focal. Para fazer isso, vamos às variáveis e traga dois conjuntos de dois blocos. E vamos usá-los para definir a rolagem X para focar x e rolar Y para focar Y. Agora, precisamos realmente definir o foco X e o foco Y. Como mencionei antes, essa será, na maior parte, a posição do jogador Então, vamos ver o código do sprite dos jogadores. No momento, porém, não estamos acompanhando a posição mundial do jogador dentro do nível. Sempre que movemos o sprite, estamos apenas alterando suas posições reais ou das fases X e Y , que estão limitadas aos limites do estágio Como vimos com os sprites de nível, posição mundial de um objeto pode ser um pouco maior do que as posições X e Y máximas do palco E, como fizemos com os sprites de nível, usaremos duas novas variáveis locais X e Y para acompanhar a posição mundial do jogador Vamos criar uma nova variável. Chame-o de X e faça isso somente para este sprite. Então, vamos criar outro, chamá-lo de Y, e também criá-lo apenas para esse sprite Os valores iniciais de X e Y para o sprite do jogador eventualmente serão diferentes dependendo do nível Mas, por enquanto, acho que algo como menos 150 para X e zero para Y deve ser bom. Então, vamos adicionar um conjunto de dois blocos ao script da bandeira verde. E vamos definir X para menos 150 e y20. Em seguida, tanto no script de movimentação horizontal quanto no script de movimentação vertical, em vez de alterar diretamente as posições X e Y do sprite, precisamos alterar as variáveis X Então, na parte superior do script de movimentação horizontal, vamos fazer uma alteração por bloco e vamos alterar X pela entrada Dx E agora podemos nos livrar do bloco X de mudança azul aqui. Da mesma forma, no bloco de repetição de dez, vamos adicionar uma alteração por bloco na parte superior, alterar a variável Y por uma e nos livrar do bloco azul de alteração Y. Agora vamos substituir essa alteração Y por menos dez blocos por uma versão variável. Em seguida, faça o mesmo com esses dois blocos X de alteração. Então, para o primeiro, vamos mudar a variável X por menos um. E para o segundo, vamos mudar X por um. Agora vamos passar para os scripts de movimentação vertical. Primeiro, vamos adicionar uma alteração por bloco na parte superior, alterar a variável Y pela entrada DY e nos livrar do bloco Y de alteração azul. Em seguida, substitua também os dois blocos Y de alteração aqui embaixo. Altere a variável Y por menos um para a primeira. E troque por um para o segundo. Agora, depois de fazer isso, não estamos mais mudando a posição do sprite no palco Isso significa que as detecções de colisão estamos realizando nesses scripts não funcionarão Para corrigir isso, precisamos traduzir a posição mundial do sprite em sua posição no palco e realmente reposicionar o sprite no Para obter a posição do palco dos sprites, podemos subtrair a posição de rolagem atual da posição mundial dos sprites Isso sempre nos dará valores que estão dentro dos limites do palco E como faremos esse cálculo com bastante frequência, faremos isso dentro de um bloco personalizado. Então, vamos ao Mblock e criemos um novo. Vamos chamar isso de posição e clicar em OK. Vamos levar o bloco definido para algum lugar aqui. Vou colocar o meu logo abaixo do roteiro animado. Para traduzir a posição mundial para a posição do palco, vamos primeiro entrar em movimento e colocar o bloco go to XY. Em seguida, vamos até os operadores e usaremos um bloco de subtração para cada uma das entradas Agora vamos às variáveis. E para a posição, queremos fazer a variável X menos a rolagem X. E para Y, vamos fazer a variável Y menos a rolagem Y. E pronto. Agora, não importa onde o jogador esteja no nível, podemos usar isso para converter sua posição mundial em uma posição de palco. E, na verdade, precisamos fazer isso várias vezes durante cada iteração do loop do jogo Primeiro, precisamos fazer isso no início do loop, que é quando recebemos a mensagem de atualização 1. Isso garantirá que o sprite esteja posicionado corretamente antes de começarmos a movê-lo Então, vamos até Meus Blocos e adicione um bloco de ajuste de posição na parte inferior do script W. Eu recebo o Update One. Em seguida, precisamos posicionar o sprite no final do loop do jogo após a rolagem Isso acontece durante a mensagem da Atualização 3. No momento, não estamos lidando com a mensagem da Atualização três, então vamos aos eventos, trazer um novo quando eu receber bloco e receber a Atualização três. Tudo o que precisamos fazer aqui é ir até meus blocos e trazer um bloco de ajuste de posição. Por fim, volte a mover horizontalmente e mova verticalmente Precisamos ajustar a posição logo antes de verificar se estamos tocando em um sólido Então, vamos adicionar um bloco de ajuste de posição logo acima de cada um dos blocos sólidos tocando em ambos os scripts Temos três e nos movemos horizontalmente e dois e nos movemos Tudo bem. Agora, mais uma coisa que precisamos fazer no código do Sprite do jogador, e o que originalmente viemos fazer aqui é definir o ponto focal da câmera na posição mundial dos sprites do jogador durante cada iteração do loop do Queremos fazer isso na parte inferior do script de atualização dois, depois de terminarmos de mover Para isso, vamos até as variáveis e adicionaremos o conjunto de dois blocos na parte inferior dos scripts. Vamos usá-los para definir o foco X para a variável X e o foco Y para a variável Y. Ok, estamos quase prontos para testar tudo. Mas primeiro, também precisamos posicionar clones do sprite de nível usando a posição de rolagem Para isso, podemos realmente usar o mesmo script de ajuste de posição que acabamos de criar para o sprite do jogador Então, vamos pegar o bloco de posição de ajuste definido e arrastá-lo para os sprites de nível Agora vamos ao nível do código Sprite. Assim como no Sprite do player, queremos ajustar a posição durante a primeira e a última atualização Então, vamos aos eventos e trazemos dois quando eu receber blocos. Vamos receber a atualização um e a atualização três. Em seguida, vamos aos meus Blocos e adicionaremos um bloco de ajuste de posição a cada um. Também podemos nos livrar do bloco go to XY no script Crit Clone agora Tudo bem, acho que estamos prontos para tentar. Bem, meio que funciona, mas é muito instável Isso está acontecendo porque a gravidade está fazendo com que a variável Y dos sprites do jogador variável Y dos sprites mude constantemente em quantidades muito pequenas Isso continua afetando o foco Y, que afeta a rolagem Y, que faz com que os sprites saltem para cima e Para corrigir isso, vamos parar o jogo e acessar o código do pano de fundo No script de rolagem, em vez de definir a posição de rolagem, usando os valores exatos de focal X e focal Y, podemos usar os valores arredondados. Para fazer isso, vamos até os operadores e usaremos blocos redondos para envolver os blocos focais X e Y focais. Se rodarmos o jogo agora, os valores de Y e Y focal continuam flutuando, mas agora o valor de rolagem Y não, então os sprites não E agora podemos percorrer todo o nível. Muito incrível. No , há algumas melhorias que podemos fazer entanto, há algumas melhorias que podemos fazer, e faremos isso na próxima lição. 82. Melhorar a rolagem: Agora que podemos percorrer o nível, vamos fazer algumas melhorias na rolagem Primeiro, atualmente podemos ultrapassar os limites do nível e, se pularmos de um lado, continuaremos caindo para sempre. Se usarmos as roupas do sprite de nível, a primeira roupa de nível um aqui, nível 100, está localizada na parte inferior esquerda da grade de níveis Queremos evitar que a câmera vá além do lado esquerdo ou abaixo da parte inferior. Na verdade, isso é muito fácil de fazer, pois simplesmente precisamos evitar que a rolagem X e a rolagem Y se tornem negativas. Para fazer isso, vamos ver o código do pano de fundo. No script de rolagem, vamos controlar e inserir dois blocos ITN, colocando um logo abaixo do outro Para saber a condição de cada um, vamos até os operadores e trazer menos do que blocos. Então vamos às variáveis e vamos usar uma para verificar se a rolagem X é menor que zero e a outra para verificar se a rolagem Y é menor que zero. Em seguida, vamos adicionar um conjunto para bloquear a cada um, se for o caso, bloquear. E para o primeiro, vamos definir a rolagem X como zero e usar a outra para definir a rolagem Y como zero. Isso deve evitar que a câmera passe do lado esquerdo do nível ou abaixo da parte inferior. , ainda podemos cair do lado esquerdo , o que também precisamos corrigir. Mas primeiro, se reiniciarmos o jogo, ainda podemos ir além do lado direito do nível. Se dermos uma olhada nas roupas de sprite de nível mais uma vez, a grade de nível um tem um total de quatro roupas, e o nível um, 03 aqui está localizado no canto inferior direito Queremos evitar que a câmera passe pelo lado direito aqui. O nível também tem um total de duas linhas, com os níveis um, um e três aqui localizados no canto superior direito. Também queremos evitar que o jogador fique acima do topo. Para fazer isso, precisaremos acompanhar o número de linhas e colunas que o nível atual tem. Para fazer isso, vamos ver o código do sprite de nível. No script de geração, podemos acompanhar o número total de linhas e colunas no nível e, em seguida, usar os números para calcular os valores máximos permitidos de rolagem x e rolagem Y. Então, primeiro, precisaremos criar algumas novas variáveis. Vamos chamar a primeira linha máxima e criá-la somente para esse sprite Então, vamos criar outra, chamada de coluna máxima. E também faça isso apenas para esse sprite. Agora vamos criar mais algumas para os valores máximos de rolagem. Ambas precisam ser variáveis globais. Vamos chamar a primeira de Max scroll X. E para a segunda, não vamos dizer que é surpresa, Max scroll Y. Ok, agora na parte superior do script de geração, inicializaremos todas essas novas variáveis Então, vamos trazer quatro conjuntos de dois blocos. Agora vamos definir a linha máxima 20, coluna máxima 20, a rolagem máxima x20 e a rolagem máxima y20 Em seguida, no segundo, repita até bloquear. Vamos para Controle e adicionar dois blocos, se for o caso, abaixo de todos os outros blocos, um logo após o outro. Para saber a condição de cada um, vamos até os operadores e trazer alguns maiores que blocos. Agora vamos às variáveis e, para a primeira, vamos verificar se a variável da linha é maior que a variável da linha máxima. A variável de linha contém o índice de linha do traje atual. Da mesma forma, para o outro, se for o bloco, vamos verificar se a coluna atual é maior que a coluna máxima. Agora vamos adicionar um conjunto para bloquear a cada um, se for o caso, bloquear. Para o primeiro, vamos definir Max row para a variável row. Em seguida, defina a coluna Máxima como a variável da coluna. Com isso, quando terminarmos carregar todas as roupas do nível atual, a linha máxima nos dará o índice de linha mais alto e a coluna máxima fornecerá o índice de coluna mais alto. Podemos verificar isso executando o jogo. Agora, a linha máxima é igual a um e a coluna máxima é igual a três. Agora, usaremos os valores máximo da linha e da coluna máxima para calcular a rolagem máxima X e a rolagem máxima Y, e faremos isso após a segunda repetição até o bloco. Vamos adicionar um conjunto de dois blocos na parte inferior dos scripts. E para cada um, vamos até os operadores e trazer alguns blocos de multiplicação Para o primeiro conjunto de blocos, definiremos a rolagem máxima X. Agora vamos às variáveis e vamos configurá-la para o máximo de coluna vezes 480, que é a largura do palco Da mesma forma, vamos definir Max scroll Y para Max row times 360, que é a altura do palco. Agora precisamos voltar ao script de rolagem no código do pano de fundo e usar os valores máximos de rolagem Primeiro, vamos controlar e trazer mais dois blocos, se for o caso. Em seguida, vamos até os operadores e usaremos um bloco maior que para cada um. Agora vamos às variáveis e, para a primeira, se então bloquear, vamos verificar se a rolagem x é maior que a rolagem máxima X. Se sim, vamos colocar um conjunto para bloquear e definir a rolagem x para a rolagem máxima X. Da mesma forma, para a outra, vamos verificar se a rolagem Y é maior que a rolagem máxima Y. E, em caso afirmativo, vamos definir a rolagem máxima como rolagem máxima Y. As exibições das variáveis estão então vamos em frente e escondê-los. E aqueles para o sprite de plater, também. Agora, vamos tentar. Se agora formos até o lado direito do nível, a câmera não vai mais longe. Vamos garantir que isso aconteça se também chegarmos ao topo do nível. Incrível. Tudo bem, agora vamos resolver o problema em que podemos cair da lateral de um nível Para fazer isso, vamos ver o código dos sprites do jogador. Agora, na parte inferior do script de movimento horizontal, queremos limitar o movimento do jogador para a esquerda A borda esquerda do palco está localizada em 240 negativos. Portanto, acho que um limite de cerca de 235 negativos deve ser bom. Ok, então vamos controlar e adicionar um bloco if na parte inferior do script. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Agora vamos às variáveis e vamos verificar se a variável X é menor que menos 235 Nesse caso, vamos colocar um conjunto para bloquear e definir X para menos 235 Vamos também interromper completamente o movimento horizontal trazendo outro conjunto para bloquear e ajustando a velocidade x para zero. Finalmente, precisamos aplicar isso à posição real do sprite no palco Então, vamos para M Blocks e trazer um bloco de ajuste de posição. Se agora rodarmos o jogo, não poderemos mais sair do lado esquerdo do nível. Agora também precisamos fazer isso para o lado direito. Primeiro, vamos às variáveis e vamos mostrar a variável Max scroll lex e a variável X do player sprites novamente. Se nos aproximarmos do lado direito do nível, podemos ver que o valor da variável X dos sprites do jogador é, na verdade, um pouco maior do que o valor Max scroll x. Isso ocorre porque a posição de rolagem corresponde ao centro da câmera. Portanto, a borda direita real do nível está localizada no valor max scroll lex mais outros 240, que é metade da largura do palco. E, semelhante ao que fizemos com o lado esquerdo, podemos subtrair outros cinco, limitando a exposição do jogador ao máximo de rolagem X Ok, então para fazer tudo isso, vamos primeiro duplicar todo o bloco ITN aqui e colocá-lo na parte inferior Mas vamos nos livrar do menor que bloqueio. Em seguida, vá até os operadores e substitua-o por um bloco maior que. Vamos colocar um bloco de adição no lado direito do bloco maior que e também colocar um dentro do bloco X definido aqui. Agora vamos às variáveis e vamos verificar se X é maior que Max scroll X mais 235 Nesse caso, vamos definir X como Max scroll X mais 235. E agora não podemos mais ir além do lado direito do nível. Perfeito. Agora podemos ocultar as variáveis novamente. Ok, e no momento, a câmera do nosso jogo está sempre diretamente em cima do jogador. Mas em plataformas ou jogos, é comum fazer com que a câmera acompanhe suavemente o jogador enquanto ele se move e gradualmente descanse sobre o jogador quando ele para de se mover Para fazer isso em nosso jogo, vamos até o script de rolagem no código do pano de fundo Em vez de definir imediatamente a posição de rolagem para a posição focal, podemos alterar os valores de rolagem x e rolagem Y usando uma fração da distância entre eles e os valores de ponto focal correspondentes. Isso fará com que a câmera pare gradualmente no ponto focal em vários quadros. Para fazer isso, vamos colocar duas variáveis de mudança Byblocks em algum espaço vazio E vamos usar a primeira para alterar a rolagem X e a segunda para alterar a rolagem Y. Agora vamos aos operadores e adicionaremos um bloco redondo a cada um Adicione um bloco de divisão a cada bloco redondo. E coloque um bloco de subtração no lado esquerdo de cada bloco de divisão Agora vamos mover o bloco focal X aqui para a primeira entrada do primeiro bloco de subtração e mover o bloco focal Y para a primeira entrada do outro bloco de subtração Então vamos às variáveis, e queremos fazer focal x menos scrollX e focal Y menos scroll Y. Podemos então substituir os dois blocos definidos pela nova alteração Byblocks Now, para os lados direitos dos blocos de divisão, quanto maior o número que usamos, quanto maior o número que usamos, lentamente a câmera parará e queremos fazer focal x menos scrollX e focal Y menos scroll Y. Podemos então substituir os dois blocos definidos pela nova alteração Byblocks Now, para os lados direitos dos blocos de divisão, quanto maior o número que usamos, mais lentamente a câmera parará nos pontos focais. Por enquanto, vamos usar dois para cada um deles e experimentar. Isso não é muito perceptível, então vamos tentar quatro. Isso parece muito bom para X, mas para Y, acho que vou tentar oito. Lá vamos nós. Muito melhor. Tudo bem, e uma última coisa a saber sobre o sprite de nível é que, se verificarmos suas roupas novamente, cada uma das roupas do nível principal tem esses retângulos invisíveis que estão acima e abaixo da tela e são mais largos que a Isso permite que o sprite se mova o suficiente para fora do palco para não ficar visível para nós Se os removermos, poderemos ver pequenos pedaços dos clones do sprite de nível nas bordas do palco Portanto, se você decidir criar seus próprios níveis para o jogo, não se esqueça de adicionar esses retângulos às roupas de sprite de qualquer novo nível Tudo bem, com tudo isso resolvido, a seguir faremos algo para ficar presos na parte inferior do palco quando cairmos do nível, além de fazer com que possamos alternar facilmente entre os níveis para fins de teste 83. Corrija alguns erros: Antes de continuarmos, há alguns bugs que devemos resolver. Primeiro, talvez você já tenha descoberto isso sozinho. Se chegarmos a um ponto alto do nível e cairmos para o fundo, vamos direto para o chão. Para ver por que isso está acontecendo, vamos ver o código do sprite do player e mostrar a variável de velocidade Y. Então, vamos ficar de olho no valor à medida que caímos de um ponto alto novamente. Como podemos ver, o valor da velocidade Y cai muito rapidamente e continua caindo Isso faz com que o sprite do jogador caia tão rápido que ele consiga passar direto pelo nível antes que o script de movimento vertical tenha a chance de detectar uma Para corrigir isso, precisamos colocar um limite no valor da velocidade Y. Faremos isso no script de movimento vertical da alça pouco antes do bloco de movimentação vertical aqui na parte inferior Então, primeiro, vamos controlar e colocar um se for o bloco em algum espaço vazio. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Então vamos às variáveis e vamos verificar se a velocidade Y é menor que menos 20. Nesse caso, vamos colocar um conjunto para bloquear e definir a velocidade Y para menos 20. Finalmente, vamos pegar o bloco I then e colocá-lo logo acima do bloco vertical de movimento E vamos tentar. Se agora cairmos de um ponto alto, velocidade Y não fica abaixo de menos 20 e não caímos no chão. Incrível. Agora podemos ocultar a variável de velocidade Y novamente. Tudo bem, o próximo bug tem a ver com deslizar em encostas. Se pularmos da parte inferior desta encosta aqui e pousarmos perto do topo, mesmo que comecemos a deslizar, na verdade deslizaremos pela encosta Isso está acontecendo porque, se mostrarmos a variável SpeedX, quando pularmos para a esquerda e continuarmos pressionando a tecla de movimento esquerda, o SpeedX se tornará um grande E embora alteremos a velocidade X por um número positivo, quando começamos a deslizar para a direita, não a alteramos suficiente para tornar o valor da velocidade x Isso nos leva a deslizar para cima da encosta em vez de para baixo. Para corrigir isso, vamos ver o script slide on slope Aqui embaixo, quando mudamos para o estado de deslizamento de inclinação, vamos também definir um conjunto para bloquear e definir velocidadex No entanto, como esses blocos também funcionam se já estivermos no estado de deslizamento inclinado, se tentarmos isso agora, ele continuará ajustando a velocidade x para zero, fazendo com que deslizemos muito lentamente Então, em vez disso, só queremos definir a velocidade X como zero se não estivermos atualmente no estado de deslizamento de inclinação Para fazer isso, vamos até Control e pegar um bloco I then, e podemos realmente envolvê-lo em todos esses três blocos aqui. Para a condição, vamos até os operadores e trazemos um bloco, depois trazemos um bloco igual. Agora vamos às variáveis e vamos verificar se o estado não é igual ao slide de inclinação Se tentarmos agora, deslizar funciona da mesma forma que antes, mas agora pular da parte inferior da encosta não faz com que deslizemos pela encosta Tudo bem, com esses bugs resolvidos, podemos esconder a variável de velocidade X novamente e voltar a trabalhar nos níveis. 84. Como reiniciar um nível: No momento, se cairmos do nível, ficaremos presos na parte inferior do palco. Eventualmente, adicionaremos um pouco de líquido que flui ao longo da parte inferior de cada nível e, se o jogador cair nele e ainda tiver um pouco de saúde restante, responderemos em algum lugar próximo. Mas, por enquanto, vamos reiniciar o nível desde o início. Para reiniciar um nível, precisaremos fazer coisas como redefinir as variáveis dos vários sprites no jogo e colocar os sprites de volta em suas posições iniciais Para começar a fazer isso, vamos examinar o código do pano de fundo Atualmente, estamos iniciando o ciclo do jogo assim que a bandeira verde é clicada Em vez disso, o que queremos fazer é primeiro notificar os sprites sempre que iniciarmos um nível para que eles possam se configurar e, depois, iniciaremos o loop do jogo Então, sempre que iniciarmos ou reiniciarmos um nível, transmitiremos uma nova mensagem. E, por enquanto, começaremos Nível um quando a bandeira verde for clicada Primeiro, vamos separar o loop do jogo do script da bandeira verde Em seguida, vamos aos eventos e vamos adicionar um bloco de transmissão na parte inferior do script. Vamos transmitir uma nova mensagem, que podemos chamar de nível inicial. Lex receberá a mensagem do nível inicial. Então, vamos trazer um bloco de recebimento W I e receber o nível inicial. E aqui queremos redefinir todas as variáveis globais que precisam ser redefinidas no início de um nível. No momento, isso consiste apenas nas variáveis de posição de rolagem. Então, em vez de definir Scroll x e Scrolly como zero no script de bandeira verde, vamos fazer isso nos scripts de nível inicial Em seguida, precisamos notificar os sprites de que é hora de se configurarem e faremos isso transmitindo outra mensagem Mas desta vez, queremos usar um bloco de transmissão e espera. Isso fará com que o resto do script espere até que todos os sprites terminem de se configurar Isso é importante porque queremos que os sprites estejam completamente prontos antes de iniciarmos o ciclo do jogo Ok, então vamos transmitir uma nova mensagem chamada configuração. Finalmente, podemos anexar o loop do jogo na parte inferior do script. Em seguida, receberemos a mensagem de configuração dentro dos sprites do jogador e do nível e os prepararemos para iniciar o nível Vamos começar com os sprites do jogador. Primeiro, vamos inserir uma configuração de bloqueio e recebimento quando eu receber. E aqui, queremos definir todas as variáveis do sprite do jogador que provavelmente mudarão à medida que avançamos em um nível Basicamente, essas são todas as variáveis que estamos definindo no script da bandeira verde, exceto aceleração e força de salto, que sempre permanecerão as mesmas. Assim, podemos deixar a aceleração definida e definir os blocos de força de salto no script da bandeira verde. Mas vamos mover todos os outros para o quando eu receber o script de configuração. E isso é tudo o que precisamos fazer com o sprite do jogador por enquanto Então, vamos passar para os sprites de nível. Novamente, vamos inserir um bloco W I receive e receber a mensagem de configuração. E aqui queremos executar o script de geração para que possamos criar clones usando os trajes corretos para o nível atual No entanto, se estivermos reiniciando um nível ou continuando para o próximo nível, já teremos alguns clones de sprites de nível no palco. Portanto, antes de gerar o nível, queremos nos livrar de todos os clones existentes Para fazer isso, vamos até Control e adicionaremos um bloco Delete This Clone ao script de configuração Com isso, se o sprite recebe a mensagem for um clone, ele será excluído Mas se for o sprite do nível original, ele simplesmente ignorará a exclusão desse bloco clone Então, se o sprite ultrapassar esse bloco, sabemos que é o sprite original e não um Então, agora podemos mover o bloco de geração do script de bandeira verde para o script de configuração. No entanto, na verdade, não conseguimos anexar nada na parte inferior de um bloco de exclusão deste clone Isso ocorre porque se o sprite for um clone e for excluído, ele não poderá mais executar blocos. Então, precisaremos de alguma outra forma de determinar se o sprite é um clone ou Se usarmos as fantasias, essa é na verdade a principal razão pela qual eu forneci uma fantasia de piscar de olhos, e podemos ver que muitos dos outros sprites também têm uma fantasia de piscar Se usarmos o traje em branco apenas para o sprite original, sempre que precisarmos verificar se um sprite é o original, podemos apenas verificar se ele está usando o Para fazer isso com o sprite de nível, vamos voltar ao código Em seguida, vamos para Los, em um bloco de fantasias, trocar roteiro da bandeira verde e mudar para o traje em branco. E caso ocultemos acidentalmente o sprite, vamos também trazer um bloco de shows Agora, no script de configuração, só executaremos o bloco delete this clone se o sprite não estiver usando o traje em branco Então, vamos até Control e agrupar um bloco IN ao redor do bloco delete this clone Para a condição, vamos até os operadores e trazer um bloco. Em seguida, coloque um bloco igual. Agora vamos até Looks e vamos verificar se o nome do traje não é igual a branco. Isso significa que o sprite é um clone, então vamos excluí-lo. Caso contrário, podemos executar o bloco Generate. No entanto, como o script Generate altera o traje do sprite original, sempre que o sprite original receber a mensagem de configuração novamente, ele não usará o traje em branco Então, após o bloco de geração, precisamos trazer um bloco de troca de roupa e trocá-lo de volta para a roupa em branco. Agora, se rodarmos o jogo, as coisas ainda devem funcionar quase exatamente da mesma forma que antes, exceto que há um pouco de falha antes que a parte correta do nível apareça Isso acontece porque, no código do plano de fundo, o loop do jogo não começa até que todos os sprites terminem de receber a mensagem de configuração Isso é o que queremos, mas também significa que os clones dos sprites de nível não sejam posicionados corretamente no palco por alguns quadros Como o posicionamento acontece pela primeira vez quando eles recebem a mensagem de atualização 1, o que podemos fazer é voltar ao código do sprite de nível, cada vez que criamos um clone, podemos ajustar sua posição no palco Para fazer isso, vamos encontrar algum espaço vazio. Em seguida, vá para Control e traga um quando eu começar como um bloco clone Agora vamos para MI Blocks e adicionar um bloco de ajuste de posição a ele. Agora, se clicarmos na bandeira verde, o nível deve aparecer corretamente imediatamente Da mesma forma, para garantir que o sprite do jogador seja posicionado corretamente no início de um nível, podemos acessar o script de configuração de recebimento W I para o sprite do jogador e adicionar um bloco de ajuste de posição na Ok, então o que podemos fazer agora é fazer com que, caindo do nível e atingindo a parte inferior da fase, comecemos o nível Para fazer isso, vamos começar com os scripts de movimentação vertical. Na parte inferior, verificaremos se o sprite do jogador caiu para a parte inferior da fase e, em caso afirmativo, reiniciaremos o nível Então, primeiro, vamos controlar e trazer um if the block. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vá para variáveis e vamos verificar se Y é menor que 180 negativos. Nesse caso, podemos ir aos eventos, trazer um bloco de transmissão e transmitir a mensagem do nível inicial. Se agora rodarmos o jogo e cairmos para o fundo, o nível será reiniciado Tudo bem, agora podemos reiniciar o nível atual, mas no momento, não temos como alternar facilmente entre os níveis. Se quisermos fazer isso, temos que parar o jogo, acessar o código do pano de fundo e alterar o valor da variável de nível Obviamente, isso pode ser muito inconveniente ao testar coisas. Então, na próxima lição, faremos com que possamos pressionar uma tecla no teclado para alternar entre os níveis. 85. Como mudar de níveis: Para alternar entre os níveis pressionando uma tecla, vamos verificar se estamos no código do pano de fundo e vamos inserir um bloco pressionado com a tecla win E usaremos a chave para isso. Agora, normalmente, a troca de nível ocorre quando o jogador termina o nível atual e, quando isso acontece, transmitiremos uma mensagem de término de nível, que o cenário receberá e mudará para o próximo Então, vamos também transmitir a mensagem do nível final no script de pressionamento da tecla Win trazendo um bloco de transmissão e transmitindo uma nova mensagem chamada Nível de conclusão Em seguida, receberemos a mensagem do nível final. Então, vamos começar: quando eu recebo o bloqueio e recebo o nível final , a primeira coisa que queremos fazer aqui é interromper todos os outros scripts para garantir que o loop do jogo não continue em execução. Então, vamos controlar e colocar um bloqueio. E vamos parar com outros scripts e sprites. Em seguida, aumentaremos a variável de nível em um. Então, vamos às variáveis, introduzindo uma mudança por bloco e alterando o nível em um. Depois de fazer isso, queremos verificar se o valor do nível atual é maior que o número total de níveis no jogo. Quando isso acontecer, mais tarde, faremos com que o jogo termine, mas, por enquanto, simplesmente voltaremos ao primeiro nível Para fazer isso, vamos primeiro criar uma nova variável global. E vamos chamá-lo de nível final. E não precisamos mostrar isso. O valor final do nível não mudará durante o jogo, então vamos defini-lo no script da bandeira verde. Então, vamos adicionar um conjunto para bloquear antes do nível inicial da transmissão e definir o nível final para quatro, que é o nível do chefe Agora, quando eu receber o nível final, verificaremos se o valor do nível é maior que o valor do nível final. Então, vamos controlar e introduzir um bloqueio se então. Para a condição, vamos até os operadores e trazer um bloco maior que. Em seguida, vamos às variáveis e verificamos se o nível é maior que o nível final. Nesse caso, vamos colocar um conjunto para bloquear e definir o nível como um. Por fim, vamos aos eventos, adicionar um bloco de transmissão na parte inferior do script e o nível inicial da transmissão. Vamos até as variáveis e mostraremos a variável de nível. E se agora rodarmos o jogo e pressionarmos a tecla, podemos percorrer todos os níveis. O que precisamos fazer agora é definir uma boa posição inicial para os sprites dos jogadores em cada nível Primeiro, vamos ter certeza de que estamos no nível um. Então vamos parar o jogo e acessar o código do sprite do jogador E no script de configuração W que recebo, em vez de usar sempre os mesmos valores iniciais de X e Y, usaremos valores diferentes dependendo do nível atual, e faremos isso em um bloco personalizado. Então, vamos até o Mblocks e criemos um novo. Vamos chamá-la de posição inicial definida. E clique em OK. Vamos separar o conjunto X, definir Y e ajustar os blocos de posição do script de configuração e colocá-los de lado, e vamos substituí-los no script por um bloco de posição inicial definido Agora vamos mover o bloco de posição inicial definido para baixo aqui. Agora, para cada nível, continuaremos a colocar o jogador um pouco acima do solo para que ele caia no nível. Na verdade, usaremos a mesma posição inicial para os níveis um e dois, mas usaremos posições diferentes para os níveis três e quatro. Então, para verificar o nível atual, vamos começar controlando e adicionando um bloco I then s ao script de definir a posição inicial. Para a condição, vamos até os operadores e primeiro trazer um bloco ou. Em seguida, vamos adicionar um bloco igual a cada lado. Agora vamos às variáveis e vamos verificar se o nível é igual a um ou o nível é igual a dois Nesse caso, vamos trazer blocos do conjunto X e do conjunto Y que salvamos aqui. E vamos definir X para menos 115 e Y para menos dez. Em seguida, usaremos valores diferentes para os níveis três e quatro. Então, vamos voltar ao controle e adicionar um bloco de entrada e saída à parte de saídas deste. Para a condição, vamos usar uma duplicata de um dos blocos de nível igual aqui e vamos verificar se o nível é Agora vamos duplicar o conjunto x e definir os blocos Y do bloco externo (se for o bloco e adicioná-los à parte I deste, e vamos definir X para menos 165 e Y para 705 Finalmente, se tivermos alcançado a parte de saída do bloco interno de ENTRADAS e saídas, estamos no nível quatro. Então, vamos trazer mais alguns blocos do conjunto x e do conjunto Y, e vamos definir X para menos 75 e Y para 50. Depois de tudo isso, queremos ajustar a posição dos sprites dos jogadores no palco Então, vamos adicionar o bloco de ajuste de posição na parte inferior do script. Tudo bem, vou reajustar um pouco os scripts. E se agora rodarmos o jogo e percorrermos os níveis, podemos ver o sprite do jogador começar em diferentes posições nos níveis No nível três, porém, estamos começando um pouco mais alto do que os outros níveis. E como atualmente estamos definindo a posição de rolagem para 00 no início de cada nível, que fica na parte inferior esquerda do nível, ela precisa rolar para cima antes de podermos ver o jogador. Para corrigir isso, devemos usar uma posição de rolagem inicial diferente para o nível três. Para fazer isso no código do pano de fundo, vamos primeiro acessar Meus Blocos e criar um novo Vamos chamá-lo de set start scroll e clicar em OK. No script do nível inicial, podemos retirar os blocos set scroll lex e definir scroll Y e colocá-los de lado. E vamos adicionar um bloco de rolagem inicial definido na parte superior do script do nível inicial. Agora vamos trazer a rolagem inicial do conjunto definido e o bloco de definição em algum lugar aqui embaixo. O valor inicial para scroll x sempre será zero, então podemos seguir em frente e adicionar o bloco set scroll x to zero na parte superior dos scripts. Para o rolo Y, usaremos zero para todos os níveis , exceto o nível três. Então, vamos controlar e introduzir um bloco if then s. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se o nível é igual Agora, se dermos uma olhada nos trajes de sprite de nível três, o jogador começará no clone de nível que usa o traje de nível três a zero O índice da linha para isso é dois. Então, para obter o valor correto da rolagem Y, podemos pegar 360, que é a altura do palco, e multiplicá-la por dois, resultando em 720 Ok, então, de volta ao código do pano de fundo, vamos adicionar um bloco Y de rolagem definido a cada parte do bloco I e depois outs aqui, e vamos configurá-lo para 720 para a parte I e zero para as Tudo bem, se agora rodarmos o jogo e mudarmos para o nível três, a câmera começa na posição correta. Excelente. Ok, agora só precisamos fazer algumas melhorias. Primeiro, se virarmos para a esquerda e mudarmos de nível, começaremos voltados para a esquerda. Seria melhor se sempre começássemos voltados para a direita. Para fazer isso, vamos ver o código dos sprites do jogador. No script de configuração, vamos entrar em movimento e colocar um ponto na direção 90 do bloco. Agora, sempre estaremos voltados para a direita no início de um nível. Em seguida, se cairmos do nível, quando o nível for reiniciado pela primeira vez, começaremos no estado de queda, passaremos brevemente para o estado de inatividade e, em seguida, retornaremos ao estado seguida, retornaremos ao quedas antes de aterrissar no chão Isso acontece porque, à medida que caímos para o fundo, ainda estamos no estado de queda quando o nível é reiniciado Em seguida, no script de configuração, estamos mudando para o estado ocioso E mesmo que tecnicamente estejamos caindo, o script do estado de atualização não é executado até o início do loop do jogo, então permanecemos no estado ocioso por alguns quadros Para corrigir isso, no script de configuração, vamos definir o estado para cair em vez de ocioso Além disso, como estamos no ar, vamos definir a variável no ar para algo alto, como 99. E já que estamos nisso, vamos também definir a variável de salto para 99 Agora, se cairmos para o final do palco, reiniciando o nível, permaneceremos no estado de queda até pousarmos no chão Tudo bem, incrível. Agora estamos prontos para melhorar a aparência do jogo adicionando mais algumas coisas e começaremos adicionando alguns objetos do ambiente. 86. Adicione objetos de ambiente: Se dermos uma olhada nas roupas do sprite ambiental aqui, descobrimos há algum tempo que seus nomes coincidem com os nomes das roupas do sprite de nível e que os objetos dentro de cada traje se alinham com os ladrilhos da roupa do nível correspondente Separar esses objetos do sprite do nível nos permite fazer com que pareçam fazer parte do nível mas não causar colisões com Ok, então adicionar os objetos do ambiente ao jogo, na verdade, é um processo muito semelhante à forma como adicionamos as partes do nível. Primeiro, precisamos examinar todas as roupas do nível atual, dividir os nomes e criar clones para cada uma, usando os índices de linha e coluna para posicionar os E, acredite ou não, todo o código que precisamos atualmente para o ambiente Sprite já está dentro do sprite de nível Então, vamos ao nível do código Sprite. Copiaremos cada script daqui para os sprites do ambiente Porém, para evitar problemas do zero, antes de copiarmos um script que contém um bloco personalizado, precisamos primeiro copiar o script definido para esse bloco. Então, primeiro, podemos copiar, definir, ajustar a posição e, em seguida, definir criar clone Agora vamos copiar, quando eu começar como clone, os scripts de atualização três e um, definir a string dividida, definir as gerações e, finalmente, o script de configuração e o script de bandeira verde Agora podemos entrar no código Sprite do ambiente e reorganizar tudo A única diferença com o sprite do ambiente é que não precisamos nos preocupar definir as variáveis Max scroll X e Max scroll Y no script de geração, pois já estamos fazendo isso no sprite de nível Também é possível que os sprites do ambiente tenham menos linhas e colunas do que o sprite de nível de um determinado nível, que causará problemas se definirmos a posição máxima de rolagem no sprite do ambiente Na verdade, isso vale para o nível quatro, que não tem nenhuma roupa de sprite ambiental Então, vamos nos livrar dos blocos set max scroll x e set max scroll Y na parte superior do script, bem como aqueles na parte inferior do script. Isso significa que também não precisamos mais das variáveis máxima de linha e coluna máxima, então podemos nos livrar dos blocos aqui para inicializá-los, bem como dos blocos if then aqui embaixo para configurá-los E também podemos remover completamente as variáveis da linha máxima e da coluna máxima acessando as variáveis, clicando com o botão direito do mouse em cada uma e escolhendo excluir. Se agora rodarmos o jogo, os objetos do ambiente foram adicionados a cada nível. Tudo bem. Agora, no momento, tudo está colocado corretamente no palco, com o sprite do jogador sendo desenhado na frente dos clones do Sprite do nível e do ambiente No entanto, se pararmos o jogo, mudarmos o traje de Sprites do ambiente clicarmos e arrastarmos para o cenário e, em seguida, executarmos o jogo, os objetos do ambiente agora serão desenhados em cima de todo o resto Poderíamos corrigir isso adicionando um bloco de camada de retorno ao script de clone When I start para os sprites do ambiente, garantindo que os clones estejam sempre na No entanto, à medida que começarmos a adicionar mais e mais sprites, como os inimigos e o plano de fundo, ficará cada mais difícil manter tudo organizado Isso significa que precisaremos criar uma maneira melhor de lidar com camadas, e faremos isso na próxima lição. 87. Classifique as camadas: Até agora, no curso, classificar sprites no palco envolvia simplesmente enviar alguns sprites para a camada traseira e trazer outros sprites para a Isso funcionou bem, pois nossos dois jogos anteriores tinham apenas alguns tipos diferentes de sprites Com este jogo, no entanto, temos uma grande variedade de sprites e precisamos uma maneira melhor de garantir que todos sejam sorteados na ordem correta Por exemplo, é claro que desejará desenhar primeiro os objetos de fundo, depois desenhar os objetos do ambiente, depois as peças do nível, depois os inimigos e os itens colecionáveis, depois os sprites do jogador e, finalmente, alguns sprites do HUD para mostrar saúde do jogador e o total de moedas inimigos e os itens colecionáveis, depois os sprites do jogador e, finalmente, alguns sprites do HUD para mostrar a saúde do jogador e o total de moedas restantes no nível. Em muitos mecanismos de jogo, como Unity e Gadot, temos a opção de aplicar uma ordem Z a cada sprite Os sprites serão então sorteados em ordem, desde aquele que tem a ordem Z mais baixa até aquele que tem a ordem Z mais alta Fazer isso do zero requer um pouco mais de trabalho manual, mas na verdade não é muito difícil quando entendemos exatamente como as camadas funcionam no zero. Para um exemplo simplificado, digamos que temos os sprites do jogador e alguns clones, cada um dos ambientes em nível de caracol, os cada um dos ambientes em nível de caracol sprites de fundo e de moedas, e todos eles estão atualmente sorteados em uma ordem aleatória E, na verdade, para os clones dos sprites Snell e coin, não importa ordem em que os desenhamos, desde apareçam acima dos clones do sprite de nível e abaixo dos sprites e Portanto, para fins de classificação de camadas, podemos agrupá-las todas em um único tipo, por exemplo, componente Então, agora o que podemos fazer é aplicar uma ordem Z a cada tipo. Então, primeiro, digamos que damos ao tipo de jogador uma ordem Z de zero. Para fazer com que todos os outros tipos apareçam abaixo do player, eles precisam ter ordens Z menores que zero, então vou usar números negativos. Por exemplo, podemos dar um negativo a todos os sprites componentes, desenhando-os diretamente abaixo do sprite do jogador Em seguida, podemos dar aos sprites de nível menos dois, sprites do ambiente menos três, para que apareçam abaixo dos sprites de nível e, finalmente, dar aos sprites de fundo menos quatro, fazendo com que apareçam abaixo de todo o fazendo com que apareçam Tudo bem, agora, no início de um nível, todos os nossos sprites atualmente têm uma ordem aleatória de camadas novamente, e agora também temos uma lista de variáveis para acompanhar as ordens Z de cada sprite no palco No momento, a lista está vazia porque cada sprite deve adicionar sua própria ordem Z à lista durante a configuração inicial do nível Agora, digamos que o Scratch decida primeiro executar o script de configuração do sprite do jogador Como a lista de pedidos Z está vazia no momento, podemos simplesmente adicionar a ordem do jogador Sprite Z à lista e mantê-la na camada frontal Em seguida, temos um sprite de nível. O sprite de nível tem uma ordem Z de menos dois. Isso é menor do que a ordem zero do sprite Z do jogador, então colocamos a ordem Z do sprite de nível abaixo dela na Agora podemos primeiro trazer o sprite de nível para a camada frontal acima do sprite do jogador Mas como ele tem um item acima dele na lista de pedidos Z, vamos enviá-lo para trás ou para baixo em uma camada, colocando-o novamente abaixo do sprite do jogador Agora, até agora, você pode estar pensando que mover um sprite para a camada frontal depois para trás é meio inútil, mas tenha paciência comigo porque agora temos um Os sprites componentes têm uma ordem Z de menos um, que é menor que zero e maior que menos dois Portanto, sua ordem Z vai diretamente entre os dois itens atuais na lista de pedidos Z. Agora, trazemos o sprite do componente para a camada frontal enviamos para trás em uma camada para que corresponda ao seu lugar na lista de pedidos Z. E agora o componente está corretamente colocado acima do sprite de nível e abaixo do sprite do jogador Em seguida, temos outro sprite de nível. Primeiro, pesquisamos na lista de pedidos Z, começando do topo até encontrarmos um valor menor que a ordem Z do sprite de nível Z de menos dois Não encontramos um, então adicionamos outros menos dois no final da lista. Agora movemos o próprio sprite para a camada frontal depois para trás em três Da mesma forma, para o próximo componente sprite, procuramos um valor na lista que seja menor que menos um Isso acontece quando alcançamos os primeiros menos dois, então adicionamos um negativo entre o outro menos um e os primeiros menos dois. Em seguida, movemos o sprite para a camada frontal e para trás em duas Se continuarmos fazendo isso com todos os sprites, eles acabarão na ordem correta das camadas, com o sprite do jogador na camada frontal e os sprites de fundo na sprites de fundo na Como mencionei antes, este é um exemplo bastante simplificado e, na verdade, terá outros tipos de sprites, como os sprites do Hud, que serão colocados acima dos sprites que serão colocados acima Mas de qualquer forma, acho que isso é explicação suficiente por enquanto. Então, vamos ver como podemos fazer tudo isso no código. Primeiro, precisaremos de uma lista global de variáveis para acompanhar as ordens Z dos sprites que estão atualmente no jogo e a inicializaremos no código do plano de fundo Então, em variáveis, vamos fazer uma nova lista, que podemos chamar de ordens Z. Queremos redefinir a lista no início de cada nível. Então, vamos excluir todo o bloco de pedidos Z e adicioná-lo ao topo do quando eu receber o script de nível inicial. Em seguida, precisamos criar variáveis globais para manter a ordem Z de cada tipo de camada. Vamos criar uma nova variável e chamar o primeiro jogador de Z. E podemos ocultar essas variáveis à medida que as criamos Os valores das variáveis de ordem Z sempre permanecerão os mesmos, então vamos defini-los no script de bandeira verde. Então, vamos pegar um conjunto para bloquear e colocá-lo antes do bloco do nível inicial da transmissão. E vamos usá-lo para colocar o jogador Z em zero. Agora vamos criar outra variável e chamá-la de efeito reverso Z. Os efeitos de retorno serão para qualquer efeito que quisermos desenhar diretamente abaixo do sprite do jogador Atualmente, isso consistirá apenas no sprite do efeito de slide de inclinação Mas, no futuro, podemos decidir adicionar mais alguns efeitos. Ok, então vamos adicionar outro conjunto para bloquear ao script de bandeira verde e vamos reverter o efeito Z para menos um. Para a próxima variável, vamos chamá-la de componente Z. Usaremos essa para os sprites inimigos, os sprites colecionáveis, como moedas e chaves, e para os sprites da Para isso, vamos colocar um conjunto para bloquear e defini-lo como menos dois. Para a próxima variável, vamos fazer o nível Z e defini-lo como menos três. Depois disso, temos o ambiente Z, que será definido como menos quatro. Agora vamos criar outro, chamá-lo de fundo Z e configurá-lo para menos cinco. Ok, isso é tudo para o sprite dos jogadores e para todos os sprites que serão desenhados abaixo No entanto, também temos alguns sprites que serão desenhados acima do sprite do jogador Para o primeiro, vamos criar uma nova variável chamada efeito frontal Z. Isso será para efeitos que aparecerão na frente do jogador, como as partículas de poeira quando o jogador cair no chão Para manter os blocos em ordem, vamos adicionar um bloco do conjunto dois acima do bloco Z do jogador definido e usá-lo para definir o efeito frontal Z como um. Vamos criar outra variável, que chamaremos de líquido Z, e vamos configurá-la para duas. Em seguida, vamos criar um chamado Hud Z e configurá-lo para três. Finalmente, vamos criar mais uma, que chamaremos de sobreposição Z. Isso será para coisas como a sobreposição de fases quando o jogo estiver pausado Ok, vamos definir a sobreposição Z para quatro. Tudo bem, agora só precisamos usar essas variáveis e ordenar todos os nossos sprites, e começaremos com o sprite do jogador Então, vamos ao código Sprite do player. O código que escreveremos para classificar um sprite nas camadas será, na verdade, o mesmo para todos os Então, para facilitar a cópia do código entre os sprites, vamos escrevê-lo dentro de um bloco personalizado Então, vamos ao Mbloxs e criemos um novo. Primeiro, vamos digitar sort em camadas em a, em seguida, vamos adicionar uma nova entrada, que chamaremos de ordem Z. E queremos ter certeza de verificar a execução sem a atualização da tela para isso. Em seguida, clique em OK. Classificaremos o sprite nas camadas no início de um nível Então, vamos até o script de configuração W I receive e vamos adicionar um bloco de classificação em camadas na parte inferior. Para as entradas da ordem Z, vamos às variáveis e introduzimos um bloco Z do jogador Ok, agora vamos trazer o bloco de classificação definido em camadas até aqui. A primeira coisa que faremos no script é pesquisar na lista de pedidos Z até encontrar o primeiro item com um valor menor que as entradas da ordem Z e precisaremos usar uma nova variável para acompanhar o índice atual na lista Então, vamos criar um novo, que podemos chamar de índice de camada e criá-lo somente para esse sprite E vamos continuar e esconder a variável. O primeiro item em uma lista tem um índice de um. Vamos adicionar um bloco de conjunto dois ao script da camada de classificação e definir o índice da camada como um Em seguida, vamos controlar e repetir até bloquear. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Para a primeira entrada, vamos às variáveis e primeiro trazemos um item do bloco. E queremos obter o item no índice da camada na lista de pedidos Z. E vamos verificar se é menor que as entradas da ordem Z. Até que isso aconteça, continuaremos pesquisando na lista. Então, vamos fazer uma alteração por bloco e alterar o índice posterior por um. Agora você pode estar pensando quando a lista está vazia? Ou se não houver nenhum item na lista que seja menor que a entrada da ordem Z? Portanto, o índice da camada vai além do item final na lista. Bem, felizmente, isso não é um problema. O motivo é que, se tentarmos obter um item inexistente de uma lista, ele retornará o valor vazio E no que diz respeito ao zero , qualquer valor é maior do que o valor vazio. Portanto, quando a lista estiver vazia, índice da camada permanecerá igual e, se a repetição for repetida até que o bloco chegue ao final da lista sem encontrar um item que corresponda à condição, o bloco terminará e o índice da camada será um a mais do que o número total de itens na lista. Na verdade, isso é o que queremos porque agora podemos colocar uma inserção no bloco abaixo do bloco de repetição até e inserir a entrada da ordem Z no índice da camada na lista de pedidos Z. Agora, se rodarmos o jogo, podemos ver que o valor Z do jogador, que é zero, foi adicionado à lista. entanto, isso ainda não afeta as camadas reais, e podemos ver que os objetos do ambiente ainda estão desenhados em cima do player. Para colocar o sprite do jogador na camada correta, vamos até Looks e primeiro adicione uma camada frontal na parte inferior do script da camada de classificação Em seguida, queremos retroceder camadas suficientes para corresponder ao índice de sprites na lista de pedidos Z. Então, primeiro, vamos avançar com um bloco de camadas aqui. Mas, em vez disso, queremos retroceder. Agora, como a camada frontal é igual ao índice de uma na lista, para retroceder pelo número correto de camadas, podemos usar uma a menos do que o valor do índice da camada Então, vamos controlar e adicionar um bloco de subtração ao bloco de retrocesso Em seguida, vamos para as variáveis e fazer o índice da camada menos um. Para o sprite do jogador no momento, o índice da camada menos um será zero, que significa que o sprite não se moverá para trás e permanecerá na Então, agora, se rodarmos o jogo, ele coloca o sprite do jogador na camada frontal, desenhando-o acima de tudo. No entanto, os objetos do ambiente ainda estão acima dos blocos de nível , então vamos corrigir isso a seguir. Para fazer isso, vamos pegar o script da camada de classificação definida aqui e copiá-lo no sprite de nível e nos sprites do ambiente Agora vamos ao nível do código do sprite. Para os sprites que usam clones, o sprite original usará o traje em branco e nunca será realmente visível no palco Isso significa que podemos simplesmente deixá-lo ser empurrado para o final da pilha de camadas e não nos preocupar em classificá-lo nas No entanto, precisamos classificar os clones e precisaremos classificar cada um à medida que forem criados Para fazer isso, podemos usar o when I start como um script clone. E aqui, vamos para M Blocks e trazer um bloco de camadas de classificação Em seguida, vamos às variáveis e usaremos um bloco de nível Z como as entradas da ordem Z. Agora, se rodarmos o jogo, obteremos vários três negativos na lista abaixo do zero Cada três negativos representa um clone de sprite de nível para o nível atual Além disso, os blocos de nível agora aparecem acima dos objetos do ambiente no palco. Portanto, na verdade, nem é necessário classificar os clones de sprites do ambiente no momento, pois eles já estão sendo empurrados para trás No entanto, depois de adicionarmos o plano de fundo, será necessário. Vamos continuar e cuidar disso agora. Assim como com o sprite de nível, só precisamos classificar os clones do Sprite do ambiente Então, no script Quando eu começo como um clone, vamos até o Mblocks e introduzimos um bloco de classificação de camadas Em seguida, vamos às variáveis e usaremos um bloco Z de ambiente como entrada. Agora, se rodarmos o jogo, teremos um monte de quatros negativos abaixo dos três negativos na E só para ter certeza que a classificação de camadas está funcionando corretamente, vamos remover o bloco Z do ambiente aqui e vamos usar um como ordem Z. Se rodarmos o jogo agora, teremos vários no topo da lista, e agora os objetos do ambiente estão acima de tudo. Tudo bem, vamos nos certificar de usar o bloco Z do ambiente novamente para classificar os clones do ambiente, e também podemos ocultar a lista de pedidos Z. E agora que podemos continuar adicionando coisas ao jogo sem nos preocupar com as camadas, criaremos a seguir um plano de fundo rolante 88. Crie um fundo de rolagem: Se dermos uma olhada nos trajes dos sprites de fundo, temos quatro trajes principais, incluindo dois com algum tipo de vegetação alienígena e dois com nuvens Exibiremos todas as quatro roupas no palco ao mesmo tempo, colocando-as uma em cima da outra Além disso, cada traje foi desenhado para que possa ser repetido sem problemas ao longo do eixo horizontal Isso nos permite rolar as camadas de fundo junto com o nível conforme o jogador se move no jogo. Ok, então, para começar a colocar as camadas de fundo no palco, vamos ver o código do sprite em segundo plano Primeiro, vamos aos eventos e trazemos um bloco clicado com bandeira verde Então vamos até Looks, trazemos um bloco de roupas de troca e trocamos para a roupa em branco. Também queremos ter certeza de que não estamos escondendo o sprite, então vamos trazer um bloco de shows Agora vamos voltar aos eventos, inserir um bloco Quando eu receber e receber a mensagem de configuração. Aqui, primeiro queremos verificar se o sprite é um clone e, em caso afirmativo, vamos excluí-lo Vou te dar isso como um desafio. Pause o vídeo agora e veja se você consegue concluir o desafio Como fizemos com os sprites de nível e ambiente, podemos fazer isso verificando se o sprite não está usando a roupa em branco Então, vamos controlar e introduzir um I e depois bloquear. Para a condição, vamos até os operadores, trazer um bloco não e, em seguida, trazer um bloco igual. Agora vamos até Looks e vamos verificar se o nome do traje não é igual a branco. Nesse caso, podemos acessar o controle e adicionar um bloco de exclusão deste clone E, portanto, não esquecemos de fazer isso mais tarde. Vamos voltar para Looks at a Switch Costume Block na parte inferior do roteiro e voltar para o bloco de figurino em branco. Agora, antes de começarmos a criar os clones, vamos garantir que tudo seja posicionado corretamente no palco durante cada iteração do loop do jogo Para fazer isso, podemos acessar os sprites do ambiente e copiar o script de ajuste de posição definido para os sprites de fundo E também podemos copiar os scripts Quando eu recebo a Atualização 1 e Quando eu recebo a Atualização 3. Agora vamos voltar aos sprites em segundo plano e reajustar todos os scripts Em seguida, de volta ao script de configuração, antes de mudar para o traje em branco, criaremos clones para cada traje de camada E para rolar o plano de fundo, precisaremos criar dois clones para cada traje Vamos alinhar os dois clones lado a lado e movê-los juntos, e criaremos os clones em um bloco personalizado Então, vamos ao Mblock e criemos um novo. Primeiro, vamos digitar create Clones of. Em seguida, vamos adicionar uma entrada chamada traje e clicar em OK. No script de configuração, antes de mudar para o traje de piscar, vamos trazer quatro blocos de criação de clones. Os trajes são BG um, BG dois, BG três e BG quatro. Vamos usá-las como entradas nessa ordem, BG um, BG dois, BG três e BG quatro Agora vamos trazer o bloco crítico definido de Clones para algum lugar aqui E aqui, primeiro queremos mudar para o traje fornecido pela entrada do traje. Então, vamos até Looks, trazer um bloco de roupas e trocá-lo para a entrada de roupas. Em seguida, precisamos dar a ela uma posição mundial. Quando copiamos o script de ajuste de posição do sprite do ambiente, ele criou automaticamente as variáveis X e Y para Então, agora podemos configurá-los no script crit Clone acessando as variáveis e trazendo dois conjuntos de dois blocos Para o primeiro clone, definirá X para rolar X e Y para zero. Configurar X para rolar X iniciará o clone centralizado verticalmente no palco e definir Y como zero o colocará na parte inferior do Agora, vamos realmente criar o clone acessando Control e trazendo um bloco create clone of myself Agora precisamos criar outro clone usando o mesmo traje, mas ele precisa ter a largura total do palco à direita do primeiro Para fazer isso, vamos voltar às variáveis, fazer uma alteração por bloco e alterar X por 480. E deixaremos Y em zero para que os clones fiquem alinhados horizontalmente na parte inferior do nível Agora vamos criar o segundo clone acessando Control e trazendo outro clone crítico do bloco Antes de testarmos isso, precisamos posicionar cada clone no estágio à medida que ele é criado, bem como classificá-lo nas camadas Então, primeiro, vamos começar como um bloco clone. Em seguida, vamos aos blocos M e adicionaremos um bloco de ajuste de posição ao script. Agora vamos até um dos outros sprites em que trabalhamos até agora e copiá-lo do script de classificação em camadas para o sprite de fundo Em seguida, de volta ao sprite de fundo. Vamos adicionar um bloco de classificação e camadas ao quando eu começar como um script de clone Para a entrada da ordem Z, vamos às variáveis e usaremos um bloco Z de fundo. Se rodarmos o jogo agora, obteremos um plano de fundo que rola junto com o nível até chegarmos à metade do nível. Para corrigir isso, quando o primeiro clone de cada camada de fundo sai completamente do lado esquerdo do palco, precisamos movê-lo para a largura total do palco à direita, para que sua borda esquerda se alinhe com a borda direita do segundo Então, quando o segundo clone sair do palco, faremos o mesmo com ele e assim por diante Para fazer isso, precisamos adicionar algumas coisas ao script de ajuste de posição. Primeiro, vamos criar algumas novas variáveis. Vamos chamar o primeiro de novo X e torná-lo somente para esse sprite Para o segundo, vamos chamá-lo de Nu Y. Também apenas para este sprite E não precisamos mostrar as variáveis. Vamos usá-las para calcular as novas posições X e Y do sprite antes de movê-lo Então, por enquanto, vamos separar o bloco go to XY do script e vamos trazer o conjunto de dois blocos Com o primeiro, vamos definir um novo x usando o bloco X menos scroll x aqui Da mesma forma, vamos definir o novo Y como Y menos a rolagem Y. Em seguida, verificaremos se o novo valor X colocará o clone completamente fora do lado esquerdo do palco Esse será o caso se o NX for menor que 480 negativos. Então, vamos controlar e introduzir um bloco de TI. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vamos às variáveis e verificamos se o Nux é menor que menos 480 Se for esse o caso, queremos aumentar a variável NX em duas larguras de estágio ou Então, vamos fazer uma mudança por bloco e mudar o Nux por 960 Agora, como o NX e o New Y estão levando em consideração a posição de rolagem, nós os usaremos apenas para definir a posição real dos sprites no palco No entanto, também precisamos ajustar sua posição mundial no jogo. Então, vamos trazer outra mudança por bloco e também alterar X por 960 Finalmente, podemos reconectar o bloco go to XY na parte inferior do script e usar um novo bloco X para a entrada X e um novo bloco Y para as entradas Y. Se agora rodarmos o jogo e formos para a direita, o plano de fundo rola sem problemas Se voltarmos para a esquerda, no entanto, ele para de funcionar. Para corrigir isso, também precisamos verificar se o clone ultrapassou a borda direita do palco Esse será o caso quando o novo X for maior que 480. Então, para verificar isso, vamos primeiro separar o bloco go to XY novamente. Em seguida, vamos duplicar o bloco de TI e anexá-lo à parte inferior Desta vez, queremos verificar se o Nux é maior que 480, então vamos salvar o bloco Nux e nos livrar do bloco menor que Em seguida, vamos até os operadores e substituí-lo por um bloco maior que. Agora vamos verificar se o NX é maior que 480. Se for esse o caso, queremos mover o sprite para a esquerda em duas larguras de estágio, então vamos alterar as duas variáveis em menos 960 Agora podemos recolocar o bloco go to XY na parte inferior. E se tentarmos novamente, o plano de fundo agora deve rolar perfeitamente nas duas direções Tudo bem, isso funciona muito bem. Mas como todos os objetos de fundo estão rolando exatamente na mesma velocidade, parece um pouco plano Na vida real, à medida que nos movemos, as coisas que estão mais distantes de nós parecem passar mais lentamente do que as que estão mais perto de nós. Para conseguir algo semelhante em nosso jogo, podemos fazer com que as camadas de fundo rolem cada vez mais lentamente quanto mais recuam. Isso é chamado de efeito de paralaxe ou rolagem de paralaxe, e discutimos isso brevemente sobre o caos cósmico ao criar as estrelas no cósmico ao criar as estrelas Para criar esse efeito, precisaremos acompanhar em qual camada de fundo cada clone está e usá-la para ajustar sua velocidade de rolagem Então, primeiro, vamos às variáveis e criaremos uma nova. Vamos chamá-la de camada, e ela precisa ser somente para esse sprite E, a propósito, isso se referirá apenas à camada de fundo em que um clone está e não tem nada a ver com as camadas de rascunho Tudo bem, vamos clicar em OK e vamos esconder a variável. Em seguida, ao criar os clones no script de configuração, também precisamos passar em qual camada de fundo os clones devem estar Isso significa que precisamos adicionar outra entrada ao bloco personalizado crit Clones. Para fazer isso, podemos clicar com o botão direito do mouse em um dos blocos Crit Clones e escolher editar Primeiro, vamos adicionar um novo rótulo e digitar na camada. Em seguida, vamos adicionar uma nova entrada chamada camada e clicar em OK. Para as entradas da camada, começando do topo, vamos fazer um, dois, três e quatro Em seguida, vamos para o script rit Clone definido e, logo após o bloco de troca de figurino, vamos para as variáveis, trazemos um conjunto para bloquear e vamos definir a variável da camada para as entradas da camada para ajustar a velocidade de rolagem do clone usando seu valor de camada, vamos para o script de ajuste da posição No momento, estamos simplesmente definindo o novo X como X menos a rolagem x, que dá a cada clone a mesma velocidade de rolagem, mas agora vamos ajustá-la usando a variável de camada Para fazer isso, vamos primeiro mover o bloco scrollx para algum espaço vazio Agora vamos aos operadores, adicionar um bloco de divisão ao bloco de subtração e colocar o bloco scrollx no lado esquerdo No lado direito, vamos até as variáveis e introduzimos um bloco de camadas. Com isso, quanto maior o valor da camada, menor será a quantidade de rolagem. Isso faz com que o clone se mova em uma velocidade mais lenta à medida que rola Então, se rodarmos o jogo e começarmos a nos mover para a direita, as camadas de nuvens agora parecem passar mais lentamente do que as camadas de vegetação No entanto, o plano de fundo ainda está rolando um pouco rápido demais. Para corrigir isso, podemos multiplicar o valor da camada por algum outro valor maior que um Para fazer isso, vamos até os operadores e colocar um bloco de multiplicação em algum espaço vazio Vamos mover o último bloco para um lado e tentar multiplicá-lo por dois Agora vamos dividir o ScrollX por tudo isso e tentar . Isso é melhor. Porém, se começarmos a subir até o topo do nível, as coisas ficam um pouco estranhas com todas as camadas de fundo caindo na mesma velocidade Para corrigir isso, também precisamos aplicar o efeito de paralaxe à rolagem vertical Para fazer isso, vamos primeiro duplicar todos esses blocos matemáticos. Se clicarmos com o botão direito do mouse na parte de subtração e escolhermos duplicar, ela deverá duplicá-las Para este, vamos substituir X por Y e rolar x por rolagem Y. Em seguida, use tudo isso para definir Nu Y. Com isso, as camadas de fundo agora também devem rolar para cima e para baixo em velocidades diferentes E também precisamos levar em consideração o novo posicionamento ao criar os clones. Caso contrário, os clones ainda funcionarão bem, desde que comecemos com um pergaminho de 00 na parte inferior esquerda do nível Mas se começássemos em uma parte diferente do nível, o posicionamento estaria um pouco errado. Portanto, no script create Clone, em vez de definir X como scrollx, podemos configurá-lo usando uma duplicata do scroll x dividido por camada vezes E para Y, podemos usar uma duplicata de uma das camadas vezes dois blocos Isso deve garantir que os clones comecem a se posicionar corretamente. entanto, para tornar o código um pouco mais eficiente, provavelmente devemos usar uma variável em vez dos dois e toda a camada multiplicada por dois blocos, caso queiramos tentar um valor diferente posteriormente. Então, vamos às variáveis e criemos uma nova. Podemos chamá-lo de fator de rolagem e criá-lo apenas para esse sprite, e vamos ocultá-lo Como o valor do fator de rolagem não mudará durante o jogo, podemos defini-lo no script da bandeira verde. Então, vamos adicionar um conjunto de dois blocos ao script e vamos definir o fator de rolagem como dois. Agora podemos voltar à posição de ajuste e criar scripts de clone e substituir todos os na camada vezes dois blocos por blocos de fator de rolagem Isso facilitará muito o teste de valores diferentes para o fator de rolagem. Ok, agora, se rodarmos o jogo novamente, quando não estivermos nos movendo, todas as camadas de fundo também não se moverão, pois não há rolagem ocorrendo No entanto, como temos nuvens ao fundo, isso parece um pouco estranho A nuvem deve estar sempre em movimento. Então, o que podemos fazer é aplicar uma variável de velocidade a cada clone e usá-la para mover o clone, cada quadro Não queremos que as camadas de vegetação se movam a menos que estejamos rolando, então daremos a elas uma velocidade zero E para as camadas de nuvens, daremos à camada mais próxima uma velocidade um pouco mais rápida do traseira para manter o efeito de paralaxe. Está bem? Então, primeiro, precisaremos criar uma nova variável. Vamos chamar isso de velocidade e fazer com que seja apenas para esse sprite. E vamos esconder isso. Em seguida, no script de configuração, precisaremos passar os valores de velocidade ao criar os clones. Isso significa que precisaremos novamente adicionar uma nova entrada ao bloco personalizado create Clones. Então, vamos escrever, clique em um e escolha Editar. Primeiro, vamos adicionar um novo rótulo e digitar com rapidez. Em seguida, vamos adicionar uma nova entrada chamada velocidade e clicar em OK. Para os dois primeiros, vamos usar um zero para as entradas de velocidade. Para o terceiro, vamos fazer menos 0,5. E para o último, vamos fazer menos 0,7. Usar valores negativos fará com que eles se movam para a esquerda. Mas, se quiséssemos, poderíamos usar valores positivos para movê-los para a direita. Ok, agora vamos ver o script de clone crítico definido. Vamos às variáveis e adicionar outro conjunto para bloquear próximo ao topo do script, e vamos definir a variável de velocidade para as entradas de velocidade Tudo bem, agora só precisamos descobrir quando mover um clone usando seu valor de velocidade Acho que o melhor momento para fazer isso é quando o clone recebe a mensagem de atualização momento, não estamos lidando com entanto, no momento, não estamos lidando com a atualização da mensagem, então vamos aos eventos e trazer um novo bloco quando eu receber, e vamos receber a Atualização 2. E aqui, tudo o que precisamos fazer é ir às variáveis, trazer uma mudança por bloco e alterar X pela variável de velocidade. Ok, vamos tentar. Incrível. Agora, as nuvens se movem mesmo quando estamos parados, e a rolagem também ainda funciona Ótimo. Ok, agora, se pressionarmos a tecla algumas vezes para passar para o nível quatro, esse nível deveria estar dentro de um castelo, então não queremos que o fundo rolante apareça Só queremos que ele apareça nos níveis um, dois e três. Para fazer isso no script de configuração, vamos até Control e agrupamos um bloco ITN em torno todos os blocos para criar os clones E vamos nos certificar de colocar o bloco de roupas do switch abaixo do bloco IDN. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vamos às variáveis e verificamos se o nível é menor que o nível final. Isso fará com que os clones de fundo não sejam criados no nível final No entanto, o nível quatro ainda parece estranho por causa do fundo azul celeste Na verdade , esse plano de fundo faz parte do pano de fundo e podemos vê-lo na guia de cenários O azul celeste que estamos usando é chamado de céu. Também temos um cinza escuro aqui chamado Castle. Esse é o que queremos usar para o Nível quatro. Então, para isso, vamos ao código do pano de fundo. No script do nível inicial, podemos verificar qual é o nível atual decidir qual pano de fundo usar Para fazer isso, vamos controlar e colocar um bloco se for outro em algum espaço vazio. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vamos às variáveis e novamente verificar se o nível é menor que o nível final. Nesse caso, usaremos o pano de fundo do céu. Se formos para Looks, podemos mudar o pano de fundo usando o bloco de fundo do switch Então, vamos adicionar um à parte I e mudar o pano de fundo para o céu E por outro lado, vamos mudar para Castle. Agora vamos colocar tudo isso logo antes do bloco de configuração da transmissão. Se agora rodarmos o jogo, os três primeiros níveis ainda usam o cenário do céu, mas o quarto nível agora usa o cenário do castelo Ok, e com isso, o ambiente do nosso jogo agora está quase completo. Tudo o que resta é adicionar um pouco de líquido que flui pelo fundo Trabalharemos nisso a seguir. 89. Adicione algum líquido: Vamos selecionar o sprite líquido aqui e conferir suas fantasias O sprite líquido tem dois trajes principais, água e lava. E, como podemos ver se mostrarmos o sprite, cada um se estende por toda a largura do palco E, como no sprite de fundo, os trajes podem ser repetidos sem problemas ao longo do eixo horizontal Então, o que faremos com o sprite líquido é exibi-lo na parte inferior de cada nível Isso parecerá melhor do que apenas ter um monte de espaço vazio na parte inferior, como temos atualmente. Ok, e muito do código será o mesmo do sprite de fundo Então, para começar, podemos acessar o código do sprite em segundo plano e copiar os scripts Precisaremos fazer algumas alterações, mas, por enquanto, copiaremos todos os scripts como estão atualmente. Primeiro, vamos copiar, definir a classificação e as camadas, definir a posição de ajuste e definir os clones. Em seguida, podemos copiar os scripts restantes. Agora vamos ao código líquido do Sprite e limparemos tudo um pouco Tudo bem, vamos ver o script crítico definido do Clone Ao contrário do sprite de fundo, o sprite líquido tem apenas uma única camada, então não precisamos de nenhuma entrada de camada Para removê-lo, clique com o botão direito do no bloco Create Clones definido e escolha Editar Primeiro, vamos clicar dentro do rótulo da camada aqui e excluí-lo clicando no ícone da lixeira acima dele Então, vamos fazer o mesmo com as entradas da camada. Agora vamos clicar em OK. Também podemos nos livrar do bloco de camadas definidas aqui. Podemos definir X para simplesmente rolar X e podemos definir Y como zero. Em seguida, e defina a posição de ajuste, não usaremos a variável de camada ao definir a velocidade de rolagem. Em vez disso, queremos simplesmente usar X menos scrolX para definir o novo X e Y menos scroll Y para definir Y. E agora podemos ir para variáveis, clicar com o botão direito na variável da camada E enquanto estamos nisso, podemos acessar o script da bandeira verde, remover o bloco definido do fator de rolagem e excluir a variável do fator de rolagem. Ok, seguindo em frente, vamos ao script Quando eu começo como um clone Em vez de usar o plano de fundo Z como entradas da ordem Z, queremos usar o líquido Z. líquido Z tem um valor de dois, que o colocará acima todos os outros sprites que estão atualmente no jogo Em seguida, precisaremos fazer algumas alterações no script de configuração. Para o sprite líquido, usaremos o traje de água para os níveis um, dois e três, e usaremos o traje de lava para o nível quatro Então, primeiro, precisaremos substituir o bloco ITN aqui por um bloco ITN ts. Para fazer isso, vamos até Control e colocar um bloco ITN s em algum espaço vazio E vamos usar o nível como menor que o bloco de nível final aqui como condição. Agora vamos aos blocos MI e adicionar um bloco de clones críticos a cada parte do bloco de saídas ITN. Para o primeiro, vamos usar a palavra água como entrada do traje e vamos usar lava para o segundo bloco. Assim como com as nuvens ao fundo, também moveremos o líquido a uma velocidade constante a cada quadro. Para a água, vamos com menos 1,5. A lava é mais espessa que água e deve se mover um pouco mais lentamente Então, vamos usar menos 0,5 para sua velocidade. Agora podemos pegar a roupa do switch em um bloco em branco aqui e fixá-la na parte inferior do bloco I thin s, depois nos livrar do bloco ITN e anexar tudo isso aos scripts E isso deve ser tudo o que precisamos fazer por enquanto, vamos tentar. Incrível. Agora temos água fluindo pela parte inferior do nível E se subirmos no nível, o líquido rola para baixo junto com o nível Vamos passar para o nível quatro para garantir que ele use o traje de lava. Perfeito. Ok, e só por diversão, vamos deixar a água parcialmente transparente para que possamos ver as coisas através dela. Para fazer isso, vamos voltar ao script crítico de Clone Agora, não queremos que a lava seja vista, pois isso seria estranho Então, primeiro verificaremos a entrada do traje. Para fazer isso, vamos controlar e colocar um bloco ITN s em algum espaço vazio Para a condição, vamos até os operadores e introduzimos um bloco igual. Então, vamos verificar se a entrada do traje é igual à água. Nesse caso, vamos até Looks, coloque um efeito definido de dois blocos e defina o efeito fantasma para 20. Caso contrário, vamos pegar outro bloco de dois efeitos definidos e adicioná-lo à parte s, e vamos definir o efeito fantasma para zero para garantir que o sprite seja totalmente opaco Agora podemos colocar tudo isso em algum lugar próximo ao topo do script e experimentá-lo. Agradável. Agora a água está parcialmente transparente. E se formos para o nível quatro, a lava ainda está totalmente opaca. Tudo bem E, no momento, cair no líquido, também conhecido como atingir o fundo do palco, ainda reinicia o nível todas as vezes Vamos corrigir isso mais tarde, quando dermos um pouco de saúde ao jogador. Mas primeiro, os níveis ainda são muito chatos, sem muita coisa para o jogador fazer Então, vamos trabalhar para adicionar alguns itens colecionáveis e inimigos ao jogo 90. Habilitar o modo de Deus: Ao contrário da maioria dos sprites em que trabalhamos até agora, que preencheram todo o estágio, para criar um clone de, digamos, um sprite de moeda ou caracol, precisamos de uma maneira de fornecer a ele uma posição mundial específica dentro um sprite de moeda ou caracol, precisamos de uma maneira de fornecer a ele uma posição mundial específica Para fazer isso, podemos fazer com que clicar em algum lugar dentro de um nível nos dê a posição mundial naquele ponto. E podemos então usar essa posição ao criar um clone. Para isso, vamos examinar o código do pano de fundo. Primeiro, precisaremos acessar as variáveis e criar algumas novas para manter a posição clicada Para o primeiro, vamos chamá-lo de clicado em X. Em seguida, vamos criar outro chamado você adivinhou que clicou em Y. Em seguida, durante cada iteração do loop do jogo, verificaremos se o jogador está clicando no mouse no momento e, verificaremos se o jogador está em caso afirmativo, colocaremos X clicado e clique em Y na posição clicada Para fazer isso, vamos primeiro acessar o Controle e colocar um bloco ITN em algum espaço vazio Para verificar se o jogador está clicando com o mouse, podemos acessar o sensor e usar um bloco de mouse para baixo como condição Agora vamos às variáveis e adicionar dois conjuntos de dois blocos ao bloco ITN. E vamos usá-los para definir ClickX e clicar em Y. Depois, vamos voltar ao Para obter a posição atual do mouse no palco, temos esses blocos MouseX e MouseY Então, vamos definir clicou x para mouseX e clicou Y para mouseY. Então, vamos colocar tudo isso no início do loop do jogo. Se agora rodarmos o jogo e clicarmos em algum lugar do palco, ele colocará os cliques x e Y nessa posição. Isso funciona bem, desde que não tenhamos começado a nos mover pelo nível. Mas quando começamos a rolar para a direita, os valores não são mais precisos em relação ao posicionamento mundial no jogo Para converter a posição do palco em uma posição mundial, também precisaremos levar em consideração a posição de rolagem atual. Para fazer isso, basta adicionar Scroll x ao MouseX e rolar Y ao mouse Y. Então, vamos até os operadores e trazemos alguns blocos de adição Agora vamos às variáveis e, para o primeiro bloco de edição, vamos fazer MouseX mais ScrolX Para o segundo, vamos fazer mouseY mais Scrolly. Agora podemos definir o x clicado e Y clicado usando os novos blocos de edição Se rodarmos o jogo, a posição clicada agora estará nas coordenadas mundiais e podemos usá-la para adicionar objetos ao jogo No entanto, digamos que queremos adicionar uma moeda ou algo próximo ao topo do nível. No momento, só podemos chegar lá fazendo um monte de saltos na parede e outras coisas. Ao tentar adicionar muitas coisas ao jogo, isso vai ficar muito chato Para evitar ter que fazer isso, podemos implementar algo chamado modo bom. O modo Deus é normalmente um código de trapaça que torna o jogador invencível e/ou fornece recursos ilimitados. Em nosso jogo, porém, modo Deus será apenas para fins de desenvolvimento e teste, e nos permitirá passar de forma livre e rápida para qualquer parte de um nível. Está bem? Então, primeiro, precisamos de uma variável global para controlar se Modo Good está ou não ativado no momento. Então, vamos criar um novo e chamá-lo de Modo Bom. Em seguida, para ativar e desativar o modo Deus, usaremos a tecla G. Vamos vir até aqui em algum espaço vazio. Então vamos aos eventos, uma tecla win, pressione o bloco e verifique a tecla G. E aqui faremos coisas diferentes, dependendo se o modo bom está ou não ativado no momento Então, primeiro, vamos controlar e introduzir um bloco if then s. Para a condição, vamos até os operadores e introduzimos um bloco igual. Então, vamos às variáveis e verificamos se o modo Deus é igual Isso significa que o modo Deus está atualmente desativado. Se for esse o caso, queremos ativá-lo trazendo um conjunto para bloquear e definindo o modo bom como um. Caso contrário, o modo Deus está ativado no momento, então vamos desativá-lo na outra parte definindo Godmde Pressionando a tecla G agora mudaremos o valor do modo Deus de 0-1 Podemos ocultar a variável do modo Deus agora e só queremos mostrar o nível, clicar em Dex e clicar variáveis Y quando o modo Deus estiver ativado Para mostrar e ocultar variáveis no código, temos esses blocos de mostrar variáveis e ocultar variáveis. Primeiro, vamos adicionar três blocos de variáveis show à parte I desse bloco, e vamos mostrar o nível, clicar em Dx e clicar em Y Em seguida, vamos adicionar três variáveis ocultas à parte de saídas e ocultar as mesmas três variáveis. Também vamos mover as telas variáveis para o canto inferior direito para que elas não interfiram no capô posteriormente. Agora, ativar e desativar o Modo Deus também mostrará e ocultará as variáveis. Tudo bem, então quando o Modo Deus estiver ativado, permitiremos que o jogador basicamente flutue pelo nível sem colidir com as Para fazer isso, vamos acessar o código do sprite do jogador e, até o W, recebo a atualização do script E aqui só queremos executar qualquer um desses blocos personalizados quando o Modo Deus estiver desativado. Quando estiver ligado, faremos as coisas de forma um pouco diferente. Então, primeiro, vamos controlar e colocar um bloco de entrada e saída em algum espaço vazio. Para a condição, vamos até os operadores e introduzimos um bloco igual. Então, vamos às variáveis e verificamos se o modo Deus é igual Nesse caso, executaremos todos esses blocos personalizados aqui normalmente. No entanto, queremos definir o foco X e o focal Y de qualquer maneira. Então, vamos anexá-los à parte inferior do bloco I then s e, em seguida, mover tudo isso para os scripts. Em seguida, vamos até o Mblocks e criaremos um novo. Vamos chamá-lo de handle God mode e Quick O. Em seguida, adicione um bloco de modo handle good às partes externas. Agora vamos mover o bloco do modo define handle good até aqui. Neste script, vamos simplesmente deixar o jogador usar as teclas de movimento para mover os sprites Para fazer isso, vamos às variáveis e trazemos duas alteradas por blocos. Vamos usá-los para alterar a variável X e a variável Y. Agora vamos aos operadores e adicionar um bloco de multiplicação a cada alteração por blocos Então vamos às variáveis e vamos mudar o eixo X pelo X vezes oito. E mude o eixo Y pelo Y vezes oito. Agora, se rodarmos o jogo e ativarmos o modo Deus, podemos nos mover por todo o nível. No entanto, como estamos mudando para a fantasia de caixa de cintura ao receber a mensagem da Atualização 1 e não estamos executando o bloco animado no Modo Deus, ela fica presa na fantasia de caixa de cintura Para corrigir isso no script Handle God Mode, vamos até Looks e trazemos um bloco de roupas Switch, e vamos trocá-lo para Idlzero Aí vamos nós. E se desligarmos o modo Deus, caímos de volta no chão e as coisas continuam normalmente. entanto, quando adicionamos um novo objeto ao jogo pela primeira vez, queremos verificar se ele está posicionado e funcionando corretamente Para fazer isso, precisaremos reiniciar o jogo clicando na bandeira verde. No entanto, no momento, mesmo no modo Deus, isso nos coloca de volta no início do nível. Então, temos que voltar até onde estávamos. Além disso, se pressionarmos a tecla para mudar para um nível diferente e clicarmos na bandeira verde, ela voltará ao nível um. Não queremos que nenhuma dessas coisas aconteça se estivermos no modo Deus. Para resolver o primeiro problema, podemos fazer com que nossa posição não seja redefinida se estivermos no modo Deus. Para fazer isso, vamos ao script definir a posição inicial. E aqui podemos verificar se o modo Deus está ativado e, em caso afirmativo, simplesmente interromperemos o script. E eu vou dar isso a você como um desafio. Então, faça uma pausa no vídeo agora e faça com que o script pare se o modo Deus estiver ativado Tudo bem, então primeiro, vamos até o Controle e traremos um bloco I e depois colocaremos em algum espaço vazio Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se o modo Deus é igual a um. Se sim, vamos controlar, colocar um bloco de parada e interromper esse script. Então, vamos colocar tudo isso na parte superior do script de posição inicial definida. Agora, se clicarmos na bandeira verde no modo Deus, ela não redefinirá nossa posição. No entanto, ele ainda redefine a posição de rolagem, então a câmera precisa rolar até nós. Para corrigir isso, vamos ao código do pano de fundo. Assim como acontece com a posição inicial definida para o jogador, também não queremos correr os blocos e definir a rolagem inicial aqui se o modo Deus estiver ativado. Novamente, vamos colocar um bloco I e depois em algum espaço vazio. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se o modo Deus é igual a um. Finalmente, vamos até Control, introduza um stop block e interrompa esse script. Agora vamos colocar isso no topo da rolagem inicial definida e tentar. Excelência. E se desligarmos o modo Deus e clicarmos na bandeira verde , as posições serão redefinidas. Em seguida, para impedir que isso nos leve de volta ao nível um enquanto estamos no modo Deus, vamos ver o script da bandeira verde. Aqui, só queremos definir a variável de nível como um se o modo Deus estiver desativado. Para fazer isso, vamos colocar um bloco if then em algum espaço vazio. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para as variáveis e verifique se o modo Deus é igual a zero. E agora podemos mover o nível definido para um bloco aqui no bloco I then. Na verdade, vamos colocar o bloco I then na parte inferior do script, logo acima do bloco do nível inicial da transmissão. Se agora rodarmos o jogo, trocarmos de nível, ativarmos o modo bom e clicarmos na bandeira verde, isso não nos levará de volta ao nível um. Desligar o modo Deus e clicar na bandeira verde, no entanto, nos coloca no nível um. Um problema que temos agora, porém, é se ativarmos o modo Deus e formos até o lado direito do nível, depois passarmos para o nível quatro. Como o nível quatro não é muito largo, ele tentou nos colocar do lado direito do nível, então agora não podemos mais ver o sprite do jogador Para corrigir isso, na verdade, queremos redefinir as posições sempre que mudamos de nível. Para fazer isso, precisaremos acompanhar se o nível mudou ou não. E para isso, precisaremos criar uma nova variável. Vamos chamar isso de mudança de nível. Clique em OK e oculte a variável. Sempre que mudamos de nível, transmitimos a mensagem do nível final. Então, no script Quando eu receber o nível de conclusão, podemos trazer um conjunto para bloquear e definir a mudança de nível para um. Em seguida, vamos ao script Quando eu recebo o nível inicial. E aqui, logo após o bloco de configuração da transmissão, vamos colocar um conjunto para bloquear e definir a mudança de nível para zero. Agora, quando mudarmos de nível, a variável de alteração de nível será uma até depois de executarmos o bloco de rolagem inicial definido aqui e depois que o sprite do jogador receber a mensagem de configuração Com isso em mente, vamos voltar para definir a rolagem inicial definida. Quando o nível alterado é igual a um, queremos executar todos esses blocos, mesmo que o modo Deus esteja ativado Fazer isso só interromperá o script se o modo Deus estiver ativado e o nível alterado for igual E eu vou dar isso a você como um desafio também. Ok, então primeiro, vamos até os operadores e trazer um bloco e. Vamos mover o modo Deus igual a um bloco para um lado. E para o outro lado, vamos colocar um bloco igual. Em seguida, vá para as variáveis e verifique se o nível alterado é igual E podemos usar tudo isso como condição para interromper o script. Agora queremos fazer o mesmo ao definir a posição dos sprites dos jogadores Para economizar tempo, vamos pegar o todo, bloquear e copiar para os sprites dos jogadores Agora, se acessarmos o código Sprite do player, podemos usar a cópia e o bloco como condição para interromper o definição da posição inicial Ok, agora, se rodarmos o jogo, clicar na bandeira verde enquanto o modo Deus estiver ativado não reiniciará as posições, mas se mudarmos de nível, elas serão reiniciadas. Perfeito. Tudo bem, então isso pode ter parecido muito complicado e inútil, mas confie em mim, isso tornará nossa vida muito menos dolorosa à medida que começarmos adicionar mais e mais coisas ao jogo, e faremos exatamente isso na próxima lição adicionando algumas moedas colecionáveis 91. Adicione as moedas: Para adicionar moedas ao jogo, usaremos o spread de moedas aqui. Colocaremos as moedas em cada nível, e o jogador terá que coletar todas as moedas em um nível para avançar para o próximo nível. Se dermos uma olhada em suas roupas, ela tem quatro roupas de animação, que usaremos para fazer a moeda parecer estar girando Ele também tem uma fantasia de hit box, que usaremos para verificar se há colisões com os sprites do jogador Ok, então, para começar a codificar os sprites de moedas, vamos primeiro ao código Sprite do ambiente Podemos economizar tempo copiando alguns dos scripts aqui. Primeiro, vamos copiar o script de classificação e camada nos sprites de moedas e depois copiar o script de ajuste de posição Agora vamos copiar o script Atualizar um, o script Atualizar três, o script Quando eu começo como um clone e o script com bandeira verde Para o script de configuração, podemos copiar tudo, exceto o bloco de geração. Então, vamos primeiro remover o bloco de geração daqui e copiar o script. Em seguida, certifique-se de adicionar novamente o bloco de geração antes do bloco de troca de roupas. Agora vamos ver o código do coin sprite e deixar tudo bonito Ok, então no script Quando eu começo como um clone, em vez de usar o ambiente Z como entrada da ordem Z, vamos usar o componente Z. Como você deve se lembrar, usaremos o componente Z para coisas como itens colecionáveis Em seguida, no script de configuração, começaremos a colocar moedas em cada nível. Para fazer isso, primeiro precisamos verificar em qual nível estamos atualmente. Então, vamos controlar e trazer um bloco I T s para algum espaço vazio. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se o nível é igual a um. E vamos colocar a roupa do switch para piscar o Block na parte inferior do bloco I then s e, em seguida, anexar tudo ao script Para criar os clones do coin sprite, vamos até o Mblock e criaremos um novo Ao criar um clone, precisamos passar em sua posição mundial Então, vamos primeiro digitar create Clone em X e dois pontos e adicionar uma entrada de X. Agora vamos adicionar um novo rótulo, digitar Y dois pontos e adicionar uma entrada de Y. Em seguida, Agora vamos mover o bloco crítico definido de clones para cá. A primeira coisa que queremos fazer aqui é ir até Looks, trazer um bloco de figurino Switch e trocá-lo por coin zero, que é o primeiro traje da animação. Em seguida, definiremos as variáveis X e Y usando as entradas X e Y. Então, vamos às variáveis, traga o conjunto de dois blocos. Defina X para a entrada X e defina Y para as entradas Y. E, por enquanto, vamos criar o clone acessando Control e trazendo um clone de criação do bloco Myself Ok, agora podemos começar a adicionar moedas ao nível. Para fazer isso, vamos começar o jogo e pressionar a tecla G para ativar o modo Deus. Acho que um bom lugar para uma moeda será aqui, acima da cerca. Então, vou clicar aqui para obter a posição mundial. Agora, no script de configuração, posso acessar os blocos MI e adicionar um bloco ritlne à parte I do bloco if the s, e posso usar os valores da posição clicada como valores como Na verdade, vou ajustar um pouco os valores para menos 193 para X e 16 para Y. E se clicarmos na bandeira verde, podemos ver que a nova moeda foi criada na posição correta Ok, agora, antes de continuarmos adicionando mais moedas, vamos continuar e fazer a animação funcionar. Faremos todas as animações para os sprites quando eles receberem a atualização da mensagem Então, primeiro, vamos aos eventos e trazemos outro. Quando eu receber um bloco e recebermos a atualização da animação, vamos até Meus blocos e criaremos um novo. Podemos chamá-lo de animado e clicar em OK. E vamos adicionar um bloco animado ao script Update to Agora vamos colocar o bloco animado definido em algum espaço vazio Assim como acontece com os sprites do jogador, animar os sprites de moedas exigirá acompanhar o quadro de animação atual Então, primeiro, vamos às variáveis e criaremos uma nova. Vamos chamá-lo de quadro anim e criá-lo apenas para esse sprite E vamos esconder a variável. Quando criamos um novo clone, queremos iniciar seu quadro de animação em zero Então, no script create Clone, antes de criar o clone, vamos inserir um conjunto para bloquear e definir o quadro nom Agora, de volta ao define animate, primeiro queremos mudar para o traje correto usando o valor do quadro anim Então, vamos até Looks e trazer um bloco de fantasias Switch. Os nomes dos figurinos da animação começam com a palavra moeda, seguida pelo número 0-3 Então, para obter o nome correto da roupa, vamos até os operadores e trazer um bloco unido. Vamos usar a palavra moeda para a primeira entrada e, para a segunda, vamos primeiro inserir um abdômen de bloco e usar a função floor. Em seguida, vamos às variáveis e adicionaremos um bloco nom frame ao piso do bloco A função floor, como aprendemos anteriormente, cortará a parte decimal de um valor Em seguida, precisamos aumentar o valor do tom frame em uma pequena quantidade. Para fazer isso, vamos trazer um bloco de mudança de estrutura. E vamos mudar isso em 0,15. Finalmente, precisamos garantir que o piso do nom frame circule de 0 Para fazer isso, vamos primeiro trazer um bloco de estrutura definida. Em seguida, vamos até os operadores e adicionaremos um bloco mod ao bloco set two. Agora vamos voltar às variáveis e definir num frame para nom frame mod four Ok, e há mais uma coisa que precisamos fazer antes de tentar. Durante cada iteração do loop do jogo, cada sprite receberá a atualização da mensagem, incluindo os sprites de moedas originais Isso significa que a fantasia original dos sprites também será animada No entanto, não queremos que isso aconteça, pois estamos usando o traje em branco para identificar os sprites originais Portanto, só devemos executar o bloco animado se o sprite atual for um clone e não os Podemos fazer isso verificando primeiro se a roupa não é a roupa em branco antes de executar o bloco animado. Para fazer isso, vamos duplicar o bloco em branco, se não, o nome do traje for igual ao bloco em branco no script de configuração e nos livrar de todos esses blocos extras, incluindo a exclusão desse Em seguida, vamos envolvê-lo no bloco animado. E agora somente os clones serão animados. Tudo bem, vamos tentar. Incrível. Agora temos uma moeda giratória Ok, então o que podemos fazer agora é passar pelos níveis e adicionar mais algumas moedas, e só adicionaremos moedas aos níveis um, dois e três. Sendo o nível quatro o nível final, não precisa de moedas. Então, primeiro, no script de configuração, precisaremos adicionar mais algumas verificações de nível. Para fazer isso, vamos controlar e adicionar um bloco I think s à parte ts deste. Para a condição, vamos usar uma duplicata do nível igual a um Mas desta vez, verifique se o nível é igual a dois. Agora vamos pegar um bloco I thin e adicioná-lo à parte s do bloco I thin s inferior. E, novamente, vamos duplicar um dos blocos de nível igual e verificar se o nível é E agora podemos passar por todos os níveis e criar os clones. Isso vai demorar um pouco, então eu vou pular isso Então eu vou te mostrar todos os blocos que eu uso para criar todos os clones. Ok, então aqui estão todos os blocos de criação de clones que estou usando nos três níveis Existem alguns deles. Portanto, se você quiser usar as mesmas posições de moedas em seu jogo, forneci exatamente essa moeda Sprite como um recurso para download chamado coin dot Sprite Depois de baixar o arquivo para o seu computador, primeiro você precisará excluir o sprite de moedas atual em seu projeto Em seguida, você pode descer até o botão Escolher um Sprite, escolher Carregar um Sprites e fazer o upload do novo Tudo bem. E agora que temos todas as moedas adicionadas aos níveis, deixaremos o jogador coletá-las. 92. Colete as moedas: Para permitir que o jogador colete as moedas em um nível, precisaremos acompanhar quantas moedas restam no nível atual. Para isso, vamos às variáveis e criaremos uma nova. Vamos chamá-lo de moedas e criá-lo para todos os sprites. Posteriormente, criaremos uma boa exibição de contador de moedas, mas, por enquanto, usaremos a exibição variável padrão. Tudo bem, então no início de cada nível, antes que os clones de moedas sejam criados, queremos zerar o contador de moedas Para fazer isso, vamos ver o código do pano de fundo. No script do nível inicial, antes de transmitir a mensagem de configuração, vamos colocar um conjunto para bloquear e colocar as moedas em zero Em seguida, cada vez que criarmos um clone do Coin Sprite, aumentaremos o contador de moedas Para isso, vamos voltar ao código do sprite da moeda. No script do CrakKline, vamos fazer uma troca por bloco e trocar moedas por Se rodarmos o jogo agora, podemos ver que o contador de moedas nos mostra o número total de moedas em cada nível. Ok, agora só precisamos fazer com que o jogador possa realmente coletar as moedas. Para fazer isso, trocaremos temporariamente uma fantasia de moedas pela fantasia de caixa de quadril e verificaremos se ela está tocando o sprite do jogador E queremos realizar essa verificação quando o sprite do jogador também estiver usando sua fantasia de hipbox Se dermos uma olhada rápida no código do sprite do jogador, mudaremos para a fantasia de Hip box no script Quando eu receber a Atualização 1 E como o sprite do jogador tem uma ordem Z maior do que os clones do sprite da moeda, o sprite do jogador realmente receberá a mensagem de atualização uma vez antes das Portanto, de volta ao código do sprite da moeda, quando uma moeda recebe a mensagem de atualização, o sprite do jogador usará sua fantasia de caixa de quadril Em outras palavras, esse seria o melhor lugar para verificar se os sprites estão se tocando Tudo bem, então, para fazer isso, vamos primeiro acessar Meus Blocos e criar um novo. Vamos chamá-lo de check touch player. E clique em OK. vamos trocar a roupa, só queremos fazer isso se o sprite for um clone, como no bloco animado Então, primeiro, podemos duplicar o bloco em branco, se não, o nome do traje for igual bloco em branco aqui e adicioná-lo ao topo do script de Atualizar um e, em seguida, substituir o bloco animado por um bloco uma marca E, na verdade, queremos ajustar a posição dos sprites no palco antes da detecção da colisão. Então, vamos pegar o bloco de ajuste de posição aqui e colocá-lo acima do bloco de toque de verificação do player Como o sprite da moeda original nunca estará visível no palco, não importa se ajustamos sua posição ou não Ok, agora vamos trabalhar no script do player check touch. Primeiro, queremos mudar para a fantasia de quadril. Então, vamos até Looks, traga um bloco de roupas Switch e mude para Hit Box. Em seguida, verificaremos se a moeda está tocando o sprite do jogador Para fazer isso, vamos primeiro controlar e inserir um bloqueio se, então. E quanto à condição, vamos detectar e inserir um bloco de toque e verificar se estamos tocando no um bloco de toque e verificar se estamos tocando Se estivermos tocando no jogador, há algumas coisas que precisamos fazer Primeiro, reduziremos o contador de moedas em um. Então, vamos às variáveis, introduza uma mudança por bloco e troque as moedas por menos um. E agora precisamos remover a moeda do jogo. Para fazer isso, podemos excluir o clone acessando Control e trazendo a opção Excluir esse bloco de clone Antes de excluir o clone, no entanto, precisamos remover seu item da lista de pedidos Z. Caso contrário, se posteriormente adicionássemos mais objetos a um nível durante o jogo, isso causaria problemas ao tentar classificar as camadas. Ok, então, para excluir a moeda da lista de pedidos Z, pode parecer à primeira vista que poderíamos simplesmente excluir o item que tem o mesmo índice da variável de índice de camada que estamos usando no script de classificação da camada No entanto, depois que outros sprites forem classificados nas camadas, o valor do índice da camada não será mais preciso Felizmente, porém, existe uma solução simples. Como estamos usando as mesmas ordens Z para vários sprites, neste caso, componente Z, tudo o que precisamos fazer é excluir um dos itens do componente Z da lista Isso ocorre porque, quando excluímos um clone no zero, todos os sprites nas camadas abaixo dele avançam em uma Isso também acontece quando excluímos um item em uma lista de variáveis. Todos os itens abaixo se movem para cima para preencher o espaço vazio. Portanto, desde que excluamos qualquer dos itens do componente Z da lista, a lista coincidirá com as camadas de rascunho Ok, então, novamente, toque no player para excluir um item do componente Z da lista, vamos primeiro ir às variáveis, pegar um dos blocos de pedidos Z e colocá-lo logo acima do bloco excluir este clone Para a entrada do índice, vamos inserir um número de item do bloco Pedidos Z. Finalmente, vamos usar um bloco Z do componente como entrada do item. Isso percorrerá a lista, encontrará o índice do primeiro item que corresponde ao valor do componente Z e, em seguida, excluirá esse item da lista. E só para que possamos ver que tudo está funcionando corretamente, vamos mostrar a lista de pedidos Z e vamos ao script de configuração. Para o nível um, vamos retirar todos, exceto os três principais blocos de clones críticos Agora vamos rodar o jogo. No momento, o contador de moedas mostra três, e temos três pares negativos na lista Se agora tocarmos em uma moeda, ela desaparece. O contador de moedas cai em um e os dois negativos são excluídos da lista. Incrível. Tudo bem, podemos esconder a lista novamente e adicionar os blocos críticos do Clone de volta ao script E agora que o jogador pode coletar as moedas, vamos deixá-lo sair de um nível depois de coletar todas as moedas desse nível. 93. Como sair de um nível: Assim que o jogador coletar todas as moedas no nível atual, ativaremos as saídas do nível Se o jogador então for para as saídas, ele passará para o próximo nível Para as saídas de nível, usaremos as saídas aqui Vamos primeiro dar uma olhada em suas roupas. Para os níveis um e dois, usaremos uma bandeira de cor aleatória como saídas E para o nível três, usaremos uma porta para entrar no castelo do chefe Sendo o nível quatro o nível final, não precisa de uma saída, pois derrotar o chefe terminará automaticamente o jogo Quando a saída de uma bandeira não estiver ativa, usaremos seu traje de penugem. E quando o jogador coletar todas as moedas do nível, ativaremos a saída e reproduziremos uma animação ondulante usando as roupas acima Da mesma forma, para a porta, usaremos o traje de porta fechada quando estiver inativo e o traje de porta aberta quando estiver ativo Ok, então, para começar, vamos primeiro entrar no código do sprite da moeda e copiar alguns scripts para o sprite de saída E podemos, na verdade copiar todos os scripts, certificando-se de copiar primeiro os scripts definidos. Agora podemos acessar o código Exit Sprite e limpar um pouco os scripts Tudo bem, então no script de configuração, as posições dos clones de saída, é claro, não serão as mesmas dos clones de moedas Então, vamos nos livrar de todos os blocos de guindaste. E antes de descobrirmos onde colocar as saídas, vamos primeiro ver o script de criação de clone O Sprite de saída não tem uma fantasia de moeda zero, então vamos nos livrar do bloco de fantasias do Switch aqui Também não queremos alterar a variável coins, então vamos nos livrar desse bloco também. Ok, e ao criar um clone de saída do Sprite, também precisaremos passar um tipo para o clone, que será bandeira ou porta Isso significa que precisaremos adicionar outra entrada ao script de criação do Clone Então, vamos clicar com o botão direito do mouse no bloco definido e escolher Editar. Primeiro, vamos adicionar um novo rótulo com dois pontos do tipo ponto e vírgula. Em seguida, vamos adicionar uma nova entrada chamada Tipo e clicar em OK. Agora precisamos criar uma variável para armazenar o tipo de um clone Então, vamos às variáveis e vamos criar uma chamada type e criá-la apenas para esse sprite Outra variável que precisaremos para cada clone é uma para armazenar seu estado, que será inativo ou ativo Então, vamos criar outra variável, que podemos chamar de estado e criá-la somente para esse sprite E não precisamos mostrar as variáveis. Agora, no script de criação do clone, antes de criar o clone, vamos definir dois blocos Definiremos a variável de tipo para a entrada de tipo e definiremos o estado como inativo por enquanto Em seguida, precisamos usar o tipo para determinar qual roupa usar. Para isso, vamos controlar e colocar um bloco if the s em algum espaço vazio. Para a condição, vamos até os operadores e introduzimos um bloco igual. Então, vamos verificar se a entrada de tipo é igual a flag. Agora vamos até Looks e adicionar um bloco de roupas Switch na parte I e na parte externa. Mencionei anteriormente que, se o tipo de saída for bandeira, escolheremos aleatoriamente uma das roupas com bandeira Mas, por enquanto, vamos usar a bandeira azul abaixo de zero. E como o tipo sempre será bandeira ou porta, podemos simplesmente mudar para a porta fechada zero para as partes externas. Ok, agora vamos adicionar isso ao script do Krik Clone antes do bloco Cra Clone of Myself E, por enquanto, vamos separar todos os blocos do script do player e do script animado Trabalharemos nisso um pouco mais tarde. Mas primeiro, vamos adicionar as saídas aos níveis Para o nível um, vamos até o canto inferior direito. Queremos que a saída apareça como se estivesse vindo do centro superior do quadro da caixa aqui. E como as roupas estão centralizadas, precisamos posicioná-las um pouco aqui Então, vamos clicar aqui para obter a posição. Agora podemos passar para o script de configuração. Adicione um bloco de clone crítico para o nível um e use os valores de posição clicados E para a entrada de tipo, queremos usar a palavra flag. Então, ainda no modo Deus, podemos clicar na bandeira verde para ver se ela está posicionada corretamente Para mim, no entanto, nada acontece, e isso é porque, de alguma forma esqueci de copiar o script quando começo como clone do coin sprite. Eu vou fazer isso agora. Se eu clicar na bandeira verde novamente, agora tenho um clone de sprite de saída No entanto, a posição está um pouco errada e, felizmente para você, eu já tive o trabalho de encontrar uma boa posição. Então, vamos com 1593 para X e quatro para Y. Pronto . Ok, agora vamos pressionar a tecla para mudar para o nível dois. Para este, queremos ir até o canto superior direito. E, novamente, queremos posicioná-lo centralizado acima da caixa aqui Agora podemos adicionar um bloco Crakline para o nível dois. E vamos usar 2078 para X, sete, dois, três para Y e bandeira para tipo Finalmente, vamos mudar para o nível três e ir para o canto inferior direito. Para este, colocaremos uma porta no castelo aqui, o que fará parecer que o jogador está entrando dentro do castelo. Para criar a porta, vamos adicionar um bloco de crakclone à parte vazia de Outs aqui E vamos usar 2050 para X, 19 para Y e porta para o tipo E vamos garantir que ele realmente use o traje de porta fechada. Incrível. Tudo bem, agora, em vez de sempre usar a bandeira azul nos níveis um e dois, escolheremos aleatoriamente a bandeira azul, a bandeira verde, a bandeira laranja ou a bandeira amarela Para fazer isso, poderíamos obter um número aleatório de 1 a 4. Em seguida, use vários blocos, se for, para escolher uma cor com base no número aleatório. No entanto, uma maneira mais fácil e limpa seria armazenar as quatro cores dentro de uma lista de variáveis e, em seguida, escolher um item aleatório da lista. Ok, então, para isso, vamos às variáveis e fazer uma nova lista. Vamos chamá-lo de cores, e somente o sprite de saída precisará usar a lista, que possamos criá-la somente para esse sprite Agora vamos ao script da bandeira verde. E aqui vamos adicionar as quatro cores à lista. Mas primeiro, queremos ter certeza de que a lista está vazia, trazendo um bloco de exclusão de todas as cores. Depois disso, vamos trazer quatro blocos de cores do ADT. Agora, vamos adicionar azul, verde, laranja e amarelo. Se agora clicarmos na bandeira verde, podemos ver que as cores foram adicionadas à lista. Ok, podemos esconder a lista agora, e vamos ver o script de Crick Clone Primeiro, precisamos de uma variável para armazenar a cor de um clone. Então, vamos criar um novo. Vamos chamar isso de cor. Faça isso somente para esse sprite e oculte a variável. Agora, como a variável de cor só se aplica aos sinalizadores, só precisamos defini-la se o tipo for igual ao Então, vamos pegar um conjunto para bloquear, adicioná-lo ao topo da parte I do bloco I thin outs e definir a variável de cor. Queremos configurá-lo como um item aleatório da lista de cores. Então, vamos começar trazendo um item com um bloco de cores. Em seguida, para a entrada do número do item, vamos até os operadores, coloque um bloco aleatório e escolha um número de 1 a 4 Agora podemos usar a variável de cor ao mudar para uma fantasia de bandeira. Para fazer isso, podemos usar a cor seguida pelo sinalizador de sublinhado sublinhado abaixo de zero Então, primeiro, vamos adicionar um bloco unido ao bloco de roupas Switch. Agora vamos às variáveis. Use um bloco de cores como a primeira entrada e, para a segunda entrada, vamos digitar underscore flag underscore down zero. Ok. Se clicarmos na bandeira verde, nível três ainda usa uma porta, o que é bom. Mas agora, se mudarmos para o Nível um e formos até a saída, cada vez que clicarmos na bandeira verde, ela escolherá uma cor aleatória para a saída. Isso também deve acontecer no Nível dois. Ótimo. No momento, precisamos ativar uma saída de níveis sempre que o jogador coletar todas as moedas do nível Para isso, vamos acessar o Quando eu receber a atualização do script. No bloco ITN, antes da animação, trataremos de todas as ações que o sprite precisa realizar e faremos isso usando um Vamos até o Mblocks e criar um novo. Vamos chamá-lo de lidar com ações. Clique em OK e coloque um bloco de ações de alça antes do bloco animado Agora vamos mover o bloco de ações de alça definido para algum espaço vazio. E aqui vamos decidir se ou não ativar a saída. Queremos ativar uma saída se ela estiver atualmente no estado inativo e não houver moedas restantes no nível Então, para verificar isso, vamos primeiro controlar e inserir um bloco if then. Para a condição, vamos até os operadores, traga um bloco e. Em seguida, use um bloco igual para cada lado. Agora vamos às variáveis e vamos verificar se o estado é igual a inativo e as moedas são iguais inativo e as moedas Se for esse o caso, vamos inserir um conjunto para bloquear e definir o estado como ativo. Vamos também mudar para um traje ativo adequado para a saída. Isso será diferente dependendo do tipo de saída, é claro. Então, vamos primeiro controlar e adicionar um bloco if then outs logo após o bloco de estado definido. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se o tipo é igual à bandeira. Agora vamos até Looks e vamos adicionar um bloco de roupas Switch em cada parte. Pois a bandeira usará sua variável de cor para mudar para a roupa correta até zero. Para fazer isso, vamos até os operadores e adicionar um bloco de juntas ao bloco de roupas do switch. Em seguida, vamos às variáveis e vamos juntar a variável de cor com o sublinhado sublinhado acima E para a porta, podemos simplesmente mudar para a porta aberta zero. Está bem? Então, depois que uma saída se tornar ativa, se o jogador tocar na saída, passaremos para o próximo nível Para isso, vamos dar uma olhada no script do player. O Sprite de saída não tem uma fantasia de hit box, então vamos nos livrar do bloco de fantasias do Switch aqui Também não precisamos excluir o clone ou lidar com a lista de pedidos Z, pois isso acontecerá automaticamente quando passarmos para o próximo nível, e também não queremos alterar a variável coins, então podemos nos livrar de todos esses blocos dentro do bloco I then e anexar o bloco I then aos scripts Para a condição, porém, só queremos passar para o próximo nível se o sprite estiver tocando o sprite do jogador e ele estiver atualmente no Então, vamos até os operadores, trazer um bloco A, mover o bloco do jogador tocante para um lado do bloco e usar o bloco A como condição Por outro lado, podemos usar uma duplicata do estado igual ao bloco inativo Mas agora queremos verificar se o estado é igual a ativo. Se tudo isso for verdade, podemos passar para o próximo nível indo aos eventos, trazendo um bloco de transmissão e transmitindo a mensagem do nível final Agora é possível que esse bloco seja executado novamente antes o pano de fundo receba a mensagem de nível finalizado e passe para o próximo nível Portanto, para garantir que não transmitamos a mensagem várias vezes, também devemos desativar a saída Para fazer isso, vamos às variáveis, trazer um conjunto para bloquear e definir o estado de volta para inativo Agora vamos em frente e fazer isso. Portanto, se a saída for uma bandeira, ela será animada entre as duas roupas levantadas Para isso, é claro, precisamos acessar o script animado. Só queremos animar se a saída for uma bandeira e estiver atualmente no estado ativo Então, vamos primeiro controlar e envolver um bloco ITN em torno de todos esses blocos aqui Em seguida, adicione tudo ao script. Para a condição, vamos até os operadores, trazer um bloco e e, em seguida, colocar um bloco igual em cada lado Agora vamos às variáveis e vamos verificar se tipo é igual a flag e state é igual flag e state Em seguida, para o bloco de trajes de troca, vamos voltar aos operadores e usar outro bloco de junção como a primeira entrada do bloco atual. Agora vamos às variáveis e, para obter o traje atual, queremos unir a variável de cor com a bandeira de sublinhado sublinhada para cima e, em seguida, o piso de uma moldura. Uma velocidade de animação de 0,15 deve ser boa. Mas a animação tem apenas dois quadros. Então, vamos modificar um quadro de animação com dois. Tudo bem, agora, para facilitar o teste de tudo, vamos ao código do sprite da moeda E no script de configuração, vamos remover todos os blocos de criação de clones do nível um e usar apenas o último aqui na parte inferior E, na verdade, vamos fazer isso em todos os níveis, removendo todos os blocos Clone da caixa e usando apenas o inferior Essas moedas estarão bem próximas das saídas. Agora vamos começar o jogo. No momento, a saída ainda está usando seu traje inativo e, se tocarmos nela, nada acontece porque ainda temos uma moeda no nível Mas se coletarmos a moeda, a saída muda para a animação ondulante, se for uma bandeira, e se agora tocarmos na saída, passaremos para o próximo nível. Excelente. Vamos garantir que a porta do nível três também se abra. Legal. Ok, agora, ainda no código do coin sprite, vamos criar apenas a primeira moeda para cada nível Se começarmos o jogo e passarmos para o nível um, depois de coletarmos a moeda, a saída se tornará ativa, mas o jogador não tem como saber disso até ir até as saídas Para uma melhor experiência, especialmente para novos jogadores, devemos informar ao jogador que a saída se tornou ativa. Para fazer isso, podemos congelar o jogo, rolar a câmera até a saída, ativá-la, voltar para o jogador e continuar o jogo. Trabalharemos nisso na próxima lição. 94. Implementar a rolagem automática: Para rolar temporariamente a câmera até a saída do nível quando ela for ativada pela primeira vez, precisaremos basicamente pausar o resto do jogo Caso contrário, o jogador pode ser morto por um inimigo ou algo assim enquanto estiver fora da tela. Para fazer isso, precisaremos acompanhar o estado atual do jogo. Então, para começar, vamos criar uma nova variável. Vamos chamá-lo de estado do jogo e criá-lo para todos os sprites. O estado do jogo afeta o que acontece durante o loop do jogo. Então, vamos para o script Quando eu recebo o nível inicial no código de fundo Antes do início do loop do jogo, vamos trazer um conjunto para bloquear. E vamos definir o estado do jogo para execução. Esse será o estado normal do jogo. Durante cada iteração do loop do jogo, só queremos transmitir todas essas mensagens se o jogo estiver em execução. Faremos coisas diferentes para os outros estados. Então, primeiro, vamos ao Controle, pegue um bloco ITN e envolva a parte I em todos os blocos de transmissão Agora vamos pegar um bloco fino e colocá-lo dentro da parte externa. Usaremos esse quando o jogo estiver no estado de rolagem automática, o que será o caso quando a câmera estiver rolando automaticamente até as saídas Ok, então para ambas as condições, vamos até os operadores e trazer alguns blocos iguais. Em seguida, vamos às variáveis e, para o bloco I thin s, vamos verificar se o estado do jogo é igual Para o bloco ITN, vamos verificar se o estado do jogo é igual à rolagem automática Tudo o que queremos fazer no estado de rolagem automática é rolar a câmera Como isso acontece quando recebemos a mensagem de atualização três, a única mensagem que queremos transmitir aqui é a mensagem de atualização três. Então, vamos usar uma duplicata do bloco de três atualizações de transmissão aqui Ok, agora vamos entrar no código de saída do Sprite. No script de ação do manipulador, antes de ativar a saída, queremos mudar para o estado do jogo de rolagem automática Então, vamos adicionar um conjunto para bloquear logo na parte superior do I, depois bloquear aqui e definir o estado do jogo como rolagem automática do traço Isso congelará tudo , exceto a rolagem. Em seguida, rolaremos a câmera até a saída, ativaremos a saída, depois voltaremos para o jogador e retomaremos o jogo. Para rolar a câmera até uma posição específica, tudo o que realmente precisamos fazer é definir o ponto focal da câmera nessa posição. E como faremos isso algumas vezes neste sprite, assim como em alguns outros sprites, assim como em alguns outros sprites, vamos até Meus Blocos e creditaremos o Custom Block por Primeiro, vamos digitar scroll até X dois pontos, adicionar uma entrada de X, adicionar um rótulo de Y dois pontos, depois uma entrada de Y e clicar em OK E vamos adicionar um scroll to block ao script de ação do manipulador logo após definir o bloco de estado do jogo. A posição para a qual queremos rolar é a posição mundial da saída. Então, vamos às variáveis e usar blocos de variáveis X e Y como entradas Agora vamos mover o bloco de rolagem definido em dois blocos para algum espaço vazio. E aqui, definiremos o ponto focal da câmera usando as entradas X e Y. Para fazer isso, vamos trazer dois conjuntos de dois blocos. Em seguida, defina focal x para a entrada X e focal Y para as entradas Y. No entanto, agora precisamos impedir que o script de ação do identificador execute seus blocos restantes até que a câmera termine de rolar até as saídas Para fazer isso, podemos forçar a rolagem para o script a ser executada continuamente até que a câmera se acomode na parte do nível que contém as saídas Nesse ponto, a posição de saída estará dentro largura do palco e da metade altura do palco a partir da posição de rolagem Ok, então, para forçar a rolagem até o script a ser executada continuamente, vamos até Control e adicionemos um bloco eterno na parte inferior do script. Agora, vamos adicionar um bloco I then ao bloco forever. Em seguida, adicione outro bloco fino dentro deste. Para o primeiro bloco I thin, verificaremos se a distância entre a entrada X e a rolagem x está dentro da metade da largura do estágio. Então, vamos começar indo até os operadores e trazendo um bloco menor. Para obter a distância, basta pegar a entrada X, que neste caso, será a exposição mundial da saída e subtraí-la do rolo X. E queremos que a distância seja um número positivo, então obteremos o valor absoluto Ok, então vamos pegar um bloco Abs e colocá-lo no lado esquerdo do bloco menor que. Então vamos colocar um bloco de subtração dentro do bloco Absv. Agora vamos às variáveis e vamos verificar se o valor absoluto de scroll x menos a entrada X é menor que 240 ou metade da largura do palco Para a entrada do bloco, queremos fazer uma verificação semelhante antes dos valores Y. Então, vamos primeiro usar uma duplicata do bloco menor que aqui Então, vamos verificar se o valor absoluto da rolagem Y menos a entrada Y é menor que 180 ou metade da altura do palco Tudo bem. E se essas duas condições forem verdadeiras, podemos controlar, inserir um bloqueio e interromper esse script. Isso impedirá a execução do bloco eterno, que permitirá que o script de ação do handle continue executando os blocos restantes. Além disso, é importante que não verifiquemos a opção Executar sem atualização de tela para o script scroll to Se verificássemos, na verdade, ele congelaria todo o loop do jogo e nenhuma rolagem ocorreria Ok, então em manipular ações, depois de rolar até a saída, queremos ativar a saída e mudar para o traje ativado Em seguida, queremos voltar para o sprite do jogador e continuar executando o jogo normalmente Para rolar até o player, vamos até MI Blocks e colocar um pergaminho para bloquear abaixo de todos esses outros blocos, certificando-se de que ainda esteja dentro do bloco if then. Agora vamos detectar e usar um número de bloco de estágio de fundo para cada Em vez do palco, queremos usar o sprite do jogador. E para a primeira, em vez da posição, queremos escolher X do jogador, que é a variável X dos sprites do jogador Da mesma forma, para o segundo, vamos usar Y do jogador. Depois disso, vamos às variáveis, inserir um conjunto para bloquear e definir o estado do jogo para execução. Tudo bem, vamos desligar o modo Deus se ele ainda estiver ligado e depois rodar o jogo. Se agora coletarmos a moeda, ela rola até a saída depois volta para o jogador, mas acontece tão rapidamente que não podemos realmente dizer o que está acontecendo. Para corrigir isso, podemos adicionar algumas pausas entre os eventos e o script de ação do manipulador Para fazer isso, vamos até o controle e usaremos alguns blocos de peso. Vamos colocar um logo antes do primeiro pergaminho a ser bloqueado e outro logo depois. Para o primeiro, vamos esperar 0,2 segundos e 0,5 segundos para o segundo. Agora, vamos adicionar uma espera para bloquear antes e depois da outra rolagem para bloquear. E vamos esperar 0,5 segundos para cada um deles. E vamos tentar. Muito melhor. Agora podemos realmente ver a saída ficar ativa antes de voltar para o jogador Tudo bem, então podemos ir às variáveis e ocultar a variável de estado do jogo agora. seguida, em vez de passar imediatamente para o próximo nível quando passarmos por uma saída, faremos a transição entre os níveis , primeiro deixando a tela preta e depois passando para o próximo 95. Criar uma transição de tela: Para deixar o palco preto durante as transições de tela, usaremos o sprite de blackout aqui. O único traje para o sprite blackout é um grande quadrado preto que cobre toda a área do palco do Canvas Ok, então, para começar a codificar o sprite de blackout, vamos primeiro examinar o código de um dos outros sprites em que trabalhamos até agora e vamos copiar o script de classificação e camada para o script de classificação e camada para Então, vamos ao código do blackout sprite. Como o sprite blackout não tem uma fantasia vazia, queremos ter certeza de escondê-la no início do jogo Então, vamos aos eventos e trazer uma vitória com a bandeira verde clicada no bloco Em seguida, vá para Looks e traga um bloco de esconderijo. Em seguida, precisamos classificar o sprite nas camadas quando ele recebe a mensagem de configuração Então, vamos voltar aos eventos, trazer um bloco de recebimento W I e configurar o recebimento. Agora vamos para M Blocks, traga um bloco de classificação em camadas, depois vá para variáveis e usaremos a sobreposição Z para as entradas da ordem Z. Overlay Z tem a ordem Z mais alta, então colocará o sprite acima de tudo Ok, agora, para deixar a tela preta, faremos isso sempre que o sprite receber a mensagem de fade to Então, vamos voltar aos eventos, trazer outro quando eu receber o bloqueio. E vamos receber uma nova mensagem chamada fade to Black. E aqui primeiro queremos mostrar o sprite. Então, vamos até Looks e traga um bloco de shows. Em seguida, queremos fazer com que o sprite passe de totalmente transparente para totalmente opaco em cerca de dez quadros Para fazer isso, vamos primeiro adicionar um efeito definido para bloquear e definir o efeito fantasma para 100. Agora vamos para o controle, insira uma repetição de dez blocos, depois volte para Looks e adicione um efeito de alteração por bloco ao bloco de repetição. Vamos mudar o efeito fantasma em menos dez. Em seguida, para fazer com que o sprite volte a ficar transparente, basicamente fazemos o oposto do código fade to Black E faremos isso quando o sprite receber a mensagem de fade in Usaremos o Fade In porque será como se o jogo estivesse caindo no nível Está bem? Então, primeiro, vamos duplicar o quando eu receber o script FadeTo Black e vamos receber uma nova mensagem chamada Isso acontecerá depois de ficar preto, então o sprite já deve estar aparecendo então o sprite já deve estar Portanto, não precisamos usar um bloco show para este. Para o bloco de efeito fantasma definido, vamos defini-lo como zero para garantir que esteja totalmente visível. Isso já deve ser o caso depois que o sprite ficar preto, mas não faz mal ter certeza No bloco de repetição, queremos alterar o efeito fantasma dez positivos desta vez. Finalmente, após o bloqueio de repetição, vamos trazer um bloco oculto. E deveria ser isso. Agora, vamos realmente usar esses scripts. Para fazer isso, vamos ver o código do pano de fundo. Queremos deixar a tela preta no início de cada nível Então, no topo do script do nível inicial, vamos aos eventos, introduzimos um bloco de transmissão e transmitimos fade to black Agora, também queremos dar ao sprite blackout tempo suficiente para terminar sua animação antes de continuarmos configurando as coisas e iniciando o loop do jogo Então, vamos para Control e adicionar um bloco de espera de 1 segundo logo após a transmissão de fade to Black E, na verdade, também vamos esperar 1 segundo antes de transmitir a mensagem Em seguida, depois de configurar todos os sprites e antes de iniciar o loop do jogo, queremos voltar Então, vamos aos eventos, adicionar um bloco de transmissão logo após o bloco de configuração de transmissão e a transmissão se intensificar E também precisaremos fazer uma pausa para isso. Então, vamos controlar. Adicione um bloco de espera após a transmissão desaparecer no bloco, e um peso de 0,5 segundo deve ser bom Tudo bem, se rodarmos o jogo agora, ainda podemos ver o sprite do jogador enquanto a tela fica preta. A razão para isso é que as camadas não classificadas até que transmitamos a mensagem de configuração Isso significa que o sprite de blackout ainda não foi trazido para a camada frontal quando transmitimos pela primeira vez a mensagem de fade to black Para corrigir isso, vamos ao código do Blackout Sprite. No script Faye to Black, para garantir que o sprite esteja na camada frontal antes de escurecer a tela, podemos acessar Looks e adicionar um bloco de acesso à camada frontal na parte superior dos Agora, ele também deve cobrir o sprite do jogador. Agradável. Uma coisa meio irritante, porém, é que, depois de voltar, sprite do jogador começa brevemente com a fantasia de Idle Zero antes de cair no fantasia de Idle Zero antes de cair Só queremos começar com a fantasia de Idle Zero se tivermos Godme ligado Caso contrário, devemos começar com a fantasia de outono zero. Para fazer isso, vamos ver o código dos sprites do jogador. Na parte inferior do script de configuração, vamos controlar e adicionar um bloco de entrada e saída. Para a condição, vamos até os operadores e introduzimos um bloco igual. Então vamos às variáveis e vamos verificar se o modo Deus é igual Agora vamos até Looks e adicionar um bloco de roupas Switch em cada parte. Se o modo Deus estiver desativado, queremos mudar para o traje de outono zero. Caso contrário, mudaremos para zero ocioso. Se agora rodarmos o jogo com o modo Deus desativado, o sprite do jogador começará com o traje de outono zero Mas se ativarmos o Godmde e o executarmos novamente, ele começará com o traje Idle zero Tudo bem, agora, só para garantir que a transição da tela também funcione quando terminarmos um nível, vamos coletar a moeda depois passar pelas saídas Incrível. Ok, então avançando nos níveis dois e três, haverá bloqueios que impedem o jogador de acessar certas partes do nível. Para abrir as fechaduras, o jogador terá que coletar uma ou mais chaves dentro do nível. Trabalharemos na adição das fechaduras e das chaves na próxima lição. 96. Adicionar os fechaduras e chaves: Vamos dar uma olhada nas roupas do sprite da fechadura aqui Os nomes são semelhantes aos nomes das roupas dos sprites de nível e ambiente, com o número do nível, os com o número do nível índices de linha e coluna separados por A única diferença com os nomes dos trajes de Lock Sprite é que eles têm um hífen extra seguido por uma chave como chave azul, chave verde e chave laranja Eles correspondem aos nomes das roupas no sprite de chaves aqui e indicam qual chave é necessária para abrir a fechadura Além disso, como no ambiente Sprite, os objetos Sprite do cadeado se alinham com os ladrilhos na parte do nível em que aparecem Então, para colocar os objetos Sprite bloqueados no jogo, basicamente temos que fazer exatamente as mesmas coisas que fizemos com os objetos do ambiente Então, para começar, vamos entrar no código Sprite do ambiente e copiar todos os scripts para o sprite de bloqueio, começando com os scripts definidos Então vamos até o código Sprite de bloqueio e reorganizar tudo Agora faremos alguns ajustes. Primeiro, o script Quando eu começo como um clone, podemos classificá-lo nas camadas usando o ambiente Z, se quisermos, mas acho que faz mais sentido usar o nível Z. Em seguida, no script Generate, depois de dividir o nome do traje, agora teremos quatro itens com o quarto item sendo a chave Então, primeiro, vamos às variáveis e criaremos uma nova para a chave. Vamos chamá-lo de chave e criá-lo apenas para esse sprite. E vamos esconder a variável. Agora vamos adicionar outro conjunto para bloquear ao script de geração antes de criar o bloco Clone e vamos definir a variável chave Para o valor, queremos trazer um item do bloco e obter o item quatro da lista de segmentos de string. E isso deve ser tudo o que precisamos fazer no momento. Então, vamos rodar o jogo. E no nível dois, se formos até o canto superior direito, veremos alguns cadeados azuis agora bloqueando parte do nível. E se formos para o nível três, deve haver alguns cadeados alaranjados aqui e alguns verdes à direita. Legal. No momento, porém, se desativarmos o modo Deus, poderemos pular direto pelas fechaduras. Isso não é muito eficaz. Em vez disso, o que queremos que eles façam é impedir que o jogador passe. Para fazer isso, vamos até o código do player Sprite e vamos encontrar o cheque tocando em um script sólido E aqui, em vez de apenas definir o toque sólido como um, se estivermos tocando no sprite de nível, também o definiremos como um se estivermos tocando E eu vou dar isso a você como um desafio. Então, pause o vídeo agora e faça com que tocar no nível ou no sprite de bloqueio provoque Ok, para fazer isso, vamos primeiro ir até os operadores e trazer um bloco or. Vamos colocar o bloco de nível de toque em um lado. Em seguida, vamos usar uma duplicata para o outro lado, alterá-la para tocar na trava e usar tudo isso como condição Agora, as travas funcionarão basicamente como uma parede, impedindo que o jogador passe. Tudo bem, agora precisamos adicionar as chaves para que o jogador possa desbloquear as fechaduras Para isso, é claro, usaremos a chave sprite. O código do sprite de chaves será bastante semelhante ao código do sprite de moedas Então, para começar, podemos acessar o sprite da moeda e copiar alguns scripts Primeiro, vamos copiar uma classificação de posição em camadas. Crie um clone e confira o tocante no player. A chave Sprite não tem uma animação, então não precisamos do script animado. Em seguida, vamos copiar quando eu receber a Atualização 1, quando eu receber a Atualização 3 e quando eu começar como um clone Novamente, como não estamos animando o sprite, não precisamos do script de atualização 2 quando eu recebo Por fim, vamos copiar o script da bandeira verde e o script de configuração. E já que estamos nisso, vamos colocar todos os blocos de crack Clone de volta no script de configuração Agora vamos ver o código da chave sprite. Ok, então no script Create Clone para o sprite chave, também precisaremos qual traje usar para o Para fazer isso, clique com o botão direito do no bloco definido e escolha Editar. Aqui, vamos adicionar um tipo de etiqueta: ponto e vírgula, traje e dois pontos. Em seguida, adicione uma entrada chamada traje e clique em OK. Agora, no bloco de roupas Switch, podemos usar a entrada da fantasia como roupa. Não queremos mexer com o contador de moedas, então podemos nos livrar do bloco de moedas de troca aqui E como o sprite chave não tem animação, também podemos nos livrar do bloco set anim frame aqui Também podemos acessar as variáveis, clicar com o botão direito do mouse na variável anim frame e excluí-la Em seguida, no script do jogador de toque em cheque, o sprite chave não tem uma fantasia de quadril, então vamos nos livrar do bloco de fantasias do Switch Queremos excluir o clone, mas antes disso, queremos que o Lock Sprite saiba qual chave foi Para fazer isso, armazenaremos nome do traje do Clone em uma lista global de variáveis Em seguida, transmitiremos a mensagem. Os clones do Lock Sprite podem então receber a mensagem e verificar a lista para ver se a chave necessária foi coletada Tudo bem, então primeiro, vamos criar uma lista de variáveis. Vamos chamá-lo de chaves coletadas e criá-lo para todos os sprites. Queremos garantir que a lista esteja vazia no início de cada nível. Então, vamos passar para o script de configuração e excluir todas as chaves coletadas do bloco. Só precisamos excluir os itens da lista uma vez no início de um nível. Então, vamos fazer isso depois nome do traje, se não, for igual a um bloco em branco. Dessa forma, somente o sprite da chave original limpará a lista Agora vamos voltar ao script do player check touch. Se estivermos tocando no jogador, a primeira coisa que faremos é adicionar o nome da fantasia do Clones à lista de chaves coletadas Para fazer isso, vamos colocar um anúncio no bloco Keys Collected. Em seguida, vá para Looks, use um bloco numérico Costum para a entrada e altere-o para o nome da soma Depois disso, transmitiremos uma mensagem. Então, vamos aos eventos, trazemos um bloco de transmissão e vamos transmitir uma nova mensagem, que podemos chamar de chave coletada. Ok, e antes de lidarmos com a mensagem de chave coletada no sprite de bloqueio, vamos adicionar as chaves aos níveis Primeiro, vamos ver o script de configuração. Só teremos chaves e fechaduras nos níveis dois e três. Então, vamos mudar o nível igual a um aqui para o nível igual a dois Agora vamos retirar o bloco de nível I igual a três aqui, eliminar o bloco interno, se for o bloco s, e substituí-lo pelo bloco de nível I igual a E também vamos nos livrar dos blocos de cratones para não colocar as chaves nas posições erradas Tudo bem, agora vamos começar o jogo. Ative o modo Deus e mude para o nível dois. E vamos para o lado direito do nível próximo ao centro. Colocaremos a chave aqui e queremos que seja uma chave azul para que combine com as fechaduras. Ok, então vamos até M Blocks e trazemos um bloco de crack Clone para o nível dois, e eu vou usar 1948 para X, 511 para Y. E para o traje, vamos digitar a tecla azul Se clicarmos na bandeira verde novamente, agora veremos a tecla azul. E se tocarmos nela, ela desaparece e tecla azul é adicionada à lista de chaves coletadas Está bem? Agora vamos mudar para o nível três. Esse nível terá duas chaves. Para o primeiro, vamos descer um pouco aqui. Vamos colocar uma chave laranja aqui mesmo. Então, vamos adicionar um bloco de clone de caixa para o nível três e vamos usar menos 130 para X, 270 para Y e uma tecla de sublinhado laranja para Vamos garantir que apareça e que possamos coletá-lo. Legal. Agora vamos um pouco para a direita. Vamos colocar uma chave verde aqui mesmo. Então, vamos trazer outro bloco crítico de clones para o nível três Então vamos usar um, três, cinco, cinco para X, 90 para Y e uma tecla de sublinhado verde para o traje Vamos garantir que funcione. E se voltarmos até a chave laranja e a coletarmos também, as duas chaves devem aparecer na lista. Tudo bem, agora podemos ir às variáveis e ocultar a lista de chaves coletadas. E tudo o que precisamos fazer agora é voltar ao código do Lock Sprite e lidar com a mensagem da chave coletada Então, primeiro, vamos aos eventos, trazer um bloco de recebimento W I e receber a chave coletada. O que estamos fazendo aqui é verificar se a lista de chaves coletadas contém um item que corresponde ao valor da variável chave do clone. Se isso acontecer, pausaremos o jogo, rolaremos a câmera até as travas, apagaremos as travas , depois voltaremos para o jogador e retomaremos a jogabilidade Ok, então, para começar, vamos até Control e trazer um I e depois bloquear. Para verificar se a lista de chaves coletadas contém o valor da variável chave, podemos acessar as variáveis, trazer um bloco contendo chaves coletadas e usar um bloco de chaves como entradas Em seguida, vamos adicionar um conjunto para bloquear ao bloco ITN e definir o estado do jogo para rolagem automática Como você deve se lembrar, isso congelará tudo, exceto a rolagem E agora precisamos rolar até o clone de bloqueio atual. No momento, porém, não temos o script Scroll to e o código Lock Sprite Então, primeiro, podemos ir até a saída do Sprite, copiar o scroll do script para o Lock Sprite Em seguida, volte para o Lock Sprite. Agora, depois de definir o estado do jogo e quando eu receber a chave coletada, vamos até MyBlocks e trazemos um bloco scroll two E para as entradas, vamos às variáveis e trazemos um bloco X e um bloco Y. Também vamos controlar e adicionar um bloco de espera antes e depois da rolagem para bloquear. Para o primeiro, vamos esperar 0,2 segundos e, para o segundo, vamos esperar 0,5 segundos. Lex eliminará o clone. Para fazer isso, vamos repetir dez blocos. Então vamos para Looks, adicione um efeito de alteração por bloco ao bloco de repetição e altere o efeito fantasma em dez. Depois de eliminar o clone, voltaremos aos sprites do jogador Então, vamos até Ma Blocks e coloque outro pergaminho para bloquear. Para as entradas, vamos detectar e trazer para o pano de fundo o número de blocos de palco Em vez do palco, queremos usar o player. Então, vamos pegar a variável X para a primeira e a variável Y para a segunda. Também vamos controlar e esperar 0,5 segundos antes e depois da rolagem para bloquear. Depois disso, podemos acessar as variáveis, inserir um conjunto para bloquear e definir o estado do jogo para execução. Tudo o que precisamos fazer agora é excluir o clone, mas isso também significa que precisamos removê-lo da lista de pedidos Z. Então, primeiro, vamos excluir bloco e alterá-lo para a lista de pedidos Z. Para a entrada, vamos inserir um número de item do bloco, também usando a lista de pedidos Z. Ao classificar as camadas, estamos usando o nível Z. Então, vamos usar um bloco de nível Z como entrada do número do item Isso excluirá um dos itens da ordem Z da lista, o que manterá as camadas sob controle. Finalmente, podemos ir para Control e trazer ou excluir esse bloco de clones Agora, antes de tentarmos tudo isso, temos um pequeno problema. No script de geração, estamos definindo a variável-chave para o sprite original, que é transferida para o próximo clone que criarmos E como o sprite original também receberá a mensagem de chave coletada, ele pode encontrar sua chave na lista e tentar rolar até si mesmo Para evitar que isso aconteça, podemos interromper o script se o sprite estiver usando o traje em branco Mas, para uma maneira mais fácil, vamos ao script de configuração. Na parte inferior, vamos às variáveis e adicionaremos um conjunto para bloquear. E vamos definir a variável chave para algo que nunca será adicionado à lista de chaves coletadas. Isso pode ser zero para sua mãe, mas eu vou com o valor vazio. Com isso, como somente o sprite de bloqueio original ultrapassará o bloco I then, e como estamos fazendo isso depois de gerar todos os clones, isso garantirá que o sprite original nunca encontre seu valor-chave na lista Tudo bem, agora vamos tentar. Estou no nível três agora, e se eu pegar a chave laranja aqui, ela rola até as fechaduras laranja, as desvanece e depois volta para Vou verificar a chave verde também. Mas primeiro, vou desligar o modo Deus desta vez. Excelente. Ok, a seguir, começaremos a tornar o jogo muito divertido adicionando alguns inimigos aos níveis. 97. Adicionar o Inimigo Caracol: O primeiro inimigo que adicionaremos ao jogo é o sprite do caracol Se dermos uma olhada em suas roupas, ela tem uma animação em dois quadros, uma fantasia de dead zero e uma fantasia de hip box, que é um pouco menor que as outras roupas. O que faremos com os caracóis é fazer com que eles se movam para frente e para trás em partes de um nível Se o jogador pular em um caracol, o caracol morrerá e cairá Mas se o jogador tocar em um caracol de qualquer outra forma, isso o machucará Ok. E para codificar o sprite Snail, podemos começar acessando código do sprite coin e copiando Vamos começar do lado direito. Portanto, verifique o toque no player, anime, crie clones, classifique em camadas e Então, vamos copiar quando eu começar como clone quando recebo a atualização três, a atualização dois, a atualização um e, finalmente, o script de configuração e o script de bandeira verde Agora vamos até o sprite do caracol e limparemos um pouco o código Tudo bem, agora, para algumas mudanças, vamos começar com o script Crate Clone Ao criar um clone pela primeira vez mudaremos para o traje Move Zero Não vamos lidar com as moedas, então vamos nos livrar do bloco de troca de moedas. Também precisaremos acompanhar o estado atual do clone, que, de acordo com as roupas, estará movido ou morto Então, em variáveis, vamos criar uma nova. Vamos chamá-lo de estado e torná-lo apenas para esse sprite. E vamos esconder a variável. Em seguida, vamos adicionar um conjunto para bloquear antes que o clone cra de mim mesmo bloqueie e vamos configurar o estado para mover Agora, infelizmente, com o sprite do caracol, não podemos usar a detecção de colisão entre ele e o sprite do nível para impedir que ele passe pelas peças do nível, como estamos fazendo com o Isso ocorre porque os clones do sprite do caracol passarão muito tempo fora do E, como aprendemos antes, scratch limita o quão longe do palco um sprite pode ir O que isso significa é que os sprites de fora do palco, na verdade se agrupam nas bordas do Obviamente, isso causará problemas se tentarmos fazer detecções de colisões entre os sprites E é também a razão pela qual temos que usar variáveis X e Y personalizadas para cada sprite para acompanhar suas posições mundiais no nível Então, o que faremos em vez disso é posicionar um clone do sprite do caracol diretamente em cima dos blocos de nível e daremos a ele uma distância específica que ele pode percorrer antes de virar e ir na direção oposta Ok, então, para fazer isso, ao criar um clone, precisaremos dizer a ele a distância que ele pode percorrer, bem como em qual direção ele deve estar voltado no início Isso significa que precisaremos passar na distância e na direção inicial ao executar o script create Clone Então, vamos clicar com o botão direito do mouse no bloco definido e escolher Editar. Primeiro, vamos adicionar um novo rótulo, digitar ponto e vírgula, distância, dois e adicionar uma entrada chamada Agora vamos adicionar outro tipo de rótulo, ponto e vírgula, direção e dois pontos, adicionar uma entrada chamada direção e clicar em adicionar uma entrada chamada direção e Em seguida, precisamos acompanhar as exposições mínimas e máximas dos clones Então, primeiro, vamos às variáveis e criaremos algumas novas. Vamos chamar o primeiro Min x e torná-lo somente para este sprite Então vamos criar outro, chamado de Maxx. Também apenas para esse sprite, e vamos ocultar as duas variáveis Tanto minx quanto Maxx dependerão da direção inicial dos clones, que será 90 ou menos 90 Se for 90, o que significa que o clone está voltado para a direita, Minix será a exposição inicial e Maxx será a entrada X mais a distância Se a direção for 90 negativos, o que significa que o clone está voltado para a esquerda, Maxx será a entrada X e minx será X menos Então, primeiro, vamos controlar e colocar um bloco de ideias em algum espaço vazio Para a condição, vamos até os operadores e introduzimos um bloco igual. Então, vamos verificar se a entrada de direção é igual a 90. Agora vamos às variáveis e vamos adicionar dois blocos set two a cada parte do bloco ITN ls Para a parte I, queremos definir o Minix para a entrada X. E para Maxx, vamos até os operadores, trazemos um bloco de adição e vamos somar as entradas X e a entrada de distância Para a parte ts, definiremos o Minux trazendo um bloco de subtração e fazendo X Finalmente, vamos definir Maxx como a entrada X e colocar tudo isso acima do bloco create Clone of myself E mais uma coisa que queremos fazer é apontar o sprite na direção inicial correta Então, vamos ao movimento, adicionar um bloco de ponto e direção antes de criar o bloco Clone of myself e usar as entradas de direção Ok, avançando no bloco de figurino Switch do roteiro do anime, queremos ir até as variáveis e substituir a palavra moeda por um bloco de estado. Em seguida, só queremos alterar o quadro da animação se o caracol estiver no estado de movimento, porque o estado morto tem apenas um único quadro Então, vamos até o controle e vamos enrolar um bloco em forma de se , em seguida, contornar a alteração e definir blocos de moldura. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e vamos verificar se estado é igual Ok. E para a velocidade da animação, vamos usar 0,05 porque os caracóis são muito lentos e é uma animação de dois quadros Então, vamos modificar um quadro de animação com dois. Tudo bem, agora vamos adicionar um Snell ao nível um. Primeiro, vamos ver o script de configuração. E vamos nos livrar de todos os blocos do CrakKline para que não tenhamos um monte de snlls aleatórios Agora vamos rodar o jogo. Ative o modo bom e role um pouco para a direita. Vamos criar um snll aqui e fazer com que ele vá e volte entre a caixa e a borda do declive, e vamos iniciá-lo logo à direita da caixa , aqui mesmo Ok, então para criar o clone, vamos aos blocos Mi e adicionar um bloco de criação de clone para o nível Vamos usar 338 para X, 45 para Y, 100 para distância, e vamos deixá-lo voltado para a direita usando 90 para a direção Se clicarmos na bandeira verde novamente, veremos o novo caracol usando sua animação em movimento Agora precisamos fazer com que o caracol realmente se mova pelas peças do nível Para isso, vamos ver quando eu receber a Atualização 2. E aqui, antes de animar, adicionaremos um bloco personalizado para lidar com as ações do caracol Então, primeiro, vamos criar um novo bloco personalizado. Vamos chamá-lo de lidar com ações. Clique em Ok e vamos colocar um bloco de ações de alça logo acima do bloco animado Agora vamos mover o bloco de ações definidas para algum espaço vazio. E aqui vamos primeiro mover o clone uma certa velocidade em sua direção atual Para fazer isso, vamos às variáveis, introduzimos uma alteração por bloco e vamos alterar a variável X. Agora vamos aos operadores e vamos primeiro adicionar um bloco de multiplicação ao bloco X de alteração Em seguida, use um bloco de divisão para a primeira entrada. Agora, se entrarmos em movimento, podemos pegar um bloco de direção e dividi-lo por 90, o que nos dará um ou menos um. Então, podemos multiplicá-lo por uma velocidade. Na verdade, vou escolher um aqui, para que o caracol se mova apenas um passo em cada quadro Ok, vamos tentar . Perfeito. Agora só precisamos fazer com que, quando o caracol atingir a exposição máxima, ele se vire e se mova na direção oposta, depois repita o processo quando atingir a exposição mínima novamente Para fazer isso, precisaremos verificar se o caracol ultrapassou a variável Maxx ou a variável min x. Para começar, vamos até Control e adicionaremos um bloco if then else ao script de ação do manipulador. Para a condição, vamos até os operadores e trazer um bloco maior que. Então vamos às variáveis, vamos verificar se X é maior que Maxx Se for esse o caso, primeiro queremos incluir um conjunto para bloquear e definir X para Maxx Em seguida, queremos encarar o caracol na direção oposta. Para fazer isso, vamos entrar em movimento e inserir um bloco de ponto e direção. Em seguida, vamos aos operadores e usaremos um bloco de multiplicação como entrada Agora podemos voltar ao movimento e fazer a direção vezes menos um. Com isso, na próxima vez que o script for executado, o caracol, nesse caso, começará a se mover para a esquerda Podemos ver isso se rodarmos o jogo. Quando o caracol se move por uma distância de 100 degraus , próxima à borda da encosta, ele muda de direção e começa a se mover para a esquerda No entanto, ele também vira de cabeça para baixo. Como vimos antes, podemos corrigir isso clicando dentro da caixa de direção dos sprites e usando o tipo de rotação esquerda-direita Se tentarmos novamente, o caracol agora fica levantado quando vira para a esquerda Agora precisamos fazer o caracol virar para a direita depois de ultrapassar sua exposição mínima Então, primeiro, vamos ao controle e vamos adicionar um bloco if na parte de saída aqui. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vamos às variáveis e verificamos se X é menor que minx Agora podemos trazer algumas duplicatas do conjunto x e dos blocos de ponto e direção daqui de cima Mas desta vez, queremos definir X como minx. E agora, se rodarmos o jogo, o caracol nunca deve dar mais de 100 passos em qualquer direção Incrível. Tudo bem, então o que faremos seguir é deixar o jogador matar o caracol pulando nele Para isso, vamos dar uma olhada no script do player. Na verdade, vamos excluir os clones em outro lugar. Então, vamos retirar os dois blocos de exclusão aqui e salvá-los para mais tarde. E vamos nos livrar do bloco de moedas de câmbio. Agora, quando o jogador pula em um caracol, ele provavelmente estará no estado de outono quando atingir o Então, depois de verificar se o caracol está tocando o jogador, também verificaremos se o jogador está atualmente no estado de outono Nesse caso, faremos o caracol morrer. Caso contrário, o jogador provavelmente está entrando no caracol, que deveria machucar o jogador Ok, então primeiro, vamos controlar e adicionar um bloco if then s ao bloco I touch platter Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos ao sensoriamento e adicionar um número de pano de fundo do bloco de estágios ao bloco de iguais Para obter o estado do jogador, vamos mudar de estágio para jogador e obter a variável de estado. E vamos verificar se é igual a cair. Tudo bem Agora, quando o jogador pular em um caracol, colocaremos o caracol no estado morto, faremos com que ele salte um pouco no ar e, em seguida, usaremos a gravidade para fazê-lo cair no fundo do palco Então, primeiro, vamos às variáveis e adicionaremos um conjunto para bloquear à parte F. E vamos definir o estado como morto. Também queremos redefinir o quadro de animação trazendo um quadro de tom definido para zero bloco. Em seguida, para aplicar uma força vertical ao sprite, vamos criar uma nova variável Podemos chamá-la de velocidade Y e criá-la apenas para esse sprite, sem precisar mostrar a variável E, a propósito, se você não conseguir ver o bloco de uma variável que acabou de criar, você pode alternar para outro sprite e depois voltar, e agora o bloco deve estar visível Está bem? Agora vamos trazer outro conjunto para bloquear e vamos definir a velocidade Y para sete. Um valor positivo fará com que o sprite suba um pouco no início. Está bem? Agora, para usar o speed wi, vamos pegar os dois blocos de exclusão que salvamos aqui e trazê-los para o script de ação handle. No início do script, verificaremos se o sprite está no estado morto e, em caso afirmativo, usaremos a variável de velocidade Y para afetar sua posição Y. Então, primeiro, vamos controlar e colocar um bloco I e depois em algum espaço vazio. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se o estado é igual Nesse caso, vamos fazer uma mudança por bloco e alterar Y por SpeedY. Também queremos usar a gravidade para reduzir o SpeedY, então vamos introduzir outra mudança por bloco e alterar o SpeedY por gravidade Depois disso, queremos verificar se o clone chegou ao final do estágio e, em caso afirmativo, vamos excluí-lo Então, vamos controlar e adicionar um if o bloco abaixo da alteração Byblocks Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vá para variáveis e verifique se Y é menor que 180 negativos. Nesse caso, vamos incluir os dois blocos de exclusão. Agora, vamos adicionar tudo isso na parte superior do script de ação do identificador. No momento, porém, se o clone ainda não tiver chegado ao final do palco, esses blocos aqui embaixo ainda funcionarão, esses blocos aqui embaixo ainda funcionarão fazendo com que o clone também se mova Não queremos que isso aconteça. Então, vamos controlar. Adicione um bloco de parada na parte inferior do estado I é igual a bloco morto e interrompa esse script E há mais uma coisa que precisamos fazer. E quando eu recebo a Atualização 1, só queremos verificar se o clone está tocando o jogador quando o clone está em movimento Então, vamos pegar um bloco I e depois enrolá-lo em volta do bloco de jogadores de toque em cheque Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se estado é igual a movimento. Ok, acho que estamos prontos para tentar. Então, vamos rodar o jogo e desativar o Modo Deus. Se entrarmos no caracol, nada acontece ainda. Mas se pularmos nele, ele entra no estado morto, salta para cima e cai no fundo do palco. Muito legal. Mas eu ficaria ainda melhor se também fizéssemos o jogador quicar no caracol Veremos como fazer isso na próxima lição. Mas primeiro, vamos terminar de adicionar os caracóis aos níveis Ok, aqui estão todos os blocos de clone de caixas que estou usando, caso você queira usar os mesmos valores 98. Bounce the Player: Sempre que o jogador tocar nos sprites de um inimigo, nós o expulsaremos. Quando eles pularem ou caírem sobre o inimigo, nós os lançaremos diretamente para cima. E quando eles forem atingidos pelo inimigo, nós os atacaremos para a esquerda ou para a direita Qualquer direção os afaste mais do inimigo. E avisaremos ao sprite do jogador que ele precisa pular transmitindo uma mensagem sempre que um sprite inimigo tocar Está bem? Então, no script check touching player do sprite snail, se o clone estiver tocando no player, transmitiremos uma mensagem de rejeição do jogador, independentemente de o jogador estar ou não no estado de não no Então, vamos aos eventos em um bloco de transmissão logo acima do bloco IN Os e vamos transmitir uma nova mensagem, que podemos chamar de bounce player Em seguida, precisaremos dizer ao jogador em qual direção ele deve pular Para isso, podemos usar uma variável global. Então, vamos às variáveis e criemos uma nova. Vamos chamá-lo de bounce der e torná-lo para todos os sprites. Haverá três valores possíveis para o Bounced der. Zero significará direto. Um significará para cima e para a direita, e um negativo significará para cima e para a esquerda. Quando o jogador cai sobre o caracol, fazendo com que o caracol morra, queremos saltar o jogador diretamente para Então, vamos adicionar um conjunto para bloquear à parte if do ITinoBlock e vamos definir bounce Agora, quando o jogador for atingido pelo caracol, podemos definir a direção do salto comparando do jogador com a exposição do caracol Se o jogador estiver à direita do caracol, saltaremos o jogador para cima e para a direita e vice-versa Primeiro, vamos até Control e adicionaremos um bloco de se e depois saídas à parte de saídas deste. Para a condição, vamos até os operadores e trazer um bloco maior que. Para o lado esquerdo do bloco maior que, vamos usar uma duplicata do estado do bloco do jogador aqui e alterá-la para X do jogador E para o lado direito, vamos às variáveis e introduzimos um bloco X. Isso significa que o jogador está à direita do caracol. Então, vamos trazer um conjunto para bloquear e definir o salto, senhor, para um Caso contrário, podemos definir o bouncer para menos um. Agora, quando o sprite do jogador recebe a mensagem do jogador de salto, podemos simplesmente usar o valor do bouncer para determinar se o jogador foi atingido ou não pelo E só para ter certeza de que o segurança está sendo configurado corretamente, vamos rodar o jogo e ir até o caracol Se o tocarmos pelo lado esquerdo, segurança se torna negativo Se o tocarmos do lado direito, ele se torna positivo. E se pularmos no caracol, ele se torna zero. Incrível. Tudo bem, podemos ocultar a variável bouncer E agora precisamos acessar o código do sprite do player e lidar com a mensagem de bounce player Primeiro, vamos encontrar um espaço vazio. Então, vamos aos eventos e trazemos um W que recebi do Bounce Player block E aqui, faremos coisas diferentes dependendo do valor do bouncer Então, primeiro, vamos controlar e introduzir um bloco de entrada e saída. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e vamos verificar se o bouncer é igual Agora, independentemente do valor do bouncer, aplicaremos uma força de salto ascendente Usaremos a força de ressalto nesse script e também a usaremos no script de movimento vertical da alça Como vamos usá-lo em vários scripts, precisaremos criar uma variável para ele. Então, vamos criar um novo. Podemos chamar isso de força de salto, e somente o sprite do jogador precisa acessá-la, então podemos fazer isso apenas para esse sprite E já que estamos nisso, também precisaremos de outra variável para empurrar o jogador para trás se ele for atingido Isso é chamado de bounce back e nós o usaremos tanto no script do reprodutor de salto quanto no script de movimento horizontal da alça Ok, então vamos criar outra variável. Vamos chamá-lo de bounce back e também fazer com que seja apenas para esse sprite E podemos ocultar as duas variáveis. Agora, precisamos ter certeza de redefinir as duas variáveis no início de cada nível para que o jogador não comece pulando Então, primeiro, vamos ao script de configuração e vamos adicionar mais dois blocos do conjunto de dois. E vamos definir a força de salto e o salto de volta para zero. Agora vamos voltar ao script W I receive bounce player A força de ressalto será diferente dependendo se o du saltado é zero ou não Então, vamos adicionar um conjunto de dois blocos a cada parte do ITinoBlock Para o primeiro, vamos definir a força de salto para três. E para o outro, vamos configurá-lo para dois. Em seguida, abaixo do bloco I thin outs, definiremos a velocidade Y usando a força de salto para fazer o sprite subir Então, vamos adicionar um bloco de dois conjuntos na parte inferior do script e definir a velocidade Y. E, na verdade, vamos defini-la usando a soma da variável de salto e a variável de força de salto Isso fará sentido daqui a pouco. Então, primeiro, vamos até os operadores e colocamos um bloco de adição no bloco Y de velocidade definido. Então, vamos voltar às variáveis e fazer a força de salto mais a força de salto E como isso tecnicamente colocará o sprite no ar, também devemos trazer outro conjunto para bloquear e colocar o ar em um Se agora rodarmos o jogo e pularmos no caracol, ele nos jogará no ar Para melhorá-lo, porém, poderíamos fazer isso, então, se pressionarmos uma tecla de salto enquanto saltamos, ela continua aplicando a força de salto, permitindo que pulemos É aqui que entra o script de movimento vertical da alça . Dentro do eixo IY é igual um bloco, onde verificamos se o salto é menor que sete, estamos definindo a velocidade de acordo com a Então, o que também podemos fazer é adicionar uma mudança por bloco depois dela e alterar a velocidade pela força de salto Isso é o mesmo que definir a velocidade wy como a soma da força de salto e força de salto como estamos fazendo no script do reprodutor de salto Então, vamos tentar. Se pularmos em um caracol e pressionarmos a tecla de salto, podemos subir um pouco mais alto Isso realmente será útil quando adicionarmos os jumpads posteriormente No momento, porém, a força de salto ainda está sendo adicionada aos nossos saltos, mesmo quando não estamos ricocheteando Para corrigir isso, em algum momento, precisamos redefinir a força de ressalto para zero Para fazer isso, antes de verificar se o eixo Y é igual a um, podemos verificar se a força de salto é maior que zero e se o jogador começou a cair de volta no chão, ou seja, se a velocidade Y não é maior que zero. Ok, então primeiro, vamos controlar e colocar um bloco de TI em algum Para a condição, vamos até os operadores e primeiro trazer um bloco e. Vamos colocar um bloco maior que no lado esquerdo e, para o lado direito, vamos primeiro adicionar um bloco não, depois um bloco maior que. Agora vamos voltar às variáveis e verificar se a força de salto é maior que zero e a velocidade Y não é maior que zero Se tudo isso for verdade, podemos colocar um conjunto para bloquear e definir a força de salto para zero Agora podemos colocar o bloco I e, em seguida, logo acima do eixo IY é igual a um bloco, e isso deve resolver o problema Ainda podemos pular mais alto enquanto ricocheteamos em um inimigo, mas depois o salto volta ao normal Tudo bem, em seguida, precisamos implementar a recuperação que deve acontecer quando o jogador é atingido por um inimigo Para isso, vamos primeiro voltar ao script do bounce player Na parte inferior do script, vamos trazer outro conjunto para bloquear e definir o bounce back A direção do retorno dependerá, obviamente, do valor do DRE recuperado Então, primeiro, vamos aos operadores e usaremos um bloco de multiplicação como entrada Então, vamos voltar às variáveis e multiplicar o bounce der por, digamos Ok, agora vamos passar para os scripts de movimento horizontal da alça. E aqui, se o bounce back não for igual a zero, continuaremos adicionando o valor à velocidade x. Também evitaremos que o jogador anule os movimentos Tudo isso é semelhante ao que estamos fazendo tanto para pular paredes quanto para deslizar encostas No entanto, queremos parar de aplicar o ressalto assim que a força de ressalto se tornar zero Tudo bem, então para verificar tudo isso, vamos primeiro controlar e colocar um bloco FTN em algum espaço vazio Para a condição, vamos até os operadores e trazer um bloco e. Para o lado esquerdo, vamos colocar um bloco maior que. E para o lado direito, vamos primeiro colocar um bloco não, depois um bloco igual. Agora vamos às variáveis e vamos verificar se a força de salto é maior que zero e a recuperação não é igual a Se tudo isso for verdade, podemos fazer uma mudança por bloco e alterar a velocidade X pela especificação de salto E para impedir que o jogador o anule, podemos colocar um conjunto para bloquear e definir o eixo X como zero Agora podemos colocar tudo isso logo acima do se não o eixo X for igual a zero. Se rodarmos o jogo e nos depararmos com um inimigo, isso nos empurra para cima e para longe do Excelente. No momento, porém, isso não prejudica o jogador pois ele ainda não tem saúde. Então, vamos corrigir isso na próxima lição. 99. Ser ferido: Para que o jogador se machuque quando um inimigo o atinge, precisaremos dar a ele um pouco de saúde. Então, vamos começar criando uma variável para a saúde do jogador. Como o sprite cardíaco também precisará acessar a variável posteriormente, vamos torná-la uma variável global Então, vamos chamar isso de saúde do jogador e fazer com que seja para todos os sprites Também criaremos um para a quantidade máxima de saúde que o jogador pode ter. Vamos chamar isso de Max player Health e também torná-lo para todos os sprites Vamos ocultar a variável Max Player Health. E, por enquanto, manteremos saúde do jogador visível no palco. Tudo bem, agora, no código Sprite do player, vamos ver o script da bandeira verde Vamos trazer um conjunto para bloquear e definir a saúde máxima do jogador para três. Agora, vamos trazer outro conjunto para bloquear e definir a saúde do jogador para a saúde máxima do jogador. Em seguida, no script de configuração, reduziremos a saúde ao máximo, mas somente se a saúde cair para zero, isso permitirá que a saúde do jogador seja transferida entre os níveis. Então, primeiro, vamos controlar e colocar o bloco IDN em algum espaço vazio Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se a saúde do jogador é igual Nesse caso, podemos criar um conjunto para bloquear e definir a saúde do jogador para a saúde máxima do jogador. Agora, vamos adicionar o bloco ITN ao script de configuração. Em seguida, trabalharemos para fazer com que o jogador se machuque. Para isso, precisaremos acompanhar se o jogador está ou não lesionado no momento. Além disso, quando o jogador se machucar, nós o tornaremos invencível por um curto período de tempo Isso evitará que o jogador se machuque várias vezes ao mesmo tempo e permitirá que ele se afaste dos inimigos. Ok, então vamos começar criando mais algumas variáveis. Para o primeiro, vamos chamá-lo machucado e fazer com que seja apenas para esse sprite Então, vamos criar outro, chamá-lo de Max HRP repetidamente, criá-lo apenas para esse sprite tempo máximo de HRP será o número de frames que tornarão o jogador invencível após se Esse valor nunca mudará durante o jogo, então podemos defini-lo no script de bandeira verde. Vamos fazer isso trazendo um conjunto para bloquear e definindo o tempo máximo de Hurt em 30 quadros. Com uma taxa de quadros de 30 quadros por segundo, isso tornará o jogador invencível por 1 segundo após se machucar Agora, para a variável Hurt, queremos redefini-la no início de cada nível. Então, vamos adicionar um conjunto para bloquear ao script de configuração e vamos definir Hurt como zero. Ok, então o jogador obviamente se machucará ao ser atingido por um inimigo. Quando isso acontece, recebemos a mensagem do jogador de rejeição. Então, vamos ao script Quando eu recebo o Bounce Player Sabemos que o jogador foi atingido por um inimigo quando o valor do DR devolvido não é zero Então, na parte externa do bloco I bounced dr equals zero, faremos com que o jogador sofra algum dano Em primeiro lugar, se o jogador já está machucado, não queremos que ele se machuque novamente. Então, se o jogador já estiver ferido, simplesmente interromperemos o script. Ok, então, para começar, vamos controlar e trazer um bloco se então não for para algum espaço vazio. Para a condição, vamos até os operadores e trazer um bloco maior que. Em seguida, vamos às variáveis e verificamos se a dor é maior que zero. Usaremos maior que zero em vez de igual a um porque, na verdade, usaremos a variável como uma espécie de cronômetro para indicar há quanto tempo o jogador está ferido Ok, e se for esse o caso, vamos controlar, colocar um bloco de parada e interromper esse script. Se a lesão não for maior que zero, então o jogador deve se machucar. Para isso, usaremos um bloco personalizado. Então, vamos ao MyBlock e criar um novo. Primeiro, vamos digitar Get hurt B. Em seguida, vamos adicionar uma nova entrada, chamá-la de dano e clicar em OK. Agora vamos adicionar um get hurt by block à parte de saídas aqui. E para a entrada de danos, vamos usar 0,5. Então, podemos adicionar isso se, então, o bloco na parte externa do segurança I for igual a zero bloco acima do bloco de força de salto definido Ok, agora vamos mover o bloco definido get hurt by para algum espaço vazio. A primeira coisa que queremos fazer aqui é acessar as variáveis, um conjunto para bloquear e definir RT como um. Em seguida, reduziremos a saúde do jogador pelas entradas de dano Então, vamos fazer uma mudança por bloco e mudar a saúde do jogador. Para reduzir a saúde, precisaremos negar o valor de entrada de dano Então, vamos até os operadores e adicionar um bloco de subtração ao bloco de mudança de saúde do jogador Então, vamos fazer zero menos as entradas de dano. A próxima coisa que precisamos fazer é continuar aumentando o valor de RT até que ele atinja o valor de tempo Max Hert Como isso tem a ver com o estado do player, vamos lidar com isso dentro do script de estado de atualização. Na parte superior do script, começaremos verificando se o valor de Hertz é maior que zero Então, vamos até o Controle e coloquemos um se for o bloco em algum espaço vazio. Agora vamos até os operadores e introduzimos um bloco maior que. Em seguida, vá para variáveis e verifique se Hertz é maior que zero Em seguida, verificaremos se o valor de HRT atingiu o tempo máximo de lesão Nesse caso, voltaremos a zero e, caso contrário, continuaremos aumentando o valor da HRT em um Então, primeiro, vamos controlar e adicionar um bloco I then s ao bloco I then. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se rt é igual a max herTT. Nesse caso, vamos colocar um conjunto para bloquear e definir o dano como zero. Caso contrário, vamos introduzir uma mudança por bloco e uma mudança prejudicada por uma. Agora, vamos colocar tudo isso na parte superior do script de estado de atualização. E antes de testarmos tudo, vamos passar para o script de bandeira verde e definir o tempo máximo de duração para algo bem alto, como 150, que é cerca de 5 segundos. Se agora rodarmos o jogo e nos depararmos com um inimigo, saltaremos, perderemos metade de um ponto de saúde e o valor do RT começará a contar Até atingir o tempo máximo de dano, podemos atravessar os inimigos sem nos machucar. Quando atinge o tempo máximo de dano, ele volta para zero e podemos nos machucar novamente. No momento, porém, não é muito óbvio para o jogador que ele seja invencível depois de se Para deixar isso mais claro, podemos fazer o sprite do jogador piscar enquanto o jogador é invencível Primeiro, vamos ajustar o tempo de Max Hurt para 30. Em seguida, vamos voltar ao script de estado de atualização. Bem, use um bloco personalizado aqui para fazer o sprite piscar Então, para começar, vamos ao Mblocks e criar um novo. Vamos primeiro digitar flash se, e desta vez, adicionarmos entradas booleanas, que até agora não usamos Uma entrada booleana, como os blocos de comparação e os blocos condicionais na categoria operadores, terá um valor verdadeiro ou falso Tudo bem, então vamos adicionar uma entrada booleana, e vamos chamá-la de ponto de interrogação flash Agora vamos clicar em Ok e vamos adicionar um flash se o bloco após a alteração for afetado por um bloco aqui. Usaremos a condição para dizer ao bloco se deve ou não piscar. Para fazer isso, vamos até os operadores e primeiro vamos inserir um bloco igual. Em seguida, vamos colocar um bloco de modificação no lado esquerdo. Agora vamos às variáveis e vamos fazer o mod quatro de Hurt, igual Com isso, toda vez o valor de RT se tornar divisível por quatro, o que será a cada quatro quadros, o sprite piscará Ok, agora vamos colocar o bloco de flash definido em algum espaço vazio. E aqui queremos verificar se a entrada do flash é verdadeira ou falsa. Então, vamos controlar e introduzir um bloco ITN Ls, e podemos usar a entrada flash como condição A parte I será executada se o flash for verdadeiro e a parte s será executada se for falso. Ok, e para fazer o sprite piscar, podemos usar o efeito de brilho Para fazer isso, vamos até Looks e vamos adicionar um efeito de conjunto para bloquear em ambas as partes do bloco ITN Ls Se o flash for verdadeiro, definiremos o efeito de brilho para 100, que tornará o sprite completamente branco Caso contrário, vamos defini-lo como zero, o que basicamente desativará o efeito. Agora, antes de tentarmos isso, vamos voltar ao script de estado de atualização. É possível que, quando o valor de HRT atingir o tempo máximo de dano, o sprite ainda esteja branco Então, para ter certeza de que não é, vamos adicionar um bloco de dois efeitos definidos à parte I desse bloco e vamos definir o brilho para zero. Agora, se rodarmos o jogo e formos atingidos por um inimigo, o sprite pisca enquanto o jogador é Agora, no momento, se continuarmos sendo atingidos, nossa saúde pode continuar caindo até mesmo em números negativos Então, a seguir, faremos o jogador morrer quando sua saúde chegar a zero. 100. Como matar o jogador: exemplo, quando o jogador se machuca, precisamos controlar se o jogador está morto ou não. Para começar, vamos às variáveis e criar uma nova. Vamos dizer que está morto e fazer com que seja apenas para esse sprite. Queremos redefinir a variável inativa no início de cada nível. No script de configuração, vamos colocar um conjunto para bloquear e colocar morto em zero. Ok, agora vamos ver os scripts de Get Hurt. E aqui, depois de reduzir a saúde do jogador, verificaremos se o jogador morreu e faremos isso em outro bloco personalizado. Então, primeiro, vamos até Mblocks e criemos um novo. Vamos chamá-lo de Check Dad e clicar em OK. E vamos adicionar um bloco morto de verificação na parte inferior do script get hurt. Tudo bem, faremos o jogador morrer quando sua saúde cair para zero ou abaixo de zero. Portanto, no script check dead, verificaremos isso primeiro acessando o controle e inserindo um bloco if then. Para a condição, vamos até os operadores e trazer um bloco or. Então, vamos colocar um bloco igual em um lado e um bloco menor que no outro Agora vamos às variáveis e vamos verificar se a saúde do jogador é igual Ou a saúde do jogador é menor que zero. Nesse caso, vamos primeiro criar um conjunto para bloquear e zerar a saúde do jogador. Isso evitará que ocorram problemas quando criarmos a tela cardíaca posteriormente. Então vamos trazer outro conjunto para bloquear e acabar com um. Em seguida, transmitiremos a mensagem que o jogador morreu. O pano de fundo receberá a mensagem e reiniciará o nível atual Então, vamos aos eventos, introduzimos um bloco de transmissão e vamos transmitir a nova mensagem, que podemos chamar de player dide. Antes de lidarmos com a mensagem de morte do jogador, primeiro eliminaremos o sprite do player aqui e adicionaremos uma pequena pausa antes Então, vamos para o controle, e primeiro vamos colocar um bloco de espera e esperar 0,5 segundos. Então, vamos repetir dez blocos. Agora vamos para Los e vamos adicionar um efeito de mudança por bloco ao bloco repetição e alterar o efeito fantasma em dez. Ok, agora vamos ao script do Bounce Player. Depois de executar o bloco G hurt, se o jogador tiver morrido, não queremos quicar o jogador Então, para verificar isso, vamos controlar e colocar um bloco if then logo abaixo do bloco G hurt. Para a condição, vamos até os operadores e introduzimos um bloco igual. Então, vamos às variáveis e verificamos se morto é igual a um. Nesse caso, podemos ir até o controle, inserir um bloco de parada e interromper esse script. E para facilitar o teste de tudo, vamos usar dois como entrada de dano por enquanto, então serão necessários apenas dois golpes para matar o jogador Tudo bem, agora vamos ao código do pano e vamos encontrar algum espaço vazio Queremos receber a mensagem da data do jogador. Então, vamos aos eventos, trazer um bloco W recebi e receber do jogador. E aqui primeiro queremos interromper o loop do jogo Então, vamos controlar, colocar um stop block e parar outros scripts e sprites Em seguida, reiniciaremos o nível atual. Mas antes de fazermos isso, queremos dar ao Sprite do jogador tempo suficiente para desaparecer Então, vamos primeiro esperar um bloco de 1 segundo. Agora podemos reiniciar o nível acessando eventos, trazendo um bloco de transmissão e um nível inicial de transmissão Ok, se agora rodarmos o jogo e formos atingidos duas vezes por um inimigo, o jogo para e o sprite do jogador desaparece, então o nível então o Mas agora não podemos ver o sprite dos jogadores. Isso ocorre porque não reiniciamos o efeito fantasma. Para fazer isso, vamos voltar ao código Sprite do jogador e aos scripts de configuração E aqui podemos ir para Looks e trazer um bloco claro de efeitos gráficos. Isso deve resolver o problema. Tudo bem E outra coisa é que se ativarmos o modo Deus, tocarmos em um inimigo e depois desativarmos o modo Deus, nos machucamos e nos recuperamos Isso ocorre porque ainda estamos recebendo a mensagem do jogador de salto, que define a variável de dano e as variáveis de rejeição Então, assim que desligamos o modo Deus, isso nos machuca. Provavelmente não queremos que isso aconteça. Então, na parte superior do script, podemos verificar se estamos no bom modo e, em caso afirmativo, interromperemos o script. Então, primeiro, vamos controlar e colocar um bloco ITN em algum espaço vazio Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se o modo Deus é igual a um. Nesse caso, podemos controlar, inserir um bloco de parada e interromper os scripts. Tudo bem E agora, se colocarmos isso no topo dos scripts, rodarmos o jogo, ativarmos o modo bom, tocarmos em um inimigo e desativarmos o modo bom, não nos machucaremos mais Ok, legal. Vamos fazer com que o dano causado volte a 0,5 e possamos continuar ocultando a variável morto, a variável HRT e a variável de tempo Mx HRT. Em seguida, faremos com que cair do nível no líquido também machuque o jogador e responderemos em um local próximo 101. Respawn o jogador: Quando o jogador cair do palco e cair no líquido, ele perderá um pouco de saúde e, se ainda tiver saúde restante, responderá a um local próximo de onde caiu. Se eles não tiverem mais saúde, reiniciaremos o nível. Para decidir onde reaparecer, o jogador usará o sprite de pontos de amplitude O traje principal do sprite é simplesmente um longo retângulo vertical Colocaremos clones invisíveis do sprite em vários locais nos níveis de onde é provável que o jogador caia e caia no Cada vez que o jogador passa por um dos clones do ponto de spa, a posição do clone se tornará a nova posição de extensão do jogador Então, se eles caírem no líquido, eles responderão a essa posição. Ok, então, para começar, podemos primeiro acessar o código do sprite da moeda e copiar alguns scripts para o sprite do ponto de desova Vamos começar com o script do player check touch. Em seguida, vamos criar Clone, classificar em camadas e ajustar a posição Em seguida, queremos que eu comece como clone quando eu receber a Atualização três e quando eu receber a Atualização um Por fim, vamos copiar o script de configuração e o script de bandeira verde. Agora vamos ver o código do ponto de desova. Eu defini check touching player, o sprite do ponto de desova não tem uma fantasia de quadril, então podemos nos livrar do bloco de fantasias do Switch Também não queremos alterar o contador de moedas ou excluir o clone aqui para que possamos nos livrar de todos os blocos dentro do bloco if then O que queremos fazer quando o clone está tocando o jogador é usar a posição do clone como a nova posição de desova do jogador Para fazer isso, precisaremos de algumas variáveis globais para acompanhar a posição de spawn do jogador Então, primeiro, vamos às variáveis e criaremos algumas novas. Vamos chamar o primeiro jogador de spawn X. E fazer isso para todos os E para o segundo, vamos usar o player spawn Y. Também para todos os sprites. Também para todos os Em seguida, vamos adicionar dois conjuntos de dois blocos ao bloco I touch player E vamos definir o player spawn X para a variável X. E os jogadores geram Y para a variável Y. Em seguida, em define crate Clone, queremos mudar para o traje do ponto de desova Não queremos trocar moedas ou animar, então podemos nos livrar do bloco set anim frame e do bloco change coins Também podemos excluir a variável anim frame. Ok, agora, e quando eu receber a Atualização 1, já que não estamos trocando o traje no script do jogador, o cheque em branco, se não, o traje for igual cheque em branco não é mais necessário Assim, podemos mover a posição de ajuste e verificar se tocamos nos blocos do jogador acima do bloco I depois nos livrar do bloco I e depois bloquear O motivo pelo qual não precisamos fazer a verificação é que, para que o Scratch detecte uma colisão entre dois sprites, os dois sprites devem ter algum tipo de objeto visível em seus Como os sprites originais do SponPoint sempre usarão a roupa em branco, que, obviamente, está completamente vazia, ela nunca tocará no sprite do jogador Tudo bem, agora vamos adicionar alguns clones de pontos de desova ao nível um Primeiro, vamos ao script de configuração e nos livremos de todos os blocos críticos do Clone E também teremos pontos de desova no nível quatro, então substituiremos o bloco de nível I igual a três aqui por um bloco I thin outs Para fazer isso, vamos até Control e colocar um bloco I thin outs em algum espaço vazio. Agora vamos mover o nível igual a três blocos para o bloco de saídas ITN e, em seguida, substituir o bloco ITN pelo bloco I then outs seguida, substituir o bloco ITN pelo bloco I Está bem? Agora vamos rodar o jogo e ativar o Modo Deus. Colocaremos pontos de desova perto das bordas de qualquer parte do nível da qual o jogador possa cair e cair no líquido Por exemplo, onde o jogador começa é na verdade uma boa posição, e também nesta plataforma flutuante aqui e perto da borda deste lado. Ok, então vamos criar o primeiro aqui, perto da posição inicial do jogador. Então, vamos para MI Blocks e adicionar um bloco create Clone para o nível um, e vamos usar os valores X clicados e Y clicados para Se rodarmos o jogo, agora podemos ver o clone do ponto de desova e, se entrarmos nele, os valores de geração do jogador X e jogador Y serão definidos Agora vamos criar um aqui. Vamos adicionar outro bloco create Clone e digitar os valores de pontos clicados Agora devemos ver os dois clones quando rodamos o jogo. E os valores da posição do intervalo mudam à medida que vamos e voltamos entre os clones. Mas é claro que não queremos que esses grandes retângulos realmente apareçam no jogo Então, uma coisa que podemos fazer é ir até Quando eu começo como um script de clone e, em vez de usar componente Z no bloco de classificação de camadas, podemos usar o plano de fundo Z. Isso funciona no momento, pois coloca os pontos de desova atrás dos No entanto, nem sempre funciona dessa maneira. Para ver o que quero dizer, vamos parar o jogo e as roupas do Sprite, ponto de desova, bem rápido Vamos escolher o traje do Spawn Point e clicar e arrastar o Sprite até o palco Se rodarmos o jogo, os clones do Spawn Point agora aparecem na frente dos clones do Sprite em segundo plano Está bem? Então, para outra solução possível, podemos tentar esconder todos os pontos de desova Para fazer isso, vamos voltar ao código do Spawn Point Sprite No roteiro da bandeira verde, vamos retirar o bloco de exibição e deixá-lo de lado. Em seguida, vamos até Looks e adicionaremos um bloco oculto ao script. Se rodarmos o jogo agora, os pontos de desova estão todos ocultos, mas agora, à medida que percorremos os locais, os valores da posição de desova não mudam Na verdade, já discutimos isso brevemente antes, mas o motivo é que o scratch não detecta colisões em sprites ocultos Há, no entanto, uma solução alternativa para isso. Primeiro, vamos nos livrar do esconderijo e trazer o bloco do show de volta. Agora vamos trazer um efeito definido de dois blocos e definir o efeito fantasma para 100. Isso também tornará os sprites invisíveis, mas, ao contrário de escondê-los, scratch ainda detectará colisões Então, agora, à medida que passamos pelas localizações dos pontos de desova, os valores da posição de desova Incrível. Agora, como os clones dos pontos de desova nunca estarão visíveis no jogo, na verdade não precisamos classificá-los nas camadas Podemos simplesmente deixar que eles sejam automaticamente empurrados para trás, como fazemos com todos os sprites originais Então, na vitória que eu começo como um script de clone, podemos nos livrar do bloco de camadas de classificação Então, também podemos nos livrar do script da camada de classificação. E para fins de teste, vamos criar mais um ponto de desova logo acima da plataforma flutuante aqui em cima Em seguida, faremos com que o sprite do jogador possa realmente usar os valores da posição de amplitude quando eles caírem no líquido Para isso, vamos ver o código do sprite do player. Primeiro, vamos encontrar o script da posição inicial definida. E aqui, em vez de definir diretamente os valores iniciais de X e Y para cada nível, vamos definir os valores de geração de jogadores X e de geração de jogadores Y. Isso é simplesmente ter uma posição de desova padrão no início de cada nível Agora, depois de todos os blocos de ITN antes de ajustar a posição, vamos às variáveis e trazemos mais dois blocos do conjunto de dois E agora podemos definir X para gerar o jogador X e Y para gerar o jogador Y. Além disso, vá em frente e oculte as variáveis de posição do spawn Além disso, vá em frente e oculte as variáveis de posição do spawn Em seguida, vamos encontrar os scripts de movimentação vertical. Na parte inferior, estamos verificando se o jogador caiu abaixo da parte inferior do palco e, em caso afirmativo, estamos transmitindo a mensagem do nível inicial Em vez disso, vamos transmitir uma nova mensagem, que podemos chamar de respawn player Receberemos essa mensagem e reapareceremos o jogador. Então, primeiro, vamos encontrar um espaço vazio. Agora vamos aos eventos, trazer um bloco de recebimento W I e receber o jogador Respawn Agora, como no script do Bounce Player, não queremos que esse script faça nada quando o modo Deus estiver ativado Assim, podemos primeiro duplicar o modo I God igual um bloco do script do jogador de salto, livrar dos blocos extras e adicioná-los ao script do reaparecimento do OK. Depois disso, vamos controlar, inserir um bloco de parada e interromper outros scripts no sprite Isso ocorre porque não queremos que o sprite do jogador faça outra coisa enquanto está reaparecendo Agora, como poderíamos usar o script de respawn player para outros fins que não sejam quando o jogador cai no líquido, verificaremos em seguida se o jogador caiu no líquido e, em caso afirmativo, tiraremos um pouco de sua saúde Então, vamos inserir um bloco se, então. E quanto à condição, podemos verificar se o sprite do jogador está abaixo da parte inferior da fase, como estamos fazendo no script vertical de movimento, ou se o jogador estará dentro do líquido nesse ponto, podemos ir até o sensor, trazer um bloco de toque e verificar se estamos tocando no e verificar se estamos Nesse caso, faremos com que o jogador se machuque, mas somente se ele ainda não estiver machucado. Então, primeiro, vamos para Control e adicionar um bloco IN ao bloco de líquido se estiver tocando Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para as variáveis e verifique se a lesão é igual a zero. Isso significa que o jogador não está machucado no momento, então ele não é invencível E se for esse o caso, podemos fazer a mesma coisa que estamos fazendo no script do Bounce Player, executando o bloco get hurt parando o script se o jogador tiver morrido Então, vamos duplicar o bloco G hurt, que também deve duplicar o if dead for igual a Em seguida, podemos adicioná-los ao bloco hurt equals zero e ao script do repawn player Mas desta vez, para a entrada de dano no bloco de se machucar, vamos usar uma. Em seguida, se o jogador não estiver tocando no líquido ou estiver, mas ainda estiver vivo, mas ainda estiver vivo, reapareceremos o jogador usando os X e de geração de jogadores Y. Para fazer isso, vamos adicionar um conjunto de dois blocos na parte inferior do script e definir X para gerar o jogador X. E Y para gerar o jogador Y. Também queremos garantir que o sprite não se Então, vamos trazer mais dois blocos e definir a velocidade X e a velocidade Y como zero. Ok, se agora rodarmos o jogo e cairmos no líquido, perderemos saúde e reapareceremos na posição correta do intervalo E se morrermos, o sprite desaparece e o nível O renascimento funciona bem, desde que a posição de desova não esteja muito longe Se, no entanto, cairmos da plataforma flutuante aqui em cima, quando o sprite do jogador responder e a câmera chegar até ele, ele já terá caído na plataforma Se caíssemos de um lugar ainda mais alto no líquido, isso poderia causar problemas na detecção de colisão, pois o sprite do jogador estará fora do palco Para corrigir isso, queremos pausar a jogabilidade e primeiro rolar a câmera até o jogador e, em seguida, retomar a jogabilidade Para fazer isso, primeiro precisaremos acessar saída ou o código do Sprite de bloqueio e copiar o pergaminho a ser escrito no sprite do player Agora vamos voltar ao código Sprite do player. De volta ao script do Respawn player para pausar tudo, exceto a rolagem, podemos adicionar mais um conjunto para bloquear e definir o estado do jogo como Em seguida, podemos rolar até o sprite do jogador acessando primeiro os blocos MI e trazendo um scroll to block, depois voltando às variáveis e usando os blocos X e Y como entradas Em seguida, adicionaremos um pequeno atraso acessando o controle, inserindo um bloco espera e aguardando 0,5 segundos. Finalmente, podemos retomar o jogo acessando as variáveis, trazendo um conjunto para bloquear e definindo o estado do jogo como em execução. E agora, se rodarmos o jogo e cairmos no líquido, a câmera rolará para a nova posição do jogador antes que o jogo continue. Porém, uma coisa estranha que pode acontecer é que se deslizarmos a parede pelos ladrilhos até o líquido, já que estamos pausando a maior parte do ciclo do jogo, respondemos com a roupa de escorregador de parede Além disso, se fizermos isso novamente e mantivermos pressionada a tecla de pular antes que o jogo continue, pressionada a tecla de pular antes que o jogo continue, poderemos pular no ar. Isso acontece porque, enquanto a parede desliza, tanto a variável no ar quanto a variável de salto são zero Esses valores são transferidos à medida que respondemos, o que nos permite pular. Então, primeiro, para corrigir o problema de salto, vamos adicionar mais dois blocos antes de todo o material de rolagem E vamos colocar os dois no ar e pular para algo alto, como 99 E para a questão das fantasias, podemos simplesmente ir até Looks, trazer um bloco de roupas Switch e trocar para a fantasia de outono zero. Agora, devemos sempre reaparecer o traje de outono zero e não poder pular no ar Ótimo. Ok, e mais uma coisa que podemos fazer para melhorar isso é se cairmos algumas vezes até morrermos Quando o sprite do jogador desaparecer, um pouco difícil ver porque o sprite está um pouco acima da parte inferior do palco Para impedir que caia até agora, vamos passar para o script de mover Aqui embaixo, em vez de verificar se a variável Y dos sprites é menor que 180 negativos, vamos usar algo como menos 150 Vamos também ir às variáveis, adicionar um conjunto para bloquear ao bloco I e depois definir Y para menos 150. Em seguida, vamos até os Blocos M e introduzimos um bloco de ajuste de posição. Isso fará com que a posição Y do sprite congele em menos 150 Se rodarmos o jogo agora e cairmos até morrermos, é mais fácil ver o sprite desaparecer antes que o nível Tudo bem, então o que podemos fazer agora é voltar ao código do sprite dos pontos de desova e continuar adicionando os pontos de desova aos níveis Ok, então aqui estão todos os blocos de craklone que estou usando. Obviamente, existem alguns deles. Então, se você preferir não preocupar em digitar todos esses valores sozinho, você pode substituir seu sprite de ponto de desova aquele que eu forneci como Ok, e com os pontos de desova resolvidos, voltaremos a adicionar os inimigos restantes ao jogo 102. Adicione o inimigo de abelha: O próximo inimigo que adicionaremos ao jogo é o B Sprite aqui As roupas do B Sprite consistem em uma animação de mosca em dois quadros, uma fantasia de morto e uma caixa de quadril No jogo, faremos com que as abelhas desçam repetidamente em um semicírculo em cada direção, e elas geralmente estarão guardando algo que o jogador precisa, como uma moeda ou uma chave Ok, e grande parte do código do sprite Be será o mesmo do sprite do caracol Então, podemos primeiro acessar o código do sprite do Snail e copiar todos os scripts No código B Sprite, vamos ao script animado. O estado de animação da abelha é o estado da mosca. Então, vamos nos mudar para cá para voar. O Be também deve se animar um pouco mais rápido que o caracol. Então, vamos alterar um quadro em 0,15. A seguir, vamos ao roteiro crítico de Clone. A primeira roupa que queremos usar é voar zero, e o estado padrão deve ser voar. Não usaremos as variáveis minx e Maxx para o B, então podemos nos livrar de todo esse bloco de direção I igual a 90 aqui. Também não precisaremos fornecer uma distância ao criar um clone Então, vamos clicar com o botão direito do mouse no bloco definido e escolher Editar. Vamos primeiro excluir o rótulo de distância, depois a entrada de distância e clicar em OK. No entanto, precisamos inicializar algumas novas variáveis Então, vamos às variáveis. Se ainda tivermos as variáveis Maxx e minx, podemos clicar com o botão direito do mouse em uma e renomeá-la Então, podemos renomear o outro para atrasar. ângulo acompanhará o ângulo atual do B à medida que ele desce e usamos o atraso para adicionar uma pequena pausa entre cada vez que o Ok, agora podemos inicializar as duas variáveis adicionando mais dois blocos de conjuntos ao script crit Clone. E definindo o ângulo e o atraso para zero. Em seguida, no script When I Receive Update One, vamos alterar state equals move here para state equals E no script de ação do handle, deixaremos todo o bloco morto de I state equals, mas não podemos nos livrar de todo o resto E vamos adicionar o primeiro B ao jogo. Primeiro, no script de configuração, vamos nos livrar de todos os blocos de crack Clone Então, vamos rodar o jogo e ativar o Modo Deus. Para evitar que tenhamos que ir longe demais durante o teste, colocaremos temporariamente um B perto de onde o jogador começa no nível um. Vamos clicar em algum lugar aqui. Em seguida, vá para Mblocks, adicione um bloco Cre Clone para o Nível um e digite os valores da posição clicada E vamos usar 90 para a direção. Se clicarmos na bandeira verde, teremos nossa primeira animação B. Agora vamos trabalhar para fazer com que o B desça Para isso, vamos voltar ao script de ação do identificador. Conforme o B desce, ele se move para baixo e horizontalmente na direção em que está espaçando Então, primeiro, para o movimento horizontal, vamos às variáveis e adicionamos uma alteração por bloco na parte inferior do script, e vamos alterar a variável X. Queremos que o sprite se mova uma certa quantidade na direção para a qual está voltado Para fazer isso, vamos aos operadores e vamos adicionar um bloco de multiplicação ao bloco X de alteração Em seguida, coloque o bloco de divisão no lado esquerdo. Agora vamos para o movimento e vamos dividir a direção por 90 vezes 3,5 para a velocidade. Se rodarmos o jogo agora, o B começa a voar para a direita. Em seguida, para fazer o sprite descer em um arco, precisaremos usar um pouco de trigonometria e também precisaremos Então, primeiro, vamos às variáveis e introduzimos outra alteração por bloco. E vamos mudar o ângulo em dez. O valor que usamos aqui afetará a rapidez com que o B se moverá e provavelmente precisaremos ajustá-lo um pouco à medida que avançamos Ok, agora vamos colocar um conjunto para bloquear e definir a velocidade Y. É aqui que precisaremos usar um pouco de trigonometria para fazer com que o sprite diminua a velocidade à medida que se aproxima da parte inferior do arco e, em seguida, acelere novamente à medida que ele se move de volta, podemos cosseno, porém, nos dá números muito pequenos entre menos um e um Então, precisaremos multiplicar o valor por um número maior. Então, vamos aos operadores e vamos primeiro adicionar um bloco de multiplicação ao bloco Y de velocidade definido Em seguida, vamos colocar um abdômen ou bloco no lado esquerdo e alterá-lo para a função de causa. Então, queremos ir às variáveis e obter o cosseno da variável do ângulo E vamos multiplicar por dois. Quanto maior o número que usamos aqui, mais abaixo o B descerá Finalmente, podemos introduzir uma mudança por bloco e alterar Y por velocidade Y. Se rodarmos o jogo agora, o B salta, mas sobe no início Para fazer com que diminua no início, precisamos negar toda Para fazer isso, vamos até os operadores e colocar um bloco de subtração em algum espaço vazio Agora vamos pegar o bloco de multiplicação aqui e colocá-lo no lado direito, subtraí-lo de zero e usar tudo isso para definir a velocidade Y. O B agora deve começar a descer No entanto, ele não desce o suficiente, então vamos tentar multiplicar por cinco no bloco Y de velocidade definido É melhor, mas para diminuir um pouco a velocidade, podemos tentar alterar a variável do ângulo em quatro. Isso deve funcionar. Tudo bem, então, a seguir, queremos parar a abelha quando ela atingir o topo do arco, virar e pular na direção oposta Para começar antes de definir a velocidade Y, redefiniremos o ângulo para zero se ele atingir 180 ou mais. Isso fará com que o sprite desça continuamente quando atingir sua posição Y original Então, primeiro, vamos ao Controle e coloque um bloco ITN em algum espaço vazio Para a condição, vamos até os operadores, traga um bloco ou. Em seguida, coloque um bloco igual em um lado e um bloco maior que no Agora vamos às variáveis e vamos verificar se o ângulo é igual a 180 ou se o ângulo é maior que Nesse caso, vamos colocar um conjunto para bloquear e definir o ângulo para zero. Para fazer com que o sprite desça na direção oposta, basta virar sua Para fazer isso, vamos ao movimento e adicionar um bloco de ponto e direção ao bloco I then. Para a entrada, vamos até os operadores e introduzimos um bloco de subtração Em seguida, volte ao movimento e vamos fazer zero menos a direção Se colocarmos o bloco I then logo acima do bloco Y de velocidade definido e rodarmos o jogo, o B agora descerá continuamente em direções alternadas definitivamente não queremos que ele vire de cabeça para baixo, No entanto, definitivamente não queremos que ele vire de cabeça para baixo, então vamos mudar o tipo de rotação para a esquerda e para a direita Lá vamos nós. Se esperarmos alguns segundos, porém, podemos ver que o B se aproxima cada vez mais do fundo. Isso ocorre porque ainda estamos mudando a posição Y mesmo depois de redefinir o ângulo, o que está fazendo com que o sprite pare um pouco abaixo da posição Y original. Para corrigir isso, podemos ir para Controle, colocar um bloco de parada na parte inferior do I e depois bloquear e parar esse script. Agora, ele deve sempre parar em sua posição Y original na parte superior do arco. Tudo o que precisamos fazer agora é adicionar um breve atraso antes o B mude de direção e desça novamente. Para fazer isso, vamos primeiro retirar o bloco de ponto e direção aqui e deixá-lo lado e esperar até depois do atraso para mudar de direção. Vamos nos certificar de adicionar o bloco stop de volta ao bloco I then. Agora vamos às variáveis e adicionamos outro conjunto para bloquear ao bloco I then, e vamos definir o atraso como 30. Isso criará um atraso de 30 quadros ou 1 segundo. Em seguida, antes de fazer a jogada B, verificaremos se o atraso é maior que zero e, em caso afirmativo, faremos algumas coisas diferentes Então, primeiro, vamos controlar e colocar um bloco I e depois em algum espaço vazio. Para a condição, vamos até os operadores e trazer um bloco maior que. Em seguida, vamos às variáveis e verificamos se o atraso é maior que zero. Nesse caso, primeiro queremos reduzir o valor do atraso, então vamos introduzir uma alteração por bloco e alterar o atraso por menos um. Em seguida, queremos verificar se o valor do atraso chegou a zero e, em caso afirmativo, mudaremos a direção do sprite e começaremos a saltar na direção oposta Caso contrário, não queremos que o sprite faça nada, então vamos interromper o script Então, vamos controlar e introduzir um bloco if then s. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se o atraso é igual a zero. Nesse caso, podemos inserir o bloco de ponto e direção que salvamos aqui. Caso contrário, podemos ir até o controle, inserir um bloco de parada e interromper esse script. Se agora colocarmos tudo isso logo acima do bloco de mudança X e rodarmos o jogo, haverá um pequeno atraso entre cada vez que o B atacar. Porém, se olharmos um pouco mais de perto, ele continua se movendo um pouco horizontalmente, mesmo depois de seu movimento vertical ter parado Para corrigir isso, tudo o que precisamos fazer é pegar o bloco X de mudança e movê-lo abaixo do bloco I then, onde redefinimos o ângulo. Lá vamos nós. Ok, estamos quase terminando com os Be sprites Mas primeiro, vamos rodar o jogo e desativar o modo Deus. Se pularmos em cima do Be, ele mata a abelha, o que era de se esperar. No entanto, se acertarmos na hora certa e a abelha nos bater de lado enquanto caímos, ela também mata a abelha, embora provavelmente devesse nos machucar. Isso está acontecendo porque no script do jogador check touch, se a abelha estiver tocando no jogador, enquanto o jogador estiver no estado de queda, a abelha morrerá Isso funcionou bem com o sprite do caracol porque os caracóis estão sempre no chão, mas isso causa problemas para os inimigos que estão no Então, o que podemos fazer é fazer o sprite do jogador esteja no estado de outono e seja pelo menos um pouco mais alto que o sprite da abelha para matar a Para fazer isso, vamos primeiro ir até os operadores e colocar um bloco em algum espaço vazio. Vamos usar o estado de jogador igual ao bloco de queda aqui para um lado e, para o outro lado, vamos colocar um bloco maior que Em seguida, coloque um bloco de adição no lado direito. Para o lado esquerdo do bloco maior que, vamos usar uma duplicata do estado do bloco do jogador Mas desta vez, queremos obter a variável Y do jogador. Agora podemos ir às variáveis e verificar se Y do jogador é maior do que a variável Y do B sprites mais uma certa quantidade Descobri que 15 funciona muito bem. Se agora usarmos tudo isso como condição e rodarmos o jogo, pular para o B agora machuca o Então, agora temos que realmente pular em cima do B para matá-lo. Perfeito. Tudo bem, terminamos de codificar o sprite B. Então, agora podemos continuar adicionando os clones aos níveis. Primeiro, vou me livrar desse bloco de criação de clones. Como esse foi apenas para fins de teste , criarei os que realmente usarei no jogo. Ok, aqui estão os blocos de criação de clones que estou usando para as abelhas E quando estivermos prontos, podemos passar para a próxima lição. Onde adicionaremos o inimigo voador. 103. Adicione o Fly Enemy: Para criar a mosca, o inimigo, é claro, usará o sprite da mosca aqui Como com o sprite Be, o sprite da mosca tem uma animação de mosca em dois quadros, uma fantasia de morto e uma caixa de quadril As moscas farão praticamente a mesma coisa que os caracóis, ou seja, se moverão para frente e para trás em uma distância especificada, exceto que o farão no ar em vez de no solo Ok, então, codificar o sprite da mosca, na verdade, será muito fácil, pois podemos simplesmente roubar alguns dos scripts do sprite do caracol e do sprite da abelha e fazer Então, primeiro, vamos ao código do sprite B. A partir do B Sprite, podemos copiar o script do player check touch para o fly Sprite, junto com o script animado, classificando as camadas e ajustando classificando as camadas e ajustando Quando comecei como clone, quando recebo a Atualização três e quando recebo a Atualização um Agora vamos ao sprite Snell. A partir daqui, podemos copiar as ações do Craik Clone handle. Quando eu recebo a atualização dois, o script de configuração e o script de bandeira verde. Ok, agora vamos entrar no código do Fly Sprite e limpá-lo. Há apenas algumas mudanças que precisamos fazer. Primeiro, no script de animação, faremos com que a mosca se anime um pouco mais rápido alterando o quadro do anim Em seguida, no script do rake Clone, queremos mudar para o traje Fly Zero e definir o estado para voar Finalmente, nas ações de manejo, queremos que as moscas se movam um pouco mais rápido do que os caracóis Então, no bloco de mudança X, vamos multiplicar por 2,5 e pronto Agora podemos acessar o script de configuração e começar a criar alguns clones. Primeiro, vamos nos livrar dos blocos de criação de clones e à vontade para adicionar algumas moscas ao nível um do seu jogo, mas eu só vou adicionar algumas aos níveis dois e três Então, primeiro, vou me livrar do nível I igual um bloco aqui. Tudo bem E para o primeiro clone, vamos começar o jogo Ative o Modo Deus e mude para o nível dois. Vamos chegar perto do canto superior direito do nível. Para esse ladrilho com o ponto de exclamação aqui, criaremos uma mosca aqui que voa para frente e para trás entre as paredes Então, vamos adicionar um bloco clone crítico para o nível dois e vamos usar 12 80 para X, 530 para Y, 200 para distância e menos 90 para direção Agora, vamos definir o tipo de rotação dos sprites da mosca para a esquerda e para a direita e, em seguida, apertar a bandeira verde Excelência. Agora temos nosso primeiro inimigo voador. Tudo bem, agora vou criar os clones de mosca restantes. E aqui estão todos os blocos de clones de crepe que estou usando. Ok, vamos manter as coisas em andamento adicionando o inimigo peixe em seguida. 104. Adicionar o inimigo de peixes: O inimigo final que adicionaremos ao jogo, além do Boss, é o Fish Sprite aqui As roupas do Fish Sprite consistem em uma animação de dois quadros, uma animação de dois quadros, uma fantasia de morto e uma caixa de quadril É claro que os peixes começarão na água com a cabeça ligeiramente acima da água Depois de um breve atraso, eles pularão da água, voltarão para a água e repetirão o processo. O objetivo disso será tentar impedir que o jogador pule em uma parte específica da água Ok, e para codificar o sprite do peixe, podemos começar acessando o código do sprite da mosca e copiando todos os scripts Tudo bem, então no código fish Bright, vamos primeiro ver o script Create Clone O traje que queremos usar é o traje up zero. Em seguida, como os clones de peixes sempre começam na parte inferior do nível dentro da água, podemos usar a mesma posição Y para cada um para que possamos nos livrar do bloco de entrada Y no bloco Y definido e vamos configurá-lo para menos um oh cinco Isso significa que também não precisamos mais fornecer uma entrada Y no script. Então, vamos clicar com o botão direito do mouse no bloco definido e escolher Editar. Vamos primeiro excluir o rótulo Y e, em seguida, excluir a entrada Y. Também não precisaremos de uma entrada de distância. Então, vamos excluir o rótulo de distância, depois a entrada de distância e clicar em OK. Em seguida, o estado inicial deve estar ativo e não precisaremos definir um X mínimo e máximo para o peixe, pois ele não se moverá horizontalmente, que possamos nos livrar do bloco I thin s. No entanto, precisaremos criar algumas novas variáveis. Então, vamos às variáveis. Primeiro, podemos renomear as variáveis Maxx e Minix. Vamos mudar um para iniciar Y e mudar o outro para cronômetro. Também precisamos criar uma nova variável. Vamos chamar isso de peso único e fazer isso apenas para esse sprite, e não precisamos mostrá-lo Toda a variável de tempo de peso manterá a quantidade de tempo que um clone deve esperar entre os saltos Esse valor não mudará durante o jogo, então podemos defini-lo no script de bandeira verde. Para fazer isso, vamos adicionar um conjunto de dois blocos ao script e definir o tempo de espera em 30 por 30 quadros. Ok, agora vamos voltar ao script de criação de clone Usaremos a variável inicial Y para trazer um clone de volta à sua posição Y original depois de pular Então, para definir a variável, vamos adicionar um conjunto para bloquear logo após o bloco Y definido, e podemos definir o início Y usando a variável Y. Agora, vamos trazer mais dois conjuntos de dois blocos e ajustar o cronômetro para pesar o tempo e a velocidade para zero Ok, em seguida, no script de animação, queremos animar se o clone está no estado ativo ou inativo, ou em outras palavras, não no estado ou em outras palavras, não no Então, vamos até os operadores e colocar um bloco de nós em algum espaço vazio Então, podemos mover o bloco de estado igual a mosca para o bloco de nó, alterá-lo para estado igual a morto e usar o bloco alterá-lo para estado igual a morto de nó E vamos alterar um quadro em 0,2. Da mesma forma, quando eu recebo a Atualização 1, queremos verificar se o clone está tocando o jogador quando o clone não está no estado morto, para que possamos nos livrar do bloco de estado igual a mosca e substituí-lo por uma duplicata do bloco morto do script animado Agora vamos encontrar o script de ação do identificador. Por enquanto, podemos simplesmente nos livrar de tudo depois que o I dead for igual a um bloco. Tudo bem, agora podemos acessar o script de configuração e criar alguns clones Na verdade, só vamos criar clones de peixes no nível três Então, primeiro, podemos retirar o bloco I igual a três aqui, remover o bloco I e depois s e adicionar o bloco I igual a três ao script antes de trocarmos o traje para o bloco script antes de trocarmos o traje para o E vamos nos livrar dos blocos de criação de clones. Agora vamos rodar o jogo. Ative o modo bom e mude para o nível três. Vamos até o fundo. Criaremos o primeiro clone na água aqui e faremos com que ele pule até a moeda aqui Ok, então vamos para MI Blocks e adicionar um bloco Crate Clone para o nível três E vamos usar três oh cinco para X e 90 para direção. Vamos clicar na bandeira verde novamente. E agora vamos até a direita. Vamos criar outro clone aqui pulando até essa moeda. Então, vamos adicionar outro bloco de clone crítico e usar a direção 17 64 x e menos 94 Ok, vamos mudar o tipo de rotação dos sprites para esquerda, direita E se clicarmos na bandeira verde novamente, agora temos dois clones de peixes animados na água Então, agora precisamos fazer o peixe pular no ar. Para isso, vamos encontrar o script de ação do identificador. Primeiro, na parte inferior do script, queremos verificar se o clone está atualmente na posição Y inicial. Então, para começar, vamos controlar e introduzir um bloqueio se então. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se Y é igual ao início Y. Se sim, verificaremos se o cronômetro terminou e, se tiver terminado, faremos Caso contrário, simplesmente reduziremos o cronômetro. Então, vamos controlar e adicionar um bloco I thin s ao bloco I thin. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se o cronômetro é igual a zero. Para fazer o clone pular, podemos primeiro colocar um conjunto para bloquear e definir a velocidade Y 230. Então, podemos introduzir uma mudança por bloco e alterar Y por velocidade Y. E se o cronômetro não for igual a zero, podemos introduzir uma mudança por bloco e mudar o cronômetro por Em seguida, continuaremos alterando a posição Y do clone usando a velocidade Y enquanto usamos a gravidade para puxar o clone de volta Para fazer isso, antes de verificar se Y é igual ao início Y, verificaremos se Y é maior do que o início Y. Então, primeiro, vamos controlar e colocar um if the block em algum Para a condição, vamos até os operadores e trazer um bloco maior que. Em seguida, vamos às variáveis e verificamos se Y é maior do que o início Y. Se sim, vamos introduzir uma mudança por bloco e alterar a velocidade por gravidade Então, vamos fazer outra mudança por bloco e alterar Y por velocidade Y. Se colocarmos isso agora I, bloquear logo acima do IY é igual a iniciar o bloco Y e executar o jogo. Após a primeira pausa de 1 segundo, o peixe pulará continuamente para cima e cairá ele não consegue chegar à No entanto, ele não consegue chegar à posição inicial Y antes de pular novamente, porque estamos imediatamente elevando a posição Y assim que ela atinge a posição inicial Para corrigir isso, podemos acessar o controle em um bloco de parada parte inferior do bloco I Y é maior do que iniciar o bloco Y e interromper esse script. Isso fará com que espere até o próximo quadro antes que o clone salte OK. Agora, mais duas coisas que queremos fazer é fazer com que o clone mude para o estado inativo quando começar a cair novamente e também fazer com que ele pare sempre que chegar ao Primeiro, para mudar para o estado inativo, vamos colocar um if the block em algum espaço vazio. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vamos às variáveis e verificamos se a velocidade Y é menor que zero. Isso significa que o clone está voltando para baixo para que possamos colocar um conjunto para bloquear e definir diretamente para baixo. Agora vamos colocar esse bloco I thin logo acima do bloco stop this script. Em seguida, para fazer o clone pausar na parte inferior, vamos até o controle e colocar outro bloco I thin em algum espaço vazio Para a condição deste, vamos até os operadores e trazer um bloco igual. Em seguida, vá para as variáveis e verifique se Y é igual ao início Y. Se sim, podemos trazer um conjunto para bloquear e definir o cronômetro para bloquear e definir o cronômetro E também devemos trazer outro conjunto para bloquear e definir o estado dois para que o clone fique voltado para cima novamente. Se agora colocarmos esse bloco if then acima do bloco stop this script e se y for maior que iniciar Y e rodarmos o jogo, o peixe agora muda para o estado inativo ao cair e faz uma breve pausa na parte inferior antes de pular novamente cair e faz uma breve pausa na parte inferior antes de pular Isso definitivamente funciona e parece bom, mas a parada na parte inferior parece um pouco abrupta Seria melhor se deixássemos o peixe parar mais gradualmente no fundo depois voltássemos à posição inicial antes de parar e pular Para fazer isso quando o clone está no estado inativo e sua posição Y ainda não está acima da posição Y inicial, podemos continuar movendo o clone para baixo enquanto reduzimos gradualmente a velocidade para zero Depois disso, subiremos um degrau de cada vez até que volte à posição original. Ok, então primeiro, vamos controlar e trazer outro, se necessário, bloquear para algum espaço vazio. Para a condição, queremos verificar se o clone está inativo e se ainda não está acima de sua posição inicial Então, vamos até os operadores e primeiro introduzimos um bloco e. Vamos colocar um bloco igual em um lado e, no outro lado, vamos usar um bloco e, em seguida, um bloco maior que Agora vamos às variáveis e vamos verificar se o estado é igual baixo e Y não é maior que o início Y. Agora, aqui, vamos reduzir gradualmente a velocidade Y Mas quando a velocidade Y chegar perto de zero, queremos mudar o clone para o norte do estado e permitir que ele comece a se mover volta à sua posição original Então, primeiro, vamos controlar e adicionar um bloco de saídas ITN ao bloco ITN. Para a condição, vamos até os operadores e introduzimos um bloco igual. Então vamos colocar um bloco redondo no lado esquerdo. Agora vamos às variáveis e vamos verificar se o valor arredondado da velocidade Y é igual Nesse caso, vamos colocar um conjunto para bloquear e definir velocidade Y como zero para impedir que o clone desça ainda mais, depois vamos trazer outro conjunto para bloquear e configurar o Estado dois Se a velocidade Y ainda não chegou perto de zero, continuaremos a reduzi-la. Para fazer isso, vamos adicionar um conjunto de dois blocos à parte ts e definir a velocidade Y. Para a entrada, vamos aos operadores e trazemos um bloco de multiplicação Em seguida, volte às variáveis e vamos definir a velocidade Y para a velocidade Y vezes 0,5. Isso precisa ser um valor decimal de 0 a 1, e quanto maior o valor que escolhermos, mais lentamente o clone será interrompido Para realmente mover o clone, porém, precisamos fazer uma mudança por bloco e alterar Y pela velocidade Y. Finalmente, após o bloco ITN, vamos até Control, um bloco de parada e Se agora colocarmos esse bloco ITN acima de todos os outros para verificar a variável Y e executar o jogo, o peixe na verdade fará a mesma coisa que fazia antes Isso ocorre porque estamos configurando o estado dois aqui assim que o clone voltar para sua posição original Como o bloco I Thin aqui em cima está procurando o estado inativo, a condição nunca é atendida. Na verdade, não queremos definir o estado dois ou ajustar o cronômetro aqui, então podemos retirar todo esse bloco IY igual a inicial Y e deixá-lo de lado Mas vamos nos certificar de que adicionar o bloco stop this script na parte inferior do IY é maior do que o bloco Y inicial. Se tentarmos novamente, o peixe agora pára mais gradualmente no fundo antes de mudar para o norte do estado Ok, então a última coisa que queremos fazer é mover o peixe volta à sua posição inicial que ele possa fazer uma pausa e pular novamente. Para isso, precisaremos trazer mais um bloco, em vez disso, para algum espaço vazio. Para a condição, verificaremos se o clone está no estado ativo e abaixo da posição inicial Então, vamos até os operadores e trazer um bloco e. Então, vamos colocar um bloco igual em um lado e um bloco menor que no outro Agora vamos às variáveis e vamos verificar se o estado é igual cima e y é menor que o início Y. Se sim, podemos fazer uma alteração por bloco e alterar Y por um para movê-la um passo acima Em seguida, verificaremos se o clone chegou perto de sua posição inicial Para fazer isso, vamos primeiro pegar o bloco IY igual ao início Y que salvamos aqui e colocá-lo logo abaixo do bloco Y de alteração. Em vez de usar o valor Y aqui diretamente, pois ele pode não corresponder exatamente ao valor inicial de Y, queremos ir até os operadores e envolver o bloco Y com um bloco redondo. E se for esse o caso, queremos definir o cronômetro para o tempo de espera, mas o clone já estará no norte do estado Então, com esse conjunto para bloquear, vamos definir Y para iniciar Y, para colocar o clone em sua posição inicial exata Finalmente, vamos ao Controle, adicione um bloco de parada na parte inferior do bloco externo , se for fino, e interrompa esse script. Se agora colocarmos esse bloco fino acima todos os outros e experimentarmos, o peixe agora para suavemente no fundo, volta lentamente, faz uma o peixe agora para suavemente no fundo, volta lentamente, volta lentamente, pausa e pula Perfeito. Tudo bem, a última coisa que precisamos fazer para completar os três primeiros níveis é adicionar as almofadas de salto, o que faremos na próxima lição 105. Adicionar os saltos: Existem alguns pontos no nível três que são um pouco altos demais para o jogador chegar normalmente. Então, forneceremos almofadas de salto para aumentar a altura de salto do jogador, e faremos isso usando o sprite da plataforma de salto Se dermos uma olhada nas roupas, o sprite do jump pad tem uma roupa de pluma para quando o jogador não está pulando nela no momento, uma fantasia para quando estiver, e também tem uma caixa de quadril separada para o interior e o norte do estado Ok, agora para codificar o sprite do jump pad, vamos começar acessando o código do coin sprite e copiando alguns scripts Primeiro, vamos copiar o script Check Touching Players. Não vamos animar as plataformas de salto, então podemos pular o Em seguida, podemos copiar as camadas de classificação do CrakKlone. E ajuste a posição. Agora vamos fazer isso quando eu começar como um clone e quando eu receber a Atualização 3 Pois quando eu receber a atualização dois, queremos tudo, exceto o bloco animado Então, vamos primeiro retirar o bloco animado, copiar o resto do script depois colocar o bloco animado novamente Por fim, vamos copiar quando eu receber a Atualização 1, quando eu receber a configuração. E o roteiro da bandeira verde. Agora vamos até o jumping pad Sprite e limpar o código Ok, então, no script de toque do jogador, vamos mudar para a fantasia de down hip box por enquanto, e não mudaremos a variável coins nem excluiremos o clone aqui para que possamos nos livrar desses três blocos dentro do bloco I Touching Em seguida, no roteiro do Crete Clone, mudaremos para o traje de penugem Não precisaremos de uma variável de quadro nom, mas precisaremos de uma variável de estado, possamos acessar variáveis e renomear um quadro anim Eu e aqui podemos mudar o estado para inativo. E vamos nos livrar do bloco de moedas de câmbio. Tudo bem, agora podemos adicionar alguns clones do jump pad ao jogo. Então, vamos ao script de configuração. Só adicionaremos blocos de salto ao nível três, para que possamos primeiro nos livrar dos blocos de criação de clones, e o nível I é igual a três blocos, retirar o bloco, colocar a roupa do interruptor em um e o nível I é igual a três blocos, retirar o bloco, colocar a roupa do interruptor bloco em branco na parte inferior e nos livrar do outro , se for o caso E mova tudo isso de volta para o roteiro. Agora vamos rodar o jogo. Certifique-se de que o modo Deus esteja ativado e que estejamos no nível três. E vamos até o centro inferior do nível. Vamos colocar o primeiro clone da plataforma de salto no chão aqui, logo abaixo da moeda Está bem? Então, vamos para os blocos M e adicionar um bloco Clone de caixote para o nível três E vamos com 625 para X e menos três para Y. Agora vamos voltar um pouco mais para a direita Colocaremos o outro aqui abaixo da chave verde. Então, vamos adicionar outro bloco crítico de clones, e vamos usar 13 55 para X, e vamos usar um Y de menos três para este também Se clicarmos na bandeira verde novamente, agora você poderá ver os clones do jump pad, mas eles estão usando roupas de quadril Isso está acontecendo porque, no roteiro de Check Touching Players, estamos trocando para a fantasia de cabeceira E como não temos um roteiro de anime para voltar a ser uma fantasia normal, ela simplesmente permanece na fantasia do hipbox Então, por enquanto, podemos corrigi-lo acessando Looks, adicionando um bloco de troca de figurino na parte inferior do roteiro e mudando para o traje de plumas. Agora devemos ver os clones usando o traje de penugem. Ok, agora, ao contrário dos inimigos e dos itens colecionáveis, queremos fazer com que o jogador não possa andar pelas plataformas de salto Para fazer isso, precisaremos acessar o código Sprite do player e encontrar o cheque tocando em um script sólido E aqui, além de verificar se estamos tocando no sprite de nível ou no sprite de bloqueio, também verificaremos se estamos tocando no sprite do Primeiro, podemos duplicar o bloco ou aqui e colocá-lo em algum espaço vazio no momento Vamos nos livrar do primeiro bloco de toque e mudar o outro para uma plataforma de salto sensível ao toque Agora podemos mover o bloco ou do bloco if then para o lado esquerdo desse bloco ou, em seguida, usar tudo isso como condição. Agora não devemos ser capazes de andar pelas plataformas de salto. E também podemos andar em cima deles. Tudo bem, agora vamos voltar ao código do sprite do jump pad. No script do player Check Touching, na verdade, só queremos executar qualquer um desses blocos quando o clone estiver no estado inferior Se for no norte do estado, simplesmente mudaremos para a fantasia up hip box Então, primeiro, vamos até o controle e vamos pegar um bloco ITN Outs e envolver a parte I em torno de tudo dentro dos scripts Agora podemos mover a roupa de switch para o bloco inferior aqui na parte de Outs, mas em vez disso, queremos mudar para a fantasia up hip box. Para a condição do bloco ITN Outs, vamos até os operadores e introduzimos um bloco igual Em seguida, vamos às variáveis e verificamos se o estado é igual Nesse caso, mudaremos para a fantasia de caixa de quadril e verificaremos se estamos tocando no jogador Agora, se estivermos tocando no player, por enquanto, simplesmente mudaremos para o norte do estado Então, vamos criar um conjunto para bloquear e definir o estado dois. E também queremos trazer uma cópia da fantasia de Switch para Up Hip Box Block aqui Agora, antes de experimentarmos, ainda precisamos voltar para a roupa normal ou a roupa normal, dependendo do estado. Na verdade, queremos fazer isso quando eu receber a atualização do script. E como também precisaremos fazer mais algumas coisas aqui, criaremos um bloco personalizado para ele. Então, vamos até MyBlocks e criemos um novo. Podemos chamá-lo de manipular ações e clicar em OK. Vamos adicionar um bloco de ações de manipulação ao bloco I then do script de atualização. Em seguida, coloque o bloco de ações de alça definido em algum espaço vazio. E, por enquanto, podemos mudar para a roupa correta acessando primeiro Looks e trazendo um bloco de troca de roupas, depois indo para variáveis e usando um bloco de estado como entrada. , se experimentarmos tudo agora No entanto, se experimentarmos tudo agora, na verdade não funcionará. Pular em uma plataforma de salto não o coloca no norte do estado. Isso ocorre porque os sprites do jogador se movem verticalmente, movem o sprite para cima apenas o suficiente para que caixa do quadril não toque na caixa do quadril do salto Portanto, o script check touching player nunca detecta uma colisão com Então, o que podemos fazer é primeiro mover o clone um passo para cima e depois verificar se há uma colisão Para fazer isso, verifique o script do player touch. Vamos entrar em movimento, pegar uma troca Y por bloco e colocá-la logo abaixo da roupa do interruptor para abaixar o bloco da caixa. E só precisamos mudar Y por um. Agora, depois de verificar se estamos tocando no player, queremos mover o clone volta à sua posição original Então, vamos pegar outra mudança Y por bloco, colocá-la logo abaixo do bloco I touch player e trocar Y por menos um Se agora rodarmos o jogo e pularmos na plataforma de salto, ela mudará para o estado ativo. Ok, então, depois de um pequeno atraso, queremos que a plataforma de salto volte automaticamente ao estado inativo. Para fazer isso, precisaremos de uma nova variável. Então, vamos às variáveis e criemos uma nova. Podemos chamá-lo de cronômetro e criá-lo apenas para esse sprite, e vamos escondê-lo Agora, vamos adicionar outro conjunto para bloquear ao bloco de gesso se estiver tocando e vamos ajustar o cronômetro para 20 Isso criará um atraso de 20 quadros, que é pouco menos de um segundo. Está bem? Agora, para realmente usar a variável timer, vamos ver o script de ação handle A variável do timer só importa se o clone estiver atualmente no estado ativo. Então, para verificar isso, vamos primeiro acessar o controle e colocar um bloco se, então em algum espaço vazio. Para a condição, vamos até os operadores e trazemos um bloco igual, depois vamos até as variáveis e verificamos se o estado é igual Nesse caso, vamos reduzir a variável do cronômetro trazendo uma alteração por bloco e alterando o cronômetro por menos Agora, verificaremos se o cronômetro terminou e, em caso afirmativo, mudaremos para o estado inativo Então, vamos controlar e adicionar um bloco if then logo após o bloco do cronômetro de mudança Para a condição, podemos usar uma duplicata do bloco state iguals up aqui. Mas com este, queremos verificar se o cronômetro é igual a zero. Nesse caso, vamos às variáveis, coloque um conjunto para bloquear e definir o estado para baixo. Agora podemos adicionar tudo isso ao script de ação do manipulador logo acima do traje de mudança para o bloco de estado. Se rodarmos o jogo agora e pularmos em uma plataforma de salto, ela mudará brevemente para o norte do estado antes de voltar para o estado inativo Tudo bem, então a última coisa que precisamos fazer é fazer o jogador pular enquanto a plataforma de salto sobe Para isso, vamos voltar ao script do player Check Touching Queremos garantir que o jogador salte para cima, não para a esquerda ou Então, no script I Touching Player, vamos primeiro inserir outro conjunto para bloquear e definir o bounce DR Agora podemos ir aos eventos, trazer um bloco de transmissão e transmitir um reprodutor de bounce Vamos tentar. Se agora pularmos em uma plataforma de salto, saltaremos um pouco Mas é claro que queremos subir um pouco mais do que isso Para fazer isso, precisamos acessar o código dos sprites do jogador e encontrar o script do bounce player No bloco I bounce dr equals zero aqui, atualmente estamos definindo a força de salto Isso é bom ao pular sobre os inimigos. Mas para as almofadas de salto, queremos usar uma força de salto muito maior Para fazer isso, podemos primeiro verificar se estamos tocando no sprite da plataforma de salto e, em seguida, definir a força de salto Então, primeiro, vamos controlar e pegar um bloco I thin out, adicioná-lo à parte I do bloco I bounce dr equals zero e colocar um bloco de força de salto definido dentro de ambas Para a condição, podemos ir até a detecção, colocar um bloco de toque e verificar se estamos tocando na plataforma de salto Se estivermos tocando em uma plataforma de salto, vamos definir a força de salto para 15 Caso contrário, continuaremos configurando para três. No entanto, como os sprites do jogador se movem verticalmente, o script pode fazer com que os sprites não se toquem, devemos primeiro mover o sprite do jogador um pouco para baixo antes de verificar se ele está tocando devemos primeiro mover o sprite do jogador um pouco para baixo na plataforma de salto Para fazer isso, vamos ao movimento. Adicione uma alteração Y por bloco logo acima do bloco I touch pad, e vamos mudar Y por menos um Também queremos mover o sprite de volta para cima depois. Então, vamos adicionar uma alteração por bloco logo abaixo do bloco if thin outs e alterá-la por um positivo. Ok, vamos tentar. Incrível. Agora saltamos muito mais alto E se pressionarmos uma tecla de salto enquanto pulamos, podemos ir ainda mais alto. Muito legal. Tudo bem, então o que faremos a seguir é adicionar alguns efeitos especiais ao jogo, a saber, o efeito de slide de inclinação e as partículas de poeira, e começaremos com o efeito de slide de inclinação na 106. Crie o efeito de slide de inclinação: Conforme o jogador desce uma ladeira, criaremos um efeito de movimento interessante atrás do jogador E para fazer isso, usaremos o sprite com efeito de slide de inclinação O traje do sprite consiste em alguns retângulos que têm um gradiente linear branco a transparente Ok, e para codificar o sprite, podemos começar acessando o código do sprite da moeda e copiando alguns scripts Primeiro, vamos copiar algumas camadas. Em seguida, ajuste a posição quando eu começo como clone e quando recebo a atualização três, pois quando eu receber a atualização dois, queremos tudo, exceto o bloco animado Então, vamos removê-lo primeiro, copiar o script. E coloque o bloco animado de volta. Pois quando eu receber a Atualização 1, vamos remover tudo do script, depois copiar apenas o bloco Quando eu receber a Atualização 1 e colocar tudo de volta. Em seguida, para o script de configuração, queremos apenas que o nome do traje, se não for igual a branco, exclua essa parte do clone Então, vamos retirar todo o resto, começando com o bloco I de nível um, copiando o script. E coloque tudo de volta do jeito que estava. Finalmente, vamos copiar o script da bandeira verde. Agora vamos entrar no efeito de slide de inclinação Sprite e limpar o código Queremos que o efeito de slide de inclinação seja desenhado logo atrás do jogador Então, no script Quando eu começo como um clone, em vez de usar o componente Z como entrada da ordem Z, vamos usar o efeito B Z, que tem um valor que é um a menos que o jogador Z. E quando eu recebo a Atualização 1, queremos apenas ajustar a posição Então, vamos até Mblocks e introduzimos um bloco de ajuste de posição Ok, agora precisamos informar ao sprite quando ele deve criar um clone Isso, é claro, deve acontecer quando o jogador desce uma ladeira Então, vamos até o código do player Sprite e encontre o slide no script slope Aqui embaixo, na parte inferior do script, onde estamos definindo o estado para slide inclinado, podemos transmitir uma mensagem para o efeito de slide de inclinação Sprite Para fazer isso, vamos aos eventos e adicionar um bloco de transmissão após o bloco de estado definido e vamos transmitir uma nova mensagem que podemos chamar de efeito de slide da inclinação da caixa Tudo bem, agora precisamos voltar ao código do efeito de slide de inclinação e receber a mensagem Então, em algum espaço vazio, vamos trazer um bloco de recebimento W I e receber o efeito de slide de criação de inclinação E aqui, se o sprite que recebe a mensagem for o efeito de slide de inclinação original, Sprite criará um Então, primeiro, queremos verificar se o sprite está usando o traje em branco Para fazer isso, vamos até Control e adicionaremos um bloco ITN ao script E para a condição, podemos usar uma duplicata do nome do traje igual a Blank block de quando eu recebo a atualização Antes de criar um clone, queremos mudar para o traje correto Então, vamos até Looks, adicionar um bloco de traje de troca ao bloco I then e trocá-lo para o traje com efeito de slide inclinado Em seguida, podemos criar o clone acessando Control e trazendo um bloco create clone of myself E, finalmente, queremos voltar para a roupa em branco voltando para Looks, trazendo outro bloco de roupas do Switch e mudando para a roupa em branco. Ok, então depois de criar um clone, queremos ter certeza de que ele segue o jogador enquanto ele desce a ladeira Primeiro, vamos ver as roupas do Sprite com efeito de slide de inclinação e garantir que atualmente estamos usando a fantasia com efeito de slide de inclinação Vamos mostrar o sprite no palco Atualmente, o sprite está localizado em 00 e, se também colocarmos o sprite do jogador em 00, podemos ver que eles se alinham muito bem, mas o efeito de deslizamento de inclinação é um Usar uma posição Y de menos dez para o efeito de deslizamento de inclinação deve funcionar melhor Além disso, se definirmos a direção dos efeitos do slide em 45, ela corresponderá ao ângulo das encostas voltadas para a esquerda no Da mesma forma, configurá-lo para menos 45 fará com que corresponda às inclinações voltadas para a direita Ok, então, de volta ao código do sprite de efeito de slide de inclinação, podemos usar a posição do sprite do player, bem como sua variável slope der para posicionar e girar corretamente o clone do Como vimos antes, uma direção de menos 45 se alinha com as inclinações voltadas para a direita e 45 se alinha com as inclinações voltadas para a esquerda A variável player sprite slope der, no entanto, usa um valor de um para inclinações voltadas para a direita e menos um para inclinações voltadas para a esquerda Então, para obter a direção correta para o clone, podemos multiplicar o valor da inclinação du por Ok, então primeiro, vamos ao movimento e adicionar um bloco de ponto e direção ao bloco I then do script de efeito de slide de inclinação antes de criar o clone Para a entrada, vamos até os operadores e introduzimos um bloco de multiplicação Para o lado esquerdo, vamos primeiro detectar e colocar como pano de fundo o número do bloco de palco Em vez de stage, queremos usar o sprite plater e queremos obter a inclinação E vamos multiplicar por menos 45. Em seguida, para definir a posição do clone, vamos até as variáveis e introduzimos para definir dois blocos antes de criar o clone E vamos usá-los para definir a variável X e a variável Y. Para o bloco X definido, vamos duplicar a inclinação do bloco do jogador e obter a variável X dos sprites do jogador Agora, como vimos anteriormente, queremos que o efeito de slide de inclinação fique dez passos abaixo do sprite do jogador Então, para o bloco Y definido, vamos primeiro ir aos operadores e trazer um bloco de subtração Agora podemos duplicar o X do bloco do jogador aqui, colocá-lo no lado esquerdo do bloco de subtração e vamos fazer Y do jogador Se agora rodarmos o jogo e deslizarmos por uma ladeira, obteremos o efeito de deslizamento de inclinação, mas ele ainda não acompanha o Isso ocorre porque só estamos definindo a posição dos clones quando os criamos pela primeira vez, mas também precisamos fazer isso durante cada iteração do loop do jogo Faremos isso usando um bloco personalizado no script W I receive Update to. Então, primeiro, vamos até Meus Blocos e criaremos um novo. Vamos chamá-lo de lidar com ações. E clique em OK. Agora, na atualização do script, vamos adicionar um bloco de ações de manipulação ao bloco ITN. Em seguida, vamos mover o bloco de ações de alça definido para algum espaço vazio. Agora podemos duplicar os blocos do conjunto x e do conjunto Y do script de criação de efeitos de slide de inclinação, adicioná-los ao script de ação do manipulador e eliminar os blocos extras Agora, o efeito deve seguir o jogador descendo a ladeira. Tudo bem, então isso funciona, mas queremos que o efeito desapareça quando o jogador chegar ao fundo da ladeira Para fazer isso e lidar com as ações, podemos verificar se o valor de slope dur se tornou zero, que acontecerá quando o jogador não estiver mais em uma ladeira e, em caso afirmativo, podemos excluir Então, primeiro, vamos controlar e adicionar um bloco ITN na parte inferior do script Para a condição, vamos até os operadores e introduzimos um bloco igual. Agora podemos adicionar uma duplicata da inclinação dur do bloco do jogador ao bloco E verifique se é igual a zero. Nesse caso, queremos primeiro remover o item clones da lista de pedidos Z e, em seguida, excluir o clone Então, vamos às variáveis e incluir uma exclusão do bloco. Em seguida, use um número de item do bloco como entrada. Para a entrada do número do item, vamos inserir um bloco Z de efeito reverso. E queremos usar a lista de pedidos Z para os dois blocos. Finalmente, vamos até Control e introduzimos um bloco de exclusão deste clone E agora, quando chegamos ao fundo de uma encosta, o efeito desaparece Parece bom, mas em vez de fazer o efeito desaparecer tão abruptamente, ficaria melhor se o fizéssemos desaparecer primeiro Para fazer isso, precisaremos de algumas variáveis, uma para o estado atual do clone e outra para um cronômetro de fade out Então, vamos às variáveis e criá-las. Podemos chamar o primeiro estado e criá-lo somente para esse sprite Para o segundo, vamos chamá-lo de timer, também apenas para esse sprite, e podemos seguir em frente e ocultar as duas variáveis Ok, então, para o estado, usaremos active como padrão e inactive quando o clone começar a desaparecer Então, primeiro, no script de efeito de slide da inclinação da caixa, vamos adicionar um conjunto para o bloco antes do bloco Clone da caixa e vamos definir Em seguida, no script de ação do manipulador, vamos retirar os dois blocos de exclusão e colocá-los de lado. Agora, só queremos fazer tudo isso quando o clone está no estado ativo Caso contrário, faremos outras coisas. Então, vamos até o controle, pegar um bloco I thin s e enrolar a parte I em torno de todos os blocos do script. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se o estado é igual Ok, agora no bloco I slope dr é igual a zero, queremos definir o estado como inativo, bem como definir bem como Então, vamos trazer dois conjuntos de dois blocos. E vamos definir o estado como inativo e o cronômetro para dez. seguir, na parte ts, verificaremos se o cronômetro terminou Se tiver, excluiremos o clone. Caso contrário, diminuiremos um pouco o clone e reduziremos o valor do cronômetro Então, primeiro, vamos controlar e adicionar um bloco if then ls à parte ts deste. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se o cronômetro é igual Nesse caso, podemos trazer os dois blocos de exclusão que salvamos anteriormente. Caso contrário, vamos primeiro fazer uma alteração por bloco e alterar o cronômetro por menos um Para eliminar o clone, vamos até Looks, introduzimos um efeito de mudança por bloco e vamos alterar o efeito fantasma Como estamos definindo o valor do cronômetro para dez, o efeito fantasma será 100 quando o cronômetro terminar, tornando o clone Ok, se rodarmos o jogo e deslizarmos por uma ladeira, o efeito começará a desaparecer quando chegarmos ao Vamos também garantir que funcione em encostas voltadas para a direita. Incrível. Com esse efeito concluído, criaremos em seguida o efeito de partícula de poeira que acontece quando o jogador cai no chão 107. Crie os pedaços de poeira: Para criar as partículas de poeira quando o jogador cair no chão, usaremos o sprite de partículas de poeira O traje do sprite de partículas de poeira consiste em três pequenas elipses cinza que formam uma espécie de nuvem Ok, e para começar a codificar o sprite de partículas de poeira, vamos primeiro acessar o código do sprite de efeito de slide de inclinação e copiar alguns scripts A partir daqui, queremos copiar sozinho o bloco de ações do identificador definido. Então, vamos retirar todos os blocos do script, copiar as ações de manipulação definidas no sprite de partículas de poeira e colocar os blocos de volta Agora vamos copiar sobre uma posição classificando camadas. Quando começo como clone, quando recebo a Atualização 1, a atualização 2, atualização 3, o script de configuração e o script de bandeira verde , vou até os sprites de partículas de poeira e limpo Ok, para os clones de partículas de poeira, queremos que eles apareçam na frente do jogador Então, quando eu começar como um script de clone, para a entrada de classificação e camadas, vamos usar o efeito frontal Z. Em seguida, precisamos dizer ao sprite quando criar os Isso deve acontecer quando o jogador cair de volta no chão depois de cair. Então, vamos até o código Sprite do player e encontre o script de estado de atualização Na parte inferior do script, temos um bloco se o estado é igual a queda e no ar é igual a zero, onde estamos configurando o É aqui que também queremos criar partículas de poeira. Então, vamos aos eventos e trazemos um bloco de transmissão, e vamos transmitir uma nova mensagem chamada criar partículas de poeira. Agora precisamos voltar ao sprite de partículas de poeira e lidar com a mensagem Então, vamos colocar o bloco quando eu receber um bloco em algum espaço vazio e criar partículas de poeira. Só queremos criar clones se o sprite receptor for o sprite original de partículas de poeira Então, primeiro precisamos ter certeza de que está usando o traje em branco. Então, vamos controlar e introduzir um I e depois bloquear. Para a condição, podemos usar uma duplicata do nome do traje igual bloco em branco da atualização para o script E se for esse o caso, criaremos alguns clones. Na verdade, queremos fazer isso em um bloco personalizado porque criaremos vários clones ao mesmo tempo e queremos que todos sejam criados em um único quadro Então, vamos até Meus Blocos e criemos um novo. Vamos chamar isso de criar clones. Verifique a opção Executar sem atualizar a tela e clique em OK. Agora vamos adicionar um bloco Crate Clones ao bloco I costume name equales blank block e mover o bloco Create Clones definido para algum A primeira coisa que queremos fazer ao criar clones é mudar para o traje de partículas de poeira Vamos até Looks, traga um bloco de roupas e mude para partículas de poeira Em seguida, queremos iniciar cada clone na mesma posição do jogador, mas perto da parte inferior do sprite Para fazer isso, vamos primeiro ir às variáveis, inserir conjunto de dois blocos e definir a variável X e a variável Y. Para o bloco X definido, vamos detectar e inserir o número do bloco de estágio de fundo, e queremos obter a variável X do sprite do jogador Para o bloco Y definido, vamos primeiro acessar os operadores e inserir um bloco de subtração Agora podemos colocar uma duplicata do bloco X do jogador no lado esquerdo e fazer Y do jogador -35 Tudo bem, então o que faremos a seguir é criar dez clones e randomizá-los um pouco, por exemplo, dando a eles direções aleatórias, tamanhos aleatórios e velocidades horizontais e verticais aleatórias Então, primeiro, vamos controlar e repetir dez blocos. Para randomizar a direção, vamos ao movimento e adicionar um bloco de ponto e direção ao bloco de repetição E para a entrada, vamos até os operadores e trazer um bloco aleatório escolhido. Vamos usar o número 0-359, que são todos os ângulos possíveis Em seguida, para randomizar o tamanho, vamos até Los e trazemos um bloco de tamanho definido Então, podemos usar uma duplicata do bloco aleatório PIC como entrada e vamos usar um número 80-150 Em seguida, precisamos acompanhar as velocidades horizontal e vertical de cada clone Então, vamos às variáveis e criar algumas novas. Vamos chamar a primeira velocidade de x e torná-la somente para esse sprite Agora vamos criar outro para a velocidade Y e também fazê-lo apenas para esse sprite E enquanto estamos nisso, não queremos que os clones durem para sempre. Então, vamos criar mais uma variável, que podemos chamar de vida e também criá-la apenas para esse sprite E vamos continuar ocultando todas as três variáveis. Agora vamos adicionar três conjuntos de dois blocos ao bloco de repetição. E vamos adicionar um bloco aleatório de seleção a cada um. Para o primeiro, vamos definir a velocidade X como um número aleatório entre menos cinco e cinco para que ela possa ir para a esquerda ou para a direita. Em seguida, definiremos SpeedY e queremos que os clones se movam para cima, então escolheremos entre dois Algo 1-3 deve ser bom. Finalmente, vamos definir a vida como um número 4-7 Usar um número aleatório para a vida fará com que os clones desapareçam em momentos diferentes Agora, precisamos realmente criar um clone acessando Control e adicionando um bloco create clone of myself na parte inferior do bloco de repetição Finalmente, depois de criar todos os clones, precisamos voltar para o traje em branco Vamos até Looks, adicionar um bloco de roupas de troca na parte inferior do roteiro e alternar para piscar Agora, para fazer tudo isso funcionar, vamos definir as ações de tratamento. E aqui, o que queremos fazer primeiro é verificar se o clone ficou sem vida. Se tiver, excluiremos o clone. Caso contrário, moveremos o clone usando suas variáveis de velocidade e também reduziremos sua vida útil. Então, primeiro, vamos controlar e adicionar um bloco I then s ao script. Para a condição, vamos até os operadores e introduzimos um bloco igual. Então, vamos às variáveis e verificamos se a vida é igual a zero. Nesse caso, excluiremos o item da lista de pedidos Z e, em seguida, excluiremos o clone Então, vamos primeiro incluir uma exclusão do bloco. Em seguida, use um número de item do bloco como entrada e vamos excluir o número do item de efeito frontal Z em ordens Z de ordens Z. Agora vamos controlar e excluir esse bloco de clones Em seguida, na parte ts, vamos às variáveis e trazemos três blocos de mudança B. Com o primeiro, vamos mudar X pela velocidade x. Com o segundo, vamos mudar Y pela velocidade Y. E, finalmente, vamos mudar a vida por menos um Tudo bem, se agora rodarmos o jogo, cada vez que pousamos no chão, obtemos dez partículas de poeira que se espalham em direções diferentes antes de desaparecerem Parece bom, mas as partículas estão um pouco escuras demais e também um pouco opacas Então, para melhorá-lo, também podemos randomizar seus valores de efeito fantasma e efeito de brilho Para fazer isso, vamos voltar ao script do CrakKline. Antes de criar um clone no bloco de repetição, vamos até Looks e trazemos para definir o efeito de dois blocos E vamos adicionar um bloco aleatório de seleção a cada um. Primeiro, vamos definir o efeito fantasma para um valor de 50 a 80. Em seguida, vamos definir o efeito de brilho para um valor de 0 a 100. Vamos tentar. Muito melhor. Durante toda a próxima lição, faremos com que o jogador possa uma pausa pausando o jogo 108. Parando o jogo: Para pausar o jogo, exibiremos um botão de pausa no canto superior direito da fase durante o jogo Se o jogador clicar no botão de pausa, ele congelará o jogo e exibirá uma sobreposição de pausa, que terá botões que o jogador pode pressionar para continuar o jogo ou sair do jogo Para tudo isso, usaremos o sprite de pausa aqui. O sprite de pausa tem todas as roupas de que precisaremos para Primeiro, temos o botão de pausa, que será exibido no Hud o tempo todo Em seguida, usaremos o traje BG como plano de fundo para a sobreposição de pasta Este é simplesmente um retângulo preto que cobrirá todo o palco, mas o tornará semitransparente para que possamos ver os objetos do jogo abaixo dele para que possamos ver os objetos do Em seguida, usaremos o traje do painel como um contêiner para o botão Zoom e o botão Sair na sobreposição de pausa E para os botões de retomar e sair, temos roupas padrão para quando o jogador não está pressionando, e temos roupas para quando os botões estão sendo pressionados. Ok, e para começar a codificar o pas sprite, vamos primeiro acessar o código coin sprite e copiar alguns scripts Como todos os clones do pas sprite terão a mesma posição no palco, independentemente da posição de rolagem no jogo, não precisaremos ajustar suas posições durante cada iteração do loop do E também não vamos animá-los nem verificar se eles estão tocando nos sprites do jogador Então, na verdade, existem apenas alguns scripts que podemos copiar. Primeiro, podemos copiar os scripts da camada de classificação. Em seguida, podemos copiar o script da bandeira verde. Por fim, queremos copiar o script de configuração, mas somente o nome do traje, se não for o nome do traje, é igual às partes em branco. Então, vamos remover todo o resto do script, copiar o script para Pa Sprite e colocar todos os blocos de volta Agora vamos ao código de pausa do Sprite. Ok, então criaremos todos os clones diretamente dentro do script de configuração e começaremos com o botão de pausa Então, na categoria Looks, vamos colocar um bloco de troca de roupas e alternar para o botão de pausa Ao lado, posicione o clone. Vamos começar, vamos para bloco XY. E vamos usar 205 para X e 150 para Y. Isso o colocará no canto superior direito do palco Agora vamos criar o clone acessando Control e trazendo um clone de criação do bloco Myself Finalmente, precisamos voltar para o traje de Blank. Então, vamos até Looks, trazer outro bloco de roupas do Switch e mudar para o Blink Tudo bem, agora, antes de tentarmos, precisamos classificar o clone nas camadas, e faremos isso usando um quando eu começar como um script de clone Então, vamos até o Controle e introduzimos um quando eu começar como um bloco de clones Agora, para o botão PoS, queremos usar a ordem Hud Z Z ao classificar as camadas Mas para todos os outros clones de sprites do POS, usaremos a sobreposição Z, que os colocará acima de tudo no jogo Então, primeiro, queremos verificar o nome atual do traje do clone Para fazer isso, vamos trazer um I e depois dividir. Para a condição, podemos usar uma duplicata do nome do traje igual a um bloco em branco no Em seguida, verifique se é igual ao botão de pausa, sublinhado. Agora vamos aos blocos M e adicionar um bloco de classificação em camadas a cada parte do bloco I e depois s. Em seguida, vamos às variáveis e, para a parte I, vamos usar HudZ como entrada de classificação nas camadas e usaremos a sobreposição Z para Ok, se rodarmos o jogo agora, teremos um botão de pausa que permanece no canto superior direito do palco No entanto, seria melhor se o tornássemos semitransparente para que o jogador pudesse ver quaisquer itens colecionáveis ou inimigos que possam estar embaixo Para fazer isso, no script Quando eu começo como um clone, vamos até Looks e adicionaremos um efeito de conjunto para bloquear à parte I do bloco I thin outs E vamos definir o efeito fantasma para 30. Então experimente. Lá vamos nós. Ok, a seguir, faremos com que pressionar o botão de pausa realmente pause o jogo Para fazer isso, vamos primeiro aos eventos e levar a vitória desse bloco clicado por sprite para algum espaço vazio Como queremos fazer coisas diferentes, dependendo de qual clone está sendo clicado, primeiro precisamos verificar o nome do traje Então, vamos até o Controle e introduzimos um bloco se , então outro. Para pausar o jogo, só queremos fazer isso se o clone que está sendo clicado estiver usando o traje do botão de pausa e se o jogo estiver atualmente em execução Então, para a condição, vamos até os operadores e primeiro trazer um bloco e. Para um lado do bloco e, podemos usar uma duplicata do nome do traje igual ao bloco de botões de pausa de quando eu começo E do outro lado, podemos trazer um bloco igual, depois ir para as variáveis e verificar se os estados do jogo são iguais Nesse caso, transmitiremos uma nova mensagem que o pano de fundo receberá e pausaremos o jogo Vamos aos eventos, adicionar um bloco de transmissão à parte I e transmitir uma nova mensagem chamada Pause game Agora precisamos acessar o código do pano de fundo e lidar com a mensagem de pausa do jogo Primeiro, vamos trazer um bloco de recepção W I e receber um jogo de pausa Para pausar o jogo, tudo o que realmente precisamos fazer é definir o estado do jogo para algo diferente do estado de execução ou do estado de rolagem automática Então, quando eu receber o jogo de pausa, vamos às variáveis, trazemos um conjunto para bloquear e usá-lo para definir o estado do jogo E vou configurá-lo para a palavra pausado. Se agora rodarmos o jogo e clicarmos no botão de pausa, o jogo será interrompido completamente No momento, porém, não temos como retomar o jogo Então, por enquanto, faremos com que possamos pressionar a tecla Pe para pausar e Para fazer isso, vamos aos eventos, um bloco pressionado com a tecla win e verifique se a tecla P está sendo pressionada. E aqui, se o jogo estiver atualmente nos estados de execução, pausaremos o jogo e, se estiver atualmente nos estados de pausa, retomaremos Então, primeiro, vamos ao controle e vamos inserir um bloco I e depois s. Em seguida, vamos adicionar um bloco fino I à parte Os. Para as condições, vamos até os operadores e adicionaremos um bloco igual a cada um Agora vamos às variáveis e, para o bloco ITN ts, vamos verificar se o estado do jogo é igual Para o bloqueio I then, vamos verificar se o estado do jogo é igual Agora vamos aos eventos e vamos adicionar um bloco de transmissão a cada parte. Se o jogo estiver em execução, queremos transmitir Pausar o jogo e, se o jogo estiver pausado, vamos transmitir uma nova mensagem, que podemos chamar Agora precisamos lidar com a mensagem do RezomGame. Então, vamos trazer outro bloco de recebimento W I e receber o RezoomGame Tudo o que precisamos fazer para retomar o jogo é acessar as variáveis, inserir um conjunto para bloquear e definir o estado do jogo para execução. Agora, se rodarmos o jogo, podemos clicar no botão de pausa para pausar o jogo e pressionar a tecla Pikey para retomar a pausa jogo e pressionar a tecla Pikey para retomar a Ou podemos simplesmente usar a tecla P para pausar e retomar o jogo Agora vamos voltar ao código de pausa Brite. Na próxima lição, trabalharemos na sobreposição de pausas. 109. Crie a sobreposição de Pause: Para criar a sobreposição do PAS, primeiro precisamos acessar o script de configuração no código do sprite do POS e criar os clones restantes Para fazer isso, vamos colocar traje do interruptor em um bloco em branco no momento e duplicar os três blocos, começando pelo traje do interruptor até pausar bloco de botões e adicioná-los à parte inferior do script E vamos repetir isso mais três vezes para um total de cinco clones. Em seguida, podemos adicionar o traje de switch ao bloco em branco na parte inferior do script. Para o segundo clone, vamos mudar para o traje de botão de retomar para a posição, vamos usar zero para X e 14 para Y. Para o próximo clone, vamos usar o traje de botão de saída e posicioná-lo em zero menos 49 Em seguida, vamos fazer o traje do painel e posicioná-lo em 00. Finalmente, vamos mudar para o traje BG e também posicioná-lo em 00. E é importante que façamos o traje de Biji por último e o traje de painel por último, pois isso manterá os clones em camadas adequadas no palco com o clone de Biji na parte de trás, depois o clone do painel em cima e, finalmente, os botões na parte superior do Ok, a seguir, vamos ao script Quando eu começo como um clone Obviamente, não queremos mostrar os clones de sobreposição do passado quando eles são criados pela primeira vez Então, na parte ts do bloco ITN ts, vamos até Looks e trazemos um bloco oculto Também para o clone BG, queremos torná-lo semitransparente Então, primeiro, vamos ao Controle e adicionaremos um bloco I e depois à parte de saídas. Para a condição, podemos usar uma duplicata do nome do traje igual ao bloco de botões de pausa e verificar se é bloco de botões de pausa e verificar se Nesse caso, podemos trazer uma duplicata do bloco de efeito fantasma definido aqui e vamos configurá-lo para 50 para o clone BG Em seguida, quando o jogador pausar o jogo, queremos mostrar todos os clones da sobreposição de pausa e, quando ele continuar o jogo, ocultaremos Então, primeiro, vamos aos eventos e trazemos alguns quando eu receber blocos. Para o primeiro, vamos receber o jogo passado. Então vamos até Looks e trazemos um bloco de shows. Para o segundo, vamos receber o currículo do jogo. E aqui queremos esconder tudo, exceto o botão de pausa Então, primeiro, garantiremos que o clone atual não esteja usando o traje do botão de pausa Para fazer isso, vamos controlar e inserir um bloqueio I e depois. Para a condição, vamos primeiro ir até os operadores e trazer um bloco de notas. Em seguida, podemos inserir uma duplicata do nome do traje, igual bloqueio do botão de pausa e, quando eu começar E se não estiver usando a fantasia do botão de pausa, podemos ir até Looks e trazer um bloco de esconderijo Tudo bem, se agora rodarmos o jogo e o pausarmos, ele exibirá a sobreposição de pausa E se pararmos de pausar o jogo, a sobreposição desaparecerá Agora só precisamos fazer com que os botões Zoom e Sair funcionem. Então, vamos ver quando esse sprite clicou. Na parte de saídas do ITN Outs Block, precisaremos verificar se o clone é botão Zoom ou o botão de sair Então, primeiro, vamos até Control e introduzimos um bloco ITN Outs Quanto à condição, verificaremos se o clone está usando o traje de botão de retomar e se o jogo está pausado no momento Nesse caso, mudaremos para o traje com botão de rezoom e retomaremos o jogo Portanto, podemos começar usando uma duplicata do bloco and aqui do primeiro bloco if then out Mas para este, vamos verificar se o nome da fantasia é igual a currículo, botão de sublinhado, sublinhado E se o estado do jogo for igual a pausa, em caso afirmativo, vamos até Looks, pegue um bloco de roupas e mude para o botão Rezoom Em seguida, queremos esperar até que o jogador solte o mouse. Em seguida, transmitiremos a mensagem de currículo do jogo. Então, vamos controlar e esperar até o bloqueio. Para a condição, vamos até os operadores e trazer um bloco de nós Em seguida, vá para a detecção e coloque um bloco de mouse para baixo. Finalmente, vamos aos eventos, trazer um bloco de transmissão e transmitir o resumo do jogo. Tudo bem, e agora, se rodarmos o jogo e abrirmos a sobreposição de pausa, podemos clicar no botão Rezoom para continuar o No entanto, se aumentarmos a sobreposição de pausa, o botão Rezom agora ficará preso na do botão Rezom roupa do botão Rezom e nada acontecerá quando Para corrigir isso, precisaremos redefinir o traje para aumentar o botão de zoom quando a sobreposição do PAS aparecer, que acontece no script do jogo When I receive pas, e na verdade também precisaremos fazer isso com o botão de sair Então, depois do bloco de exibição, vamos até Control e trazemos um bloco ITN Os Em seguida, vamos adicionar um bloco fino na parte externa. Para a condição de cada um, vamos usar uma duplicata de um dos blocos com o nome do traje . Para o primeiro, vamos verificar se o nome do traje é igual a currículo, botão de sublinhado e sublinhado E se sim, podemos ir até Looks, trazer um bloco de roupas Switch e mudar para o botão rezom E para o bloco I then, vamos verificar se o nome do traje é igual botão sair do sublinhado sublinhado Em seguida, coloque um bloco de roupas e mude para o botão Sair. E agora, cada vez que abrimos a sobreposição de PDV, o botão deve estar usando as roupas padrão Ok, agora só precisamos fazer o botão de sair funcionar. Para fazer isso, vamos voltar para quando esse Bright clicou Na parte ts vazia aqui, vamos até Control e trazemos um ID e depois bloqueamos. Para a condição, podemos usar uma cópia de uma roupa chamada equals block, e vamos verificar se é igual a sair do botão underscore underscore up sair Nesse caso, vamos primeiro trazer duplicatas de todos os três blocos que estamos usando para o botão Rezoom Mas desta vez, queremos mudar para o botão Encerrar e transmitir uma nova mensagem, que podemos chamar de sair do jogo. Tudo bem, agora precisamos acessar o código do pano de fundo e lidar com a mensagem de encerramento do jogo Então, vamos primeiro aos eventos, trazer uma vitória que eu recebo, bloquear e receber o Quit Game. Depois de criarmos uma tela de título, nós a abriremos ao sair do jogo Mas, por enquanto, podemos simplesmente ir até o Controle e interromper todos os bloqueios. Se agora rodarmos o jogo, abrirmos a sobreposição do POS e clicarmos no botão sair, o jogo será interrompido Uma coisa a ter em mente, porém, é que, se rodarmos o jogo e abrirmos a sobreposição do Pass novamente, às vezes o jogador pode começar a clicar no botão de sair, mas depois decidir que não quer realmente sair do jogo Então, eles tentarão afastar o mouse do botão antes de soltá-lo No momento, no entanto, isso encerrará o jogo de qualquer maneira. Então, o que podemos fazer é fazer ele só saia do jogo se o botão de sair ainda estiver tocando ponteiro do mouse quando o jogador soltar o Para fazer isso, vamos voltar ao código do Sprite de pausa. E quando o Sprite clica, só queremos transmitir o jogo encerrado só queremos transmitir se o clone estiver tocando no ponteiro Caso contrário, voltaremos para a fantasia rápida de abotoar botões. Então, vamos pegar um bloco if then outs e enrolar a parte I ao redor do bloco de transmissão para sair do jogo. E só por diversão, vamos também abordar o bloco do jogo de currículo da transmissão. Para saber a condição de cada um, vamos detectar e inserir alguns blocos de ponteiros do mouse que se tocam Depois, podemos ir até Looks e adicionar um bloco de roupas Switch na parte externa de cada um. E para o botão Zoom, vamos mudar para o botão Zoom Up. E para o botão de sair, vamos usar o botão de saída para cima. E agora o jogador deve continuar passando o mouse sobre o botão ao soltar o mouse para continuar o jogo ou sair do jogo Ok, e por conveniência, mais uma coisa que podemos fazer é fazer com que pressionando a tecla de espaço enquanto a sobreposição de pausa é exibida, também retomaremos o jogo Para fazer isso, vamos primeiro aos eventos e inserir um bloco pressionado com a tecla de espaço premida. Em seguida, vamos até Control e introduzimos um I e depois bloqueamos. Para a condição, podemos usar uma duplicata do bloco e, quando esse sprite clica, verificamos se é a roupa do botão de rezoom e o Depois, também podemos trazer duplicatas de todos os blocos de botões de rezoom, começando com a troca da roupa para o bloco de botões Rezom Desta vez, porém, em vez de esperar até que o mouse não seja pressionado, vamos nos livrar do bloco de pressionamento do mouse, depois ir para o sensor e substituí-lo por um bloco de teclas pressionadas com espaço Além disso, o ponteiro do mouse provavelmente não passará mouse sobre o botão Zoom quando o jogador pressionar a tecla de espaço, então podemos simplesmente transmitir a então podemos simplesmente transmitir mensagem do jogo Zoom e nos livrar do bloco de ponteiro do mouse Se estiver tocando Se agora rodarmos o jogo e o pausarmos, podemos pressionar a tecla de espaço para continuar o jogo Tudo bem, feito isso, continuaremos trabalhando no Hud adicionando a exibição do coração e a exibição da moeda, e começaremos com a exibição do coração na próxima lição 110. Crie a exibição do coração: Em vez de usar a chata variável de saúde do jogador para mostrar a saúde do jogador, mostraremos alguns corações no Hud, e faremos isso usando o Heartsprite Se dermos uma olhada nas fantasias do HeartSprite, temos uma fantasia de coração vazio, uma fantasia de meio coração e uma fantasia de coração cheio Ok, então para começar a codificar o HeartSprite, podemos roubar alguns scripts do A partir daqui, vamos copiar o script da camada de classificação. E o roteiro da bandeira verde. Para o script de configuração, vamos primeiro remover tudo depois que o nome I figurino for igual a Blank block, copiar o script e colocar tudo de volta no Então vamos ao código Heartsprit. Tudo bem, então, no script de configuração, criaremos os clones e, na verdade, faremos isso em um bloco personalizado porque usaremos um bloco de repetição que precisa terminar de ser executado em um único quadro Então, primeiro, vamos ao MyBlocks e criar um novo. Vamos chamar isso de criar clones. Verifique a opção Executar sem atualizar a tela e clique em OK. Vamos adicionar um bloco rake Clones ao script de configuração Também queremos ter certeza de voltar para a roupa em branco depois. Então, vamos até Looks, traga um bloco de roupas Switch e mude para branco. Agora vamos mover o bloco definido de rake Clones para algum espaço vazio E aqui criaremos clones suficientes para contabilizar a quantidade máxima de saúde do jogador Mas primeiro, vamos definir uma boa posição inicial para o primeiro clone Para fazer isso, vamos para o movimento, vamos para o bloco X Y e vamos com menos 205 para X e 150 para Y. Também queremos que cada clone tenha índice, com o primeiro clone recebendo um índice de um, o segundo, um índice de dois até a saúde máxima do Então, para isso, vamos às variáveis e criaremos uma nova. Vamos chamá-lo de index e garantir que escolhamos apenas esse sprite E vamos esconder a variável de índice. Agora vamos adicionar um bloco de conjunto dois ao script de criação de clone e definir o índice como um Em seguida, usar um bloco de repetição criará clones suficientes para a quantidade máxima de saúde que o jogador pode ter Isso é fornecido pela variável Max Player Health, que atualmente estamos configurando para três no código Sprite do jogador Então, isso criará três clones do HeartSprte. No entanto, se quiséssemos fazer algo estranho, como definir a saúde máxima para 3,5, precisaríamos criar quatro clones para compensar a meia-vida extra Portanto, devemos usar o valor arredondado ao criar os clones. Ok, primeiro vou definir a saúde máxima do jogador para três e, no script de criação de clone do HeartSprite, vamos controlar e introduzir um Para o número de repetições, vamos primeiro aos operadores e trazer um bloco redondo Em seguida, vá para as variáveis e insira um bloco máximo de saúde do jogador. Em seguida, criaremos um clone acessando Control e trazendo um clone de criação do bloco Myself Depois disso, queremos aumentar a variável de índice para o próximo clone Então, vamos às variáveis, introduzindo uma alteração por bloco e alterando o índice por um. Finalmente, precisamos posicionar o próximo clone um pouco mais à direita Então, vamos entrar em movimento e fazer uma mudança x por bloco. Descobri que mudar X por 45 funciona muito bem. Tudo bem, agora que estamos criando os clones, precisamos classificá-los nas camadas Então, vamos ao Controle e trazer um quando eu começar como um bloco clone para algum espaço vazio E aqui, vamos aos blocos MI e inserir um bloco de classificação em camadas. Em seguida, vá para as variáveis e use um bloco Hud Z como entrada da ordem Z. E, como estamos fazendo com o botão de pausa, também devemos deixar os corações parcialmente transparentes para que o jogador possa ver através deles. Estamos fazendo isso definindo o efeito fantasma dos botões de pausa para 30, e faremos o mesmo com os corações Então, nos sprites do coração, quando eu começo como um script de clone, vamos até Looks, trazemos um efeito definido dois blocos e defino o efeito fantasma para 30 Finalmente, precisamos arrumar uma fantasia para o clone. Faremos isso usando o índice de clones e a saúde atual do jogador daqui a pouco Mas, por enquanto, vamos trazer um bloco de roupas Switch e colocá-lo em Full Heart. Antes de rodarmos o jogo, vamos mover as moedas e as exibições das variáveis de saúde do jogador para fora do caminho. Agora, se tentarmos, veremos três corações no canto superior esquerdo do palco. Ok, agora queremos escolher roupas diferentes para os clones, dependendo da saúde atual do jogador Para fazer isso, precisaremos verificar continuamente a verificar continuamente saúde do jogador durante todo o jogo. Então, primeiro, vamos separar o bloco de fantasias do Switch do script de quando eu começo como clone no Em seguida, vamos até Control e adicionaremos um bloco eterno ao script. Aqui, queremos verificar se a saúde atual do jogador é menor que o índice do clone atual caso, isso significa que o clone deve usar a fantasia de meio coração ou coração vazio Por exemplo, se a saúde atual do jogador for dois e o índice do clone for três, o clone deverá usar o traje de coração vazio Por outro lado, se a saúde do jogador não for menor que o índice, o clone deve usar o traje de coração cheio Então, para verificar isso, vamos adicionar um bloco de TI ao bloco forever. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vamos às variáveis e vamos verificar se a saúde do jogador é menor que o índice. E podemos mover a roupa do switch para Full Heart Block aqui na parte s. Agora, na parte I, queremos verificar se o valor arredondado da saúde atual do jogador é igual ao índice dos clones. Nesse caso, o clone deve usar a fantasia de meio coração. Caso contrário, ele deve usar o traje de coração vazio. Por exemplo, se a saúde do jogador for 1,5 e o índice de clones for dois, arredondar a saúde nos dará dois, que é o mesmo que o Então, o clone usará a fantasia de meio coração. Por outro lado, se a saúde do jogador for 1,5 e o índice de clones for três, ele deve usar o traje de coração vazio Então, vamos controlar e adicionar um bloco I then s à parte I deste. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, coloque um bloco redondo no lado esquerdo. Agora vamos às variáveis e vamos verificar se o valor arredondado da saúde do jogador é igual Em seguida, podemos ir até Looks e adicionar um bloco de roupas Switch em cada parte. Na parte “se”, vamos mudar para a fantasia de meio coração. E na parte externa, vamos mudar para a fantasia de coração vazio. Está bem? Se rodarmos o jogo novamente, os corações parecerão os mesmos de antes. Mas se começarmos a perder saúde, as roupas agora exibem corretamente a saúde do jogador. Tudo bem, incrível. Agora que sabemos que a tela cardíaca funciona, podemos acessar as variáveis e ocultar a variável de saúde do jogador. E na próxima lição, trabalharemos na exibição de moedas. 111. Crie o display de moedas: Para criar a exibição de moedas, usaremos o sprite do contador de moedas aqui A forma como faremos isso será, na verdade, bastante semelhante à forma como exibimos a pontuação nos dois jogos anteriores. E se dermos uma olhada nos trajes, como os sprites de pontuação desses jogos, este tem um traje para cada um dos dígitos de 0 a 9 Ele também tem uma fantasia de ícone, que exibiremos primeiro, bem como uma fantasia X, que será exibida entre o ícone e os dígitos Para começar a codificar o sprite do contador de moedas, vamos pegar alguns scripts do sprite do coração Podemos copiar o script de bandeira verde e o script de classificação e camada como estão. Também precisamos de um script de criação de clone, mas os blocos internos serão um pouco diferentes Então, vamos remover todos os blocos primeiro e copiar o bloco de criação de clones definido Em seguida, coloque os blocos de volta. Em seguida, podemos copiar o script de configuração como está. Finalmente, para o script When I start as a clone, vamos retirar o bloco eterno, copiar o resto do script e colocar tudo de volta Então vamos ao sprite do contador de moedas. Ok, então para o script create Clone, primeiro criaremos alguns clones usando o traje do ícone e o traje X. Em seguida, criaremos alguns clones de dígitos e começaremos definindo uma posição para o primeiro Então, vamos entrar em movimento e introduzir um bloco Go to XY. Para as entradas, vamos usar menos 205 para X e 110 para Y. Em seguida, trocaremos Então, vamos até Looks, trazer um bloco de roupas Switch e mudar para o ícone. Por fim, criaremos o primeiro clone acessando Control e trazendo um clone de criação do bloco Myself Para o próximo clone, queremos nos mover um pouco para a direita Então, vamos ao movimento, introduzindo uma alteração X por bloco e vamos alterá-la em 32. Agora podemos duplicar os três blocos inferiores e adicioná-los à parte inferior E vamos mudar para o traje X. O bloco X de alteração inferior será para o clone do primeiro dígito e alteraremos X por 25 Antes de começarmos a criar os clones de dígitos, queremos dar a eles um índice, como fizemos com os clones do Sprite do coração Então, primeiro, vamos às variáveis e criaremos uma nova. Vamos chamá-lo de índice, criá-lo apenas para esse sprite e ocultar a variável Agora vamos trazer um conjunto para bloquear e definir o índice como um. Também queremos mudar para um traje de dígitos padrão. Então, vamos até Looks e trazer um bloco de fantasias Switch. Podemos escolher qualquer um dos trajes que começam com a palavra dígito, então eu vou escolher o traje de dígito simples Em seguida, queremos criar clones suficientes para contabilizar o número máximo de dígitos que a variável coins pode ter Atualmente, o valor das moedas nunca ultrapassa dois dígitos, então vou criar dois clones Mas se você decidir fazer algo louco, como adicionar 100 moedas a um nível, você terá que criar três clones. Tudo bem, então, para criar os clones, vamos primeiro controlar e introduzir um bloco de repetição E vou usar dois como o número de repetições. Em seguida, criaremos um clone adicionando um bloco CrakKline of myself ao bloco de repetição Em seguida, queremos passar um pouco mais para os direitos e aumentar o índice para o próximo clone Então, primeiro, vamos ao movimento, adicionar uma alteração x por bloco após criar o bloco Clone e alterá-la em 25 Em seguida, vamos às variáveis, introduzimos uma alteração por bloco e alteramos o índice por um. Ok, agora, no script Quando eu começo como um clone, se o clone for um clone de dígitos, queremos definir continuamente seu traje com o traje de dígito correto com base no valor atual da variável coins Então, primeiro, precisamos verificar se o clone atual é um clone de dígitos Para fazer isso, vamos controlar e trazer um bloco fino. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos para Looks at a costume, bloco numérico até o bloco de iguais. E verifique se o nome do traje é igual ao traje de dígito padrão que usamos ao criar Então, no meu caso, vou verificar se é igual à palavra Agora, para mudar para a roupa correta, usaremos exatamente o mesmo método que usamos para os clones de pontuação nos dois jogos anteriores E eu vou dar isso a você como um desafio. Então, pause o vídeo agora e veja se você consegue escrever o código para mudar o do clone para o traje de dígito correto E lembre-se de que queremos fazer isso continuamente. Ok, então o que faremos é usar o índice de clones para obter o dígito correspondente na variável coins E se colocarmos a palavra dígito na frente dela, ela nos dará o nome correto do traje Ok, então primeiro, para fazer isso continuamente, vamos até o Controle e introduzimos um bloco eterno. Em seguida, vamos até Looks e adicionaremos um bloco de roupas Switch ao bloco Forever. Para obter o nome da fantasia, vamos até os operadores e trazer um bloco de junção. Em seguida, vamos usar uma letra de bloco para a segunda entrada. Agora vamos às variáveis e vamos juntar a palavra dígito com o índice de letras das moedas Se agora rodarmos o jogo, teremos uma boa exibição de moedas, que também faz uma contagem regressiva à medida que coletamos as moedas. Tudo bem, agora vamos ativar o modo Deus e mudar para o nível quatro nível quatro não tem moedas, então obtemos um zero na exibição de moedas. No entanto, na verdade, não queremos mostrar a exibição de moedas no Nível quatro. Em vez disso, mostraremos a barra de saúde para o chefe. Então, por enquanto, no script de configuração, podemos remover a exibição de moedas para o nível quatro criando apenas os clones se o nível atual for menor que o nível final Para fazer isso, vamos até Control e pegar um bloco ITN, e podemos envolvê-lo tanto no bloco de criação de clones quanto no bloco troca para o bloco em branco Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vamos às variáveis e verificamos se o nível é menor que o nível final. Agora, o nível quatro não tem uma exibição de moedas, mas os outros níveis ainda têm. Tudo bem, agora podemos esconder a variável moedas e, por falar no nível quatro, trabalharemos em seguida para adicionar o chefe ao jogo, o que será muito divertido 112. Configurar o chefe: Depois que o jogador coletar todas as moedas nos níveis um, dois e três, fim de recomprar sua nave espacial roubada do chefe cujo nome é NdNarb, ele prosseguirá para o nível quatro, onde ficará cara a cara No entanto, NdNarb, sendo mau, decide que quer manter a nave espacial do jogador Portanto, se o jogador realmente o quiser de volta, terá que derrotá-lo. Para criar o chefe, usaremos o Boss Sprite Se dermos uma olhada em suas roupas, ele tem uma animação de mosca em dois quadros, uma animação ferida em dois quadros, uma animação morta de um quadro e uma caixa de quadril. Ok, e como os outros inimigos, o jogador terá que pular na cabeça do chefe para machucá-lo. Ao contrário dos outros inimigos, no entanto, o jogador terá que pular sobre o chefe várias vezes para derrotá-lo e mostrará sua saúde no capô. Além disso, durante a luta contra o chefe, o chefe lançará foguetes que perseguem o jogador e explodem quando atingirem o Mas lidaremos com tudo isso um pouco mais tarde. Por enquanto, vamos fazer com que o chefe se mova no jogo. E para fazer isso, podemos começar acessando o código do B Sprite e copiando alguns scripts Vamos primeiro copiar o cheque tocando o player e animar os scripts para o Boss Sprite Não criaremos clones para o chefe, então podemos pular o script de criação de clones Mas queremos classificar camadas e uma posição justa. Em seguida, queremos o script de ação do identificador, mas somente o estado if é igual à parte morta. Vamos primeiro retirar todo o resto, copiar o roteiro e colocar tudo de volta. Não precisamos de quando eu começo como clone, mas precisamos dos três quando eu recebo scripts de atualização Para o script de configuração, podemos copiar sozinho apenas o bloco de configuração de quando recebi. Finalmente, vamos copiar o script da bandeira verde. Em seguida, vá até o código Boss Brite e limpe-o. Tudo bem, agora, no roteiro animado, queremos alterar o quadro do anim quando o chefe está no estado de voar ou no estado ferido, mas não no estado mas não no Então, para a condição, vamos retirar o estado igual ao bloco de mosca no momento Em seguida, vamos até os operadores e usaremos um bloco Knot como condição. Agora vamos colocar o bloco de estado igual a mosca no bloco e verificar se não é estado é Também vamos tornar a animação um pouco mais rápida alterando o quadro do anim em 0,2 Em seguida, vamos ver o script de configuração atualmente vazio. É claro que só queremos que o chefe apareça se estivermos atualmente no nível quatro. Caso contrário, simplesmente colocaremos a fantasia dos sprites na fantasia em branco Então, primeiro, vamos controlar e trazer um bloco se for fino. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se o nível é igual ao nível final. Por sua vez, vamos até Looks, trazer um bloco de roupas Switch e trocar para o traje em branco. Para a parte I, começaremos inicializando todas as variáveis do chefe e precisaremos acessar as variáveis e criar algumas novas Primeiro, criaremos algumas variáveis para a saúde atual do chefe e a quantidade máxima de saúde que ele pode ter E como o sprite da barra de saúde do Boss também precisará acessá-las, vamos torná-las variáveis globais Então, para o primeiro, vamos chamá-lo de Boss Health. E faça isso para todos os sprites. Então, vamos criar outro, chamá-lo de Max Boss Health, e também criá-lo para todos os Sprites saúde do MaxBos não mudará durante o jogo, então vamos defini-la no script da bandeira verde Para fazer isso, vamos adicionar um bloco set two ao script e definir Max Boss Health como dez. Para a variável de saúde do chefe, vamos adicionar um conjunto para bloquear à parte I do bloco de saídas ITN no script de configuração e vamos configurá-lo como Max Boss Health Em seguida, quando o chefe estiver parado e atirando foguetes, faremos com que ele suba e desça Usaremos trigonometria para isso e precisaremos acompanhar o Então, vamos criar outra variável. Chame isso de ângulo e faça-o apenas para este sprite. Para inicializá-lo, vamos adicionar outro bloco set two ao script de configuração e definir o ângulo como zero Em seguida, precisaremos de uma variável para a velocidade que o chefe usará ao voar. Podemos chamá-la de velocidade de voo e criá-la apenas para esse sprite O valor da velocidade de voo mudará posteriormente, dependendo se o chefe está ferido ou não. Mas, por enquanto, vamos trazer um conjunto de dois blocos. E defina-o para um padrão de quatro. Em seguida, durante a luta, o chefe alternará entre voar aleatoriamente ao redor do nível e atirar três foguetes no jogador Para essas ações, precisaremos de três variáveis, uma para um cronômetro, uma para indicar se o chefe está atirando ou não e outra para quantos foguetes ele ainda precisa Então, para a próxima variável, vamos chamá-la de timer e torná-la somente para esse sprite Então vamos criar outro, chamado de filmagem. Também apenas para este sprite. Agora vamos criar mais um. Chame isso de foguetes para atirar e também faça isso apenas para este sprite Para definir as três variáveis, vamos adicionar mais três blocos set two ao script de configuração. Primeiro, vamos ajustar o cronômetro para 30. Para atirar, o valor será um para quando o chefe estiver atirando foguetes ou zero quando ele não estiver atirando Por enquanto, vamos defini-lo como zero. Finalmente, vamos configurar foguetes para atirar em três. Ok, isso é tudo para as novas variáveis. Então, vamos esconder todos eles, exceto a saúde do chefe. Vamos deixar a variável de saúde do chefe exibida por enquanto, mas vamos diminuí-la um pouco para que ela não interfira no HUD. Agora, também precisamos definir as variáveis restantes do chefe, como sua posição global, sua velocidade, seu estado e o quadro de animação Então, para tudo isso, vamos adicionar mais seis blocos set two ao script de configuração. Primeiro, vamos definir X para 150 e Y para 50. Isso o colocará aqui mesmo no nível. Agora, na verdade, precisamos mais uma variável para a velocidade horizontal do chefe Então, vamos criar um novo. Chame isso de SpeedX. Faça isso somente para esse sprite e oculte a variável Agora vamos definir a velocidade x e a velocidade Y como zero, pois ele estará parado no início Finalmente, vamos definir State como fly e Atom frame como zero. Tudo bem. Agora, há apenas mais algumas coisas que precisamos fazer para a configuração. Primeiro, faremos com que o chefe comece virado para a esquerda para que ele olhe para o jogador. Então, vamos entrar em movimento, colocar um bloco de ponto e direção e apontar na direção menos 90. E já que estamos nisso, vamos mudar o tipo de rotação do Boss Brights para a esquerda e para a direita Em seguida, precisamos definir o traje padrão do chefe. Então, vamos até Looks, trazer um bloco de roupas Switch e trocá-lo por Fly Zero. Também precisamos posicionar o chefe no palco. Então, vamos para o Mbloxs e trazer um bloco de ajuste de posição Finalmente, precisamos classificá-lo nas camadas. Então, vamos criar um bloco de classificação em camadas. Em seguida, vamos às variáveis e usaremos um bloco Z do componente como entrada. Está bem? Se agora rodarmos o jogo, ativarmos o modo Deus e mudarmos para o nível quatro, o chefe aparecerá. E se olharmos de perto, podemos ver que o fogo na parte inferior desta mochila a jato está se animando ele não faz muito mais no momento, entanto, ele não faz muito mais no momento, então resolveremos isso na próxima lição. 113. Faça o chefe voar: Para continuar trabalhando no chefe, vamos abordar o script de ação. Primeiro, quando o chefe morrer e cair no fundo do palco, porque ele é muito grande, vamos deixá-lo cair um pouco mais do que 180 negativos. Então, no bloco I Y é menor que 180 negativos, vamos verificar se é menor que 300 negativos. Além disso, como não estamos usando clones, podemos nos livrar dos dois blocos de exclusão Em vez disso, queremos transmitir a mensagem, que será recebida como pano de fundo Vamos aos eventos, trazemos um bloco de transmissão e vamos transmitir uma nova mensagem chamada Boss Dide. Vamos lidar com a mensagem do chefe um pouco mais tarde Mas primeiro, faremos com que o chefe realize certas ações, como voar pelo jogo. Para fazer isso, primeiro mudaremos sua posição usando as variáveis speed X e speedY Então, vamos às variáveis e adicionamos dois blocos de alteração B na parte inferior do script. E vamos mudar X pela velocidade X e Y pela velocidade. Mas como estamos inicializando velocidade X e a velocidade Y para zero, o chefe ainda não vai a lugar nenhum Então, o que queremos fazer a seguir é verificar se o cronômetro terminou Nesse caso, faremos o chefe voar ou atirar foguetes. Caso contrário, simplesmente reduziremos o cronômetro. Ok, então primeiro, vamos controlar e trazer um bloco de entrada e saída. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se o cronômetro é igual Para a parte ts, vamos introduzir uma alteração por bloco e alterar o cronômetro por menos um Na parte I, queremos verificar se o chefe está atirando no momento, verificando se a variável de tiro é igual a um. Então, vamos controlar e adicionar um bloco I then s à parte if deste. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se fotografar é igual Ainda não criamos os foguetes, então vamos deixar a parte I vazia por enquanto Por outro lado, se o chefe não estiver atirando no momento, verificaremos se sua velocidade horizontal atual é igual a zero. Nesse caso, vamos movê-lo em uma direção aleatória. Caso contrário, vamos prepará-lo para começar a filmar. Então, vamos para o Controle, pegar outro bloco, se for o caso, e colocá-lo dentro da parte externa deste. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para as variáveis e verifique se a velocidade x é igual a zero. E na parte I, moveremos o chefe em uma direção aleatória. E como o script de ação do identificador vai ficar bem longo, reduziremos um pouco o tamanho usando blocos personalizados para as várias ações. Então, vamos ao Mblock e criemos um novo. Podemos chamá-lo de movimento em direção aleatória. E clique em OK. E vamos adicionar um movimento no bloco de direção aleatória à parte I do bloco I velocidade X igual a zero. Tudo bem, agora vamos mover o movimento definido em um bloco de direção aleatória para algum espaço vazio. E aqui queremos fazer com que o chefe se mova aleatoriamente para a esquerda ou para a direita Para fazer isso, podemos primeiro gerar um número aleatório 1-2 e, se for um, faremos com que ele se mova para a direita e, se for dois, faremos com que ele se mova para a esquerda. Então, vamos controlar e introduzir um bloco de entrada e saída. Para a condição, vamos até os operadores e primeiro introduzimos um bloco igual. Em seguida, vamos colocar um bloco aleatório de seleção no lado esquerdo e verificar se um número aleatório 1-2 é igual Agora vamos às variáveis, adicionar um conjunto de dois blocos a cada parte do bloco I e depois s e usá-las para definir a velocidadeXf, a parte I definirá a velocidadeX como a Para a parte externa, queremos que a velocidade x seja negativa. Então, primeiro vamos até os operadores e introduzimos um bloco de subtração Em seguida, volte às variáveis e vamos fazer zero menos a velocidade do voo Também queremos que o chefe fique na direção correta. Então, vamos ao movimento e adicionar um bloco de ponto e direção a cada parte. Para a parte se, apontaremos na direção 90 e, para a parte s, faremos menos 90. Em seguida, faremos com que o chefe se mova aleatoriamente para cima, para baixo ou não na vertical Fazer isso é bem simples. Primeiro, vamos às variáveis e adicionamos um conjunto para bloquear na parte inferior do script e definir a velocidade Y. Agora vamos aos operadores e queremos considerar a variável de velocidade de voo Então, vamos primeiro colocar um bloco de multiplicação e, em seguida, colocar um bloco aleatório de seleção em um lado Agora podemos escolher um número aleatório entre menos um e um. Então, podemos ir às variáveis e multiplicar o número aleatório pela velocidade do voo A razão pela qual não pudemos fazer isso velocidade X é que não queremos que a velocidade X seja zero. Tudo bem, agora vamos voltar ao script de ação do manipulador. Depois de definir um movimento aleatório para o chefe, ajustaremos o cronômetro, permitindo que ele se mova um pouco Então, vamos adicionar um conjunto para bloquear abaixo do bloco de direção aleatória em movimento e vamos definir o cronômetro para 120, que é cerca de 4 segundos. Em seguida, na parte vazia, prepararemos o chefe para começar a filmar. Por enquanto, isso consistirá em interromper o movimento do chefe e definir a variável de tiro como uma, e também faremos isso em um bloco personalizado Então, vamos ao Mblock e criemos um novo. Podemos chamá-lo de preparar para filmar e clicar em OK. Vamos adicionar um bloco de preparação para atirar à parte externa da velocidade X igual ao bloco zero. Em seguida, vamos mover o bloco definido de preparação para atirar em algum espaço vazio. E aqui, vamos às variáveis e trazemos três conjuntos de dois blocos. Para interromper o movimento do chefe, vamos definir a velocidade x e a speedY como zero Finalmente, vamos definir a filmagem como uma. O que acontecerá é que, após o atraso inicial de 30 quadros, o script de ação do manipulador verificará se o disparo é igual Como estamos inicializando o disparo com zero, ele verificará se o SpeedX Esse será o caso, então ele moverá o chefe em uma direção aleatória por 120 quadros. Depois que o cronômetro terminar novamente, filmagem ainda será zero, mas o SpeedX agora não será igual Isso significa que o bloco de preparação para atirar funcionará, que interromperá o movimento do chefe e colocará o tiro em um Portanto, a partir do próximo quadro, tiro será um e o chefe permanecerá parado. Tudo bem, vamos tentar. Após um atraso de 1 segundo, o chefe se move em uma direção aleatória por cerca de 4 segundos e depois para. Legal. No momento, porém, o chefe pode sair do nível. Queremos limitar seu movimento, fazendo com que ele vá na direção oposta quando atingir um limite de nível Faremos isso dentro de um bloco personalizado. Então, vamos até Meus Blocos e criemos um novo. Podemos chamar isso de limite de movimento e clicar em OK. Queremos limitar o movimento logo após alterar as variáveis X e Y no script de ação do manipulador. Então, vamos adicionar um bloco de limite de movimento logo após a alteração do bloco Y. Está bem? Agora vamos encontrar um espaço vazio para o script de limite de movimento. E aqui vamos primeiro verificar se o chefe está próximo do lado esquerdo ou direito do nível e, em caso afirmativo, faremos com que ele se mova na direção oposta. Então, vamos controlar e inserir um bloco if the s. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vamos às variáveis e verificamos se X é menor que menos 180. Se for esse o caso, vamos primeiro colocar um conjunto para bloquear e definir X para menos 180. Em seguida, como o chefe se moverá para a esquerda, se isso acontecer, faremos com que ele se mova para a direita. Vamos trazer outro conjunto para bloquear e vamos definir SpeedX para velocidade de voo, dando ao SpeedX Também queremos que ele fique voltado para a direita. Então, vamos entrar em movimento e trazer um ponto na direção 90 do bloco. Ok, agora na parte de saídas, vamos verificar se o chefe chegou perto do lado direito do nível. Então, primeiro, vamos controlar e trazer um if the block. Para a condição, vamos até os operadores e trazer um bloco maior que. Em seguida, vamos colocar um bloco de adição no lado direito. Agora vamos às variáveis e vamos verificar se X é maior que a rolagem máxima, X. Mais 180. E aqui podemos primeiro extrair algumas duplicatas dos três blocos do bloco se X for menor que menos 180 Mas desta vez, queremos definir X como uma duplicata do bloco Max scroll X mais 180 Para a velocidade X, queremos usar o valor negado da velocidade de voo Então, vamos primeiro retirar o bloco de velocidade de voo. Em seguida, vá até os operadores, coloque um bloco de subtração e faça zero menos Finalmente, queremos apontar na direção de menos 90. Para testar tudo, vamos ao script de ação do identificador. E após o movimento no bloco de direção aleatória, vamos fazer o chefe voar um pouco mais ajustando temporariamente o cronômetro para 500 Se agora rodarmos o jogo, o chefe saltará dos lados esquerdo e direito do nível Em seguida, trabalharemos nos limites superior e inferior. No topo, não queremos que o chefe suba muito , caso contrário o jogador não conseguirá pular em cima dele. E no fundo, vamos impedi-lo de entrar na lava. Ok. De volta ao script de limite de movimento, podemos começar duplicando todo o bloco Ix menor que 180 negativos e colocando-o na parte inferior do script Para o limite inferior, vamos verificar se Y é menor que menos 50. Isso estará logo acima da lava. Nesse caso, queremos definir Y para menos 50 e fazer o chefe começar a voar cima definindo a velocidade Y para a velocidade de voo. Para o limite superior, vamos verificar se Y é maior que a rolagem máxima Y mais 80. Nesse caso, vamos definir Y como MX, rolar Y mais 80 e definir a velocidade Y como zero menos a velocidade de voo E podemos nos livrar dos dois blocos de ponto e direção. Agora, o chefe não voará muito alto nem entrará na lava. Agora precisamos fazer o chefe disparar alguns foguetes. Mas primeiro, enquanto ele está parado, ficaria melhor se o fizéssemos balançar para cima e para baixo, como uma animação ociosa Faremos isso dentro de mais um bloco personalizado. Vamos até minha caixa e criemos uma nova. Vamos chamá-lo de bob up and down e clicar em OK. Só queremos que o chefe suba e desça quando não estiver voando caso contrário, pareceria um pouco estranho Então, vamos falar sobre o script de ação do identificador. E antes de mudar a posição do chefe, verificaremos se a velocidade X atualmente é zero Nesse caso, vamos balançá-lo para cima e para baixo. Está bem? Então, primeiro, vamos até o Controle e coloque um bloco INN em algum espaço vazio. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se SpeedX é igual Se sim, vamos para M Blocks e trazer um bloco para cima e para baixo. Então, vamos colocar tudo isso logo acima do bloco X de mudança. Tudo bem Agora, após o movimento e o bloqueio de direção aleatório, vamos ajustar o cronômetro de volta para 120 e também vamos acessar o script de configuração e inicializar o cronômetro em 200 ou mais script de configuração e inicializar o cronômetro para que ele espere um pouco mais antes Agora vamos encontrar o bloco definido para cima e para baixo e movê-lo para algum espaço vazio. E aqui, vamos primeiro ir às variáveis e introduzir uma mudança por bloco. E vamos mudar o ângulo em quatro. Podemos usar isso para controlar a velocidade com que o chefe sobe e desce. Em seguida, definiremos a variável de velocidade Y usando trigonometria. Para fazer isso, vamos primeiro inserir um conjunto para bloquear e definir a velocidade Y. Em seguida, vamos até os operadores, insira um abdômen de bloqueio e use a função de causa Então, vamos voltar às variáveis e obter o cosseno da variável do ângulo Se agora rodarmos o jogo, o chefe balançará suavemente para cima e para baixo. E quando ele começa a se mover para a esquerda ou para a direita, ele também para de balançar Se sentirmos que ele sobe e desce um pouco demais ou não o suficiente, podemos multiplicar a causa do resultado do ângulo por algum outro valor Para fazer isso, vamos descobrir a causa do bloqueio do ângulo no momento. Em seguida, vamos aos operadores, adicionar um bloco de multiplicação ao bloco Y de velocidade definido e colocar a causa do bloqueio do ângulo em um lado Se multiplicarmos por um valor maior que um, ele subirá na parte superior e diminuirá na parte inferior E se usarmos um valor decimal 0-1, isso reduzirá o quão alto ou baixo ele pode ir Acho que multiplicar por 0,8 parece muito bom. Também podemos aumentar a velocidade de oscilação alterando o ângulo em um valor maior Mas eu vou ficar com quatro. Além disso, poderíamos deixar o valor do ângulo ficar cada vez mais alto, mas isso seria um pouco ineficiente E em qualquer caso, como já discutimos, os valores do cosseno recomeçam quando o ângulo atinge 360 Então, o que podemos fazer é redefinir o valor do ângulo de volta para zero sempre que ele atingir 360. Para fazer isso, vamos às variáveis e adicionar um bloco de ângulo definido logo abaixo do bloco de alteração do ângulo. Para a entrada, vamos até os operadores e trazemos um bloco de modificação, depois voltaremos às variáveis e vamos definir o ângulo para o ângulo mod 360. Agora, o valor do ângulo será redefinido para zero quando atingir 360 e o efeito de oscilação permanecerá o Tudo bem Agora vamos voltar ao script de configuração e inicializar a variável do temporizador para 30 Também queremos inicializar o disparo com um para que o chefe comece a atirar E na próxima lição, faremos com que ele possa realmente disparar alguns foguetes. 114. Atirando foguetes: Para fazer o chefe começar a atirar foguetes, vamos ver o script de ação do manipulador E o tiro I é igual a um bloco aqui, queremos verificar se o chefe ainda tem alguns foguetes para atirar, verificando se a atirar, verificando se variável foguetes a serem disparados é Nesse caso, faremos com que ele atire um foguete e depois faça uma pausa antes de atirar no próximo Caso contrário, colocaremos o tiro em zero para que ele possa começar a voar. Então, primeiro, vamos controlar e adicionar um bloco IT s à parte I do se fotografar for igual a um Para a condição, vamos até os operadores e trazer um bloco maior que. Em seguida, vamos às variáveis e verificamos se os foguetes a serem disparados são maiores que zero Então, vamos transmitir uma mensagem, que o sprite do foguete aqui receberá Então, vamos aos eventos, trazemos um bloco de transmissão e vamos transmitir uma nova mensagem chamada atirar foguetes. Em seguida, queremos reduzir o valor dos foguetes para disparar. Então, vamos às variáveis, introduzimos uma mudança por bloco e trocamos os foguetes para disparar por menos um Finalmente, queremos esperar um pouco antes de disparar o próximo foguete Então, vamos colocar um conjunto para bloquear e vamos definir o cronômetro para 45 Se não houver mais foguetes para atirar, queremos trazer um conjunto para bloquear e colocar o tiro em zero Também vamos fazer o chefe esperar um pouco antes de começar a voar , trazendo outro conjunto para bloquear e ajustando o cronômetro para 90 Ok, agora vamos começar o roteiro de preparação para filmar. E aqui precisamos redefinir a variável dos foguetes para disparar até o número de foguetes que queremos que o chefe Então, vamos trazer um conjunto para bloquear e colocar foguetes para disparar Agora, talvez queiramos tentar usar um número diferente de foguetes ao testar, para evitar a alteração do valor aqui, assim como no script de configuração, criaremos uma nova variável para o número máximo de foguetes Vamos chamá-lo de foguetes Max. Faça com que seja apenas desta forma brilhante, e não precisamos mostrá-la. O valor de Max rockets não mudará durante o jogo, então vamos defini-lo no script de bandeira verde adicionando um conjunto para bloquear ao script e definindo Max rockets para três Agora, no script de configuração, em vez de configurar foguetes para atirar em três, podemos configurá-lo para Max foguetes. E podemos fazer o mesmo no roteiro preparado para filmar. , só por diversão, podemos fazer o chefe olhar para o jogador antes que ele comece a atirar. Para fazer isso, podemos verificar se a exposição do chefe é menor que a exposição do jogador Nesse caso, vamos enfrentá-lo pela direita. Caso contrário, vamos enfrentá-lo pela esquerda. Vou te dar isso como um desafio. Pause o vídeo agora e veja se você consegue fazer o chefe ficar de frente para o jogador Ok, então primeiro, vamos controlar e introduzir um bloco de saídas de TI. Para verificar a condição, vamos até os operadores e trazer um bloco menor. Em seguida, vamos às variáveis e colocamos um bloco X no lado esquerdo. No lado direito, vamos até a detecção, número do bloco de estágio de fundo e usá-lo para obter a variável X dos sprites do jogador Se a exposição do chefe for menor que a dos jogadores, nós o enfrentaremos para a direita movendo-nos e trazendo um ponto na direção 90 do bloco Caso contrário, apontaremos na direção de menos 90. Tudo bem, agora precisamos realmente criar os foguetes e vamos fazer isso usando o foguete Sprite Se dermos uma olhada em suas roupas, ela tem uma animação simples de mosca em dois quadros e uma caixa de quadril Ok, e para começar a codificar o foguete sprite, vamos primeiro acessar o código do BSprite e Podemos copiar, verificar tocar na animação do jogador , classificar em camadas e ajustar a posição para manipular as ações Vamos copiar apenas o bloco definido Agora vamos copiar quando eu começar como um clone e os scripts de atualização T. Para o script de configuração, vamos remover tudo depois que o traje se não for igual ao bloco em branco, copiar o script e colocar tudo de volta Finalmente, vamos copiar o script da bandeira verde. Em seguida, vá até o código do foguete Sprite e limpe-o. Ok, então no script de verificação do jogador do sprite do foguete, não precisamos verificar se o jogador está caindo porque o jogador não pode destruir um foguete pulando não precisamos verificar se o jogador está caindo porque o jogador não pode destruir um foguete pulando Se o foguete tocar o jogador de alguma forma, o jogador se machucará Então, no bloco I Touching Player, depois de transmitir o Bounce Player, só queremos executar que a I X do player seja maior que a parte X aqui E podemos nos livrar do estado I do bloco Player Equals Fall. Em seguida, para o script animado, um foguete só estará no estado de voo, então não precisamos verificar o Então, vamos retirar o troco, colocar blocos nom frame e colocá-los logo abaixo do bloco de roupas do switch Então, vamos nos livrar do bloco I then. Vamos também remover o bloco de estado do bloco de roupas do switch e usar a palavra voar em seu lugar. E para a velocidade da animação, vamos alterar o quadro nominal em 0,2 Em seguida, e quando eu receber a Atualização 1, novamente, não precisamos verificar o estado. Vamos colocar o cheque tocando no bloco do jogador logo abaixo do bloco de ajuste de posição e nos livrar do bloco I state equals fly. Ok, agora, para criar clones de sprites de foguetes, faremos isso sempre que o chefe transmitir a mensagem do Shootocket. Então, primeiro, vamos aos eventos, trazer um bloco de recepção W I e receber um foguete de tiro Só queremos criar um clone se o sprite receptor for o sprite original Então, precisaremos verificar se ele está usando o traje em branco. Para fazer isso, vamos primeiro acessar o Controle e inserir um bloco ITN. E para a condição, podemos usar uma duplicata de um dos nomes do traje igual a Em seguida, para criar um clone, faremos isso em um bloco personalizado Então, vamos ao Mblock e criemos um novo. Podemos chamá-lo de Create Clone e clicar em OK. E vamos colocar um bloco Crate Clone dentro do bloco ITN. Tudo bem, agora vamos encontrar algum espaço vazio para o bloco Crate Clone definido E aqui primeiro queremos mudar para o traje inicial do clone Então, vamos para Los, traga um bloco de roupas Switch e mude para Fly Zero. Também queremos que o clone comece voltado para cima. Então, vamos entrar em movimento e introduzir um bloco de ponto e direção. Usar uma direção zero fará com que ela fique voltada para cima. Em seguida, definiremos uma posição global para o clone. Queremos que pareça que está vindo do topo da mochila a jato do chefe, então usaremos a posição do chefe como ponto de partida Para fazer isso, vamos primeiro ir às variáveis e trazer dois conjuntos de dois blocos. E vamos definir a variável X e a variável Y. Para X, precisaremos afastá-lo um pouco da exposição dos sprites do Boss Vamos primeiro ir até os operadores e trazer um bloco adicional. Agora vamos detectar e colocar o número do bloco de estágio de fundo em um lado do bloco de adição Queremos primeiro escolher o sprite Boss, depois escolher sua variável X, e a isso adicionaremos 32 para Y, podemos simplesmente usar a variável Y do boss Então, vamos trazer uma duplicata do bloco X of Boss e alterá-la para Y. Tudo bem, e por enquanto, vamos criar o clone acessando Control e trazendo um clone de criação do bloco Myself Em seguida, queremos voltar para a fantasia do Blink acessando Looks, trazendo um bloco de fantasias do Switch e mudando para o Blink Se agora rodarmos o jogo, à medida que o chefe se move para baixo, começaremos a ver alguns foguetes As posições iniciais dos foguetes estão corretas quando o chefe está voltado para a esquerda Mas quando ele está voltado para a direita, eles aparecem na frente do chefe. Para corrigir isso, ao definir a variável X para um clone de foguete, se o chefe estiver voltado para a direita, queremos subtrair 32 de Para fazer isso, vamos até os operadores e substituamos os 32 por um bloco de multiplicação Então vamos colocar um bloco de divisão no lado direito. Para a primeira entrada, vamos digitar 32. Para o segundo, vamos duplicar o X ou Y do bloco chefe e obter a direção Então, vamos dividir isso por menos 90. Agora, quando o chefe estiver voltado para a esquerda, obteremos 32 positivos, e quando ele estiver voltado para a direita, obteremos menos 32, e isso deve fixar o posicionamento dos clones. Ok, a seguir, faremos com que os foguetes comecem a voar para cima depois de serem criados Para isso, precisaremos inicializar a variável de velocidade Y. Então, vamos às variáveis, adicionar um conjunto para bloquear antes que o clone de crack de mim mesmo bloqueie e vamos definir a velocidade Y para seis Eventualmente, também precisaremos de uma variável de velocidade X e não precisaremos de uma variável de estado Então, se ainda o tivermos, podemos mudar seu nome para SpeedX E vamos inicializar a velocidade x para zero no script create Clone Ok, agora vamos ao script de ação com alça vazia. Por enquanto, só precisamos mudar a posição dos clones usando as variáveis de velocidade Então, vamos introduzir mudanças por blocos. E vamos mudar X pela velocidade x e Y pela velocidade Y. E agora o foguete deve subir de palco à medida que o chefe atira nele Os foguetes não são muito eficazes, mas vão direto para cima Então, na próxima lição, faremos com que eles procurem o jogador. 115. Buscando o jogador: Para fazer um clone de foguete buscar o jogador, temos que girá-lo continuamente para que ele aponte para o jogador e mova-o nessa direção Faremos isso no script de ação handle antes de alterar as variáveis X e Y, e faremos isso dentro de um bloco personalizado. Vamos primeiro acessar Meus Blocos e criar um novo. Vamos chamá-lo de jogador da SEC. Clique em OK e coloque um bloco de player da SEC na parte superior do script de ação da alça. Agora, no player Sk definido, a primeira coisa que faremos é apontar o clone para o sprite do jogador Para fazer isso, podemos simplesmente entrar em movimento, colocar um ponto em direção ao bloco e apontar para o jogador. Em seguida, definiremos a velocidade X e a velocidade Y e, para fazer o clone se mover na direção correta, precisaremos usar a trigonometria Então, primeiro, vamos às variáveis, coloque dois conjuntos de dois blocos. E defina a velocidade X e a velocidade Y. Para a velocidade X, precisamos obter o seno da direção dos clones, e para SpeedY, precisamos obter o cosseno da Então, vamos até os operadores, adicionamos um abs de bloco a cada um dos dois blocos definidos e vamos usar a função SN para a velocidade X e a função de causa para a velocidade Y. Então vamos para o movimento e adicionamos um bloco de direção a cada um Se agora rodarmos o jogo, os foguetes apontarão e se moverão continuamente em direção ao jogador Mas isso é definitivamente um pouco lento demais. Para acelerar, podemos multiplicar resultados do seno e do cosseno por algum Para fazer isso, vamos até os operadores e colocar dois blocos de multiplicação em algum espaço vazio Agora, para a velocidade X, podemos fazer o seno da direção vezes quatro, e para a velocidade Y, vamos fazer a causa da direção vezes quatro. Os foguetes agora se moverão quatro vezes mais rápido. No entanto, parece um pouco estranho que os foguetes busquem imediatamente o jogador assim que são criados Seria melhor deixá-los subir um Para fazer isso, precisaremos acompanhar se um clone está procurando o jogador no momento e também precisamos de um cronômetro Então, vamos às variáveis e criar algumas novas. Vamos ligar para o primeiro que está procurando e fazer com que seja somente para esse sprite Para o segundo, vamos chamá-lo cronômetro e também torná-lo apenas para este Bright E vamos esconder as duas variáveis. Para inicializar as duas variáveis, vamos ao script rake Clone Antes do bloco rake Clone of Myself, vamos trazer mais dois conjuntos de dois Queremos que o clone comece sem buscar o jogador, então vamos definir a busca em zero Em seguida, para o cronômetro, vamos configurá-lo para 20. Esse é o tempo que faremos com que o clone espere antes de começar a procurar o jogador, e demorará pouco mais de meio segundo Agora vamos falar sobre o script de ação do identificador. Aqui, só queremos executar o bloco de jogadores da SEC se a variável de busca for igual Caso contrário, precisaremos lidar com o cronômetro. Então, primeiro, vamos até Control, pegar um bloco ITN Outs e enrolar a parte I ao redor do bloco de jogadores Sk De qualquer forma, ainda queremos mudar a posição dos clones. Então, vamos mover os dois blocos Change By de volta para a parte inferior dos scripts. Para a condição do bloco de saídas do ITN, vamos até os operadores e introduzimos um bloco igual Em seguida, vamos às variáveis e verificamos se a busca é igual Nesse caso, simplesmente executaremos o bloco de jogadores da SEC. Caso contrário, verificaremos se o cronômetro terminou, alterando o buscador para um, se tiver terminado, e reduzindo o cronômetro, caso não tenha Então, vamos para o Controle, pegar outro bloco I e depois s e colocá-lo dentro da parte externa deste. Para a condição, podemos usar uma duplicata da busca igual a um bloco e fazer com que verifique se o cronômetro é igual e fazer com que verifique se o cronômetro é Nesse caso, vamos às variáveis, coloque um conjunto para bloquear e definir a busca para um. Caso contrário, vamos alterar por bloco e alterar o cronômetro por menos um Se agora rodarmos o jogo, os foguetes voarão em linha reta por cerca de meio segundo antes de se virarem em busca do jogador A forma como eles giram, porém, é um pouco abrupta e não parece muito realista Para melhorá-lo, podemos fazer os clones girem em incrementos menores Para fazer isso, precisaremos definir uma velocidade de rotação para os clones. Também no script do player Sk, antes de mudar a direção do clone para apontar para o jogador, queremos salvar a direção atual do clone. Podemos então verificar se a diferença entre a nova direção e a direção anterior é maior que a velocidade de rotação e, em caso afirmativo, giraremos apenas pela velocidade de rotação para que o foguete não tenha uma mudança tão grande Ok, então, para começar, precisaremos criar algumas novas variáveis. Vamos chamar a primeira velocidade de rotação e torná-la somente para este sprite Então vamos criar outro, chamá-lo de DRE anterior. Além disso, faça isso apenas para esse sprite e oculte as duas variáveis O valor da velocidade de rotação não mudará durante o jogo, então vamos defini-lo no script da bandeira verde Para fazer isso, vamos adicionar um conjunto de dois blocos ao script e definir a velocidade de rotação em cinco por cinco graus. Agora vamos ao script do player Sk. Antes do ponto em direção ao bloqueio do jogador, queremos definir o dr anterior para a direção atual do clone Então, vamos adicionar um conjunto de dois blocos na parte superior do script. Então vamos para o movimento e vamos definir o der anterior para a direção. E a seguir, após o ponto em direção ao bloqueio do jogador, queremos verificar se a diferença entre a nova direção do clone e a direção anterior é maior que a velocidade de rotação Então, primeiro, vamos até o controle, introduza um bloco I then e mova os blocos de velocidade X e Y definidos de volta para a parte inferior do script. Para a condição, vamos até os operadores e trazer um bloco maior que. Queremos obter o valor absoluto da diferença. Então, vamos primeiro colocar um bloco Abso no lado esquerdo. Em seguida, adicione um bloco de subtração ao abdômen do bloco. Agora vamos ao movimento e colocar um bloco de direção em um lado do bloco de subtração Em seguida, vamos às variáveis e vamos verificar se o valor absoluto da direção menos o dr anterior é maior que a velocidade de rotação Nesse caso, definiremos a direção do clone subtraindo a velocidade de rotação da Isso fará com que o clone gire um pouco no sentido anti-horário Vamos primeiro entrar em movimento e introduzir um bloco de ponto e direção. Para a entrada, vamos até os operadores e introduzimos um bloco de subtração Em seguida, vamos às variáveis e calculamos rotação anterior dr menos Se agora rodarmos o jogo, os foguetes girarão mais suavemente em direção ao Isso funciona bem em alguns casos, mas se formos para a direita, porque atualmente só permitimos que os foguetes girem no sentido anti-horário, eles precisam girar quase em um círculo completo antes de poderem quase em um círculo completo antes Para melhorá-lo, devemos permitir que os foguetes escolham qual direção de rotação seria mais eficiente Para isso, após verificar se a diferença entre as direções é maior que a velocidade de rotação, podemos verificar se a diferença é maior que 180. Nesse caso, o foguete deve girar no sentido anti-horário. Caso contrário, ele deve girar no sentido horário. Então, primeiro, vamos até o Controle, pegue um bloco de se e depois saia e enrole a parte I ao redor do grande bloco de direção e ponto aqui. Para a parte externa, podemos trazer uma duplicata do bloco de ponto e direção Mas para girar o clone no sentido horário, em vez de usar o dr menos a velocidade de rotação anterior, queremos ir até os operadores, queremos ir até os operadores, trazer um bloco adicional e fazer Agora, para a condição, vamos primeiro inserir um bloco maior que. No lado esquerdo, queremos obter a diferença entre a direção e o DRR anterior, mas não o valor absoluto dela Então, vamos usar uma duplicata apenas da direção menos o bloco dR anterior. E vamos verificar se é maior que 180. Porém, se tentarmos isso agora, na verdade não funcionará. Isso ocorre porque precisamos que os valores de direção sejam de 0 a 359. Mas, como já sabemos, scratch usa valores negativos quando um sprite está voltado para a esquerda Para fazê-lo funcionar, precisamos garantir que a diferença entre as direções sempre nos dê um valor de 0 a 359 Para fazer isso, tudo o que precisamos fazer é modificar a diferença com 360. Isso funciona porque os resultados do uso do módulo com um número negativo no lado esquerdo serão a soma dos dois números. Ok, então vamos trazer um bloco de modificação e colocar a direção menos terceiro bloco anterior no lado esquerdo Vamos usar 360 para o lado direito. Em seguida, coloque tudo isso no bloco maior que. E agora os foguetes girarão corretamente. Tudo bem, tudo o que precisamos fazer agora é fazer com que os foguetes atinjam o jogador e explodam, e começaremos a trabalhar nisso na próxima lição 116. Atingindo o jogador: Quando um foguete atinge o jogador, queremos que o foguete exploda e desapareça Para fazer isso, vamos ver o script do player check touch No bloco I touch player, depois de configurar o bounce DR, faremos o foguete explodir e excluiremos o clone, e faremos isso Então, vamos ao Mblock e criemos um novo. Vamos chamá-lo de Explode. Clique em OK e coloque um bloco Explode na parte inferior do bloco I touch player No script define explode, eventualmente criaremos uma animação de explosão Mas, por enquanto, vamos apenas excluir o clone. Isso significa que também precisamos remover o item da lista de pedidos Z. Então, vamos primeiro ir às variáveis, incluir uma exclusão do bloco e usar o número do item do bloco como entrada. Agora vamos excluir o número do item do componente Z em ordens Z de ordens Z. Em seguida, vamos para Control e inserir um bloco Excluir este clone Se agora rodarmos o jogo, os foguetes desaparecerão assim que tocarem no jogador No momento, porém, é praticamente impossível para o jogador escapar dos foguetes, pois eles continuam chegando até atingirem o jogador Então, o que podemos fazer em vez disso é quando um foguete fica a uma certa distância do jogador, podemos definir um cronômetro de autodetonação Quando o cronômetro acabar, o foguete explodirá automaticamente Para fazer isso, precisaremos de uma variável para rastrear se um clone de foguete está se preparando para Então, vamos às variáveis e criemos uma. Podemos dizer que está pronto para explodir. Faça isso somente para esse sprite e oculte a variável. Um clone não deve estar pronto para explodir quando é criado pela primeira vez Então, para inicializar a variável, vamos ao script create Clone Vamos adicionar outro conjunto para bloquear ao script e prepará-lo para explodir até zero Agora vamos ao script de ação do identificador. Quando o clone está procurando o jogador, queremos verificar se o clone está uma certa distância do E se for, vamos nos preparar para explodir em um e também definir um cronômetro para a autodetonação Então, primeiro, vamos controlar e adicionar um if then logo após o bloco Sk platter Agora, quanto à condição, só queremos definir o cronômetro de autodetonação se o clone ainda não Então, vamos até os operadores e primeiro introduzimos um bloco e. Agora vamos colocar um bloco igual em um lado e um bloco menor que no outro Em seguida, vamos às variáveis e vamos primeiro verificar se pronto para explodir é igual Para o lado esquerdo do bloco menor que, queremos obter a distância entre o clone e o sprite do jogador Para fazer isso, podemos usar a detecção e usar uma distância para bloquear E vamos verificar se a distância até o jogador é menor que 120. Se tudo isso for o caso, vamos às variáveis, trazê-las para definir os blocos. E vamos nos preparar para explodir para um e o cronômetro para 30, que fará com que o foguete exploda após cerca de Ok, agora na parte superior do script de ação do identificador, queremos verificar se o clone está pronto para explodir Então, primeiro, vamos até o Controle e coloque um bloco INN em algum espaço vazio. Para a condição, podemos usar uma duplicata da busca igual a um bloco aqui e verificar se pronto para explodir é igual a Nesse caso, precisamos lidar com o cronômetro, então vamos inserir um bloco if then s. Para a condição, podemos usar outra duplicata de um bloco igual e verificar se o cronômetro é Nesse caso, queremos que o foguete exploda, então vamos até MyBlocks e trazemos um Se o cronômetro não terminar, queremos reduzi-lo Então, vamos às variáveis, introduza uma mudança por bloco e altere o cronômetro por menos um Se agora colocarmos tudo isso no topo do script de ação da alça e rodarmos o jogo, quando um foguete chegar a 120 passos de nós, ele explodirá automaticamente após cerca de um segundo No momento, porém, o jogador não tem como saber que um foguete está prestes a se autodetonar Para que o jogador saiba, podemos fazer com que o foguete comece a piscar assim que o cronômetro de autodetonação Na verdade, fizemos a mesma coisa para indicar quando o jogador é invencível depois de se E se formos até o código do sprite do player, fazemos isso usando o script if do flash Para a condição do bloco if do flash e do script de atualização, usamos um bloco mod entre uma variável de cronômetro, neste caso, hurt e um número para indicar com que frequência piscar Ok, então primeiro, podemos copiar o script if do flash para o sprite do foguete e depois voltar para o Sprite do foguete Para fazer o clone piscar quando estiver pronto para explodir, vamos voltar ao script de ação da alça, acessar M Blocks e adicionar um flash se bloco no topo do I pronto para explodir for igual a Para a condição, vamos até os operadores e primeiro introduzimos um bloco igual. Em seguida, coloque um bloco de modificação no lado esquerdo. Agora vamos às variáveis e vamos verificar se o mod dois do cronômetro é igual E agora, quando um foguete chegar perto de nós, ele começará a piscar em branco antes Incrível. Tudo bem, então tudo o que precisamos fazer agora é realmente criar as explosões. Faremos isso transmitindo primeiro uma mensagem no script Explode, que será recebida pela explosão sp Ok, então vamos aos eventos, adicionar um bloco de transmissão na parte superior do script Explode e vamos transmitir uma nova mensagem chamada Create Explosion Agora, também precisamos dizer ao sprite da explosão onde ele deve criar uma explosão Quando o clone se autodetonar, usaremos a posição mundial do clone como a posição da explosão e, quando o clone atingir o jogador, usaremos a posição mundial do jogador e armazenaremos a posição dentro de uma lista de variáveis que o que o Vamos às variáveis e fazer uma nova lista. Podemos chamar isso de explosões e queremos fazer isso para todos os sprites Em seguida, no script Explode, queremos passar as posições X e Y da explosão como entradas Então, vamos clicar com o botão direito do mouse no bloco definido e escolher Editar. Primeiro, vamos mudar o rótulo de explosão para explodir no cólon X. Em seguida, vamos adicionar uma entrada de X. Agora, vamos adicionar outro rótulo do tipo Y e dois pontos e adicionar uma entrada de Y. Em seguida, clique em OK. Em seguida, precisamos adicionar as entradas X e Y à lista de explosões. Então, vamos às variáveis. Coloque alguns e adicione dois blocos na parte superior do script. E vamos adicionar as entradas X e Y à lista de explosões. Agora vamos ao script de ação do identificador. Estamos executando o bloco Explode aqui quando o clone se detona automaticamente, então queremos passar as variáveis X e Y do Em seguida, ao tocar no jogador, estamos executando o bloco Explode quando o clone atinge o jogador, então queremos usar as variáveis X e Y do sprite do jogador Para fazer isso, vamos detectar e dois blocos de palco como pano de Então vamos pegar X do jogador para o primeiro e Y do jogador para o segundo. Ok, se rodarmos o jogo agora, quando um foguete nos atinge, ele adiciona nossa posição à lista E quando um foguete se autodetona, ele adiciona a posição do foguete Tudo bem, agora precisamos ir até o sprite da explosão, receber a mensagem de criação da explosão e criar a animação da explosão E faremos isso na próxima lição. 117. Adicione explosões de foguetes: Se dermos uma olhada nas roupas dos sprites da explosão, ela tem uma única animação de oito quadros E para começar a codificar o sprite, podemos primeiro voltar ao código do foguete Sprite e copiar Primeiro, para o script create Clone, vamos copiar apenas o bloco definido E se você estiver tendo problemas para copiar o script como eu, podemos primeiro clicar e arrastar o sprite de explosão para que fique mais alto no painel do sprite, então poderemos copiar o Certifique-se de adicionar todos os blocos de volta ao script de criação do Clone Em seguida, também podemos copiar camadas de classificação animadas e ajustar a posição Quando eu começo como um clone e quando recebo a Atualização três, quando recebo a Atualização dois, queremos tudo, menos o bloco de ações de controle Então, vamos retirá-lo primeiro, copiar o script e colocar o bloco de ações da alça de volta logo acima do bloco animado Da mesma forma, não queremos que a verificação toque no bloco de jogadores no script Update one Então, vamos removê-lo antes de copiar o script. Também podemos copiar quando eu receber o disparo do foguete, mas eventualmente mudaremos para quando eu receber criar Explosão Agora vamos copiar o script de configuração. E para o script da bandeira verde, vamos copiar tudo exceto o bloco de velocidade de rotação definido Ok, agora vamos para a explosão Sprite. No roteiro animado do sprite da explosão, ao trocar o traje, queremos juntar a palavra explosão ao piso de uma moldura de anim E vamos trocar um quadro de anim por um. Agora, para a animação da explosão, queremos executá-la apenas uma vez e, quando terminar, excluiremos o clone Então, primeiro, podemos nos livrar do bloco set anim frame. Então, vamos controlar e introduzir um bloco ITN. Os quadros para a animação da explosão vão de 0 a 7. Então, saberemos que a animação terminou quando o valor de nom frame se tornar oito Então, para a condição, vamos até os operadores e trazer um bloco igual. Em seguida, vamos às variáveis e verificamos se o quadro nom é igual Portanto, queremos excluir o item da lista de pedidos Z e excluir o clone Então, vamos excluir bloco e usar o número do item do bloco como entrada. Agora, para a ordem Z, na verdade queremos usar o efeito frontal Z para que a explosão apareça na frente do jogador. E vamos nos certificar de escolher ordens Z para ambas as entradas da lista Em seguida, vamos para Controlar e excluir esse bloco de clones. Em seguida, quando eu começar como um clone, em vez de usar o componente Z no bloco de classificação em camadas, queremos usar o efeito frontal Z. Em seguida, para o script de atirar foguetes, vamos alterá-lo para quando eu receber No script de configuração, queremos ter certeza de primeiro esvaziar a lista de explosões Para fazer isso, vamos às variáveis e adicionar o bloco delete all of explosions na parte inferior do script Ok, agora, para realmente criar uma explosão, vamos ver o script de criação de clone Primeiro, queremos mudar para o traje inicial. Então, vamos até Looks, trazer um bloco de roupas Switch e mudar para Explosion Zero. Em seguida, definiremos a posição X e Y dos clones usando os dois primeiros itens na lista de explosões Para fazer isso, vamos primeiro ir às variáveis e trazer dois conjuntos de dois blocos. Em seguida, vamos adicionar um item do bloco de explosões a cada um. Agora vamos definir X para o item um e definir Y para o item dois. Em seguida, podemos excluir os dois itens trazendo para excluir um dos blocos de explosões Ok, agora vamos criar o clone acessando Control e trazendo um clone de crake do E, finalmente, vamos até Looks, trazer um bloco de roupas de troca e trocar para a roupa em branco. Se rodarmos o jogo agora, sempre que um foguete explode, ele cria uma animação de explosão Incrível. Tudo bem, acho que podemos ir às variáveis e esconder a lista de explosões E na próxima lição, terminaremos a luta contra o chefe fazendo com que pular em cima do chefe reduza sua saúde em vez de matá-lo automaticamente 118. Machucando o chefe: No código do boss sprite, vamos encontrar o cheque tocando no script do jogador Há alguns ajustes que precisamos fazer aqui. Primeiro, quando o chefe morre, ele não salta muito alto Para corrigir isso no bloco Y de velocidade definida, podemos usar um valor maior, como 20. Em seguida, não precisamos pular muito alto em cima do chefe para atingi-lo. Isso ocorre porque atualmente a posição Y do jogador só precisa estar 15 degraus acima da posição Y do chefe. Isso funcionou bem para o sprite Be, mas o chefe é um pouco mais alto que as abelhas Então, em vez de 15, vamos tentar 60. Agora teremos que pular perto da cabeça dele para acertá-lo. Não pular alto o suficiente fará com que o jogador se machuque. Tudo bem, com essas duas coisas resolvidas, queremos fazer com que , para derrotar o chefe, tenhamos que continuar pulando sobre ele até que ele fique sem saúde Para fazer isso, antes de definir o estado do chefe como morto, queremos reduzir sua saúde. Em seguida, verificaremos se sua saúde caiu para zero ou abaixo e, se cair, o colocaremos em estado morto. Caso contrário, vamos colocá-lo em estado ferido por um breve período de tempo. Ok, então primeiro nas variáveis, vamos colocar uma alteração por bloco acima do estado definido para bloco morto e vamos mudar a variável de saúde do chefe. Normalmente, queremos apenas alterá-lo por menos um, mas para fins de teste, vamos usar menos cinco. Em seguida, vamos até o Controle, pegue um bloco se não for outro e enrolar a parte I em volta dos outros quatro conjuntos de dois blocos. No entanto, na verdade, queremos zerar o segurança , independentemente de o chefe morrer ou se machucar Vamos mover o set bouncer block até perto do set boss health Dentro da parte I, queremos impedir que o chefe se mova horizontalmente Vamos às variáveis, adicionar outro bloco de dois conjuntos aqui e definir a velocidade x como zero. Ok, agora para a condição, queremos verificar se o chefe está sem saúde. Isso significa que a variável de saúde do chefe é zero ou abaixo de zero. Então, vamos até os operadores e primeiro introduzimos um bloco or. Então, vamos colocar um bloco igual em um lado e um bloco menor que no outro Agora vamos às variáveis e vamos verificar se a saúde do chefe é igual a zero ou se a saúde do chefe é menor que E isso é tudo que precisamos fazer para a parte I. Se o chefe não ficou sem saúde, queremos colocá-lo em estado de sofrimento. Então, vamos adicionar um conjunto para bloquear à parte s e definir o estado para Hurt. Também queremos definir o cronômetro. Então, vamos trazer outro conjunto para bloquear e ajustar o cronômetro para 30 Outra coisa que queremos fazer é garantir que o chefe pare de atirar se ele estiver filmando no momento. Então, vamos colocar mais um set para bloquear e zerar o disparo. Finalmente, queremos fazer com que o chefe se mova em uma direção aleatória e queremos que ele se mova mais rápido do que o normal. Para fazer isso, podemos primeiro trazer um conjunto para bloquear e definir a variável de velocidade de voo. No entanto, em vez de digitar um número aqui, vamos criar algumas novas variáveis para a velocidade padrão e a velocidade do Hurt Para a velocidade padrão, podemos chamá-la de velocidade de cruzeiro e torná-la apenas para esse sprite Agora vamos criar outro, chamado de rt speed. Também serve apenas para este sprite e oculte as duas variáveis. Os valores dessas variáveis não mudarão durante o jogo, então vamos defini-las no script de bandeira verde. Primeiro, vamos adicionar um conjunto de dois blocos ao script. No script de configuração, estamos inicializando a velocidade de voo para quatro Então, no script da bandeira verde, vamos definir a velocidade da tripulação para quatro. Então, vamos definir a velocidade Hertz para dez. Agora, no script de configuração, podemos definir a velocidade de voo para a velocidade de cruzeiro. Em seguida, vamos voltar ao script do player check touch e definir a velocidade de voo para diminuir a velocidade Então, podemos ir para Mbloxs e um movimento em um bloco de direção aleatória, que usará o novo valor da velocidade de voo Tudo bem, agora precisamos passar para o script de ação do identificador. Dentro do temporizador I é igual a zero bloco. Primeiro, queremos verificar se o chefe está no estado cardíaco. caso, isso significa que o cronômetro t acabou, então queremos colocar o chefe de volta ao estado de voo Então, primeiro, vamos controlar e colocar um bloco ITN em algum espaço vazio Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se o estado é igual a RT. Nesse caso, vamos inserir um conjunto para bloquear e definir o estado para voar. Também queremos definir a velocidade de voo de volta ao padrão. Então, vamos trazer outro conjunto para bloquear e definir a velocidade de voo para a velocidade de cruzeiro. Agora vamos pegar tudo isso e colocá-lo no topo do cronômetro I é igual a zero, logo acima, se atirar for igual zero, logo acima, se atirar for Ok, então o que acontecerá a seguir é que tiro não é igual um e a velocidade x não é igual a zero, então isso imediatamente deixará o chefe pronto para atirar depois que ele se machucar. Podemos ver isso se rodarmos o jogo e atacarmos o chefe. Ele perde um pouco de saúde, fica louco por um tempo, depois para e começa a disparar foguetes. ele começa a atirar um pouco No entanto, ele começa a atirar um pouco repentinamente depois de parar. Então, vamos começar a preparar os roteiros para filmar. E aqui podemos colocar um conjunto para bloquear e definir o cronômetro para 30 Agora ele vai esperar cerca de um segundo depois de parar antes de começar a atirar. Tudo bem, e para deixar mais óbvio para o jogador que o chefe está ferido, podemos fazê-lo piscar enquanto está machucado, como estamos fazendo com os sprites do jogador Para fazer isso, vamos primeiro acessar o código Sprite do jogador e queremos copiar o script if do flash para o chefe Sprites Agora vamos voltar para o chefe Sprites. Para fazer o chefe brilhar enquanto está ferido, vamos voltar ao roteiro de ação de Handle. Na parte inferior do script, antes de trocar o cronômetro por menos um, verificaremos se o chefe está ferido e, em caso afirmativo, faremos com que ele pisque Então, primeiro, vamos controlar e colocar um bloco IN em algum espaço vazio. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para as variáveis e verifique se o estado é igual a machucar. Nesse caso, vamos até os blocos do MI e acenda um flash, se estiver bloqueado. Para a entrada, vamos até os operadores e primeiro trazer um bloco igual e, em seguida, trazer um bloco mod Agora vamos às variáveis e vamos verificar se o mod quatro do cronômetro é igual Se agora colocarmos o bloco I then logo acima do cronômetro de troca em um bloco e rodarmos o jogo, o chefe piscará quando se machucar Ei, pessoal, só uma edição rápida do futuro Eu. Também devemos adicionar um bloco de efeitos gráficos claro ao script de configuração, por precaução. Ok, agora, se derrotarmos o chefe depois que ele atirar um ou dois foguetes, o jogador ainda poderá ser atingido pelos foguetes e poderá morrer antes o chefe caia para o fundo do nível Provavelmente seria melhor se fizéssemos foguetes restantes explodirem assim que o chefe Para fazer isso, vamos ao código do Rocket Sprite. E vamos encontrar o script Quando eu receber o Update One. E aqui, antes de verificar se o clone está tocando o jogador, verificaremos se o chefe está morto e, em caso afirmativo, faremos o clone explodir Então, primeiro, vamos controlar e colocar um bloco IN em algum espaço vazio. Para a condição, vamos primeiro ir até os operadores e introduzir um bloco igual. Em seguida, vamos detectar e colocar como pano de fundo o número de blocos de palco Queremos pegar o sprite boss e escolher uma variável de estado E vamos verificar se é igual a morto. Se sim, vamos até os blocos do MI e trazer um bloco explosivo Para a posição da explosão, usaremos a posição dos clones do foguete Então, vamos às variáveis e usar um bloco X e um bloco Y como entradas Se agora colocarmos isso acima do cheque ao tocar no bloco do jogador, rodarmos o jogo e derrotarmos o chefe depois que ele atirar alguns foguetes, os foguetes explodirão imediatamente sem Tudo bem, e no momento, nada mais acontece depois de derrotarmos o chefe Então, na próxima lição, mostraremos uma tela agradável e alegre. 119. Vencendo o jogo: Na parte superior do script de ação do handle no sprite B, verificamos se o chefe está no estado morto Em seguida, verificamos se sua posição Y caiu abaixo de 300 negativos. Se tiver, transmitimos a mensagem lateral do chefe. Na verdade, ainda não lidamos com essa mensagem. Então, vamos ao pano de fundo e fazer isso. Primeiro, vamos encontrar um espaço vazio. Em seguida, vá para os eventos, traga um bloco de recebimento W e receba o lado do chefe E aqui, eventualmente, tocaremos um som de vitória. Mas, por enquanto, vamos parar o loop do jogo, pausa um pouco e depois desaparecer na tela final Então, primeiro, para interromper o loop do jogo, vamos até Control , inserir um stop block e interromper outros scripts e sprites Em seguida, vamos aguardar um bloco de 1 segundo. Finalmente, para abrir a tela, transmitiremos uma nova mensagem, que será recebida pelo Iscreen Sprite Então, vamos aos eventos, introduzimos um bloco de transmissão e vamos transmitir uma nova mensagem chamada Tela exibida. Ok, agora vamos para a tela N Sprite. O Iscreen Sprite tem apenas uma única roupa, que ocupa todo o palco E codificar o sprite será muito simples. Como o jogo acabou, quando a tela aparece, nem precisamos lidar com a classificação de camadas Só precisamos trazer o sprite da tela para a camada frontal e desaparecê-lo Mas primeiro, quando o jogo começa, é claro que não queremos mostrar a tela, então esconderemos o sprite quando a bandeira verde for clicada Para fazer isso, vamos trazer um bloco clicado com bandeira verde vencedora. Em seguida, vá para Looks e traga um bloco de esconderijo. Também mudaremos o efeito fantasma do sprite. Portanto, para garantir que ele seja reiniciado, podemos incluir um bloco de efeitos gráficos claro. E para garantir que o sprite fique centralizado no palco, podemos entrar em movimento e colocar um bloco de ir para XY usando zero para X e Y. Em seguida, vamos inserir o sprite quando ele receber a mensagem do show na quando ele receber a mensagem do show Então, vamos aos eventos, trazer um bloco quando eu recebo e receber o show na tela. Primeiro, queremos mostrar o sprite. Então, vamos até Looks e traga um bloco de shows. Também queremos trazê-lo para a camada frontal, então vamos trazer um bloco para a camada frontal. Em seguida, faremos com que o sprite comece totalmente transparente e depois desapareça Então, primeiro, vamos adicionar um efeito definido para bloquear e definir o efeito fantasma para 100. Agora vamos controlar, inserir um bloco de repetição e repetir 20 vezes. Finalmente, vamos voltar ao Looks, adicionar um efeito de alteração por bloco ao bloco de repetição e vamos alterar o efeito fantasma por menos cinco. E é isso. Se agora rodarmos o jogo e derrotarmos o chefe, depois de uma breve pausa, a tela desaparecerá. Excelente. Tudo bem E na próxima lição, substituiremos exibição chata da variável de saúde do chefe uma barra de saúde que mostra a saúde atual do chefe 120. Crie a barra de saúde do chefe: Para criar a barra de saúde do chefe, é claro que usaremos a barra de saúde do chefe Sprite Se dermos uma olhada nas roupas dos sprites, primeiro temos um ícone que exibiremos à esquerda da barra de saúde Em seguida, temos uma peça no lado esquerdo da barra de saúde e temos uma versão completa e uma versão vazia. Da mesma forma, temos uma versão completa e vazia da peça central. Criaremos vários clones da peça central para preencher o centro da barra de saúde Finalmente, temos versões completas e vazias do lado direito da barra de saúde. Está bem? E para codificar a barra de saúde Bass Sprite, ela será bastante semelhante ao código do heartsprite Então, podemos começar acessando código do HeartSprite e copiando alguns scripts Vamos começar com o script da camada de classificação. Então, quando eu começo como um clone, crio clones, depois configuro e, finalmente, o script de bandeira verde Agora vamos ao Boss Health Bar Sprite. No script de configuração do Boss Health Bar Sprite, só queremos criar os clones se o nível atual for o nível final Então, primeiro, vamos até Control e vamos enrolar um bloco ITN ao redor do bloco criação de clones e do bloco de troca de trajes Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para as variáveis e verifique se o nível é igual ao nível final. Em seguida, no script create Clone, primeiro queremos criar um clone usando o traje do ícone Então, primeiro, para ir para o bloco XY, vamos para menos 205 e 110 Em seguida, vamos para Looks at a Switch Costume Block logo após ir para o bloco XY e mudar para o ícone Costume. Logo depois disso, vamos até o Control e trazemos um bloco CrakKline of my Em seguida, queremos nos mover um pouco para a direita para começar a criar as peças da barra de saúde. Então, vamos ao movimento, introduzindo uma mudança X por bloco e vamos alterá-la em 28. Em seguida, depois de definir o Índice como um, criaremos um clone para o lado esquerdo da barra de saúde Então, vamos até Looks, traga um bloco de roupas Switch e vamos usar o traje completo do lado esquerdo. Então vamos até Control e trazemos uma caixa clone do bloco Myself Ok. Agora vamos usar o bloco de repetição para criar clones para as peças do meio Então, primeiro, vamos mudar para a roupa correta acessando Looks, colocando um bloco de troca de roupas logo acima do bloco de repetição e mudando para a roupa de saúde no meio. Para o número de repetições, queremos criar peças intermediárias suficientes para compensar a saúde máxima do chefe No entanto, já estamos criando um clone para o lado esquerdo e também criaremos um para o lado direito Então, isso representará duas unidades da saúde do chefe. Portanto, o número de clones da peça intermediária deve ser menor que a saúde máxima do chefe Tudo bem, então primeiro, vamos nos livrar do bloqueio máximo de saúde do jogador da rodada aqui Em seguida, vamos até os operadores e substituí-lo por um bloco de subtração Agora vamos às variáveis e vamos fazer a saúde de Max Boss menos dois Agora, desta vez, queremos criar o clone depois de alterar o índice e a posição Então, vamos mover o bloco create clone of myself para a parte inferior do bloco de repetição E para mudar o X, precisamos que as peças da barra de saúde estejam perfeitamente alinhadas para que não haja espaços entre elas. As roupas das peças da barra de saúde têm exatamente dez pixels de largura. Isso significa que precisamos mudar X por dez. Finalmente, abaixo do bloco de repetição, precisamos criar um clone para o lado direito da barra de saúde Podemos começar duplicando os blocos dentro do bloco de repetição e adicionando-os à parte inferior do script Mas antes de criar um clone de Myself block, queremos ir até Looks, trazer um bloco Switch Costume e mudar para Health do lado direito cheio Tudo bem, agora também precisamos fazer algumas alterações no script When I start as a clone Primeiro, queremos executar o loop forever apenas para clones que são partes da barra de saúde, não para o clone do ícone Então, precisaremos verificar o traje. Para fazer isso, vamos até o Controle e coloque um bloco INN em algum espaço vazio. Para a condição, podemos usar uma duplicata do nome do traje igual a bloco em branco do script de configuração E vamos verificar se é igual ao ícone. Nesse caso, podemos inserir um bloco de parada e interromper esse script. Se colocarmos tudo isso logo acima do bloco eterno, o bloco eterno funcionará apenas para as peças da barra de saúde. Em seguida, vamos salvar que a saúde do jogador é menor do que o bloco de índice aqui e, em seguida, nos livrar de todo o resto dentro do bloco eterno. Agora vamos adicionar um bloco if then ao bloco forever e usar a saúde do jogador menor que o bloco de índice como condição. Mas é claro que queremos mudar a saúde do jogador para a saúde do chefe. Quando a saúde do chefe é menor que o índice de clones, isso significa que precisamos mudar a roupa do clone para a versão vazia da roupa atual Para fazer isso, primeiro precisamos verificar o traje atual do Clone Então, vamos adicionar um bloco ITN s ao bloco ITN. Para a condição, vamos duplicar uma roupa chamada equals E vamos verificar se é igual ao sublinhado de saúde à esquerda, ao lado do sublinhado e ao sublinhado completo, certificando-se de usar a grafia correta Se sim, vamos até Looks, pegue um bloco de roupas Switch e mude para Health no lado esquerdo vazio. Para a parte ts, podemos primeiro trazer uma duplicata do bloco I e depois ts. Para este, vamos verificar se o nome do traje é igual a saúde, sublinhado direito, lado sublinhado, sublinhado completo e, em caso afirmativo, vamos mudar para o lado direito da saúde Se atingir a parte ts desta, significa que o clone é uma peça intermediária Então, vamos trazer outro bloco de roupas do Switch e trocá-lo para Health Meio-Vazio. Tudo bem, agora que a roupa de um clone for trocada para a versão vazia, queremos impedir que o bloco eterno funcione Para fazer isso, vamos até Control e vamos adicionar um bloco de parada logo após o primeiro bloco I thin outs. Queremos ter certeza de que ainda está dentro IBs. A integridade é menor que o bloco de índice e queremos interromper esse script Ok, o código da barra de saúde Boss Sprite deve estar completo Portanto, se rodarmos o jogo, veremos uma barra de saúde completa para o chefe no canto superior esquerdo do palco. E se batermos no chefe, a barra de saúde diminui. Ótimo. No momento, porém, ainda estamos tirando metade da saúde do chefe toda vez que pulamos em cima dele. Então, para corrigir isso, vamos até o código do Boss Sprite, encontre o script check touch player E aqui, vamos mudar a saúde do chefe por menos uma. Lá vamos nós. O chefe agora é muito mais difícil de derrotar. Tudo bem, agora podemos acessar as variáveis e ocultar a variável de saúde do chefe E na próxima lição, finalmente começaremos a adicionar alguns efeitos sonoros e músicas ao jogo. 121. Adicione alguns sons: Quando criarmos a tela de título posteriormente, o player terá opções para ativar desativar a música e os efeitos sonoros Portanto, antes de começarmos a tocar qualquer música ou efeito sonoro, primeiro precisamos ter certeza de que eles estão ativados. Para fazer isso, precisaremos criar algumas variáveis globais. Para a variável music, vamos chamá-la de music on e criá-la para todos os sprites Agora vamos criar outro, ativá-lo e também criá-lo para todos os sprites Vamos mover as exibições de variáveis um pouco para baixo para que elas não bloqueiem os elementos do HUD Quando o player ativa ou desativa a música ou os efeitos sonoros, ele transmitirá uma mensagem que o pano de fundo Então, vamos ver o código do pano de fundo. E aqui vamos escrever o código para alternar a música e os efeitos sonoros Então, primeiro, vamos encontrar um espaço vazio. Então vamos aos eventos e traremos um bloco quando eu receber. Vamos receber uma nova mensagem chamada toggle music. E aqui queremos verificar se a música está ou não ativada no momento. Então, vamos até o Controle e introduzimos um bloco I then s. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se a música ligada é igual a um. Nesse caso, queremos desligar a música trazendo um conjunto para bloquear e colocando a música em zero. Caso contrário, queremos ativá-lo adicionando um conjunto de dois blocos à parte de saídas e colocando a música em um. Agora podemos duplicar o script inteiro e, para este, vamos receber uma nova mensagem chamada Toggle Em vez de ativar a música, queremos verificar se os sons ligados são iguais a um e queremos definir os sons variáveis nos dois blocos do conjunto Tudo bem. Agora, como ainda não temos uma tela de título, também podemos fazer com que pressionar certas teclas alterne a música e os efeitos sonoros Para fazer isso, vamos aos eventos e introduzimos um bloco pressionado com a tecla win. E para música, vamos usar a tecla M. Agora, só precisamos inserir um bloco de transmissão e alternar a música para transmitir Da mesma forma, para os efeitos sonoros, vamos duplicar o script e usar a tecla X. E aqui precisamos transmitir o Toggle Sounds e agora podemos usar as teclas M e X para ativar a música e os sons nas variáveis Ok, agora vamos adicionar alguns efeitos sonoros ao jogo e começaremos com os efeitos sonoros para os sprites dos jogadores Se dermos uma olhada na guia de sons dos sprites dos jogadores, temos um som de toque para quando o jogador se machuca, um som de salto para quando ele pula, um som de boing para quando ele pula sobre um inimigo ou uma plataforma de salto e um som de deslizamento para deslizar por uma ladeira Tudo bem, então no código do sprite do player, antes de tocarmos qualquer um dos sons, primeiro precisamos garantir que os sons estejam Para ajudar com isso, criaremos um bloco personalizado. Então, vamos até Meus blocos e criemos um. Vamos primeiro digitar play sound colon. Queremos informar qual som tocar. Então, vamos adicionar uma entrada, chamá-la de som e clicar em OK. Em seguida, vamos mover o bloco de som do local definido para algum espaço vazio. E aqui, primeiro precisamos garantir que os sons estejam ativados. Então, vamos controlar e introduzir um I e depois bloquear. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se os sons ligados são iguais Nesse caso, podemos reproduzir o som fornecido acessando o som, trazendo um bloco de som de amido e adicionando a entrada de som ao bloco. Tudo bem, agora precisamos descobrir onde tocar cada som Primeiro, para o som de saída, vamos encontrar o roteiro de get hurt. E aqui, após a verificação do bloco morto, se o jogador não estiver morto, tocaremos o som. Então, para verificar se o jogador não está morto, vamos primeiro acessar o Controle e adicionar um bloco fino na parte inferior do script. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se morto é igual a zero. Nesse caso, podemos ir para M Blocks, colocar um bloco de som e usar a palavra Ouch como entrada E agora, desde que os sons ativados estejam definidos como um, sempre que nos machucamos, ele reproduz o som do toque. Ai. Se desativarmos os sons, ele não reproduzirá o Além disso, se ligarmos os sons novamente e morrermos, ele não reproduzirá o som. Isso é bom porque eventualmente tocaremos um som diferente quando o jogador morrer. Ok, a seguir, vamos encontrar o script do Bounce Player. E aqui, quando o segurança for igual a zero, tocaremos o som do Boeing tocaremos Isso acontecerá sempre que pularmos em um inimigo ou saltarmos em uma plataforma de salto Tudo bem, então vamos adicionar um bloco de som de reprodução na parte inferior do bloco If do Bouncer for igual E vamos tocar o som do Boeing. Se agora pularmos em um inimigo ou em uma plataforma de salto, ele tocará o som do Boeing Conde Earl. Em Barilla. Sendo atingidos por uma massa inimiga, ainda tocaremos o som Ouch Fora. Em seguida, vamos encontrar o slide no Slope Script Na parte inferior do script, onde estamos transmitindo a mensagem de criar efeito de slide de inclinação, podemos inserir um bloco de som local e reproduzir o som do slide E agora, quando deslizamos por uma ladeira, ele reproduz o som do slide Finalmente, vamos encontrar o script de movimento vertical da alça. No I jumping está a menos de sete quarteirões, vamos colocar um bloco de som e vamos tocar o som do salto No momento, porém, isso reproduzirá o som várias vezes cada vez que pularmos. Isso ocorre porque ele continua jogando até que o salto não seja mais do que sete Para corrigir isso, só queremos reproduzir o som do salto quando o salto é um deles Então, vamos até Control e enrolamos um bloco ITN ao redor do bloco de som local Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se pular é igual a um. Agora, o som do salto só será reproduzido uma vez a cada vez que pularmos. Tchau. OK. Incrível. Em seguida, tocaremos um som sempre que o jogador coletar uma moeda Para fazer isso, vamos primeiro encontrar o roteiro sonoro do play. E vamos copiá-lo para o sprite da moeda. Se estiver na linha inferior do painel do sprite, talvez precisemos arrastá-lo uma linha acima antes de podermos copiar os scripts Ok, agora vamos aos sprites das moedas. O sprite da moeda tem um som de coleção. E para jogar, vamos encontrar o script do Check Touching Player Antes de excluir o clone aqui, vamos até o Mbloxs, pegue um bloco de som de reprodução e toque o som reprodução e Agora, o som será reproduzido sempre que coletarmos uma moeda. Urso. Continuando, vamos copiar o script sonoro do lugar para o sprite chave Em seguida, vá até a chave Sprite. O sprite de teclas também tem um som de coleta. E, como acontece com as moedas, queremos reproduzir o som antes de excluir o clone no script do player check touch. Em seguida, vamos copiar o script de som do local no Sprite de pausa O Sprite de pausa tem um clique em Sound, que será reproduzido sempre que o jogador clicar botão Zoom ou no botão Sair na sobreposição Ok, então no código, vamos encontrar a vitória desse Sprite, clique em script E aqui, antes de transmitir a mensagem do jogo Zoom, vamos trazer um bloco de som de reprodução e reproduzir o som do clique E vamos fazer o mesmo antes do bloco de jogo rápido. Também podemos fazer isso no bloco de pressionamento da tecla Win Space antes de transmitir o jogo Resume Agora vamos garantir que tudo funcione corretamente. Ótimo. Em seguida, vamos copiar o roteiro sonoro do lugar para os sprites da explosão O sprite de explosão tem um som de explosão, que será reproduzido sempre que uma explosão for criada Então, vamos encontrar o script W que recebi do Create Explosion. E depois do bloco Create Clone, vamos colocar um bloco de som e tocar o som Explode Para testar isso, precisamos ir para o nível quatro. E sempre que um foguete explode, ele emite o som de explosão Sim. Sim. Sim. Tudo bem, agora vamos copiar o roteiro de som do play para o sprite Boss O chefe sprite tem um som grunhido. Vamos jogar isso sempre que ele for atingido pelo jogador. Então, vamos encontrar o cheque tocando no script do player. Vamos tocar o som quando o chefe se machucar e quando ele morrer. Então, vamos adicionar um bloco de som de reprodução acima do bloco ITN, onde verificamos se o chefe está sem saúde e vamos tocar o som grunhido Se agora pularmos em cima do chefe, ele tocará o som de grunhido. Por. Por. Também temos alguns sons para tocar no pano de fundo. Então, vamos primeiro copiar o roteiro sonoro do local. Em seguida, vá para o pano de fundo. Para os sons de fundo, temos um som de início de jogo, que tocaremos ao iniciar o jogo, mas esperaremos para usá-lo depois de criar a tela de título Em seguida, temos o som do vento. Para quando o jogador vence o jogo, o som de perda para quando ele morre e o som de nível final para quando ele passa por uma saída e termina um nível. Também temos dois sons musicais, mas lidaremos com eles na próxima lição. Ok, então vamos ao código. Primeiro, e quando eu receber player dide antes de esperar e transmitir o nível inicial, vamos colocar um bloco de som de reprodução e tocar o som Lose Agora, se morrermos, ele tocará o som Lose. Fora. Fora. Em seguida, e quando eu receber o nível final, antes de transmitir o nível inicial, vamos colocar um bloco de som e tocar o nível final de sublinhado Se agora passarmos por uma saída de nível, ela reproduzirá o som do nível final. Finalmente, vamos descobrir quando recebi a morte de Boss. E aqui, antes de esperar e mostrar a tela final, vamos colocar um bloco de som e tocar o som da vitória. Se agora derrotarmos o chefe, ele tocará o som da vitória. Ok, até criarmos a tela de título, terminamos de adicionar efeitos sonoros por enquanto. Então, na próxima lição, adicionaremos um pouco de música. 122. Adicione alguma música: Se formos até a guia de sons para ver o pano de fundo, vimos anteriormente que temos dois sons para a música. Música alegre. E música de chefe. Tocaremos músicas alegres nos níveis um, dois e três, e tocaremos músicas contra chefes durante as lutas contra chefes e o nível quatro. Ok, agora vamos voltar ao código. Vamos tocar a música usando um bloco personalizado. Então, nos meus blocos, vamos clicar em Criar um bloco. Vamos chamar isso de tocar música. E queremos ter certeza de não marcar Executar sem atualizar a tela Tudo bem, vamos clicar em OK e encontrar um espaço vazio para o roteiro da música E aqui queremos tocar a música continuamente até que ela termine. Então, primeiro, vamos controlar e introduzir um bloco eterno. Em seguida, verificaremos o nível atual. Se for o nível final, tocaremos a música do chefe. Caso contrário, tocaremos a música alegre. Então, vamos adicionar um bloco de ENTRADAS e saídas ao bloco eterno. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para as variáveis e verifique se o nível é igual ao nível final. Agora vamos ao som e vamos adicionar um som de reprodução até Don Block em cada parte. Na parte “se”, queremos tocar músicas para chefes, e na parte externa, queremos tocar músicas alegres. Tudo bem, e queremos que a música comece a tocar quando o jogador clicar na bandeira verde Então, vamos encontrar o script da bandeira verde. Na parte inferior, tocaremos a música. Mas primeiro, vamos esperar um pouco acessando Controle e introduzindo um bloco de espera de 1 segundo. Então vamos ao mBlock e trazer um bloco de reprodução de música. Se rodarmos o jogo agora, depois de 1 segundo, a música começa a tocar. , se terminarmos um nível Porém, se terminarmos um nível, a música para e não recomeça quando o próximo nível começa. Isso ocorre porque no script do nível final, estamos interrompendo os outros scripts e a reprodução do som até que Don Block realmente execute seu próprio script, então ela também é interrompida. , precisamos interromper os outros scripts entanto, precisamos interromper os outros scripts, porque precisamos interromper o loop do jogo. Então, no final do roteiro, podemos começar a música novamente. Mas primeiro vamos esperar um pouco indo até o controle, introduzindo um bloco de espera, e vamos esperar 2 segundos. Então vamos voltar aos meus blocos e trazer um bloco de música para tocar música. Agora, quando terminarmos um nível, a música recomeçará quando o próximo nível começar. A música também para quando o player morre. Isso ocorre porque também precisamos interromper os outros scripts no script When I receive player died. Então, o que podemos fazer é duplicar a espera de 2 segundos e tocar blocos de música no script do nível final e adicioná-los à parte inferior do script de morte do jogador Agora, se morrermos, O. O. A música recomeça quando o nível é reiniciado Ok, se passarmos para o nível quatro, ele toca a música do chefe agora, o que é muito legal. No entanto, quando derrotamos o chefe e a tela aparece, atualmente não há música tocando. Eu acho que seria bom voltar a tocar a música alegre. Para fazer isso, vamos encontrar o roteiro do chefe morto. Na parte inferior do script, vamos primeiro acessar o Controle, inserir um bloco de espera e esperar 3 segundos. Em seguida, vamos ao MyBlock e trazemos um bloco de reprodução de música. Se tentarmos fazer isso agora, porém, quando a tela aparecer, ela começará a tocar a música do chefe novamente. Isso ocorre porque a variável de nível ainda está definida para o nível quatro. Se quisermos tocar uma música alegre, precisamos definir o nível para outra coisa. Para fazer isso, vamos às variáveis e adicionamos um conjunto de dois blocos antes do bloco de reprodução de música no script Bos d e vamos definir o nível como um. Agora, ele tocará a música alegre quando a tela final aparecer. Tudo bem, agora, no momento, ativar e desativar a música na variável não afeta a música Para corrigir isso, vamos encontrar o script alternância de música quando eu receber Primeiro, ao colocar a música em zero aqui, também queremos parar a música. Infelizmente, porém, não podemos realmente parar um determinado som e arranhar. Então, em vez disso, precisamos interromper todos os sons atuais acessando o som e interrompendo todos os sons. Em seguida, na parte externa, a música foi ligada, então queremos tocar a música novamente indo ao Mbloxs e trazendo um bloco de play music Se rodarmos o jogo agora e tentarmos desligar a música, ela realmente não A música simplesmente reinicia. Isso ocorre porque no script play music, que está em execução para sempre, assim que ele vê que a música não está tocando no momento, ele imediatamente começa a tocar a música. Para corrigir isso, queremos interromper o script quando a música for desligada. Para fazer isso, vamos primeiro acessar o Controle e colocar um bloco ITN em algum espaço vazio Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se a música ligada é igual Se sim, vamos controlar, colocar um bloco de parada e interromper esse script. Se agora colocarmos isso no topo do bloco eterno, a alternância de música funcionará corretamente Ok, outra coisa que podemos fazer é, ao pausar o jogo, silenciar os sons e reativá-los quando o jogador retomar o Para fazer isso, vamos descobrir quando recebo o jogo de pausa e quando recebo o RezoomGame Para pausar o jogo, vamos tocar o som, colocar um volume definido em dois blocos e configurá-lo para 0% E para o RezoomGame, vamos configurá-lo para 100%. Agora não ouviremos nenhuma música quando pausarmos o jogo. E ouviremos isso novamente quando o jogo recomeçar. Tudo bem, agora que sabemos que a alternância de áudio está funcionando corretamente, podemos acessar as variáveis e ocultar a música e os sons ativados Em seguida, criaremos a tela de título. 123. Crie a tela de título: No script de bandeira verde para o pano de fundo, em vez de iniciar imediatamente o primeiro nível transmitindo o nível inicial, abrimos abrimos título transmitindo uma mensagem na tela de título do programa Então, quando o jogador clicar no botão jogar na tela de título, transmitiremos uma mensagem de início do jogo, que o pano de fundo receberá e iniciaremos o primeiro nível No entanto, se tivermos o Modo Deus ativado, provavelmente não queremos ver a tela de título toda vez que clicarmos na bandeira verde. Então, quando o Modo Deus estiver ativado, iniciaremos o jogo imediatamente. Caso contrário, mostraremos a tela de título. Tudo bem, então primeiro, vamos separar os três blocos inferiores, começando do nível inicial da transmissão, e deixá-los de lado, pois os usaremos em outro lugar daqui a pouco seguida, em vez de um bloco Eu acho que para verificar o modo Deus, precisaremos de um bloco Eu acho que é. Vamos salvar o modo Deus igual zero bloco e definir o nível para um bloco, livrar-se do bloco I thin, depois ir para Control, trazer um bloco I thin s e usar o modo Deus igual a zero como condição Vamos adicionar o bloco de nível definido às partes I. Também mostraremos a tela de título na parte F indo a eventos, trazendo um bloco de transmissão e transmitindo uma nova mensagem chamada Mostrar tela de título Podemos então começar a música aguardando 1 segundo e tocando os blocos de música que salvamos aqui. Agora, na parte Es, Modo Deus está ativado, então começaremos imediatamente o jogo no nível atual. Para fazer isso, vamos criar um bloco de transmissão e transmitir uma nova mensagem chamada Start Game. Ok, agora precisamos lidar com a mensagem de início do jogo. Então, primeiro, vamos trazer um bloco de vitória que recebo para algum espaço vazio. E vamos receber o Start Game e aqui tocaremos o som Start Game e, em seguida, iniciaremos o nível. Mas primeiro, vamos até Control, introduzir um bloco Stop e interromper outros scripts e sprites Isso serve principalmente para interromper qualquer música que possa estar tocando. Ok, agora vamos até My Blocks, coloque um bloco de som e vamos tocar o som do jogo Start underscore Então, podemos trazer o bloco de nível inicial da transmissão que salvamos aqui. Depois disso, queremos esperar um pouco depois começar a música. Assim, podemos duplicar a espera 1 segundo e tocar blocos de música daqui de cima E vamos esperar 2 segundos dessa vez. Tudo bem, agora, no momento, se clicarmos na bandeira verde com o Modo Deus desativado, nada acontece, exceto que a música começa tocar porque ainda não temos uma tela de título E se ativarmos o Modo Deus e clicarmos na bandeira verde, ele executará o script Iniciar jogo, reproduzindo o som Iniciar jogo e iniciando o nível. Ok, vamos desligar o Modo Deus novamente e, em seguida, criaremos a tela de título usando o sprite da tela de título aqui Se dermos uma olhada em suas roupas, temos todas as roupas necessárias para criar a tela de título, incluindo BG para o plano de fundo, o título, uma animação de sete quadros para Quando o botão Play está ativo. Uma fantasia para quando o jogador clica no botão play para ligar e desligar roupas para os botões de música e sons e um painel de áudio, que será um contêiner para os botões de música e sons Tudo bem, agora vamos para a guia de código. Como a tela de título não aparecerá durante o jogo real e porque usaremos um único sprite para todas as partes da tela de título, não precisamos nos preocupar em classificar as camadas Ok, e criaremos os clones sempre que o sprite receber a mensagem da tela de título do programa Então, primeiro, vamos aos eventos, traga um bloco Quando eu recebo e receba a tela de título do programa. A primeira coisa que queremos fazer é mostrar o sprite. Então, vamos até Looks e traga um bloco de shows. Também queremos que ele apareça acima de tudo que possa estar no palco. Então, vamos dar uma olhada no bloco da camada frontal. Em seguida, começaremos a criar os clones e queremos começar com o clone de fundo para que ele apareça atrás dos outros Então, vamos trazer um bloco de roupas Switch e mudar para o traje BG. Esse clone precisa estar centralizado no palco. Então, vamos para o movimento , vamos para o bloco XY e vamos para 00. Agora vamos criar o clone acessando Control e trazendo um clone crítico do O próximo clone que criaremos é o clone Title. Para fazer isso, podemos primeiro duplicar os três blocos, começando com a roupa de troca para bloco BG e adicionando-os ao final do script Para o traje, vamos usar o título, e para a posição, vamos usar zero para X e 110 para Y. Em seguida, vamos usar o botão play Então, vamos duplicar os três blocos inferiores. Mude para o botão play até zero e vá para zero menos dez. Agora, criaremos o painel de áudio e os botões de alternância de áudio na parte inferior direita da tela e precisaremos começar com o painel para que ele apareça atrás dos Então, primeiro, vamos duplicar os três blocos inferiores, mudar para o traje do painel de áudio e ir para 140 negativos 135 Vamos duplicar novamente, ative o botão de música e vá para 220 negativos 120 Vamos duplicar mais uma vez. Ative o botão de sons e vá para 220, menos 150. Finalmente, queremos transformar o traje original dos Sprites no traje em branco Então, vamos até Looks, traga um bloco de roupas Switch e mude para branco. Se agora rodarmos o jogo, todos os clones da tela de título aparecerão e a música começará Ok, agora vamos fazer os botões funcionarem quando o jogador clicar neles. Para começar, vamos aos eventos e venceremos este bloco clicado pelo Sprite E aqui, é claro, faremos coisas diferentes dependendo de qual clone está sendo clicado Então, primeiro, vamos até Control e introduzimos um bloco ITN. Bem, primeiro verifique se o clone está usando uma fantasia de botão Play Mas como play button up é uma animação, precisaremos verificar se o nome do traje do Clone contém o botão play de cordas Para fazer isso de acordo com a condição do bloco ITN, vamos até os operadores e trazer um bloco de contenção Então vamos para Looks. Use um bloco de fantasias como primeira entrada. E vamos verificar se o nome do traje contém o botão play underscore, underscore up Nesse caso, queremos mudar para a roupa com o botão Play, então vamos trazer um bloco de troca de roupa e mudar para o botão Play. Se acessarmos a guia Sons bem rápido, o sprite da tela de título terá um som de clique, que será reproduzido sempre que o jogador clicar em um No entanto, primeiro precisamos acessar o código de outro sprite que reproduz sons como o Boss Sprite e copiar o script de reprodução do som Mas primeiro, precisaremos arrastar sprite da tela de título uma linha acima no painel de sprites. Tudo bem Agora vamos voltar para a tela de título Sprites. E se estivermos clicando no botão Play, queremos acessar o Mbloxs, trazer um bloco Play Sound e tocar o clique em Por fim, queremos começar o jogo indo aos eventos, trazendo um bloco de transmissão e transmitindo o Start game Quando isso acontece, porém, também queremos excluir todos os clones da tela de título Faremos isso quando os clones receberem a mensagem de início do jogo Então, primeiro, vamos colocar um bloco W que recebi em algum espaço vazio e vamos receber o Start game. Nós vamos ter algumas animações e outras coisas mais tarde. Então, vamos pará-los primeiro acessando Control, introduzindo um stop block e interrompendo outros scripts e sprites Depois disso, faremos uma pausa. Então, vamos colocar um bloco de espera e esperar 2 segundos. Finalmente, vamos excluir esse bloco de clones. Se agora rodarmos o jogo e clicarmos no botão Jogar, ele mudará para a roupa de baixo e, após alguns segundos, a tela de título desaparecerá e o jogo começará. Tudo bem, agora vamos fazer os botões de música e som funcionarem Cada um desses botões pode ter duas roupas possíveis, uma para vestir e outra para desligar. E queremos fazer a mesma coisa de qualquer maneira. Portanto, para o botão de música, podemos primeiro duplicar o nome do traje que contém o botão Play uplock, adicioná-lo ao final do script e verificar se ele contém a Na verdade, não vamos trocar a roupa aqui porque é possível que o jogador alterne a música pressionando a Portanto, precisaremos verificar continuamente o valor da música em uma variável e alterar o traje dos botões de música de acordo. Então, vamos nos livrar do bloco de fantasias do Switch. E para a música, queremos transmitir a mensagem de alternar música Da mesma forma, para o botão Sons, vamos primeiro duplicar o nome do traje Eu contém o bloco de música, verificar se ele contém sons e transmitir sons de alternância Tudo bem, a seguir, depois que os clones dos botões de música e sons forem criados, queremos definir continuamente suas roupas acordo com os valores da música ativada e dos sons nas variáveis Para fazer isso, primeiro precisamos iniciar um quando eu começar como um script de clone E aqui, como queremos verificar continuamente os valores, vamos criar um bloco eterno. Começaremos verificando se é o clone do botão de música. Então, vamos primeiro inserir um bloco se, então. E para a condição, vamos usar uma cópia do nome do traje que contém o bloco de nome do traje que contém o música de quando esse Sprite Agora vamos trocar o traje dependendo do valor da música na variável. Vamos trazer um bloco I e depois s. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vá para variáveis e verifique se a música ligada é igual a um. Nesse caso, a música está ligada, então vamos até Looks, coloque um bloco de troca de roupas e mude para o botão de música na fantasia. Caso contrário, mudaremos para o botão de música do traje. Para o botão de sons, vamos primeiro duplicar todo o bloco de música que o nome do traje contém e adicioná-lo à parte inferior do bloco para sempre Vamos verificar se ele contém sons e verificar se os sons ligados são iguais Em caso afirmativo, vamos ativar o botão Sons. Caso contrário, vamos desligar o botão Sons. Ok, se agora rodarmos o jogo, podemos usar os botões de música e sons para alternar o áudio Também podemos usar as teclas M e X, e as roupas mudarão de acordo. Tudo bem, para melhorar um pouco a tela de título, podemos fazer com que passar o mouse sobre um dos botões tenha uma animação de crescimento suave, junto com uma animação de redução quando nos afastarmos Também podemos fazer isso no bloco Fever do script When I start as a clone No entanto, queremos fazer isso apenas para os clones dos botões, não para o plano de fundo ou título Então, o que podemos fazer é primeiro acessar o Controle e enrolar um bloco ITN ao redor do bloco eterno Para a condição, podemos trazer uma cópia de uma roupa chamada contém bloco e verificar se ela contém a palavra botão Esse será o caso do botão play e dos dois botões de áudio. Em seguida, verificaremos se o jogador está ou não passando o mouse sobre o botão Para fazer isso, vamos pegar um bloco I thin out e colocá-lo na parte inferior do bloco forever abaixo dos dois blocos ITN. Para a condição, vamos detectar e inserir um bloco tocante de ponteiro do mouse Faremos com que o botão cresça até 120% nas partes “if” e diminua para 100% nas partes externas. Na verdade, já fizemos isso antes nos dois jogos anteriores. Então, como desafio, gostaria que você pausasse o vídeo agora e veja se consegue fazer as animações de crescimento e redução funcionarem Como dica, tudo o que precisamos são alguns Byblocks de mudança de tamanho e um pouco de matemática Tudo bem, então primeiro, vamos para Looks e adicionar uma alteração de tamanho por bloco cada parte do bloco I then outs. Agora vamos aos operadores, adicione um bloco de divisão a cada bloco de alteração de tamanho. Em seguida, use um bloco de subtração como a primeira entrada de cada bloco de divisão Agora vamos voltar para Looks. E para a parte I, vamos fazer 120 menos o tamanho dividido por dois E lembre-se de que o número pelo qual dividimos controla a velocidade da animação. Para que a parte ts reduza o tamanho para 100%, vamos fazer 100 menos o tamanho dividido por dois Tudo bem, se rodarmos o jogo agora, o botão play e os botões de áudio aumentam e diminuem à medida que passamos o mouse sobre eles e nos afastamos Mas acho que 120% é um pouco demais para os botões de áudio. Fazer com que cresçam apenas até 110% pode ser melhor. Para fazer isso, usaremos apenas 120% para o botão play. Caso contrário, usaremos 110%. Então, primeiro, vamos controlar e pegar um bloco, se estiver mais fino, e vamos enrolar a parte I ao redor do bloco de alteração de tamanho para as partes em crescimento. Para a condição, vamos trazer uma cópia do nome de uma fantasia que contém um bloco e vamos verificar se ela contém o jogo de palavras Caso contrário, deve ser um botão de áudio. Então, vamos duplicar o bloco de alteração de tamanho e adicioná-lo às partes externas Mas desta vez, vamos fazer 110 em vez de 120. E agora os botões de música e sons não crescerão tanto quanto o botão play. Tudo bem, outra maneira de melhorar a tela de título é fazendo com que todos os clones, exceto o plano de fundo, apareçam quando a tela aparecer pela primeira Como nosso script atual, quando eu começo como um script de clone, já é bem longo, vamos começar um novo para isso E aqui, primeiro queremos ter certeza de que o clone não é o clone de fundo Então, vamos inserir um bloco se, então. Para a condição, vamos até os operadores e trazer um bloco não, depois trazer um bloco igual. Agora vamos para Looks, adicione um bloco de fantasias ao bloco de iguais. E vamos verificar se o nome do traje não é igual a BG. Se for esse o caso, faremos com que o clone comece transparente e depois desapareça Para fazer isso, vamos primeiro adicionar um efeito definido de dois blocos e definir o efeito fantasma para 100. Agora vamos esperar um pouco indo até o controle, trazendo um bloco de espera e esperando 0,5 segundos. Para inserir o clone, vamos inserir um bloco de repetição e repetir 25 vezes Então, vamos para Looks, adicione um efeito de alteração por bloco ao bloco de repetição e altere o efeito fantasma em menos quatro. Se agora rodarmos o jogo, primeiro veremos apenas o plano de fundo da tela de título e, em seguida, as outras partes aparecerão Incrível. Ok, agora também precisamos fazer a animação dos botões de reprodução funcionar. A animação fará com que uma linha branca desça pelo botão, criando um belo efeito brilhante. Faremos isso da mesma forma quando eu começar como um script de clone. Primeiro, queremos ter certeza de que é o clone do botão play e que está usando uma fantasia de play button up Então, vamos até Control e introduzimos um bloco de entrada. E para a condição, vamos usar uma duplicata do nome do traje que contém o bloco Play do botão U do script da tela de título do programa Queremos que a animação seja executada continuamente. Então, vamos criar um bloco eterno. O clone começará usando o botão Play up zero costume, então, para animá-lo, podemos passar pelas próximas seis roupas começar novamente com a primeira Para fazer isso, vamos adicionar um bloco de repetição ao bloco eterno e vamos repetir seis vezes. Em seguida, vamos até Looks e adicionaremos um próximo bloco de fantasias ao bloco de repetição. Depois que o bloco de repetição terminar, vamos colocar um bloco de troca de roupas e voltar para jogar com o botão zero. E agora o botão play será animado. Mas acho que a animação reinicia um pouco cedo demais. Para criar um atraso, podemos acessar o controle em um bloco de espera logo acima do bloco de repetição e esperar 2 segundos. Isso é melhor. Ok, mais uma maneira de melhorar a tela de título é fazer com que o título se incline para frente e para trás da mesma forma que fizemos com o título em Cosmic Para fazer isso, precisaremos usar a trigonometria e fornecer Então, primeiro, vamos às variáveis e criaremos uma nova variável. Vamos chamá-lo de ângulo e criá-lo apenas para esse sprite, e não precisamos mostrá-lo Ok, agora, na parte inferior do script Quando eu começo como um clone, verificaremos se é o clone do título Então, vamos até o Controle e introduzimos um bloqueio “se então”. Para a condição, podemos usar uma duplicata do nome do traje igual E verifique se é igual ao título. Em seguida, vamos inicializar o ângulo acessando as variáveis, trazendo um conjunto para bloquear e definindo o ângulo como zero Tudo bem, agora queremos que a inclinação aconteça continuamente. Então, vamos controlar e criar um bloco eterno. Para girar o clone, vamos primeiro entrar em movimento e inserir um bloco de ponto e direção E aqui faremos a mesma coisa que fizemos com o título cosmic havoc Vamos pegar o seno do ângulo, multiplicá-lo por um valor maior para que ele gire mais e, em seguida, adicionaremos 90 para a Ok, então vamos aos operadores e primeiro coloque um bloco de adição dentro do bloco de ponto e direção, depois coloque um bloco de multiplicação no lado esquerdo Agora vamos colocar um abs de bloco no lado esquerdo do bloco de multiplicação e usar a função SN Então vamos às variáveis e vamos fazer o seno do ângulo vezes dois mais 90. Em seguida, precisamos aumentar o ângulo. Então, vamos fazer uma mudança por bloco e mudar o ângulo, digamos, dois. E como os valores dos senos se repetirão quando o ângulo atingir 360, podemos manter o valor do ângulo de 0 a E como já fizemos isso várias vezes antes, também vou dar isso a você como um desafio. Ok, então para fazer isso, vamos colocar um bloco de ângulo definido. E para a entrada, vamos até os operadores e trazer um bloco de modificação. Finalmente, vamos voltar às variáveis e fazer o mod de ângulo 360. Se começarmos o jogo agora, o título se inclinará para frente e para trás Agora, para a conveniência do jogador, também podemos fazer com que pressionar a tecla de espaço inicie o jogo. Para fazer isso, vamos aos eventos e insira um bloco pressionado com a tecla de espaço premida. E aqui podemos fazer exatamente o que estamos fazendo no script de clique do Win This Bright, verificando se o nome do traje contém o botão play up, depois alternando para o traje do botão play down, reproduzindo o som do clique e transmitindo o início do jogo Então, primeiro, vamos duplicar tudo no script. Livre-se dos outros dois blocos, se for o caso, e coloque este no script de pressionamento da tecla Win Space. Agora, pressionando a tecla Espaço na tela de título, iniciaremos o jogo. Ok, e uma última coisa. Se abrirmos a sobreposição de pausa, clicar no botão Sair do jogo ainda interrompe o jogo inteiro Em vez disso, o que podemos fazer é reativar a tela de título. Para fazer isso, vamos primeiro acessar o código do Pause Sprite e encontrar o script de clique W this Sprite Na parte inferior, quando o botão de sair é clicado, estamos transmitindo a mensagem de encerramento do jogo Estamos recebendo essa mensagem em segundo plano e, se acessarmos o código do plano de fundo e descobrirmos quando eu receber sair do jogo, no momento estamos interrompendo todos os scripts Então, primeiro, em vez de interromper todos os scripts, vamos interromper outros scripts no sprite para interromper o loop do jogo Além disso, como abrir a sobreposição de POS define o volume para 0%, queremos ajustá-lo de volta para 100% Então, vamos tocar o som e adicionar um volume definido para 100 blocos ao script de encerramento do jogo. Em seguida, queremos recomeçar o jogo a partir do nível um. Então, vamos às variáveis, trazendo um conjunto para bloquear. E defina o nível como um. Então, vamos esperar um pouco acessando Control e trazendo um bloco de espera de 1 segundo. Depois disso, queremos abrir a tela de título, esperar mais um segundo e começar a música novamente. Então, primeiro, vamos aos eventos, introduzimos um bloco de transmissão e a tela de título do programa de transmissão. Em seguida, vamos voltar ao Controle e inserir outro bloco de espera de 1 segundo. Finalmente, vamos até My Blocks e trazer um bloco de play music. Ok, se rodarmos o jogo agora, a música realmente não tocará. Isso acontece porque o volume ainda está definido como 0% em relação a quando mencionamos anteriormente a sobreposição de POS Para garantir que isso não aconteça novamente, vamos ver o script da bandeira verde. Em seguida, vamos tocar o som e adicionar um volume definido a 100 blocos próximo ao topo dos scripts. Se rodarmos o jogo novamente, a música começará. , clicar no botão Sair do jogo na sobreposição de pausa traz a tela de título de volta junto com a Excelente. Mas há um problema que temos. Se jogarmos o jogo e perdermos um pouco de saúde , saia do jogo e jogue novamente. Estamos começando com menos do que o máximo de saúde. Para corrigir isso, vamos encontrar o script inicial do jogo. E aqui, antes do nível inicial de transmissão, podemos acessar as variáveis, adicionar um conjunto para bloquear e definir a saúde do jogador para a saúde máxima do jogador Isso garantirá que o jogador sempre tenha máximo de saúde no início do jogo. Ah. Tudo bem, estamos muito perto de terminar o jogo agora No momento, porém, quando o jogador joga pela primeira vez, ele não tem como saber que precisa coletar todas as moedas do nível atual para avançar para o próximo. E eles definitivamente não saberão por que precisam coletar as moedas. Então, na próxima lição, exibiremos uma sobreposição de texto no início do primeiro nível com algumas informações sobre o que está acontecendo e o que o jogador precisa fazer E faremos o mesmo antes da luta contra o chefe no nível final. 124. Corrigir o problema da bandeira verde: Antes de prosseguirmos com a criação da sobreposição de texto, há uma coisa um pouco irritante que você deve ter notado enquanto joga o jogo agora Se clicarmos na bandeira verde, enquanto a tela de título estiver sendo exibida, veremos brevemente o traje de fundo e os sprites do jogador antes que o plano de fundo da tela de título apareça Isso não causa problemas com o jogo, mas é um pouco chato e é muito fácil de corrigir Não tenho certeza do porquê, mas a falha é causada por ter o volume definido para 100 blocos no script da bandeira verde do pano de fundo Acho que o motivo é que o bloco leva um quadro inteiro para ser executado. Portanto, os blocos restantes no script precisam esperar até que o próximo quadro seja executado. Mas de qualquer forma, para corrigir isso, tudo o que precisamos fazer é ir aos eventos e trazer outro quando a bandeira verde clicar em bloquear Em seguida, mova o bloco de volume definido para o novo script de bandeira verde. Colocá-lo dentro de seu próprio script de bandeira verde evitará que ele interfira com os blocos do outro E agora, cada vez que clicarmos na bandeira verde, ela mostrará imediatamente o fundo da tela de título. 125. Crie a sobreposição de texto: Para criar a sobreposição de texto, usaremos o sprite de sobreposição de texto Mas primeiro, precisamos informar ao sprite quando mostrar a exibição e faremos isso no código do pano de fundo Agora, não queremos mostrar a sobreposição de texto se o modo Deus estiver ativado Além disso, só queremos mostrá-lo quando o jogador inicia o primeiro nível ou o nível final pela primeira vez. Se eles morrerem e o nível recomeçar, seria irritante mostrar a sobreposição de texto Então, o que faremos é usar uma variável global para armazenar se a sobreposição de texto deve ou não ser mostrada Para fazer isso, vamos primeiro acessar as variáveis e criar uma nova. Vamos chamá-lo de mostrar texto, e podemos seguir em frente e ocultar a variável. Queremos mostrar a sobreposição de texto na primeira vez que o jogador inicia o nível um Esse será o caso quando o script de início do jogo for executado e o modo Deus estiver desativado. Aqui, primeiro queremos verificar se o modo Deus está desativado e, em caso afirmativo, definiremos mostrar texto como um. Então, primeiro, vamos ao Controle e coloque um bloco ITN em algum espaço vazio Para a condição, podemos usar uma duplicata do bloco good mode equales zero do script de bandeira verde Agora vamos às variáveis, adicionar um conjunto de dois blocos ao bloco I thin e definir showtext como um E vamos colocar tudo isso logo acima do bloco do nível inicial da transmissão. Em seguida, no script do nível inicial, depois de entrar e esperar meio segundo, verificaremos se showtext é igual a um verificaremos se showtext é igual Nesse caso, solicitaremos ao sprite de sobreposição de texto que mostre o texto transmitindo Em seguida, esperaremos até mostrar texto igual a zero, que acontecerá quando o jogador terminar de ler o texto, então começaremos a executar o loop do Ok, então primeiro, vamos ao Controle e adicionar um bloco fino I logo após o bloco de peso de 0,5 segundos. E queremos retirar todos esses blocos e fixá-los na parte inferior do bloco I thin. Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se mostrar texto é igual Nesse caso, primeiro esperaremos um pouco mais acessando o controle, inserindo um bloco espera e esperando 0,5 segundo. Agora vamos aos eventos, introduzimos um bloco de transmissão e vamos transmitir uma nova mensagem chamada Mostrar texto. Em seguida, queremos esperar até que a variável show text se torne zero. Então, vamos até o Controle e aguarde até o bloqueio. E para a condição, vamos usar uma duplicata de mostrar texto igual a um bloco e alterá-la para mostrar texto igual a zero Finalmente, vamos colocar mais um bloco de espera e esperar mais 0,5 segundos. Tudo bem, então definir mostrar texto um no script de início do jogo encarrega de mostrar a sobreposição de texto na primeira vez que o nível um Mas também queremos fazer o mesmo para o nível final. Para fazer isso, vamos encontrar o script do nível final. E aqui, depois de mudar o nível, podemos verificar se é o nível final. Esse será o caso quando o jogador terminar o nível três, iniciando o nível final pela primeira vez Então, precisamos mostrar a sobreposição de texto. Ok, então vamos primeiro colocar um bloco se, então em algum espaço vazio. Para a condição, queremos verificar se é o nível final e também garantir que o modo Deus não esteja ativado. Então, vamos até os operadores e primeiro introduzimos um bloco e. Em seguida, use um bloco igual para cada lado. Agora vamos às variáveis e vamos verificar se o nível é igual ao nível final e o modo bom é igual Nesse caso, vamos criar um conjunto para bloquear e definir mostrar texto como um. Tudo bem, agora vamos colocar tudo isso no script do nível final antes que o nível I seja maior que o bloco do nível final E, na verdade, para evitar ter que reorganizar todos esses scripts, vou transformar esse bloco I thin em dois blocos aninhados, ainda que finos Para fazer isso, vou até Control e envolvo um novo bloco I thin ao redor do bloco de texto set show. Então eu vou usar o modo Deus igual ao bloco zero aqui para a condição Agora vou retirar o bloco de nível igual ao nível final aqui, me livrar do bloco e usar apenas o bloco de nível igual ao nível final como E agora eu só preciso mover esses scripts para cá. Ok, agora podemos entrar no sprite de sobreposição de texto e realmente criar a sobreposição de texto Primeiro, vamos dar uma olhada nas roupas. A sobreposição de texto será bastante semelhante à sobreposição de Pis, com um traje preto de BG que ficará parcialmente transparente, bem como um traje de painel que usaremos como recipiente Também temos um botão continuar no qual o jogador pode clicar para mostrar a próxima parte do texto. Em seguida, temos três trajes de texto inicial, que usaremos para o texto no Nível um, e temos dois trajes de texto final para o nível final. Tudo bem, e para começar a codificar os sprites de sobreposição de texto, vamos primeiro arrastá-los até uma linha no Em seguida, vamos ao código Pase Sprite e copiaremos alguns scripts Primeiro, vamos copiar o script de classificação e camadas. Então, quando eu começo como um clone, para o script de configuração, queremos apenas que o nome do traje, se não, seja igual Finalmente, vamos copiar o script da bandeira verde. Em seguida, volte para os sprites de sobreposição de texto. quando eu começo como um script de clone, queremos apenas os blocos dentro da parte ts aqui Vamos retirá-los, nos livrar do bloco I thin s e anexar os blocos ao script. Então, estamos usando a sobreposição Z ao classificar os clones. Estamos fazendo com que eles comecem ocultos e tornando o clone do BG parcialmente transparente Ok, agora no script de configuração, vamos continuar e criar todos os clones. Em seguida, vamos mostrá-los e ocultá-los conforme necessário. Começaremos criando o clone de texto. Então, vamos até Looks, trazemos um bloco de troca de trajes e, como traje padrão, vamos usar o texto inicial zero para posicionar o clone, vamos para o movimento, vamos para o bloco XY e vamos usar zero para X e dez para Y. Então vamos criar o clone acessando Control e trazendo um bloco criar um clone Em seguida, criaremos o botão continuar. Primeiro, podemos duplicar os três blocos aqui. Então, vamos mudar para o traje do botão continuar. Para a posição, vamos com 135 menos 45. O próximo é o painel. Vamos duplicar os três blocos inferiores. Mude para o traje do painel e vá para 00. Finalmente, para o plano de fundo, vamos duplicar novamente, mudar para BG, e também queremos este às 00 Também vamos nos certificar de voltar para a roupa em branco acessando Looks, trazendo outro bloco de roupas do Switch e mudando para o Blink Tudo bem. Agora mostraremos os clones sempre que eles receberem a mensagem de texto do programa Então, vamos aos eventos, trazer um bloco W que recebi para algum espaço vazio e receber o texto do programa. Aqui, vamos primeiro ter certeza de que estamos no primeiro nível ou no nível final. Caso contrário, simplesmente definiremos a variável show text zero e interromperemos o script para que o nível possa começar normalmente. Para fazer tudo isso, vamos primeiro controlar e inserir um I e depois bloquear. Para a condição, vamos até os operadores, coloque um bloco não, depois um bloco ou e, em seguida, coloque um bloco igual em cada lado Agora vamos às variáveis e vamos verificar se o nível não é igual a um ou se o nível é igual ao nível final Se for esse o caso, vamos colocar um conjunto para bloquear e definir mostrar texto como zero. Então vamos até Control, coloque um stopblock e pare esse script E se estivermos no primeiro ou no último nível, a primeira coisa que queremos fazer é mostrar o clone Então, vamos até Looks e adicionemos um bloco de exibição na parte inferior do script. Se rodarmos o jogo agora e clicarmos no botão Jogar, depois de cerca de um segundo, a sobreposição de texto aparecerá. Se mudarmos para o nível dois ou três, não obteremos a sobreposição de texto E se mudarmos para o nível quatro, entendemos, mas está usando o texto errado. Para corrigir isso, e quando eu receber o texto do programa, depois de mostrar o clone, queremos verificar se é o clone do texto e, em caso afirmativo, definiremos seu traje de acordo com o nível atual Para fazer isso, vamos primeiro acessar o Controle e inserir um bloco ITN. Para verificar se é o clone do texto, podemos acessar os operadores e usar um bloco contém como condição Em seguida, vá para Looks, use um bloco de fantasias como primeira entrada e verifique se o nome da fantasia contém a palavra texto. Nesse caso, queremos verificar se estamos no primeiro nível ou no nível final. Então, vamos até o Controle e introduzimos um bloco I then s. Para a condição, vamos usar uma duplicata do nível igual a um quarteirão daqui de cima Agora vamos até Looks e adicionar um bloco de roupas Switch em cada parte. Para a parte I, vamos mudar para o traje inicial com texto zero. E para as partes ts, vamos usar o texto final zero. E agora o primeiro nível ainda começará mostrando que você está preso em um texto de planeta desconhecido Mas o nível final agora começará com NadnarTks, você pagará as Tudo bem, então tudo o que precisamos fazer agora é fazer o botão continuar funcionar para que o jogador possa ler a próxima parte do texto Para fazer isso, vamos encontrar um espaço vazio. Em seguida, vá aos eventos e ganhe este bloco clicado pelo sprite E aqui primeiro queremos verificar se é o clone do botão Continuar Então, vamos controlar e introduzir um bloco ITN. Para a condição, podemos usar uma duplicata de um dos nomes do traje igual E verifique se é igual ao botão Continuar sublinhado. Nesse caso, primeiro esperaremos até que o jogador não esteja mais pressionando o mouse. Então, vamos esperar até o bloqueio. Para a condição, vamos até os operadores e trazer um kblock Em seguida, vá para a detecção e coloque um bloco de mouse para baixo. Depois disso, transmitiremos uma mensagem. Então, vamos aos eventos, introduzimos um bloco de transmissão e vamos transmitir uma nova mensagem chamada continuar texto. Agora, por conveniência, também podemos continuar o texto quando o jogador pressiona a tecla de espaço Para fazer isso, vamos inserir uma tecla WindspaceKey, um bloco pressionado. Então, vamos adicionar uma duplicata do bloco ITN de quando esse sprite No entanto, em vez de esperar até que Knot pressione o mouse, queremos ir até a detecção e esperar até que a tecla Knot seja pressionada queremos ir até a detecção e esperar até que a tecla Knot Um problema com isso, no entanto, é que mesmo depois de ocultarmos a sobreposição de texto, pressionar a tecla de espaço ainda executará esse script Então, o que podemos fazer é, antes de fazer isso, primeiro verificar se a sobreposição de texto está visível Esse será o caso quando a variável show text for uma. Vamos até Control e vamos colocar um bloco se, então, ao redor do nome do traje I é igual ao bloco de botões de continuar Para a condição, vamos até os operadores e introduzimos um bloco igual. Em seguida, vamos às variáveis e verificamos se mostrar texto é igual Isso garantirá que esses blocos executados somente quando a sobreposição de texto estiver visível Está bem? Agora precisamos lidar com a mensagem de texto contínua. Então, vamos aos eventos começar outro quando eu receber scripts e receber mensagens contínuas. E aqui vamos primeiro verificar se é o clone do texto. Em seguida, eliminaremos o clone, mudaremos para a próxima roupa e faremos o clone voltar Então, primeiro, vamos ao Controle e introduzimos um bloco ITN. Para a condição, podemos usar uma duplicata do bloco de contém o nome do traje texto que contém o nome do traje de quando eu recebo o texto Mostrar Em seguida, para eliminar o clone, vamos repetir dez blocos Em seguida, vamos para Los, alterando o efeito por bloco para o bloco de repetição e alterando o efeito fantasma em dez. Depois que o bloco de repetição terminar, mudaremos para a próxima roupa. Então, vamos trazer um próximo bloco de fantasias. Finalmente, vamos inserir o clone novamente. Para fazer isso, podemos duplicar o bloco de repetição. Livre-se do próximo bloco de fantasia extra, coloque o bloco de repetição após o próximo bloco de fantasia aqui e altere o efeito fantasma em menos dez. E agora, se rodarmos o jogo, podemos clicar no botão Continuar ou pressionar a tecla de espaço para continuar até a próxima parte do texto. No momento, porém, o texto continua mudando até voltarmos ao traje em branco. Então nada acontece. Então, o que queremos fazer é que, quando o jogador clicar em continuar na parte final do texto do nível atual, ocultaremos a sobreposição de texto Para fazer isso, precisamos acompanhar qual parte do texto o jogador está lendo no momento, bem como quantas partes do texto o nível atual tem. Então, primeiro, precisaremos acessar as variáveis e criar algumas novas. Para o total de partes do texto, vamos criar uma variável chamada partes de texto e criá-la somente para esse sprite E para o texto atual, vamos criar outro, chamá-lo de índice de texto e também criá-lo apenas para esse sprite E vamos esconder as duas variáveis. Para definir as variáveis, vamos descobrir quando eu recebo o texto de exibição. Primeiro, vamos adicionar um conjunto de dois blocos na parte superior do bloco de texto O nome do traje contém. E vamos definir o índice de texto como um. Em seguida, o valor das partes do texto será diferente dependendo do nível. Então, vamos adicionar um conjunto de dois blocos a cada parte do nível I igual a um Para o nível um, vamos definir as partes do texto para três e vamos defini-las para duas para o nível final. Em seguida, e quando eu receber texto contínuo antes de mudar para a próxima roupa, aumentaremos o valor do índice de texto. Em seguida, verificaremos se ele excedeu o valor dos pedaços de texto Se tiver, ocultaremos a sobreposição de texto. Caso contrário, continuaremos trocando para a próxima roupa e usando o sprite Ok, então primeiro, vamos adicionar uma alteração por bloco acima do próximo bloco de figurino e vamos alterar o índice de texto por um. Agora vamos até Control e introduzimos um bloco if then s. Queremos mover o próximo bloco de fantasias e tudo abaixo dele para as partes ts. Para a condição, vamos até os operadores e trazer um bloco maior que. Em seguida, vamos às variáveis e verificamos se o índice do texto é maior do que as partes do texto. Nesse caso, queremos ocultar todos os clones da sobreposição de texto. Para fazer isso, transmitiremos uma mensagem. Então, vamos aos eventos e introduzimos um bloco de transmissão, e vamos transmitir uma nova mensagem chamada Ocultar texto. Tudo bem, agora só precisamos lidar com a mensagem de texto alta. Então, vamos começar de novo quando eu receber scripts e receber texto oculto. E aqui, vamos até Looks e trazemos um bloco Hide. Agora, se rodarmos o jogo e continuarmos lendo o texto na sobreposição de texto, quando ele atingir a parte final do texto do nível, clicar em Continuar novamente fecha a sobreposição de texto, mas o nível não Isso ocorre porque não definimos a variável show text como zero. Faremos isso quando eu receber texto contínuo antes de transmitir texto alto, acessando variáveis, configurando um conjunto para bloquear e definindo mostrar texto como zero O nível agora deve começar depois que a sobreposição de texto desaparecer. Vamos garantir que também funcione corretamente no nível quatro. Excelente. E com isso, terminamos oficialmente a aventura de Glims e este curso Então, um grande parabéns, e nos vemos na conclusão do curso. 126. Parabéns! : Parabéns por concluir o curso Scratch Saga. Você percorreu um longo caminho desde aprender o básico do zero até criar três jogos completos e dominar habilidades fundamentais em programação e Espero que você esteja confiante em sua capacidade de dar vida às suas próprias ideias e orgulhoso dos projetos que criou. Com as habilidades e técnicas que você adquiriu neste curso, você está pronto para continuar criando. Com o Scratch, você pode continuar criando jogos, experimentando novas mecânicas ou até mesmo compartilhando seus projetos com a comunidade do Scratch para obter feedback e inspirar Cada projeto que você assumir a partir daqui aprofundará sua compreensão e gerará novas ideias Lembre-se de que todo grande desenvolvedor de jogos começa em algum lugar, e você já deu alguns dos passos mais importantes aqui. Obrigado por se juntar a mim nessa jornada. Continue programando, seja criativo e, o mais importante, continue se divertindo com isso Mal posso esperar para ver os próximos jogos que você criará. Boa codificação.