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.