Transcrições
1. 01 Introdução: Bem-vindo a este curso. É o melhor curso
para
iniciantes para todos que
desejam mergulhar mundo
da codificação e
programação de jogos. Olá. Sou seu instrutor e
estou empolgado em guiá-lo nessa
jornada
divertida e interativa de programação Se você nunca
escreveu uma linha de código antes ou está procurando
aprimorar o básico, este curso é perfeito para você Neste curso, você
aprende a criar quatro jogos emocionantes do
zero, um jogo estourando Malon,
um jogo de exploração espacial,
uma aventura de apontar e clicar
e um jogo uma aventura de apontar e clicar
e básico de pular e correr Ao longo do caminho,
apresentaremos conceitos
essenciais de programação, como variáveis, mensagens,
estruturas de controle, como if then and repeat,
listas e clonagem Você vê como esses conceitos
ganham vida em seus jogos. Com as instruções passo a passo
e os projetos práticos, você ganhará a
confiança e as habilidades para criar seus próprios jogos
e projetos do zero. Você está pronto para começar
sua aventura de programação? Junte-se a mim na programação
com o Scratch Vamos tornar a programação divertida e
acessível para todos E comece agora mesmo
sua jornada no empolgante mundo da
programação com
o Scratch.
2. Abra e instale o Scratch: Aqui está a página inicial da web, e este é o lugar
onde você precisa acessar seu navegador favorito, qual navegador estou
usando o Chrome aqui. Realmente não importa
qual deles você usa, mas talvez para um recurso eu gostaria de mostrar
no final deste vídeo, talvez
você queira usar o
Chrome ou o Edge. Não sei exatamente se isso também é possível
em outros navegadores. Talvez o Safari também. Mas vamos começar aqui nesta
página e você precisa acessar esse
URL e raspar ponto U. Então, coloque isso na barra de endereço do
seu navegador favorito Como eu disse, estou usando o Chrome aqui. Mas isso não deveria importar. Então, temos esta bela página de
rascunho aqui, você tem projetos em destaque
que pode analisar e também tem
tutoriais Mas, no momento, o que
é realmente importante é esse botão aqui,
comece a criar. Você não precisa
criar uma conta, não
precisa se registrar. Mas você pode fazer isso. Mas faremos isso sem nos registrar,
sem entrar no zero Aqui está esse botão. Você pode criar uma conta e
depois salvar seus projetos
nessa conta e depois
editar os projetos da
maneira que quiser. Mas, no momento, estamos usando este ano.
Comece a criar, basta clicar aqui. E então você entrará estúdio,
no estúdio scratch, e aqui você tem sua interface de usuário, seu Canvas, e este será seu local de trabalho,
por assim dizer. Explicarei para que servem
as diferentes regiões aqui e como elas
funcionam no próximo vídeo. Mas, por enquanto, há
mais uma coisa que quero mostrar como
você pode
instalar este aplicativo, ou como você pode criar um aplicativo, um aplicativo web a partir dele? Isso está aqui no Chrome, então você precisa pressionar
esse botão de menu aqui. Então você abre este menu e, em seguida, Proteger e compartilhar é o item de menu
correto aqui,
Proteger e compartilhar e, em seguida,
Instalar página como aplicativo. Então clique aqui. E então você também pode
nomeá-lo aqui, renomeá-lo. Já se chama Scratch
Imagine Program Share. Então clique em Instalar. A página da web abrirá em
uma nova janela como um aplicativo da web. E aqui você pode, por exemplo, maximizar a janela, você não
tem a barra de endereço aqui. Você tem muito espaço
para seus projetos e também pode
fixá-lo na barra de tarefas ou no dock do Mac e
usá-lo como um programa normal. Você não precisa fazer
isso. Você também pode usá-lo em seu navegador. Mas eu prefiro
usá-lo assim. No Edge, é um
pouco diferente, então isso estará
em algum lugar aqui, em aplicativos, instale o site como um
aplicativo, algo assim. No Safari e no
Firefox. Eu sou honesto. Eu simplesmente não sei como
fazer isso lá, mas acho que você
pode descobrir. Ok, aqui está. Este é o nosso local de trabalho aqui, e começamos a criar projetos. Mas antes disso, vou te mostrar por aqui e mostrar como
você pode entender todas essas regiões todas essas guias
e os itens
do menu aqui Então, até o próximo vídeo.
3. Visão geral da interface do usuário do Scratch: Então, aqui estamos no zero, e esta é a versão do aplicativo, a versão do aplicativo web, mas você também pode fazer isso, é
claro, no navegador. Isso não é problema.
Acabei de instalar o aplicativo exatamente como eu
disse antes para ter mais espaço e ter uma janela extra na
barra de tarefas ou no dock do mapa. De qualquer forma, você pode fazer
isso no navegador, você pode fazer isso no aplicativo. Isso é sobre a interface do usuário do Scratch, e a primeira coisa
que
quero mostrar é como definir o idioma
certo aqui. Isso está definido para
inglês, é claro, porque esse é um curso de
inglês, mas você pode configurá-lo de forma diferente. Para fazer isso, basta
acessar as configurações. Aqui, este menu, menu suspenso, clique nele, e então você tem
este globo com linguagem. E aqui você tem muitos
idiomas, por exemplo, espanhol ou alemão,
porque eu sou alemão, vou mudar
agora para alemão. Então você tem todas
as sequências aqui, todos os textos aqui em alemão Também os blocos. Veja, há uma engrenagem, agora
Schritt. Isso é alemão. Eu disse isso em inglês, novamente, então eu dei dez
passos, virei 15 graus, e tudo aqui
nesses blocos, que serão os blocos de
construção de nossos scripts, é claro, tudo está no idioma
que você escolheu aqui. É aqui que você escolhe
o idioma favorito no qual
deseja programar porque tudo
estará então em inglês, incluindo todos os blocos aqui. Então, a primeira seção e o primeiro conceito que eu quero mostrar aqui no Scratch I é o conceito de Sprites Para isso, acabo de fechar
este vídeo tutorial aqui. Então, basta clicar nesse X aqui, fechar e então ele
desaparecerá. Você também pode assistir,
é claro, e ter a primeira impressão
dos mecanismos aqui
no Scratch. Mas, vamos aos Sprites. Os sprites estão
aqui e esses são
os personagens ou
coisas parecidas que você tem em seu jogo Por exemplo, esse gato aqui
é o sprite padrão aqui. Você pode selecionar os sprites aqui. Se você tiver vários,
poderá selecionar cada um. Eu posso criar um novo, mas vamos verificar o primeiro, o sprite padrão
aqui, o gato Você pode ver o gato aqui, e esta é a tela do jogo, então você pode ver uma prévia
do seu jogo aqui. Essa será a aparência do
seu jogo quando você começou, e aqui você também pode
mover o gato aqui, mover o sprite para
qualquer lugar que você quiser Então, aqui você terá
todos os seus sprites, e esses são, por assim dizer, os personagens
principais do seu jogo Então, tudo o que se move, tudo o que é controlado, tudo o que é dinâmico em
seu jogo será um sprite Então, aqui você tem a
lista de sprites, e então você pode
nomear os sprites Então, aqui você pode mudar
o nome do sprite. Posso chamá-lo de
gato, por exemplo. Então aqui na lista também
estará o gato. É uma unha do polegar aqui. Você também pode apagar
o sprite aqui, mas não vamos fazer
isso no momento Aqui você pode definir a
posição como números. A posição no
momento é -46, e eu posso mover o gato
aqui nesta tela, e você verá que
isso também muda Então isso é -149 agora. Mas abordaremos isso mais tarde apenas para mencionar aqui que você pode definir
as coordenadas da posição do gato
na tela aqui. Arrastando o gato aqui,
arrastando o sprite, ou você também pode alterar esses
números aqui, x e y. Então isso é possível aqui, e então você pode mostrar
o gato ou esconder o gato Se você quiser que seja invisível, então você tem que escolher
este i que está riscado, ou se você quiser que ele fique
visível, então escolha o i. Então, aqui, você tem um tamanho, então isso é 100%. Se você quiser que
tenha metade do tamanho, insira aqui 50%, então é apenas metade
do tamanho ou
também pode optar por
dobrar o tamanho. Então você tem 200%. Então, teremos o dobro do tamanho
do sprite padrão normal aqui Portanto, esse é o tamanho padrão, 100 e, em seguida, 200
será o dobro do tamanho. Um quarto será 25 aqui,
portanto, apenas um quarto
do tamanho padrão. E também, é claro, 400%
serão quatro vezes maiores, e então você tem
esse gato gigante aqui Ok, mas vamos
colocá-lo novamente em 100, e aqui você também pode girá-lo Então esse é o ângulo
padrão aqui. E quando eu arrasto isso aqui, essa seta, eu a arrasto
aqui neste círculo. Você vê que o gato
está girando aqui. Então esse será o
ângulo zero aqui, então apontar para cima
e depois apontar para
a direita com 90
graus, 180 será apontar para baixo
e depois para a esquerda É um número negativo, então -90 será no
sentido anti-horário Em seguida, o gato está de cabeça para baixo
e apontando para a esquerda. Vamos colocá-lo em
90 graus novamente. Também pode alterá-lo aqui com
o teclado, é claro, 90 serão exatamente
esses 90 graus, e você também pode girá-lo
para que possa espelhá-lo Então, ele será espelhado aqui para a
esquerda ou para a Então isso muda o
modo aqui, por assim dizer, de rotação para espelhamento, para a esquerda ou para a direita E aqui eu o altero de
volta para rotação. E aqui eu posso
desligar completamente a rotação. Portanto, não há mais mudança aqui
se eu mudar a direção. Ok, mas também
abordaremos isso mais tarde, só para dizer que aqui, você pode mudar a direção. Vamos colocá-lo em 90
graus e girar, novamente, os valores padrão aqui. E aqui
está. Seus sprites, e eu podemos fazer um novo aqui Então, basta pressionar esse botão. E então você tem algumas
predefinições para escolher. Você também pode pesquisar aqui
ou escolher uma categoria. Por exemplo, todos os
animais, um urso, um gato voando, uma garota, um
dinossauro, um pato, o que você quiser, ou
talvez você queira pessoas,
pessoas ou fantasias
como dragões E assim por diante. Você também pode
ter cartas aqui. Se quiser escrever
algo na tela, você pode escolher
essas letras aqui. Mas talvez vamos pegar um balão, e agora temos um sprite de
balões Temos o gato e o balão. Agora também podemos
deletar o gato aqui. Não precisamos mais disso.
Como nosso primeiro jogo será sobre balões,
vamos deletar o gato Agora temos apenas o balão. Se você acidentalmente excluiu
algo ou alterou algo e deseja que
seja revertido para ser desfeito, pressione o
controle Z ou o comando Z, ou você também pode
escolher aqui este menu adicionado e depois restaurar o
sprite neste caso, e então teremos Aqui temos nossos sprites, e eu vou deletar novamente o gato porque
não precisamos mais dele. Aqui, também podemos
mover o balão, é
claro,
arrastando-o na tela,
e você vê que também, todos esses números aqui, todos esses números aqui, então x e y também mudarão
da mesma forma que com o gato Ok, isso é tudo para
a seção Sprite. Passamos para a próxima seção. Vamos passar para
a próxima seção e essa
será a seção de código aqui. Está relacionado aos Sprites. Se você tem um sprite
aqui e selecionou
, na verdade
adicionará aqui o código
desse sprite Isso significa que esse código aqui, o script que você está criando aqui, será anexado
ao sprite Você também pode anexar um
script a um plano de fundo. Então aqui você tem
cenários de palco. Então, aqui está o palco. Esta é outra
seção, e essa é uma espécie de plano de
fundo do seu jogo, e aqui você pode ter
vários planos de fundo e depois trocá-los dinamicamente
com código Além disso, você pode ter
vários planos de fundo, como eu disse,
dependendo do que você selecionar aqui Portanto, se você selecionar o estágio, adicionará o
código desse estágio aqui
ou, se selecionar Sprite aqui, adicionará o
código desse Eu selecionei o balão, como você pode ver aqui, essa é
a diferença Aqui eu selecionei o pano de fundo, e aqui eu
selecionei o sprite, e agora eu posso editar o código,
o script, por assim
dizer, para esse Para isso, você tem todos
esses blocos aqui. Então, percorra tudo
aqui com a barra de rolagem. Então, tudo estará aqui, mas você também pode
alternar para categorias, poder pular para a
categoria de eventos, por exemplo, ou para a categoria de blocos M
escolhendo uma categoria aqui. Então, movimento de primeira categoria. Aqui encontraremos
tudo o que está relacionado ao movimento
do sprite, movê-lo até
girá-lo Assim, você também pode
definir a rotação aqui dinamicamente durante o tempo de
execução do seu jogo Temos looks,
tudo o que está relacionado à aparência do
seu sprite aqui Por exemplo, você pode deixar
o balão dizer alguma coisa, então você faz essa chamada,
ou pode trocar a roupa
para fazer animações aqui ou pode trocar a roupa
para fazer animações Você também pode definir o
tamanho aqui dinamicamente, para que possa
diminuí-lo, torná-lo maior, mostrar e ocultar e assim por diante Aqui você tem som, então você pode tocar um som. Por exemplo, se o sprite for clicado com um botão do mouse, você poderá reproduzir um som aqui Aqui você tem eventos. Quando
certos eventos ocorrem. Por exemplo, quando
o jogo começa, esse é o evento aqui. Você pode usá-lo para acionar blocos
diferentes então. Mas vou mostrar isso mais tarde. Aqui você tem controles, ou
seja, tudo o que está relacionado
a loops ou condicionais Se for esse o caso, então faça isso, aquela
coisa que você pode fazer de novo Então temos a detecção Se o sprite tocar em
algo ou tocar em uma cor,
por exemplo, ou tocar em
outro sprite, isso Operadores, muito importantes, operadores
matemáticos,
por exemplo, iguais ou menores que
maiores que tudo ou
escolher um número aleatório, muito importante para jogos, para torná-lo mais interessante, para torná-lo não determinístico, você pode encontrar aqui Depois, também variáveis muito
importantes
e, claro,
explicarei as variáveis mais tarde. Mas aqui, variáveis muito
importantes. Você pode armazenar valores em variáveis e armazenar um
estado em uma variável, por exemplo, e isso é
essencial para um jogo. Sem variáveis,
você não pode fazer muito de um jogo,
mesmo do zero. Aqui, em meus blocos, você pode definir seus
próprios blocos que contêm diferentes
subblocos, por assim dizer Mas isso cobrirá, é
claro, mais tarde. E aqui, você
também pode adicionar plug-ins. Você tem essas extensões aqui, então algo como conversão de
texto em fala, então você pode deixar o
motor de jogo falar alguma coisa, então um texto que você digita pode ser falado por uma voz
artificial, ou você pode tocar
instrumentos e bateria, você pode desenhar e assim por
diante, também traduzir, e você também pode usar
todo esse código de rascunho para realmente controlar um robô ou algo assim assim
com Leg ou Minetorms Se você adicionar uma extensão aqui, essa será uma nova categoria aqui e, em seguida, você poderá escolher. Então, por exemplo, se eu
escolher música aqui, haverá uma nova
categoria de música, o final, e então você poderá usar, por exemplo, para
tocar um som de bateria. Ok, então esse é o código aqui. Passaremos muito tempo
aqui nesta seção de código. Isso é muito
importante, é claro, mas também há
outras seções, e a seguir serão os figurinos. As fantasias estão
aqui, ao lado do código. Podemos selecioná-lo e, em
seguida, você pode ver o caso. Essa é a aparência
do seu sprite, os gráficos do seu sprite E nesse caso,
é um balão. É um gráfico vetorial aqui, então não é pixel por pixel, mas é composto fora de forma, então você também pode
adicionar uma forma aqui, por exemplo, um círculo. Basta clicar neste ícone aqui
e, em seguida, você pode fazer um círculo arrastando esse retângulo Não é nem mesmo um círculo. Não, é um círculo. Ok. Então você pode fazer círculos ou elipses
ou algo parecido, ou você também pode, é claro, escrever algo aqui, um texto Então, balão, por exemplo,
em cores diferentes. Abordaremos tudo
isso em capítulos posteriores. Não se preocupe se você
não entender tudo isso. Isso é apenas uma visão geral. Aqui você pode escolher a
aparência do seu Sprite e também o que você pode
fazer é criar animações Aqui você tem todos os
quadros para animações
e pode, no código, alternar para o próximo
quadro, por exemplo Você pode fazer coisas
como em um loop e, em
seguida, percorrer todas
essas animações aqui. Portanto, isso também é muito importante
para animações aqui. Você pode adicionar
muitos, muitos quadros aqui. Tudo pode parecer diferente, então você pode mudar
, percorrer todos
esses quadros aqui, deixar
parecer que é uma espécie de movimento, um movimento, algo parecido. Então, isso é animação
aqui, mas no momento, só
temos esse
primeiro quadro aqui, também
podemos excluir
os outros quadros para não nos confundirmos. Então, agora temos apenas um quadro, então não há animação no momento. Temos esse balão aqui, eu também posso deletar Portanto, você pode selecionar as formas aqui com esse cursor de seleção. Então selecione a ferramenta, selecionada
aqui com esse retângulo, e então eu posso
excluí-la, por exemplo, com este botão aqui ou
pressionando a tecla delete Agora ele sumiu e
também esse texto, eu também posso deletar
aqui. Então, desapareceu. Ok. Além disso, você pode fazer
algo como virar essa vertical horizontalmente e também
copiá-la e colá-la novamente,
e todos nós
abordaremos Esse traje é
muito importante, também para a aparência
do seu sprite, a aparência do seu sprite Então, neste caso, é um balão feito de formas
diferentes aqui Você também pode simplesmente
pintar algo aqui. Por exemplo, a
pintura de forma livre também é possível. Isso não é problema. Para reverter algo, você
também pode usar essas setas aqui para que eu possa reverter tudo o
que fiz até agora Em seguida, refaça novamente. Vamos nos livrar
desses pontos aqui. Agora temos novamente nosso balão, só um balão, e pronto Por enquanto, acabamos com
as roupas e falaremos
mais sobre isso mais tarde. A próxima seção serão os sons. Então, os sons estão
aqui, ao lado das roupas, e aqui você pode adicionar mais
sons aos sprites Um sprites pode ter sons. Aqui temos esse som pop. Você pode tocá-lo com
este botão de reprodução aqui e ouvir esse pop. Também
são muito importantes para os jogos os sons, para que
você tenha um feedback, também um feedback acústico de
suas ações como jogador Aqui você também pode adicionar
quantos sons quiser. Então, por exemplo, aqui você
pode adicionar um novo som. Há alguns sons
predefinidos aqui. Você também pode reproduzi-los aqui passando mouse sobre este botão
aqui, este botão de reprodução Além disso, haverá música ou apenas
sons, barulhos e acordes diferentes E os sons de cliques, ou estes também são piano ou
saxofone, tambor, trompete Há muitos, muitos sons
aqui para escolher, mas você também pode enviar
seus próprios sons. Então você também pode gravar
seus próprios sons aqui. Então, se você tem um microfone
conectado ao seu computador e pode gravar
algo aqui ou escolher
um som aleatório,
ou você pode carregar um som arbitrário que você gravou em outro lugar ou
que você baixou em algum lugar, e então você pode carregá-lo aqui e usá-lo em seu
jogo como um som aqui E então você pode acionar os sons
do código desta seção aqui. Há também essa
categoria de som, e lá você pode reproduzir som. Pop, por exemplo,
só há esse som aqui. Mas se você adicionar um, vamos adicionar
um. Por exemplo, este. Agora temos dois sons, e então você pode ouvir o
som de reprodução, também de guitarra elétrica. Eu posso simplesmente mover isso aqui, e então você pode
escolher não só pop, mas também o segundo
som, uma guitarra elétrica. Então, se você pressionar este bloco que
acabei de colocar aqui, eu acabei de arrastá-lo aqui
até aqui , também uma espécie
de tela aqui, onde todos os seus blocos vivem, onde seu código mora E então, quando eu clico
nele, ele é executado imediatamente e já tocará
o som aqui. Isso é tudo para sons como
fantasias, mas acústicas, então você pode acionar as duas ou pode mudar as
roupas por código Você também pode acionar
sons por código. Agora, o que resta é que o que
eu já mencionei também é esse estágio
aqui como cenários, e aqui você pode ter
vários cenários Podemos fazer um novo aqui, por exemplo, um quarto, talvez, e depois podemos escolher
outro, talvez uma praia. Então, aqui, se
selecionarmos esse estágio, podemos dar uma olhada nos cenários, e isso é
como para fantasias,
mas apenas com os planos de fundo Assim, você pode escolher qual
plano de fundo aqui deseja
e, em seguida, ele alternará aqui, e você também pode, é claro, alternar do código aqui, o plano de fundo, para que ele
mude dinamicamente Então, primeiro, temos um fundo
vazio, depois temos esse quarto
e depois essa praia. Então, basta escolher o estágio aqui
e, em seguida, você terá sob os
cenários todos esses cenários
diferentes, assim como com os Então eu seleciono o balão
novamente, nosso sprite, e então você pode usar roupas
diferentes aqui Então, o primeiro
será o balão. Você também pode alterar a
ordem aqui arrastando-a. Podemos mudá-lo
para essa garota aqui. É quase o mesmo
aqui com cenários. Basta selecionar o estágio e
você terá todos esses
cenários aqui Também exclua. Agora, o último, não
podemos excluir. Vamos pegar outro,
talvez um céu azul que
caiba no nosso balão Então, temos um balão
sobre um céu azul. Isso é meio legal. Então
eu deixei as coisas assim. E aqui nos cenários, você tem quase as
mesmas possibilidades das fantasias do
seu balão, por exemplo Quase o mesmo ou
é o mesmo. Você também pode nomear o traje
ou o pano de fundo aqui. Isso é tudo para palco
e cenários. Quase como um sprite. Você tem os sprites e depois o palco, e o palco pode ter cenários
diferentes, que você pode trocar
durante o início do jogo. Ok, então essas são as
seções e, claro, nesta seção muito importante, você pode rodar o jogo
aqui com esta bandeira. Então, se você pressionar a bandeira,
ela executará o jogo, no momento não há código, então nada a ser executado aqui. Então, continua assim. Mas se adicionarmos código, você notará
que
também terá o botão de parada aqui,
onde poderá interromper o jogo, impedir a execução do código,
pois, no momento,
não temos nenhum código Então isso não está fazendo nada, e você também pode
torná-lo um
pouco menor aqui com isso ou torná-lo um pouco maior ou
até mesmo torná-lo em tela cheia. Então você tem um jogo em tela cheia
aqui, quase em tela cheia. Você ainda tem esses
botões aqui, é claro, para iniciar e parar o jogo
e, em seguida, um botão para sair
da tela cheia aqui. Ok, esse é o seu Canvas, sua tela de jogo aqui, onde todos os
gráficos do seu jogo são renderizados Isso é basicamente para a interface do usuário do
Scratch do editor de rascunho aqui. E você também tem
esses menus aqui. Seu arquivo é muito
importante, para que você possa criar um novo jogo e também carregar
algo do seu computador, do seu disco rígido ou salvá-lo. E
isso é muito importante. Você deve sempre
salvar o jogo aqui. Então, ele será baixado
para sua pasta de download
e, posteriormente, você poderá recarregá-lo com este menu aqui,
carregue do computador. Assim, você pode fazer o upload
desse arquivo novamente e ter seu projeto de jogo
completo novamente. E aqui você pode
restaurar o traje. Então, por exemplo, eu
excluí o pano de fundo da fala
e, em seguida, posso restaurá-lo aqui Portanto, desfaça
aqui a exclusão deste pano de fundo. E também dos seus sprites, talvez se eu excluir o sprite, eu possa excluir o sprite e depois restaurar
o Então, basta uma breve visão geral
do Scratch I aqui, e abordaremos cada
seção com mais detalhes, é
claro,
na seção de código. Esta será a seção principal com a qual você terá
que lidar, mas também roupas, é claro, para animações e outras coisas. E os sons também serão
importantes e também o
pano de fundo, é claro Mas o mais importante será
o código, porque esse é o lugar onde você
realmente programa seu jogo e o
torna dinâmico, interativo e
divertido, é claro.
4. 04 Primeiro jogo, primeiro código: Então, estamos começando com nosso primeiro jogo e este jogo
será um jogo de balões, então é sobre balões
subindo e se movendo de baixo para cima para que eu possa mostrá-los aqui com
o mouse Eles devem se mover ou esse balão
deve sair daqui No topo, e então
ele deve desaparecer, e o jogador tem que clicar
nele para que ele se destaque,
algo parecido. E então ele deveria ganhar pontos, ou ela deveria ganhar pontos por isso. Portanto, no final, também deve haver vários balões
, e quanto mais balões
você puder estourar, mais pontos você ganha Então esse é o nosso desafio aqui. Então, temos que mover esse
balão do fundo. Coloque-o talvez aqui até o topo em um
movimento constante, eu diria Esse é o nosso primeiro desafio
e podemos fazer isso. Podemos conseguir isso usando
um trecho de código ou script, por assim dizer, um Precisamos programar aqui. Este é o nosso primeiro programa que fazemos. E esta é a posição inicial
do nosso balão aqui Então, se você quiser acompanhar, basta colocar o
balão em algum lugar aqui, talvez, então tudo bem Então, como podemos começar nosso código? Como podemos começar nosso roteiro? Na maioria das vezes, você
quer começar com um evento. Então, neste caso,
é o evento inicial. Então, sempre que o jogador clicar em Iniciar em
Go here on the flag, teremos esse evento E o que isso significa? Então, sempre que a bandeira é clicada, o código que está abaixo dela
aqui Então, eu arrastei isso quando
cliquei em eventos. Vá para a categoria de eventos
e, em seguida, o primeiro bloco aqui é quando você
clica na bandeira verde, e é como
correr, executar o jogo Isso significa que toda vez
que o jogo começar, clicar em go, o código
abaixo será executado Isso é o que fazemos agora. Adicionamos aqui outro bloco. É assim que você codifica no zero. Então você adiciona esses blocos aqui, então talvez possamos ir para o
movimento aqui, por exemplo, e então podemos dizer, vá para uma posição aleatória, por exemplo, só para mostrar. Então, sempre que esse
botão de ir for clicado,
vá para uma posição aleatória.
O que isso significa? O balão vai
para uma posição aleatória. Vamos ver como isso se parece. Então clicamos em ir e vemos que esse balão está indo
é colocado em uma
posição aleatória aqui Podemos fazer isso de novo
e, a cada vez, é uma
posição diferente, uma posição aleatória. Isso não é o que
queremos, é claro, porque queremos um movimento
de baixo para cima. E não é assim que você faz, mas apenas para mostrar como a
codificação aqui é feita Precisamos empilhar
esses blocos aqui. Depois disso,
talvez possamos fazer o mesmo. Por exemplo,
podemos fazer isso duas vezes. Isso não fará nenhuma diferença porque vai
para uma posição aleatória, mas você não a verá porque
logo depois disso, ela irá para uma posição
aleatória diferente. Isso não é muito bom ou
não faz nenhum sentido. O que nós fazemos? Podemos fazer
um atraso aqui no meio. Vamos controlar. E então vemos que o primeiro bloco aqui sob controle é o
peso. É isso que queremos. Controle o peso, e então eu
arrasto isso aqui para cá. Você vê essa foto aqui. Isso se encaixará aqui
e ficará um
pouco cinza, então você verá que,
se você soltá-lo, terminará nesta posição aqui,
abaixo da posição ir para a posição
aleatória Em seguida, isso será colocado
abaixo do peso em um segundo. Se você quiser desmontar isso, basta arrastá-lo para longe. E então todos os blocos
que estão abaixo deles aqui, o primeiro em que você
clicou se moverão
e, em seguida, você poderá arrastá-lo até E então não
será mais executado porque não há conexão com
esse evento aqui. Então, se eu começar um jogo, não
há código executado
porque não há nada abaixo Então, eu preciso conectar isso
a isso quando clicar. Novamente. E agora
podemos ver que primeiro, o balão vai para uma posição
aleatória e depois espera por 1 segundo e depois vai para outra, uma posição
diferente Então, isso também não é o que
queremos. Queremos um movimento contínuo. Então, vamos nos livrar disso aqui. Como se livrar
dele, como excluir, você pode clicar com o botão direito nele
e, em seguida, excluir o bloco. Então, isso excluiria apenas
um bloco em que você clicou
e, em seguida, você pode excluir
todos os blocos aqui Mas o mais conveniente é simplesmente arrastar isso
aqui para o lado, soltá-lo aqui e depois sumir também. E você move
essa tela aqui, sua área de código arrastando aqui, para que você possa ver. Você também pode usar a roda do mouse, é claro, ou você pode arrastar,
e então você pode alcançar posições diferentes aqui, e você também pode
ampliar e diminuir o
zoom com esses botões aqui com as lentes de aumento aqui. E isso redefinirá a
posição e o zoom aqui. Esse botão. É assim que você navega aqui
na área de código. Então, vamos colocar isso aqui. E o que fazemos para
mover essa coisa para cá. O que podemos fazer é
colocá-lo aqui novamente, talvez aqui, o que temos que fazer. Primeiro, precisamos
posicionar o balão novamente nessa posição porque essa é a posição
inicial, mas quando o programa
move o balão, talvez
ele acabe aqui e depois fique
lá Portanto, precisamos redefini-lo
sempre que clicar em go. Então, precisamos definir a posição
inicial. E como você faz isso? Basta
arrastá-lo para onde quiser? Então, talvez, por exemplo, aqui, e então tenhamos o
x e o y aqui, e é isso que podemos usar agora. Então, vamos ao movimento. Então você tem que ir para X, ir para y, e isso é
o que usamos aqui, vamos para x, vamos para Y e usamos
essas duas coordenadas aqui. Convenientemente, eles
já estão aqui preenchidos, então não precisamos
alterar nada Basta arrastar este bloco
aqui até quando clicar e tudo
será configurado para esse local aqui Eu posso mudar isso
agora para talvez aqui. Então, quando eu clicar em ir, será redefinido para esta
posição inicial. Isso é bom. É disso que precisamos também. Agora temos que mover o
balão para o topo, e é isso que faremos
no próximo vídeo Mas, aqui em diante, esses blocos são todos para mover ou
girar
seu sprite Por exemplo, aqui
você definiu o estilo de rotação, para poder alternar da
esquerda para a direita, talvez não girar
ou girar ao redor Em um ângulo, isso será mais parecido com espelhamento, como aqui, isso será espelhar
ou virar, isso será uma rotação, e isso não será E a mesma coisa aqui, você pode definir esse
estilo também aqui. É o mesmo que aqui. Este é apenas um exemplo, e você também pode usar
algo como definir y para uma posição ou
definir x para uma posição, ou você pode definir
ambos em um bloco. Além disso, você pode deslizar para
uma posição aleatória. Talvez possamos tentar isso, colocá-lo em uma posição inicial
e, depois, deslizar talvez 4 segundos até
uma posição aleatória ou
até o ponteiro do mouse Também podemos fazer isso.
Vamos tentar isso. Na verdade,
não é isso que queremos, mas de qualquer forma, vamos tentar e
ver como fica. 4 segundos, este balão
vai para uma posição aleatória. Então, cada vez que eu começo aqui, ele vai para uma posição
diferente, mas sempre leva 4
segundos para chegar lá. Isso é muito bom. Talvez
pudéssemos usá-lo e , em seguida, o usuário precisa clicar
nele para obter os pontos. Mas eu não sei.
Talvez não seja tão interessante fazer
o jogo desse jeito. Mas poderíamos usar isso. Mas isso será bem fácil. De qualquer forma, temos que esconder o balão quando ele atingir
a posição aleatória aqui Caso contrário, seria muito
fácil para o jogo clicar nele. Talvez possamos
escondê-lo após 4 segundos, ou talvez façamos 2 segundos
e então será mais rápido. Aqui, e isso será mais rápido. Mas isso também depende da
posição em si, é claro. Se a posição não estiver muito longe da posição
inicial, será lenta; se estiver muito longe da posição
inicial
, será rápida. Isso será fácil de clicar e será um pouco mais difícil
assim ou talvez assim. Também podemos
reduzi-lo para 1 segundo, ou também podemos usar números
decimais como 1,5,
por exemplo, isso é um pouco mais rápido porque era um longo caminho a
percorrer para o balão, outro longo caminho e
esse é um caminho curto Vamos esconder o balão quando ele atingir a
posição aleatória aqui Como fazemos isso? Isso está na
categoria looks. Vamos para Ls e
aqui no final, quase no final, você
tem show and hide. É disso que precisamos. Basta arrastar o esconderijo para esta posição
aqui após o deslizamento
e, quando
chegar aqui,
nessa posição aleatória,
ele deve se esconder Vamos tentar isso.
Agora ele desaparece Vamos fazer isso de novo. OK. Então
você vê que não vê nada. Ela sumiu. Está
escondido. E por que isso? Seja como for, escondemos isso. Então, com essa ocultação,
você a ocultará e ela não será redefinida para ser exibida. Mas podemos fazer isso, basta mover show ou arrastar show
aqui para o início. Então, quando clicar em go, mostre o balão, vá para a posição
inicial e deslize para essas posições aleatórias aqui
e depois esconda Então, vamos tentar isso.
Então, é mostrado. Ele vai para a posição
inicial e depois desliza para a posição
aleatória E então está escondido. E então, toda
vez que eu clicar em G, ele será exibido novamente, e isso será executado aqui. Obviamente, o código é sempre executado
de cima para baixo. Então, este é o
evento inicial quando você clica em go, depois mostra, vai para x e y, posição
inicial, desliza nesse
período de tempo para uma
posição aleatória e depois se esconde Então está tudo bem. Poderíamos usar isso como ponto de
partida para o nosso jogo. Provavelmente não vamos
continuar assim, mas é meio que um começo. Então, precisamos, é claro,
fazer com que o
jogador possa clicar no balão, e então ele pare, e então o jogador
ganhe pontos por ele
5. 05 Como melhorar o movimento do balão: Continuamos com nosso
jogo e, no último vídeo, tínhamos nosso balão indo desta primeira posição
para uma posição aleatória, e fizemos esse
pequeno script aqui, e este é nosso primeiro
programa ou primeiro script Sempre que o
botão Iniciar é clicado, mostramos esse balão e, em
seguida, vamos para a
posição inicial do Isso é -207 e f x e -200 534,
y, e a partir daí
deslizamos Essa sempre será uma posição diferente a cada
vez que rodarmos o jogo e o tempo necessário para deslizar até
essa posição é de 1,5 segundos aqui Então, quando atinge
a posição
, escondemos o balão Agora eu quero
trocar isso aqui, o deslizamento para uma posição aleatória com um bloco similar,
e este é este Eu já preparei
isso. Então, isso é deslizar na quantidade de
segundos dois x e y. Há uma posição predefinida
aqui para a qual podemos deslizar, e não será a Porque o problema com
a posição aleatória é que às vezes é mais difícil e às vezes mais fácil bater no balão ou
clicar no balão, porque é disso que trata
o jogo, clicar no balão ou clicar em todos os balões que
puder até que todos desapareçam Esse é o problema
com a posição aleatória. Eles não estão indo para cima, mas talvez nessa direção
ou direção ou qualquer outra coisa Não está claro para onde os balões vão com
a posição aleatória, então nós os trocamos por
uma posição fixa Este é o bloco para
a posição fixa, e eu estou arrastando esse esconderijo
aqui e o planador também,
e podemos nos livrar
desse bloco deslizante simplesmente arrastando-o
até
aqui e ele desaparecerá e podemos nos livrar
desse bloco deslizante simplesmente arrastando-o
até
aqui e Esse bloco foi excluído. Agora podemos pegar esse
bloco, colocá-lo aqui, para que ele se
encaixe lá e depois colocar de volta o bloco de esconderijo novamente para
que fique assim Vamos começar o jogo e
ver como fica. Veja, é sempre o mesmo movimento aqui toda
vez que eu começo o jogo. O balão sempre subirá em
2 segundos até essa
posição aqui, e é sempre o mesmo Isso é muito melhor
porque o balão vai apenas para cima, mas também é mais fácil
porque você já sabe de onde o balão está indo e para onde
está É muito fácil
jogar este jogo, mas teremos
mais balões, não apenas um balão, ficará um pouco mais difícil acertar
todos os Talvez isso já esteja bem
e já seja um jogo divertido. Mas precisamos de algo
que seja mais aleatório aqui. Digamos que não seja a
posição alvo do balão, mas também pode ser a posição inicial
. A posição inicial, a posição x aqui
pode ser aleatória, e o balão então
começaria talvez uma vez daqui, uma vez daqui Isso dependeria da posição escolhida
aleatoriamente na época Como fazemos isso? Precisamos de um número aleatório para
a coordenada x. Vamos verificar como isso é feito. Vamos aos operadores aqui e ali,
já escolhemos aleatoriamente um número aleatório
e, em seguida, você pode definir entre quais dois números o número aleatório
deve ser escolhido. Vamos arrastar isso aqui
para nossa tela, nosso script Canvas,
e então podemos colocá-lo em algum lugar
aqui neste bloco. Podemos colocá-lo aqui para ir para
x e depois esse campo aqui. Vamos experimentá-lo. Nós o
arrastamos até aqui e depois o soltamos e agora o temos
em nossa coordenada x. A coordenada x será de 1 a 10. Isso não é muito bom, digamos
que -200 102 mais 210, esse será o intervalo Vamos tentar isso. Vamos começar, e então temos uma
posição inicial aleatória. Isso é bom. Às vezes, começa
daqui a partir do x aqui ou talvez ali. Assim, o jogador nunca sabe de onde o balão está
começando. Isso é melhor. Mas também a posição do alvo
é sempre a mesma, e isso é um problema
aqui porque sempre
sabemos que o balão
vai passar por aqui Esta é a posição alvo para que possamos colocar o cursor
do mouse aqui, e então poderemos clicar aqui quando
se trata dessa posição aqui. Isso não é muito bom, então precisamos definir a meta x isso aqui com o mesmo
valor deste ano. Poderíamos usar uma variável
para isso e primeiro atribuir esse número aleatório
duas variáveis A e depois usar essa variável
nesses dois lugares. Primeiro aqui neste bloco, vá para x e depois para variável, e depois deslize em 2 segundos
dois x e depois a variável Mas não faremos isso porque
isso é um pouco avançado e eu farei em
variáveis em um capítulo posterior. Aqui fazemos outra coisa. Há um bloco, outro
bloco aqui em movimento, e este é esse bloco aqui, posição
x, e você pode
arrastar essa posição x aqui para qualquer lugar que quiser
nesses campos arredondados. Por exemplo, aqui
neste campo x, então deslize em 2 segundos dois x e depois na posição x.
O que é posição? posição X é a
posição ex do sprite neste
momento em
que ele chega a esse bloco aqui Isso sempre será atualizado
se o balão se mover. Ou muda sua posição x, então essa sempre será
a posição x atual. E você também pode exibi-lo clicando aqui
nesta caixa de seleção Então, basta verificar isso aqui para
exibi-lo aqui, e então sempre podemos ver o valor atual da posição x dos
balões Ok, então o que temos agora? Vamos para uma posição x aleatória
aqui e uma posição y fixa. Portanto, a posição y será -253
e a posição x
será aleatória Isso significa que o balão
começa em algum lugar
entre aqui e aqui E então ele irá
para essa posição y -253 e, em seguida, manterá
a posição x. Então, definimos a posição x aqui
com esse número aleatório, e então essa posição x
será a mesma. Ele permanece o mesmo, então não
é alterado posteriormente. Sempre será isso aqui. Com isso, estamos definindo a posição x para
um número aleatório, e então isso estará
neste bloco aqui
neste bloco de posição. Então, o
balão sempre subirá. E aqui também podemos ver. Você também pode arrastar isso para
qualquer lugar que quiser aqui. Também podemos ver que esse
x sempre será o mesmo, mas será definido aleatoriamente
no início do jogo Então, desta vez foi -166, e na próxima vez é -107, e na próxima vez é Mas aqui estamos deslizando para
a mesma posição x em que
estivemos aqui aleatoriamente Ok, eu acho que isso está
claro, deveria ficar claro. Então, esse x está apenas mantendo
a posição x e o y e a
posição alvo de 200 aqui. E dessa forma, esse é o
tipo de jogo que eu tinha
em mente no início. Então, temos um
balão partindo de uma posição aleatória
indo direto para cima
e, em seguida, o usuário ou o
jogador precisa clicar nele Então, também podemos entrar em tela
cheia e
ver como é,
então, iniciando o jogo, o usuário
precisa clicar nele, e então ele deve desaparecer, e o usuário ganha pontos por isso. Então, no momento, temos apenas um balão, não é muito interessante,
mas se tivermos, digamos, cinco balões Será muito
difícil clicar em todos os balões antes
que eles atinjam o alvo aqui Ok, então isso é tudo para melhorar
o movimento do balão, e acho que podemos
continuar assim, e podemos simplesmente
fazer mais balões E então a lógica do movimento aqui será,
obviamente, a mesma. Mas antes de fazer isso, precisamos implementar a lógica
do clique para que quando o jogador clicar
no balão, ele desapareça e o usuário ganhe
pontos, por exemplo Ok, então vamos fazer isso
no próximo vídeo.
6. 06 O evento clicado: Agora que temos o movimento dos
balões no lugar, posso mostrá-lo novamente aqui. O balão vai de uma
posição horizontal aleatória para cima
e depois Desaparece aqui fora dos limites. Agora que temos isso, a única coisa importante
que falta é, claro,
que o jogador precisa
clicar no balão e
o balão então desaparecerá e o
jogador ganhará pontos Isso é bem fácil. Só precisamos de dois blocos para clicar e depois
esconder o balão, e podemos encontrar o primeiro
bloco aqui em eventos, pois clicar
no balão desse Sprite aqui é Temos isso quando a bandeira, quando go já está clicada aqui, mas abaixo está
quando esse Sprite clicou,
e aqui também temos
quando e aqui também temos Isso é para eventos de teclado, mas isso aqui é para
o evento de clique. Nós arrastamos isso para o
nosso Canvas aqui, e então temos esse evento. Quando esse sprite é clicado, faça o seguinte e,
o que precisa ser feito aqui, precisamos ocultar o sprite Isso é muito fácil.
Nós já tínhamos isso. Temos um show aqui e
depois um esconderijo no final, vamos olhar novamente, e então temos um esconderijo aqui. Basta arrastar a pele para
esta posição aqui e podemos experimentá-la. Então, vamos embora. E
então clicamos nele. Oh, eu perdi isso aqui. Mas agora eu
consegui clicar nele e você vê que o balão
desaparece aqui, está escondido OK. Vamos fazer isso de novo. Então, desta vez eu estava
melhor preparado. Portanto, não é muito difícil
bater no balão. Mas se você tem,
digamos, cinco balões aqui, todos em posições aleatórias, então talvez seja um
pouco mais difícil Então, isso é bem fácil. Também podemos usar a tela cheia e depois testá-la em condições
reais de jogo. Isso é muito fácil
com um balão. Também podemos usar, é claro, uma velocidade maior, uma
velocidade maior. Como fazemos isso? Nós apenas mudamos a hora aqui, o intervalo de tempo desliza de
2 segundos para x, então podemos fazer com que seja um
pouco menos de 2 segundos, 1,5 segundos, e então a
velocidade deve ser mais rápida, e também podemos usar Vamos tentar 1 segundo, e então será bem rápido, e também será
muito difícil acertá-lo. Vamos ver. Eu
consegui fazer isso. Agora, esse eu perdi
, de novo. Vamos fazer isso de novo. Sim. Isso é muito difícil. Talvez seja muito difícil, mas vamos
deixar as coisas assim. E agora temos a mecânica básica
do jogo implementada. O balão começa a subir, então podemos clicar nele
e depois desaparecerá Talvez queiramos adicionar mais tarde uma animação para
que o balão estoure No momento, está apenas
escondido aqui com esse bloco. Então, toda vez que o
sprite é clicado, o balão fica escondido Agora, o que precisamos
fazer é, claro, o jogador ganhe pontos por isso para
que, no final, quando todos os balões acabarem, o jogador possa ver
quantos pontos ele ganhou Isso será feito no próximo vídeo ,
porque não é
tão fácil. Precisamos usar
variáveis para isso. Eu já
mencionei variáveis, mas esse é um conceito muito
importante, então isso estará em
um vídeo extra, e então também podemos contar os pontos e
exibir a pontuação.
7. 07 Reproduza som e conte a partitura: Agora que
escondemos nosso balão, quando o jogador clica nele, precisamos contar a pontuação Mas primeiro, vou apresentar
outro recurso aqui, então temos que tocar um pouco de som aqui
quando o balão estoura, então precisamos
tocar um som pop Os sons que você tem aqui na
categoria sons, basta arrastar este bloco
aqui abaixo Depois da altura, precisamos
tocar um som aqui. Essa é a guitarra elétrica. Este não é o som certo, então precisamos alterá-lo para pop, e então você poderá ouvir que isso
reproduzirá um bom som pop. Quando o jogador clicar
no balão, esse som será reproduzido, então vamos tentar trabalhar Ok, é isso para
o som por enquanto, vamos entrar nas variáveis e
contar a pontuação aqui. O que são variáveis e
por que precisamos delas aqui? Pelo menos precisamos de
uma variável aqui e precisamos
contar a pontuação. Cada vez que o jogador bate
no balão, estoura o balão,
então, digamos, dez pontos devem ser adicionados à pontuação e
a pontuação deve
ser Já temos uma variável aqui e ela já está
exibida aqui. Esta é a exposição do
balão, coloque-a aqui. E como a obtivemos? Está aqui em movimento,
então categoria movimento, e então temos essa
caixa de seleção que o exibirá. Também podemos exibir
a posição y e também a direção. Vamos somar tudo isso e voltar
às nossas variáveis. Essas também são variáveis, mas não podemos definir as variáveis. Não podemos alterar o valor dessas variáveis
aqui diretamente. Isso é interno
ao sistema de jogo aqui. Mas é semelhante a uma
variável porque isso aqui representa um valor e
um valor que pode mudar. Podemos usar isso em todos os lugares onde esses campos arredondados estão. Podemos simplesmente colocá-lo lá, e isso é um
espaço reservado para um valor Esse -210, por
exemplo, é um valor. Esse é um valor fixo. Sabemos qual é o valor, -210. Mas aqui, não é óbvio
qual posição essa
será , só fica clara em tempo de
execução ou é
definida apenas em tempo de execução. No momento, a posição será determinada
no momento. Também podemos exibi-lo aqui, mas se rodarmos o jogo
, isso mudará. Variável. Além disso, é claro, o nome
significa valor variável, então ele pode mudar e precisa mudar para
torná-lo realmente útil. Uma variável é um espaço reservado para um valor que mudará, ou
seja, variável Vamos criar nossa própria variável
e precisamos nomeá-la de alguma forma. Então, criamos uma nova
variável chamada pontuação. Criar uma variável é
o botão aqui. Acesse as variáveis aqui,
as variáveis da categoria. Já temos um aqui. É predefinido. Também podemos excluir essa variável porque não
precisamos dela. Então, clique com o botão direito nessa variável predefinida e exclua a variável my variable Vamos fazer com que
um novo torne variável. E então podemos escolher um nome. Então, escolhemos a pontuação do nome. Também podemos escrevê-lo assim. Em seguida, você também pode decidir se essa variável é para
todos os espordes
ou apenas para esse sprides ou apenas para esse Eu diria que, como temos
mais de um sprides, devemos definir
a variável de pontuação aqui para todos os Sprides.
O que isso significa? O valor da pontuação estará
disponível para todos os Sprits, não apenas para esse prêmio É isso que queremos,
não só para esse conjunto, porque queremos mostrá-lo Talvez queiramos usá-lo em um spr diferente, talvez em um
script para um spride diferente, então vamos defini-lo
para todos os Em K, e agora temos essa
variável aqui em variáveis, e ela se parece com esse movimento x posição
aqui, posição y. Eu também arredondei aqui, retângulo
arredondado,
os cantos arredondados, isso é azul, mas
isso é laranja, então essa é nossa própria variável Podemos usar essa variável qualquer lugar que quisermos
nesses campos arredondados, por exemplo, aqui, aqui, podemos ver que podemos
soltá-la em qualquer lugar aqui. Ok, então essa caixa de seleção também
está aqui, então você pode mostrar
o valor, o valor atual dessa
variável também clicando aqui, e então ela
aparecerá no jogo Vamos nos livrar dessa posição do
balão. Então, basta remover a
caixa de seleção aqui. Não precisamos mais disso. Mas a pontuação,
devemos exibir, então mantenha a caixa de seleção
marcada aqui Agora temos a pontuação
exibida aqui, mas é zero. Esse é o
valor padrão, o valor inicial. E se clicarmos no
balão, ouvimos o som. Mas é claro que a
pontuação permanece a mesma. Agora que temos nossa variável, podemos usá-la. Podemos alterar o
valor em tempo de execução. É para isso que
servem esses blocos. Essa é a pontuação
definida de um bloco, neste caso, 20 ou altere a pontuação por um
com esses dois blocos, você pode alterar o
valor da variável. O que nós precisamos? De qual desses blocos precisamos agora? Bem, precisamos do
segundo porque o primeiro definirá a
pontuação em um valor fixo, mas precisamos
aumentar o valor da pontuação em um determinado valor. Vamos usar esse
bloco, arraste-o aqui. Logo abaixo, digamos que
depois de se esconder . Basta soltá-lo aqui. Altere a pontuação em um. Vamos ver o que isso faz e, para facilitar um
pouco para mim, vou alterar ou
aumentar esse tempo aqui, talvez digamos 5 segundos, e isso seria muito fácil porque
o
balão está muito lento Vamos abrir e você verá que
temos dois. Por que temos dois? Porque toda vez que eu
clicar aqui,
isso vai aumentar, e
eu só cliquei uma vez, e então eu comecei o jogo
e estourei o balão Então, temos dois. Mas é claro que precisamos redefinir a pontuação
no início do jogo. Então é isso que precisamos fazer. Para isso, precisamos usar
o primeiro bloco aqui. Então, defina a pontuação como zero, que já é kag, defina-a aqui logo após clicar em go, solte-a aqui e, em seguida, a pontuação será definida como zero Então, cada vez que
começamos o jogo, começamos com uma pontuação
zero, é claro. E então estouramos o
balão e temos um. Então, como
temos apenas um balão, não
consigo obter mais do que uma
pontuação de um no momento Mas de qualquer forma, isso funciona
muito bem aqui. Então eu estouro o balão e obtenho uma pontuação de um Então, se tivéssemos dois balões, o jogador seria
capaz de obter uma pontuação de dois É assim que você usa variáveis. Você pode alterar a variável
por um determinado valor. Nesse caso, um, eu também
posso usar talvez dez. Então, quando eu estouro o balão, eu ganho dez pontos, não faz muita diferença, mas talvez existam balões
maiores que só dão ao
jogador cinco pontos, então você pode usar dez e depois cinco para os maiores, porque
eles são mais fáceis de acertar Isso é tudo para variáveis. Não é tudo o que você precisa saber sobre variáveis, mas como usá-las. Assim, você pode defini-los aqui
para um determinado valor. Você também pode
defini-lo como um valor aleatório. Então, por exemplo, talvez você possa
ir aqui e escolher aleatoriamente de 1 a 10. Então, basta soltá-lo aqui. E então a pontuação será
definida para um número aleatório, não muito útil neste caso, mas para mostrar o ponto. Agora serão cinco e
outra vez seremos dez, outra vez seremos seis. Se eu estourar, for o balão, ele será
aumentado em dez aqui Podemos vendê-lo por um valor fixo ou esse valor aleatório aqui também, e podemos
aumentá-lo em uma certa quantia. Ou também podemos
aumentá-lo em uma quantidade aleatória. Você pode colocar essa escolha
aleatória aqui também
nesta alteração por campo.
Vamos tentar isso. Estoure e ganhamos quatro pontos, e depois ganhamos três pontos. E na próxima vez,
ganhamos nove pontos. Não é muito útil
aqui, mas de qualquer forma ,
isso é possível, vamos
nos livrar disso e usar dez aqui. Então, cada vez que estouramos o balão, o jogador estoura o balão, então ele ou ela ganha
dez
8. 08 Fazendo mais balões: Nosso jogo está funcionando
com um balão. Não é tão interessante, nem tão difícil, mas está funcionando e também
temos a pontuação. Mas precisamos de mais balões
e como fazer isso? É bem fácil. Só precisamos duplicar nosso primeiro Clique com o botão direito no
s aqui na lista. Então, balão um, clique com o botão direito, dobre e temos um
segundo Vamos tentar o que acontece
se rodarmos o jogo. Temos dois balões. E podemos pular os dois. E sempre obteremos
20 pontos como pontuação, é
claro, porque sempre
estouramos os dois balões. Então, isso é muito bom porque acabamos de
duplicar esse balão e tudo funciona Portanto, não havia necessidade de mudar nada aqui no roteiro, mas talvez possamos mudar
a cor do balão Vamos entrar no balão
dois selecionado aqui, e depois nos trajes, e então temos
esse balão azul, o mesmo que o primeiro, então precisamos trocá-lo Vamos até este
pequeno botão aqui, e então ele se expande
com esta lista, para que possamos fazer o upload de uma nova roupa.
Podemos pegar uma aleatória, ou podemos pintá-la, ou
podemos escolher uma fantasia Isso é o que fazemos. Vamos escolher uma roupa, e depois procuramos
aqui o balão, lá temos os balões Já temos
o balão azul. Vamos usar um balão amarelo aqui, e aí temos
o balão amarelo Podemos nos livrar
da primeira aqui da
primeira fantasia aqui da lista porque só precisamos
desse balão amarelo aqui É isso mesmo. Agora
temos dois balões, um azul, um amarelo,
e vamos começar um jogo Para que fique mais bonito
com duas cores aqui. Nós podemos fazer mais
desses, é claro. Também podemos tornar
isso mais difícil O
problema é que
agora precisamos alterar dois desses sprites aqui porque cada sprite tem
seu próprio script aqui, então precisamos alterar
os dois Por exemplo, 5 segundos aqui
é um pouco demais, então definimos para dois, mas agora precisamos mudar
os dois scripts porque se eu apenas trocar o do balão amarelo,
então só o alteramos para o balão amarelo, é
claro, não para o azul Então, vamos mudar para o azul e também configurá-lo para dois aqui. Agora está definido nos dois
scripts em ambos os códigos, temos a mesma quantidade de tempo ou a mesma velocidade aqui Isso fica mais difícil agora, mas ainda é factível Mas se tivéssemos um terceiro balão
, seria muito
difícil fazer isso Temos dois balões agora, mas temos o problema de
que precisamos
mudar o script de
cada balão aqui, de cada um para fazer alterações
como a velocidade aqui ou talvez se quisermos mudar o som aqui
para um diferente,
um que tenhamos enviado, Também podemos gravar um som aqui. Precisamos fazer isso aqui
duas vezes. Isso é um problema. No momento, a
solução será preparar um sprite aqui
e preparar um script E se você tiver certeza de que
esse é o script final, duplique o sprite Então, digamos que temos
o roteiro final aqui. Não há necessidade de mudar nada aqui. Então, podemos duplicá-lo. Digamos, quatro vezes. Agora, vamos começar o jogo. Então, temos três balões amarelos e um balão azul aqui Mas também podemos
mudar, é claro, aqui, o traje
do terceiro. Vamos vestir fantasias. Escolha uma fantasia. Procure um
balão. Aí está. Pegue esse roxo. Facilite o primeiro
aqui e aqui. Bem, vamos fazer o mesmo. Procure por um balão. Mas nós só temos
essas três cores aqui. Isso é um problema, talvez. Então, vamos voltar e
mudar a cor aqui. Então selecione o balão ou a parte
principal do balão, e então vamos enchê-lo e
trocá-lo um pouco Vamos colocar mais no vermelho. Temos uma cor mais
avermelhada aqui, e você também pode mudar
essa. Por exemplo, torne-a um
pouco mais vermelha, assim Sim, tudo bem. Você também
pode, é claro, trocar a roupa aqui
ou colocar
uma diferente conforme desejar. Agora temos quatro balões aqui, e vamos ver se podemos estourar todos Não, não foi bem sucedido. Vamos entrar no modo de tela cheia. Sim. 40 é a pontuação máxima que podemos alcançar aqui neste jogo, e isso é muito bom. Mas se os balões
estiverem mais afastados, talvez não seja
possível estourar todos eles. Eu consegui fazer isso. Perdeu um. Sim. Agora eu
tenho todos os balões. Ok, então eu diria que é
isso para o nosso primeiro jogo. Mas há mais uma
coisa que eu posso fazer para configurar aqui o
número de segundos. Cada balão tem que
chegar ao destino. Também podemos usar
variáveis, é claro. Então, vamos criar uma
nova variável aqui. Crie uma variável aqui, abaixo das variáveis da categoria. Vamos criar um novo, e
também para todos os sprites, porque queremos
usá-lo em todos os sprites Então, chamamos isso de velocidade,
basta chamá-lo de velocidade. Não é preciso porque é um número de segundos, mas de qualquer forma, vamos chamá-lo de velocidade, e menor
o valor,
maior a velocidade. Mas de qualquer forma, acho que está tudo bem. Não precisamos
exibi-lo aqui, então podemos remover a
caixa de seleção e, em seguida, ela desaparecerá. O que precisamos fazer? Precisamos substituir esses dois
aqui, deslizar 2 segundos dois x e y, precisamos substituí-los por
uma variável Então, a variável de velocidade aqui, então vamos arrastá-la até
aqui, soltá-la
e temos a
velocidade de deslizamento segundos até esta posição Então, precisamos definir, é claro, a variável aqui, o valor da
variável, como, digamos, 1,5, e podemos
fazer isso aqui ao clicar. Aqui, arrastamos essa
variável definida com dois valores
e, em seguida, escolhemos a velocidade e
aqui no campo de valor, basta inserir 1,5. É isso mesmo. Esse britânico
aqui tem agora esse 1.5, esse, então vamos verificar isso Um é mais rápido, veja, e isso precisamos fazer com
todos os balões aqui Agora precisamos colocar
a variável de velocidade
aqui neste lado. Isso é fácil, vá até o balão
roxo e arraste a
variável de velocidade aqui para deslizar, e depois para o
balão amarelo o mesmo,
e para o balão azul Então, todo balão tem
a mesma velocidade aqui. Vamos experimentá-lo. fica muito difícil
estourar todos os balões,
então vamos tentar Apenas um, também um, três, isso é pontuação alta. Agora, três é minha pontuação mais
alta aqui. É quase impossível
fazer todos os quatro. De qualquer forma, agora podemos usar
essa variável aqui, e também precisamos definir
o valor da variável aqui na primeira ou na quarta aqui
no balão quatro Podemos realmente usar essa
velocidade definida para 1,5 em qualquer lugar aqui, mas só precisamos
fazer isso em um sprite Vamos deixar isso
aqui, e não
precisamos definir a pontuação
para zero em cada sprite, então talvez também possamos nos
livrar disso Remova-o aqui e
remova-o aqui. Você também pode
deixá-lo lá. Não é tão importante, mas não é necessário
configurá-lo em cada sprite aqui em cada script Então, só precisamos
configurá-lo aqui em um sprite. E o mesmo para a
velocidade, a velocidade e a pontuação são definidas no último sprite
aqui no sprite vermelho, e então todos os outros sprites
podem usar Vamos experimentá-lo. Trabalhando. Usamos variáveis aqui em dois lugares. Em primeiro lugar estava essa
pontuação que
aumentava dez toda vez que o jogador batia em um balão, estourava um balão, e o segundo lugar
estava aqui em planar e a quantidade de segundos usada para chegar à
posição alvo,
por assim dizer, a velocidade
do É isso para esta parte. Agora também podemos melhorar um pouco
o jogo, por exemplo, podemos usar um atraso aleatório
para cada balão para que nem todos os balões se movam
ao mesmo tempo. Nós faremos
isso na próxima.
9. 09 Como adicionar delay aos balões: R. Então, vamos tornar o jogo um
pouco mais interessante atrasando cada movimento,
cada movimento do balão
por um tempo aleatório Isso é o que fazemos, e
isso é bem fácil porque temos esse bloco
aqui. Sob controle. Vá para o controle de categoria e , em seguida, o número
do primeiro bloco em segundos. Isso aqui pode ser um número fixo, por exemplo, um segundo,
2 segundos, qualquer coisa. Podemos tentar isso primeiro. Vamos fazer isso no balão
quatro no balão avermelhado. Podemos simplesmente inseri-lo aqui. Ou talvez devêssemos
apenas movê-lo aqui abaixo desses blocos variáveis definidos. Portanto, antes de
iniciarmos o movimento, esperamos 1 segundo e vamos verificar o que isso faz. E vemos que o balão vermelho está atrasado em 1
segundo. Isso é fácil. Mas isso não é muito interessante porque cada vez
que iniciamos um jogo, isso sempre será de 1
segundo, então é previsível. Não queremos que isso seja
previsível porque é um jogo e deve ser divertido, é claro. Então, vamos corrigir isso. É fácil. Vamos até os operadores
e esse bloco aqui, escolha aleatoriamente de um a dez,
escolhe um número aleatório Acabamos de colocá-lo aqui
em peso neste campo arredondado aqui, e então temos uma
escolha de peso aleatória de um a dez. Dez é um pouco
longo, 10 segundos. Então, digamos quatro, 4 segundos, e então tentamos isso. Então, cada vez que iniciamos o jogo
, deve ser um, dois, 4 segundos aleatoriamente,
e aqui está Talvez tenham sido 4 segundos. Vamos tentar novamente.
E agora temos talvez 3 segundos.
Vamos fazer isso de novo. 4 segundos e
vamos fazer isso de novo. Também podemos fazer isso de 0 a 4. Veja se eu faço isso, então você vê que o
reset da posição aqui sempre acontecerá
depois do peso aqui. Acho que precisamos
mover isso aqui. Vamos mover isso para x
e y acima do peso. Ele será reiniciado imediatamente para essa posição aqui e
, em seguida, esperará e deslizará Isso é melhor. E
aí está o balão. Ok, então temos esse mecanismo de ponderação
aqui para o balão vermelho Precisamos disso também para
os outros balões. Então, vou te mostrar algo para que você
possa copiar um bloco, um bloco complexo como esse, como esse peso
com um número aleatório de segundos para os
outros balões Para isso, basta
extrair isso aqui. Podemos simplesmente separar isso
e depois arrastá-lo para fora. Então esse bloco aqui pode simplesmente arrastar para os outros sprites aqui Por exemplo, este é
que ele se mexe um pouco, então você pode soltá-lo aqui e, dessa forma,
ele será copiado Este bloco aqui fica aqui, mas também será copiado
aqui para este sprite Aqui está,
e agora podemos simplesmente colocá-lo aqui logo antes do deslizamento e depois voltar
para o balão vermelho, e então também podemos arrastá-lo
até a segunda espada, soltá-la e também até
a Agora precisamos colocá-lo
na posição correta aqui. Logo antes de planar, esperamos por um
número aleatório de segundos. O mesmo vale para o balão
azul aqui. Logo antes de planar, esperamos por um número aleatório de
segundos. É isso mesmo. Vamos tentar ver os balões esperarem por um número
aleatório de segundos. Novamente, é claro, o balão vermelho não está
mais funcionando porque o
arrastamos para fora, então vamos colocá-lo de volta
aqui. Juntos novamente, dessa forma, o balão vermelho também
funcionará Há um problema.
Talvez você já tenha visto isso. Se eu começar de novo, você verá que todos os balões
estão esperando para subir aqui Isso é muito fácil
porque o jogador pode simplesmente colocá-lo na parte inferior. Temos um pequeno problema aqui, mas é fácil de resolver. Vamos ver o que temos aqui. Estamos definindo a pontuação zero aqui em nosso script de balão
vermelho, estamos definindo a velocidade para 1,5, e vamos para essa posição
inicial aqui, e então a mostramos Depois de mostrarmos o
balão, estamos esperando. O problema é que
aqui, neste momento, o balão já está mostrado, e então ele espera,
digamos, no máximo 4 segundos, e nesse tempo, o
jogador pode ver o A correção é muito fácil, altere o pedido aqui. Precisamos mostrar o balão
logo antes desse deslizamento aqui, e isso precisará acontecer em cada
sprite Nós inserimos o peso
na posição errada. Ou o programa está
na posição errada agora, vamos corrigir isso. É isso para o balão
roxo, e fazemos o mesmo para
o balão amarelo aqui e para o azul O show deve ser logo
antes de começarmos o planador. Aqui, está correto.
Vamos verificar novamente, mostrar logo antes do planador Então isso deve estar correto. Vamos tentar. Os balões não
são mostrados antes de
começarem a se mover Está melhor agora, e eu posso tentar estourar os
balões. Sim, sim. Não. Sim. Foi uma falta. Vamos tentar novamente. Dessa vez. Eu tenho a pontuação máxima de 40. Agora temos um bom jogo e
é muito divertido, e não é tão fácil
bater em todos os balões,
estourar todos os balões estourar todos os Por exemplo, agora,
eu só tenho 30, e você também pode, é claro, duplicar aqui mais balões para que você possa ter
talvez dez ou qualquer Além disso, esse atraso pode
ser um pouco maior ou esse
atraso aleatório pode ser de talvez 5 segundos, para que
seja mais fácil
estourar os balões ou mais
difícil, conforme você quiser Mas acho que isso deve
concluir nosso primeiro jogo. Na minha opinião, isso
é muito bom, ou talvez devêssemos nos
livrar deste ano. Essa posição Y
não precisa ser exibida. É mais uma vez.
Vamos começar o jogo. Já perdi um balão. Agora eu também tenho 30 como pontuação. Sinta-se à vontade para
brincar com isso e se divertir. Talvez você possa melhorar
uma ou outra coisa aqui. Talvez possa melhorar um pouco a
mecânica do jogo, você pode dobrar mais balões para
dificultar as coisas ou o jogo
demorar um pouco. Se você tiver
cada vez mais atrasos, o jogo fica
mais longo
, é um pouco. Se você tiver
cada vez mais atrasos, o jogo fica
mais longo
, o jogo fica
mais longo
, Talvez você também possa trocar
as roupas aqui. Se você não gosta desse balão, você pode desenhar o seu próprio ou importar um novo traje, fazer o upload do traje aqui e
depois escolher, por exemplo, um PNG JPEG ou um SVG, então você pode substituir
esse balão aqui pelo
seu próprio balão ou talvez
você Com os trajes predefinidos aqui. Isso conclui nosso
primeiro jogo e o próximo jogo começará
na próxima seção
10. 10 Crie uma conta para armazenamento e compartilhamento em nuvem: Antes de continuarmos com
nosso próximo projeto de jogo, mostrarei como entrar no
Scratch e como criar
uma conta para que você possa armazenar seus projetos,
seus jogos on-line e também compartilhá-los com outras pessoas para que outras pessoas
possam jogá-los, além de dar uma olhada
no código em nossos scripts
e, em seguida, fazer
ajustes no jogo, criar seu próprio jogo com base em seu jogo e todas
essas coisas boas. Vamos fazer isso. Você precisa
clicar em Join Scratch aqui e, em seguida, inserir um nome de usuário. Por exemplo, eu coloquei o jogo Def teacher e depois uma senha,
então você pode querer desmarcar esta caixa de seleção aqui para
não mostrar sua senha, mas eu também posso deixá-la marcada que qualquer coisa que você digitar
aqui fique visível, eu não vou fazer isso,
então vou criar uma nova conta aqui e depois
usar uma senha aleatória Eu não vou aparecer. Portanto,
você precisa digitar sua senha duas vezes para
ter certeza de que a digitou
corretamente
e, claro,
precisa se lembrar da senha Então, coloque-o talvez em
um gerenciador de senhas, algo assim, ou
anote-o e esconda-o. Então, se você digitou
corretamente
as duas senhas, senhas
idênticas aqui Você pode clicar em Avançar
e, em seguida,
escolher seu país. Então, estou escolhendo a Alemanha
porque esse é o meu país, mas por favor, escolha seu próprio ano e mês de seu aniversário. Então isso é meu aqui. Eu sou um e-mail, e depois o próximo. Qual é o seu e-mail? E então o scratch o
manterá informado sobre coisas novas adicionadas ao
scratch, algo parecido. Então, basta inserir seu
endereço de e-mail. Vou colocar a minha aqui e depois criar sua conta
com este botão aqui. E demora um pouco. Então, bem-vindo ao professor do Scratch
Game Df. Então, agora estou trancado aqui. Também tenho esse menu aqui, configurações da
conta
do perfil MyStuff Então, vamos
primeiro ao perfil. Aqui está meu perfil. Você pode escrever algo
sobre mim, no que estou trabalhando, e também pode mudar
sua foto aqui. Basta se livrar disso, confirme seu e-mail para ativar o compartilhamento. Para compartilhar um projeto, você precisa clicar em um link
no e-mail que
você recebeu. Eu já deveria ter recebido, basta clicar
aqui e você pode inserir aqui seu nome, que estou trabalhando e também
alterar sua foto aqui. Também aqui, você tem uma lista
dos seus projetos compartilhados,
dos seus projetos favoritos e dos rascunhos que
você está acompanhando Mas isso não é tão importante. Você tem uma mensagem aqui. Aqui
estão as mensagens do zero. Bem-vindo depois de fazer
projetos e comentários, você recebe mensagens
sobre eles aqui, explore e crie um projeto.
Isso é o que faremos. Vamos voltar ao
nosso projeto aqui. Veja nossa página do projeto aqui, e também podemos salvar agora aqui, ou podemos salvar como uma cópia. Para que seja
feita uma cópia do seu projeto. Mas, por enquanto,
salvamos o projeto salvo
e, em seguida, podemos
dar uma olhada na página do nosso projeto. Aqui está. Você
também pode alterar, é claro, o nome aqui, balões estouram e aqui você
também pode jogar o jogo E instruções são
instruções para jogar o jogo, e outras notas e créditos também
podem ser inseridos aqui. Mas, por enquanto, isso não é compartilhado. Você precisa clicar em compartilhar
e, em seguida, outros
arranhões também podem ver o projeto,
reproduzi-lo e editar o projeto de
quem eles estão gostando Vamos voltar aqui,
fechar este tutorial. Estamos logados em nossa conta
e, como eu disse, você pode economizar online Você não precisa fazer o download. Você também pode baixá-lo, é
claro, e carregar
do seu computador, fazer upload de um projeto,
mas também pode salvar agora online na
nuvem, por assim dizer. Ou você também pode fazer uma cópia. Agora fizemos uma cópia e o nome mudou
para Balloons pop copy Agora você tem dois projetos. Aqui, se você clicar aqui, neste botão,
poderá ver suas coisas. Minhas coisas são dois projetos
não compartilhados, zero projetos compartilhados porque eu não compartilhei
nenhum projeto aqui Agora isso é privado aqui, mas você também pode excluir
os projetos aqui, ver o interior para editá-los, reproduzi-los e compartilhá-los. Isso é o que eu
queria te mostrar. Vamos voltar aos nossos balões. Pop. E aqui
temos nosso projeto. Então, toda vez que você fizer login em
outro computador,
talvez você ainda possa editar seus projetos aqui porque
eles estão salvos online.
11. 11 Novo jogo que controla a nave espacial: Então, aqui estamos. Este é
o começo do nosso novo jogo, chamará Space Explorer, e o jogador controla
um foguete espacial que viaja pelo espaço e encontra coisas
como meteoróides,
rochas, rochas Mas também talvez recursos de
matéria-prima, algo valioso pelo qual
o jogador ganha pontos,
e se o jogador, o foguete atingir um
meteoro, por exemplo,
haverá danos, e essa será E vamos começar. Então,
temos esse ano de CATs. Eu comecei um novo projeto. Podemos excluir o gato e
criar um novo sprite aqui, escolher um sprite os recursos aqui
dos sprites predefinidos, e podemos
procurar um foguete,
e aí está, nosso foguete e aí está, nosso Basta clicar nele. Você também pode
ver que ele
tem uma animação. Então, vamos conferir as
roupas aqui. E você pode ver que
tem cinco quadros aqui, animação para cinco quadros, e podemos usar isso para tornar
o visual um pouco mais interessante para ter
uma animação do objeto do jogador
aqui,
a nave espacial Mas primeiro, vamos começar a
controlar a nave espacial. A ideia é que você possa controlar a nave espacial usando
as teclas do cursor, as teclas seta para cima moverão
a nave espacial para baixo e para a Para a esquerda e da
direita para a direita. Fácil, mas precisamos
aprender um novo conceito. Então, vamos tornar nossa nave espacial um pouco mais
adequada para o jogo Vamos torná-lo um
pouco menor, talvez 30, definir
o tamanho para 30, então será muito menor, mas também
haverá mais espaço para outras coisas, como
meteoróides e outras Aqui está, e vamos
entrar no código aqui. Vamos para a
seção de eventos e, em seguida, clique aqui para acessar
nosso script Canvas.
OK. Quando clicar em go, então,
temos que definir a posição
inicial Vamos para o movimento e depois para dois e depois para
a posição inicial. Eu sugiro que
você comece do
centro da tela, e o centro
da tela seja zero, zero, essa será
a posição inicial. Bem no centro,
então aqui vai para o sim positivo e aqui
para o sim negativo. Você pode ver isso aqui
se eu simplesmente for para a posição
y e marcar
esta caixa de seleção aqui. O valor será
exibido aqui. No momento, é
zero, claro, porque eu comecei o jogo e esse bloco aqui está
configurando para zero, e também o x será zero. Eu também posso te mostrar o x aqui. Se eu mover isso para o topo aqui, você pode ver que o y fica mais nos valores
positivos. Se eu movê-lo para baixo, você verá
que isso é menos alguma coisa. Isso é positivo y, isso é negativo y,
e à esquerda, você também pode ver para o x, isso é negativo x, e isso é positivo
x para a direita. Ok, então agora temos isso. Estamos centralizando o
foguete e agora
precisamos deixar o jogador
controlar o navio precisamos deixar o jogador
controlar o Vamos nos livrar deles, então desmarque essas duas caixas aqui, e então teremos mais
espaço para o resto Então, como você controla isso? Estamos apresentando
aqui algo que você pode chamar de loop de jogo. E o que é um loop de jogo? O loop do jogo é algo
que se repete para sempre. Não para sempre, mas
enquanto o jogo rodar, ele se repetirá infinitamente.
Então, onde está isso? Ficamos sob controle, e então temos isso para sempre. E também é chamado de “para sempre”. Então, basta arrastar isso
para baixo, vá para x, vá para y. E aqui temos esse loop, e o que significa loop? Isso significa que tudo
dentro se repete infinitamente. Então, se você fizer algo
depois disso aqui, nunca será executado. Então, se eu fizer algo
assim aqui, mover dez etapas, por exemplo, não consigo nem anexá-lo aqui porque o scratch sabe que
depois desse loop eterno, não faz nenhum
sentido colocar algo lá porque isso
não será executado. Então isso não é possível. Você só pode mover isso
dentro do loop eterno. Então, o que acontece se eu fizer isso? Então, dê dez passos.
Vamos fazer isso. Vamos começar isso, e você
vê que vai para a direita. E então sim, está
meio preso aqui, então você não pode
movê-lo mais do que isso. Portanto, o x será de
no máximo 242 aqui. Então, mover isso mais para a
direita, não funciona. Então, isso é sempre
fazer isso aqui. E se você fizer duas
coisas em sequência, ele também fará essas duas
coisas para sempre. Então, vamos fazer
outra coisa. Vamos para uma posição aleatória
depois de dar dez passos. Execute isso e você verá que está se espalhando por
todo o lugar o mais rápido
possível. Isso não é muito
útil, mas
também podemos inserir um atraso aqui. Vamos para o controle, e aqui temos o bloco de
espera de 1 segundo, ou podemos esperar 1 segundo
ou dois ou qualquer outra coisa. Vamos tentar isso. Você
vê que está se movendo dez ,
depois espera por 1 segundo e depois se move para
uma posição aleatória Mas de qualquer forma, não
precisamos disso aqui. O que precisamos é de outra coisa. Espero que você entenda que
tudo o que está
aqui dentro se repetirá
para sempre. Não há saída. Será sempre repetido, repetido
e repetido. Também há um loop
diferente aqui. Você pode repetir dez vezes. Em seguida, ele apenas
repetirá dez vezes. Ou você pode repetir até, e isso repetirá
os blocos internos aqui até que uma condição seja atendida
e, em seguida, ela sairá. E você percebe que eles
têm um pequeno entalhe aqui. Então você pode fazer
algo depois disso. Mas no futuro,
você não tem isso, não há como anexar
algo aqui depois de uma eternidade, o
que é meio lógico, então você deve ter em mente que nunca sairá
desse ciclo eterno Então, sempre estará aqui. Mas você também pode adicionar um evento
diferente aqui. Então, quando você quiser fazer
algo em paralelo, você sempre pode arrastar outro ao clicar aqui e depois
adicionar um script. Isso é possível. Você pode ter
duas coisas funcionando ao mesmo tempo, ou três ou quatro ou
qualquer outra coisa, quantas quiser. Nesta
lupa para véspera, o que fazemos? A ideia é verificar
se uma tecla está pressionada e se esse bloco está sendo detectado. Pressionamos esse espaço de tecla e podemos
arrastá-lo para a tela aqui. Mas também precisamos de
outra coisa. Precisamos de algo que também
esteja sob controle. Em inglês, podemos dizer que, se a tecla for pressionada, faça alguma coisa,
e aqui no zero, é a mesma coisa se alguma coisa,
então faça alguma coisa. Essa condição
aqui depois do if, esse pode ser esse bloco aqui. Vamos colocar isso aqui depois
do if. Basta soltá-lo aqui. Então você tem se o
espaço da tecla for pressionado então, e então, sob essa condição, se a tecla de espaço for pressionada, então podemos fazer algo aqui. Mas não queremos
a tecla de espaço aqui, precisamos, digamos que
comecemos com a seta para cima. Se a tecla de seta para cima for
pressionada, faça alguma coisa. O que fazemos então? Claro, nós movemos a nave espacial Vamos verificar como isso é feito. Nós mudamos Y. Nós mudamos a posição
y em uma certa quantidade Então, vamos ficar
com a dezena aqui, mudar y por dez. Portanto, sempre que a tecla de
seta para cima for pressionada, altere y por dez. E dez significa para o topo, então o y será aumentado. Então, vamos verificar se isso funciona. Pressione go, e então eu estou
pressionando a seta para cima aqui, e vemos que isso funciona. Não posso descer, mas eu posso subir. Então eu preciso
pará-lo e reiniciar, e então eu
posso fazer isso de novo. Ok, então vamos fazer o down também. Clique aqui no botão
direito do mouse, e então você pode dizer Duplicar, e então você tem que
colocar este segundo cadeado if duplicado aqui logo abaixo Essa é a seta para cima e
essa será a seta para baixo. Se a seta para baixo for pressionada,
não a seta para cima , precisamos mudar y
na direção oposta. Aqui isso é positivo porque
queremos que a espaçonave
suba e aqui isso
precisa ser negativo, e então o y
da espaçonave cairá.
Vamos tentar isso. Estou pressionando para cima Agora
estou pressionando para baixo. Isso parece funcionar, muito bom. Agora precisamos
movê-lo para a esquerda e para a direita. Novamente, duplique esse bloco. Você tem isso se, e então trocamos a chave aqui. Vamos começar com
uma tecla de seta para a esquerda
e, em seguida, alterar não y
neste momento porque a esquerda é x, e a direita será x. Vamos remover isso
aqui, excluí-lo, e aqui pegamos a alteração x y, colocamos isso aqui, e desta vez, x será alterado por dez. Vamos tentar isso e
vai para a direita. Isso está errado. Essa precisa ser
a seta para a direita. Vamos tentar isso novamente
para a direita, sim, pressionando a tecla direita,
a tecla de seta direita. Isso funciona. A única coisa que resta é a que resta, e vamos duplicá-la
novamente mais uma vez Coloque-o após o anterior if, e agora se a tecla
seta esquerda for pressionada, altere x por, e agora precisamos
movê-lo para a esquerda, significa
que temos que
subtrair dez aqui Vamos mudar isso em menos dez. Novamente, vamos tentar, para a esquerda, para direita, para cima e para baixo,
e isso funciona. Assim, a peça pode
controlar a nave espacial. Se isso for muito rápido, talvez não seja suave o suficiente
, precisamos alterar
esses valores aqui. Talvez possamos dizer,
vamos colocar cinco aqui, e isso
será menos cinco E isso será cinco, isso será menos cinco Agora, a velocidade será
um pouco menor. Vamos tentar isso de novo, e agora a velocidade está mais lenta Agora, temos o controle
da nave espacial. Este é um passo muito
importante aqui. Vamos examinar o código novamente. Quando clicar em go,
estamos colocando a nave espacial na posição
inicial, a posição inicial aqui, aqui, e isso é zero e zero,
x é zero e y zero Então temos um loop. Percorra esses blocos
aqui dentro para sempre, então repita isso para sempre ou
enquanto o jogo continuar. O que fazemos é
verificar em cada iteração
aqui se a tecla, o erro para
cima, o erro para baixo, o
erro para a direita
e a seta para a esquerda ou o erro para a
esquerda estão verificar em cada iteração
aqui se a tecla, o erro para
cima, o erro para baixo, o
erro para a direita pressionados E se for esse o caso, estamos mudando y e
x aqui neste caso. Deixe isso entrar um pouco. Isso é muito importante. É assim que você
faz o movimento, o movimento do controlador. Essa é a
maneira padrão de fazer isso. Você tem esse loop eterno, que é como um loop de jogo em jogos
mais sofisticados. Isso sempre se repete o mais rápido
possível, e aqui estamos sentindo qual
tecla é pressionada e, em seguida, alterando a
posição x ou y de nossa nave espacial Então, no próximo vídeo, substituiremos esse valor
constante aqui, esse cinco neste
caso, por uma variável
para que possamos alterar a
velocidade aqui de acordo com nossa preferência. Não precisa alterar quatro
valores aqui o tempo todo. Talvez haja algo como um power up ou algo que
possa aumentar a velocidade, então precisamos substituir esses valores constantes
aqui por uma variável. Mas vamos fazer isso
no próximo vídeo.
12. 12 Como adicionar o fundo: Estamos aqui em nosso jogo de explorador
espacial e agora se trata de
criar o plano de fundo. Você pode pensar que
é o plano de fundo, então temos que usar os
cenários aqui. Mas há uma razão
para não fazer isso. Estamos fazendo isso com
outro sprite. Vamos criar outro sprite. Aqui você pode
escolher um sprite, ou você também pode pintar um sprite,
e é isso que fazemos Claro,
também existem essas opções para fazer upload de uma imagem de sprite, SVG, algo parecido E também tenha uma surpresa
e tenha alguma coisa. Vamos fazer isso, vamos pegar
um sprite aleatório aqui. Não é isso que
queremos, é claro, mas é claro que podemos
excluí-lo novamente. Este é o nosso sprite aleatório. Se você fizer isso de novo, receberá um diferente. Desta
vez é uma tigela. Essa é a opção surpresa, e podemos verificar aqui se
você encontrar algo como espaço, universo ou estrelas, mas você não encontrará
nada aqui. Encontramos um sol, mas não é
isso que queremos. Queremos um fundo preto
com pontos claros,
branco, talvez pontos brancos,
e isso não está
na biblioteca Vamos fazer isso sozinhos,
basta escolher a tinta aqui. Então, podemos pintar
nosso plano de fundo. Vamos começar com um retângulo. Escolha essa ferramenta de retângulo aqui
e, em seguida, escolhemos
uma cor diferente, é
claro, ela deve ser preta Definimos o brilho para
zero, e isso é preto. Se você quiser branco, você tem que definir o brilho para 100 e a
saturação para zero, e agora você tem branco Mas queremos preto aqui, então o brilho a zero
tornará tudo preto. Não importa o que
você define aqui ou aqui. Tudo ficará preto se você definir o brilho para zero. Agora temos a cor preta do
primeiro plano e a
ferramenta retângulo ativada, e então você precisa
arrastar um Então, tente ajustá-lo a
esses limites aqui. Se você criar o
retângulo aqui, poderá ajustá-lo
com esses pontos aqui com os pequenos círculos Vamos fazer com que seja mais ou menos exatamente igual a
essa área interna aqui. Você também pode ampliar. Para verificar se conseguimos. Agora não é exatamente. Agora, está tudo bem. Não precisa ser exato. Se você fez algo errado, basta desfazer aqui,
então essa seta é desfazer
e, em seguida, a última
ação será Vamos corrigir isso aqui. No lado esquerdo, sempre vá
até esses círculos aqui, e então você pode ajustá-los, e então, tudo
bem. Vamos diminuir o zoom. Esse é o nosso histórico. Mas, o que está faltando aqui? As estrelas. Então, estrelas são círculos, pelo menos neste jogo. Portanto, escolha o círculo
e, em seguida, precisamos alterar a cor
do primeiro plano de co, brilho para 100 e
a saturação Isso vai te dar
branco aqui. Ok. Em seguida, ampliamos um pouco
e arrastamos um círculo aqui. Não será um círculo se você
não segurar a tecla shift aqui. Então, no teclado, segure a tecla Shift e, em seguida, é
um círculo perfeito aqui. Mas é um pouco grande demais, então vamos torná-lo um
pouco menor. Algo talvez assim. Vamos verificar isso. Talvez um pouco grande demais,
vamos continuar assim. Temos uma estrela aqui, não muita. Temos que fazer mais estrelas. Vamos voltar para a ferramenta de
seleção aqui. Selecione a
ferramenta de seleção, esta seta aqui. Agora podemos selecionar nossa estrela aqui e agora podemos copiá-la.
Como você copia isso? Pressione copiar aqui, neste botão, ou você também pode comandar
C ou no Windows, é o Controle C, e
você o copiou e depois pode colá-lo Colar é esse botão ou comando V ou Control
V. Vamos colá-lo
e, em seguida, está aqui e você pode arrastá-lo para um local
diferente aqui Vamos arrastá-lo para outro
lugar. Talvez aqui. Vamos fazer outra cópia. Comando C ou controle C, controle ou comando V, e isso fará outra cópia. Nós o arrastamos para outro lugar. Mais uma vez, movendo-o. Fizemos uma pequena
pilha de estrelas aqui. Agora, o que podemos fazer para tornar
as coisas um pouco mais rápidas é selecioná-las.
Vamos diminuir o zoom. Selecione e, em seguida, podemos
arrastar um retângulo aqui. Agora você também selecionou o plano de fundo,
o que não é bom. Então, vamos desmarcar
o plano de fundo aqui. Pressione shift e, em seguida,
selecione o plano de fundo, e isso
desmarcará o plano de fundo Agora, só temos
esses selecionados aqui. Vamos copiá-los, Conti ou Komaz e depois inserir e
colar novamente Vamos ampliar um pouco
e depois podemos mover essas novas estrelas para outro lugar. Temos que arrastar uma
das estrelas e
todas as outras estrelas
também irão com ela. Vamos colocá-los
aqui e fazer com que eles os ajustem um pouco, selecionamos este e o movemos. Talvez esse também. Essa. É um
pouco diferente aqui. Assim. Agora devemos fazer outra cópia do nosso campo
estelar aqui. Novamente, selecione-os,
desmarque o plano de fundo
e, em seguida, você pode copiá-lo e
movê-lo para outro lugar. Como aqui, você também pode
girá-lo com este. Essa alça aqui pode
girar a coisa toda. E então copie novamente, movendo-a talvez para cá, girando-a um pouco, talvez desta vez ao
contrário, e outra cópia, e então a
movemos para cá Eu acho que está tudo bem. Talvez movamos essas estrelas
um pouco para a direita. Ok, eu acho que está tudo bem. Portanto, este é o fundo da nossa estrela. Acho que está tudo bem por enquanto. Então esse é o nosso sprite de
fundo aqui, o primeiro sprite de fundo que
temos, mas há um problema Não está em segundo plano. Você não pode mais ver a
nave espacial. Então, se eu clicar na nave espacial, ela não está visível aqui, mas deveria estar Qual é o problema aqui? Está
atrás do segundo sprite, atrás do sprite de fundo E isso, claro,
não é o que queremos. Como podemos resolver isso? Podemos
movê-lo para o fundo. E isso é aqui em
Los, selecione looks aqui, e então você pode rolar para baixo, ir para a camada frontal. Esse é esse quarteirão aqui. Então, arraste esse bloco para a tela até
a tela do script. E então podemos mudar
isso não para a frente, mas queremos que vá para a camada
posterior. Então faça isso. E como nunca mudamos isso, podemos fazer isso apenas uma vez aqui
no editor e
clicar neste bloco aqui. Se você clicar no
bloco, isso será executado aqui neste
bloco. Vá para a camada posterior. Agora, esse orgulho está
em segundo plano
e, claro, nosso foguete
está agora em primeiro É isso mesmo. Esse é o nosso orgulho
de fundo Está tudo bem assim, mas é estático, não está
se movendo, e queremos um efeito de rolagem, para que pareça que o foguete está realmente
voando pelo espaço Isso é o que faremos
no próximo vídeo.
13. 13 Mover o fundo: Aqui temos nosso
plano de fundo novamente, e esse bloco aqui
não é mais necessário, então podemos apagá-lo, basta arrastá-lo até aqui e ele desaparecerá Ok, então precisamos
mover o fundo para que o jogador tenha
a impressão de que o foguete está realmente
voando pelo espaço Então, como fazemos isso? Vai ser assim aqui. Mas é claro que
estará em segundo plano. Mas vamos primeiro definir a localização do plano de fundo
para a posição inicial. Qual é a
posição inicial A
posição inicial estará aqui em
algum lugar aqui no centro, então deve ser 00. Isso é o que faremos a
seguir. Vá aos eventos. Quando clicar em go, estamos
definindo
a posição inicial Vá para x e y, e esse já é
o caso aqui, x zero
e y também zero, para que seja reiniciado toda
vez que o jogo for iniciado. Vamos tentar isso. Basta mover o sprite de fundo
e começar, e agora o temos novamente
na posição inicial Mas nosso foguete
desapareceu novamente. Então, para evitar isso, talvez ainda devêssemos usar
esse bloco go to layer aqui. Então, basta configurá-lo para trás, vá para a camada traseira aqui. Depois de dois x e y, nosso chip de foguete fica novamente
visível, não mais atrás
do sprite de fundo Como movemos esse sprite
de fundo? É como o chip do foguete, mas sem os controles, os controles serão automáticos, por assim dizer, então
precisamos de um loop eterno Algo assim
e, claro, isso será após a
inicialização aqui Primeiro, definimos x e y como zero e depois vamos para a camada
posterior para garantir que o sprite esteja realmente
em segundo plano
e que o foguete
esteja em Agora temos esse loop de jogo aqui para nosso sprite de fundo Falando em sprite de fundo, poderíamos simplesmente renomeá-lo aqui, para que você possa renomeá-lo,
por exemplo, Talvez tenhamos um segundo, então o
chamamos de BG one return, agora ele foi renomeado O que precisamos aqui? Precisamos mover o fundo, e é claro que isso está
em movimento, então vá para movimento e
depois mude y por dez. Vamos tentar isso. Essa é
a direção errada. Eu queria cair,
então deveria ser menos. É um pouco rápido demais, então tente menos dois aqui Vamos tentar novamente e agora
ele se move para o fundo aqui. Isso é o que queremos,
mas também queríamos começar de novo aqui no topo, então precisamos reiniciá-lo se
essa posição for alcançada. A posição aqui é -346, e isso é o que precisamos
ter em mente Precisamos verificar se a posição está colocada
aqui nesta posição y. Como fazemos isso?
Nós vamos controlar. Desta vez, não se trata de loops, mas de uma condição.
Se uma condição for atendida, queremos redefinir
essa localização do Sp,
a localização dos Sprites y. Isso é se a condição A,
então faça isso, e aqui já podemos colocar, vá para x y, x está bem, do jeito que é zero, e y deve ser a posição
inicial. Não, não deveria ser
a posição inicial, mas deveria ser
algo assim aqui. Vamos movê-lo
até o topo aqui. Esta é a localização mais alta
aqui. E aqui temos 346. Então é o mesmo,
mas no lado positivo. Ok, então esta é a
posição que precisamos para reiniciar esse sprite dois E agora precisamos da condição. Então, a
condição está aqui. Como podemos fazer uma condição simples? Nós já fizemos isso. Aqui temos operadores. Portanto, não está detectando desta
vez, mas são os operadores. O que precisamos
verificar? verificar se
a localização,
a localização y, está abaixo de um valor. E esse é esse bloco
aqui. Coloque isso aqui. E solte isso. E agora precisamos da localização y do nosso
sprite. Vá para o movimento. Então aqui temos a
posição y. É disso que precisamos. Verificamos a posição y
se a posição y for menor que isso menos 4346, então precisamos redefinir
para Vamos tentar isso. Essa condição
não foi atendida no momento, não
foi cumprida e,
em seguida, não está funcionando. Y? Como a posição y nunca
será menos três, 47, ela sempre ficará aqui Precisamos diminuir isso. Precisamos diminuir isso em
um ou aumentar isso em um, não
é 36, 345 Se a posição y
obtiver dois menos três, 46, isso será cumprido aqui, essa condição. Vamos tentar isso. E está funcionando, muito bom. O sprite de fundo agora se
moverá para a parte inferior e, se
chegar à parte inferior, será redefinido aqui
por meio dessa condicional Se a posição y for
menor que menos 36,
cinco, redefina a
posição para isso Esse é o movimento
do fundo. Funciona muito bem. O problema aqui
é que você tem esse espaço em branco vazio aqui. Para isso, precisamos ter outro sprite e essa deve
ser uma cópia desse sprite, mas ele deve se mover de forma um
pouco diferente, ou pelo menos deve começar
em um local diferente, e faremos isso
no próximo vídeo
14. 14 Segunda animação de fundo: Agora que temos nosso plano de
fundo móvel assim, precisamos duplicar
esse sprite de fundo aqui porque você tem esse espaço
vazio ou branco
aqui no meio,
então precisamos preencher
isso, é claro com um segundo Como fazemos isso? Isso
é muito, muito fácil. Basta duplicar esse sprite
ou o primeiro sprite de fundo. Agora temos um segundo
e, em seguida, comece de novo, você verá que ele ainda
tem esse espaço vazio,
esse espaço em branco aqui, de, porque os dois sprites estão
exatamente na mesma posição Mas isso é muito fácil de mudar. Só precisamos mudar
a posição inicial do
segundo plano de fundo aqui e configurá-lo para
três, quatro, seis. Vamos desconectar isso aqui para ver como
é Ele será definido no início
para este local aqui
e, em seguida,
começará a partir daqui. Isso é o que vemos se
simplesmente conectarmos isso novamente. O segundo começa
daqui e depois
desce e o outro espírito
também desce, desce Você não pode ver isso porque não
há lacuna entre os dois. O que podemos fazer é usar roupas aqui
no primeiro plano de fundo
e, em seguida, selecionar esse retângulo aqui,
onde o preenchimento é preto, e definir o contorno,
vamos defini-lo como vermelho Então, isso terá um contorno vermelho
para que você possa vê-lo aqui. Vamos cuidar
do outro aqui. Mude para o segundo
plano sp. Selecione novamente o retângulo altere o contorno Ah, você também pode alterar
o preenchimento, é claro. Mas vamos mudar
o contorno aqui para, digamos, esse azul aqui Agora temos essa borda azul. Aqui temos a borda vermelha, para que você possa ver como eles
se movem juntos em sincronia. Vamos começar e você pode ver aqui
esta linha de separação. Do segundo, a borda
superior aqui, e não há nenhuma lacuna entre
os dois sprites de fundo aqui Isso é muito bom e foi
muito fácil conseguir isso. O segundo sprite é exatamente
igual ao primeiro sprite de
fundo Somente a posição inicial
precisa ser alterada. Vamos verificar novamente o código. Vamos para a posição
inicial, que é no segundo
sprite uma posição diferente Começa aqui no topo e depois vamos também para
a camada de fundo do. Então fazemos por mim aqui. E mudamos y por menos dois, que significa que ele diminui. A cada iteração do loop, ela
diminuirá dois pixels. E se a posição, a posição y atingir um certo ponto, atingir
o fundo aqui, que verificamos com
essa condição aqui, então a redefinimos para a posição
inicial aqui. O mesmo para o
primeiro plano de fundo sp, o que é diferente aqui é
apenas a posição inicial, ela começa bem no meio para cobrir
tudo aqui. Você pode ver esse vermelho aqui, essa borda superior vermelha
aparece aqui
e depois desce, desce,
desce , desce, desce, desce. E se atingir essa posição
, sobe novamente da
mesma forma que na segunda. Esse é o nosso plano de fundo comovente, e eu acho que isso é
realmente impressionante. Não escrevemos nem
construímos muito código. Tudo é muito simples e podemos mover o chip do
foguete aqui E o fundo está
rolando de cima para baixo. Também podemos mudar, é claro, as estrelas para que fique um pouco mais interessante
porque, no momento, só
temos uma cópia,
um clone do primeiro
plano de fundo aqui, e ele tem as mesmas estrelas Então, podemos trocá-la aqui, roupas, e então você pode mover todos esses pontos aqui ao redor Lembre-se de desmarcar
o retângulo aqui, e então você pode movê-lo,
girá-lo, A. e então você pode movê-lo,
girá-lo, A.
O mesmo aqui. Desmarque o
plano de fundo e, em seguida, mova-o ou gire-o para que o padrão seja
um pouco diferente Talvez assim. Aqui, vamos
girá-lo um pouco Parece diferente agora. Vamos tentar novamente. Também podemos nos livrar das fronteiras agora. Não precisamos deles. Selecione
esse retângulo aqui e, em seguida, redefina o
contorno dois Vamos também remover o outro. Aqui, defina-o para preto
novamente, brilho zero. Vamos começar o jogo novamente. Eu o coloquei em
tela cheia para que você possa vê-lo começar melhor, e agora podemos mover a
nave espacial para cá Não há nada a ser
coletado ou algo
parecido , ou a nave espacial não pode
atingir nada no momento, mas ela pode flutuar
pelo espaço e o
jogador pode Isso é muito bom. É
um começo muito bom. Temos um plano de
fundo rolante com dois sprites de
fundo diferentes Agora, no próximo
vídeo, adicionaremos mais
alguns objetos aqui para que o jogador possa talvez atingir um
meteoróide e sofrer danos
15. 15 Primeiro obstacle the rock: Agora que temos nossa nave espacial
flutuando pelo espaço,
viajando pelo espaço e nosso plano de fundo se movendo, precisamos de um Então, vamos parar esse jogo aqui e criar outro
sprite, é claro Então escolha um sprite, e temos algo
parecido com uma pedra aqui Então, procure por rochas
aqui neste campo, e temos
lascas de foguete e pedras, e eu estou escolhendo rochas Agora temos esse aqui. Então, temos que
ajustá-lo um pouco. Então usamos fantasias, e aqui temos o sprite, o traje, o
traje principal do sprite Então, vamos primeiro nos
livrar disso aqui,
para ter certeza de que você tem a ferramenta de
seleção, esta seta aqui
e, em seguida, basta selecioná-la.
Você pode usar este botão excluir ou pressionar delete no teclado ou no
backspace, também funciona Agora temos isso e é
um pouco grande demais. Eu acho que, então vamos mudar o tamanho Aqui você pode
alterar o tamanho aqui. Vamos fazer com que seja 50%. Agora, acho que esse é
o tamanho correto e mova-o um pouco aqui. Isso é um pouco melhor. Agora também podemos
mudar um
pouco a forma, se você quiser. Como você faz isso? Você pode, é
claro, girá-lo assim Mas com essa ferramenta,
você não pode acessar os diferentes pontos aqui
dentro dessa imagem vetorial. Você tem que usar este aqui. Essa é a
ferramenta correta para realmente acessar esses pontos aqui do SVG Agora você pode ampliar
um pouco e depois alterar esses pontos
aqui. Esse é o interior. Então aqui temos o esboço. Esse também é o esboço. Vamos fazer uma forma um pouco
diferente aqui. É claro que isso é um
pouco complicado aqui. Temos que ter o cuidado de selecionar, clique nesses círculos aqui. Apenas faça com que fique um pouco
mais longe do círculo. Então, vamos fazer uma
pequena curva aqui, algo assim,
algo como uma pedra. Agora o outro lado. O que você também pode fazer
é mover isso aqui. Então, isso mudará
a curvatura aqui. Algo parecido com isso. Você também pode torná-lo curvo ou pontudo Dessa forma, você tem uma borda
pontiaguda aqui ou uma curva Aqui você pode alterar a curva. Você pode
mexer um pouco aqui. Vou limitá-lo a
mudá-lo um pouco. Esta é a área interna aqui. Acho que isso é suficiente. Ainda não é muito bonita. Mas acho que está tudo bem. Se você quiser, você pode, é claro, fazer melhor aqui, colocar um pouco
mais de esforço nisso. Vamos torná-lo um
pouco melhor. Como você pode adicionar pontos aqui é apenas clicar na
linha como esta. Então você tem um novo ponto. Talvez precisemos de um aqui. Basta clicar na linha e obter um novo ponto
aqui que você pode usar. Eu não sou um artista, então esse não será o meteoróide
mais bonito
que Mas acho que assim,
talvez esteja tudo bem. Vamos deixar isso assim. O importante é
usar essa ferramenta aqui para ter acesso aos
pontos únicos aqui e usá-la, se você quiser, por exemplo, movê-la ou
girá-la aqui Algo parecido com isso. Mas eu
coloquei no meio novamente. Eu deixo assim.
Este é o nosso meteoróide, mas eu quero mudar um pouco
a cor Vamos novamente para essa ferramenta,
esse seletor de pontos aqui, e vamos selecionar essa área
interna aqui Então mudamos a
cor disso. Essa é uma cor verde, mas eu mudo para marrom. Algo assim, talvez. Eu acho que está tudo bem. Agora
temos nosso meteoróide, e ele está
lá parado, sem se mover Obviamente, isso não está correto. O que podemos fazer agora é copiar nosso script
do plano de fundo, do primeiro plano de fundo aqui, talvez ou talvez do segundo. Vamos pegar o segundo.
Aqui temos o roteiro, e agora copiamos esse script
para essa rocha meteoróide Basta arrastar isso aqui
até que ele se mexa
e, em seguida,
solte-o, e agora você o
copiou. Selecione a rocha. Aqui temos esse script. Esse script é uma cópia
do outro script. Vamos ver o que acontece
se eu começar o jogo. Está se movendo para baixo, está
se movendo para baixo. Isso é bom. Mas também
está preso aqui. Precisamos deixá-lo desaparecer aqui se atingir
esse fundo aqui. Essa é a condição aqui se a posição
y for menor que -345 Isso é diferente aqui.
Você pode ver aqui que esse meteoro está
preso em uma posição Vamos fazer isso de novo. Não podemos ver isso porque não está
em primeiro plano Obviamente, precisamos alterar essa
opção de ir para a camada
posterior para ir para a camada frontal. Agora ele deve ir
para o primeiro plano. Aí está. Nós
o vemos preso aqui. Isso é -187. mudar isso menos
8186, deveria ser Se estiver abaixo disso e
187 estiver abaixo disso, então ele deve ir para
a primeira posição Essa é a correta aqui. Vamos verificar isso.
Aí está a pedra, e então ela atinge
o fundo e depois volta aqui no topo. Isso é bom. Está se
repetindo. É claro que é muito fácil para
a nave espacial evitar
o obstáculo Mas é um começo. Este é nosso primeiro obstáculo aqui, e o foguete ou o jogador devem
evitar atingi-lo Não há nenhum
teste de sucesso no momento. Mas é claro que vamos
implementar isso. Além disso, está sempre
na mesma posição
aqui, então é chato. Mas temos nosso meteoróide.
16. 16 Como bater na pedra: Agora, estamos atingindo a rocha
ou a nave espacial está
batendo na rocha,
e então ela deve desaparecer, e talvez devêssemos
diminuir alguns pontos ou aumentar alguns danos Mas pelo menos no final, a nave espacial deve reaparecer, e então o jogo continua, mas talvez com uma viva a
menos, algo assim Vamos fazer a
parte de bater. Como fazemos isso? Quando a nave atinge a rocha, ela deve desaparecer por enquanto, digamos que
depois de 3 segundos, ela deve reaparecer, depois no meio da tela,
algo assim Como fazemos isso? Temos
esse loop de jogo aqui em nosso foguete e lá
podemos testar o evento de sucesso,
ou não é um evento, mas ele pode ser encontrado
aqui em detecção, vá para detecção e, em seguida, tocamos o ponteiro do
mouse Este é o bloco
que estamos procurando. Mas não se trata
do ponteiro do mouse, é sobre outro sprite, e isso são pedras Tocando pedras. Essa é a condição
e, para uma condição, usaremos o
bloco if. Isso aqui. Se tocar nas rochas, se o
foguete tocar na rocha,
certo, então faremos alguma coisa.
O que vamos fazer? Nós escondemos o foguete. Sob a aparência, e aqui
na parte inferior, há um esconderijo. Basta colocar isso aqui,
e isso podemos testar. Vamos colocar isso se bloquear aqui. No final do ciclo eterno. Isso é importante, não do lado de fora. Você não pode fazer isso do lado de
fora porque
não pode fazer algo
depois de uma eternidade. Este é o lugar onde você
precisa deixá-lo aqui. Estamos percorrendo o ciclo do
jogo para sempre e , se o
foguete atingir a rocha, se tocar na rocha, ele
deve estar Vamos fazer isso. Não estamos
controlando a nave, e agora ela desaparece Isso funciona. Agora queremos que ele
reapareça após 3 segundos. Temos que esperar 3 segundos
e dentro desses 3 segundos, esse controle aqui não
funcionaria. Continuamos esperando por. Coloque isso atrás da pele, espere, digamos, 3 segundos. Então, dentro desses 3 segundos, esse loop eterno não
será iterado
e, após os 3 segundos, queremos reaparecer Precisamos mostrar isso.
Arraste esse show aqui. Depois de esperar 3 segundos. Vamos tentar isso e veremos que
a nave não está visível. Por quê? Como não o
mostramos no início, precisamos mostrá-lo
aqui ao clicar depois mostrar o sprite Agora podemos vê-lo e
agora ele desaparece, porque bate na rocha e depois reaparece Então, podemos controlar a nave e
contornar o meteoróide Vamos bater novamente na rocha e
então ela deve reaparecer. Isso é bom. Mas é claro que precisamos fazer alguma coisa se
a nave espacial atingir a rocha porque deveria haver uma
penalidade por bater nas rochas, e digamos que a
nave Talvez tenhamos três vidas
e, em seguida, uma vida é subtraída se o
navio bater na rocha Então, se o navio tiver zero vidas, o jogo acaba. Vamos fazer isso no próximo vídeo.
17. 17 Danos e reparos: Neste vídeo,
contaremos os reparos. Você tem uma certa
quantidade de reparos. Você tem dinheiro para,
digamos, três reparos. Se você bater na pedra mais de três vezes
, o jogo acaba. Precisamos contar o número de reparos e como contamos? Já sabemos que são
variáveis com uma variável. Vamos fazer um. Vá para variáveis, exclua esta,
a minha variável. Nós não precisamos disso.
Faça um novo, e isso deve ser
para todos os sprites Devem ser reparos ou talvez restem reparos,
algo assim. Claro, precisamos
definir no início. Restam dois, três reparos, o jogador tem
três reparos, três ou dinheiro para três reparos,
e então o jogo termina. Podemos ver aqui que
os reparos deixaram zero. Precisamos começar o jogo. Agora temos três e,
claro, isso não muda. Isso é o que temos que fazer agora, e é super fácil. Só um troco repara a esquerda, este quarteirão por um. Agora, essa não é a quantidade
certa menos um, deve resolver o problema, então
deve diminuir a diminuição os reparos deixados Vamos fazer isso antes ou depois do peso, talvez
antes seja melhor. Vamos fazer isso. Agora temos dois. Se
acertarmos novamente, temos um, e se acertarmos novamente, temos zero, e agora a próxima
falha deve terminar o jogo. Mas neste caso,
temos menos um. Precisamos verificar se ainda temos
reparos abaixo de zero. Se chegar a menos
um, o jogo acaba. Onde fazemos isso? Talvez façamos isso
aqui logo antes
do peso. Precisamos verificar uma
condição para isso, temos o bloco if then
aqui, arraste-o aqui. Agora também temos esse bloco
menor, precisamos dele também e
precisamos arrastá-lo aqui. Agora precisamos obter o valor de nossos reparos
variáveis restantes. Vá para variáveis, e aqui
temos reparos restantes, nossa variável, e podemos arrastá-la aqui para essa condição
inferior. Se os reparos restantes forem menores que
zero, o jogo termina. Então, temos que verificar o que
fazemos se o jogo acabar. Por exemplo,
podemos dizer alguma coisa. Parece engraçado, mas
é assim que você pode fazer isso. Então, em Looks, você tem
que dizer olá por 2 segundos, e isso mostrará uma
bolha com um texto Vamos tentar isso. Vamos
tentar primeiro mostrar essa mensagem sempre que o navio bater na rocha. Então diga olá. Talvez não seja o texto
certo aqui. Diga acidente, por 2 segundos. Sim, acho que está
tudo bem. Vamos tentar isso. Aqui você pode ver, não, está escondido, é por isso que
você não pode ver a bolha Vamos mudar a ordem aqui. Precisamos escondê-lo
depois desta mensagem. Deixe isso acontecer. Alteramos
a variável por menos um, dizemos falha, nos escondemos e depois esperamos 3 segundos. Vamos ver isso. Colisão. E mais uma vez, falhe. Agora, se o valor da
variável esquerda do reparo estiver abaixo de zero, precisamos dizer algo
como fim de jogo. Vamos colocá-lo novamente aqui. Fim do jogo e tente novamente. Primeiro acidente, segundo acidente. Agora, o terceiro acidente ainda está bom, mas agora não temos mais reparos. Eu deveria dizer que o jogo acabou.
Não é o caso. Temos que verificar, e eu
sei porque está escondido. Claro, pedido errado novamente. Vamos esconder isso depois disso. Vamos tentar novamente. Agora, desta vez,
diminua o número de reparos. Vamos consertá-lo
e depois terminar o jogo. Então, o próximo acidente terminará o jogo. Funciona. Primeiro
acidente, é claro, porque caímos e
depois terminamos o jogo Temos os dois e, em seguida,
leva 2 segundos para exibir isso e, em seguida, ele
verifica essa variável. Talvez seja melhor dizer o acidente logo após
essa verificação aqui. Vamos alterar novamente o pedido
e depois tentar novamente. Primeiro acidente, zero reparos restantes e agora o segundo acidente
acabou. E depois caia. Como terminamos o jogo, na verdade? Se for esse o caso aqui, precisamos parar o jogo. Também é possível. Vamos controlar
e depois paramos tudo. Coloque isso aqui na
caixa do jogo. Vamos tentar novamente. Primeiro acidente. Segundo acidente e depois fim do jogo. Isso é bom. É até um jogo. Não é muito
empolgante porque temos apenas uma rocha,
um meteoróide e também
não há nada para coletar e talvez preencher
os reparos que restam ou
não há meta a ser alcançada Então é chato. Mas já é um jogo, então podemos melhorá-lo, é claro, e o faremos. Por exemplo, a primeira coisa que
eu melhoraria aqui é que a rocha aqui está
em uma posição x aleatória. Se reiniciarmos a rocha, de
modo que esteja aqui, vá para x e y, vamos definir isso para um x
aleatório e não para zero. Vamos fazer isso no próximo vídeo.
18. 18 Posição inicial aleatória e blocos personalizados: Para tornar o jogo
mais interessante, queremos introduzir uma posição inicial
aleatória para nosso meteoróide Vamos verificar o jogo novamente. A rocha está sempre
partindo da mesma posição x aqui. É claro que também está
partindo da mesma posição y, mas a posição x é
interessante. Então, o jogador aqui sabe
onde está o meteoróide, e é muito fácil
voar nessa posição x aqui Você não precisa
fazer mais nada. Então isso não é muito interessante. Então, precisamos mudar isso, e isso é bem fácil. Usamos esse bloco aqui. Então, os operadores escolhem aleatoriamente. Então, já usamos isso antes nos balões do jogo de
estourar balões Então isso está gerando um número aleatório entre
esses limites aqui. De quais limites precisamos? Então, vamos colocar esse meteorito no lado esquerdo e ver qual é a exposição Algo assim, talvez, e então temos esse -221 Então, digamos -220, e então eu diria mais
220 e depois do outro lado Seria como
colocar isso aqui assim. Eu acho que está tudo bem. Então, entre esses dois números, haverá um
número aleatório escolhido aqui, e isso precisamos
definir aqui para o nosso x. Então, aqui, mas antes de fazer isso, vamos clicar com o botão direito do mouse no
bloco aqui e duvidar. Nós temos dois desses, vamos colocar o primeiro aqui, vá para x. É quando o jogo começa. Vamos para essa posição de reset, e esse é o número aleatório aqui para x e o y é 346, e também o mesmo aqui quando
redefinimos a posição Se essa posição y for alcançada, reiniciaremos e passaremos também para um número aleatório x e
essa posição y fixa. Isso é fácil e
vamos tentar aqui, e vemos que desta vez é essa
posição aqui da rocha, e desta vez é
aqui, então o jogador não pode simplesmente
deixar o foguete aqui no meio porque
haverá um número aleatório,
uma posição x aleatória no meio,
e essa é a única e a queda, então o jogador precisa se
afastar do caminho até aqui, e isso é um pouco
um pouco mais interessante. Ainda assim, temos apenas
um meteoróide,
apenas uma rocha, então não é muito
difícil evitar isso, mas pelo menos é aleatório e a exposição é,
a cada vez, a rocha é zerada, a posição é definida a posição é OK. Então, o que não é tão
bom nisso aqui é o fato de termos que
colocar isso duas vezes. Então esse bloco, esse bloco de
números aleatórios de escolha. Temos que colocá-lo duas vezes. Então, se você quiser, por exemplo, alterar os limites aqui, temos que fazer isso aqui aqui. Então, se quisermos
que essa rocha fique mais no meio
, precisamos alterá-la em dois locais aqui. Não é muito bom. E é por isso que introduzimos
um novo conceito aqui e esse conceito são blocos
personalizados. Você pode criar seu próprio bloco. Aqui estão meus blocos. Você pode fazer seus próprios blocos, e você verá como isso
se parece e nós o usaremos aqui para redefinir a rocha para
essa posição inicial e também para a posição
inicial quando ela atingir o fundo A ideia é substituir essas
duas chamadas para ir para x, ir para y por um x aleatório
com um bloco personalizado. Vamos fazer isso, criar um
bloco abaixo dos meus blocos
e, em seguida, você pode escolher
o nome do bloco aqui. Basta colocar o cursor
aqui ou você pode simplesmente escrever e digitar seu
nome para o bloco. Eu direi que isso é
redefinido aleatoriamente x. Deve ser um nome que de alguma forma transmita o significado do que
é feito dentro do bloco Um bloco pode conter outros blocos, algo
como uma subrotina O nome deve descrever o que é feito nesse
bloco. Então, basta clicar. As outras opções não são
importantes no momento. Então, basta clicar em k, e então já temos esse
bloco aqui. E aqui definimos o que
é feito nesse bloco. Assim, você pode colocar os
blocos que quiser aqui, assim como depois de clicar
no W, pode colocar o que quiser
aqui. Então, vamos fazer isso. Queremos redefinir a posição das rochas para
a posição inicial, então precisamos extrair
esse bloco aqui. Então, basta separar isso
e, em seguida, puxar isso para
fora e colocá-lo aqui nesta
definição de reset aleatório x. Vamos deixar assim. E também, isso pode
ser arrastado até aqui, e você pode apagar
aquele, guiar aquele Então, deixe-o aqui. Ok, então como
chamamos esse bloco? Muito fácil? Vamos aos meus quarteirões
e depois o temos aqui. Definimos x aleatório, e este é o nosso
bloco personalizado e podemos usar como qualquer outro bloco, arrastar
esse bloco personalizado aqui depois juntar tudo. E também o segundo
local está aqui. Se essa posição y for alcançada, redefina também para essa posição x aleatória
e para a posição y fixa. Então, vamos tentar isso primeiro, e deve funcionar
da mesma forma que antes? exposição das rochas é
escolhida aleatoriamente cada vez que o botão é
pressionado Então é isso que
queríamos, e é o mesmo de antes, então
nada mudou. Mas o bom é que
esse código é mais fácil de mudar. O que eu quero dizer? Se
você quiser alterar esse intervalo aqui do qual
o número aleatório é escolhido, basta alterar
esse local aqui. Por exemplo, se
você quiser que fique mais no meio,
no centro, poderíamos dizer que está entre -100 e mais 100,
e pronto Só precisamos alterar
essa localização aqui
desse código nessas duas
posições, função,
como você pode chamá-la, também, ou esse procedimento,
ou essa subrotina
é chamada a partir desse código de posição e desse código
de localização Dessa forma, é
mais fácil mudar e você pode fazer o que
quiser aqui dentro. Então, toda vez que G é clicado, esse bloco é chamado O que isso significa,
os blocos sob esse reset aleatório X sob esse reset definido
aleatório X, são executados. E então, quando
não há mais blocos aqui, a execução é retomada aqui
após esse bloco personalizado Então, o próximo
será ir para a camada frontal
e, em seguida, esse loop eterno. O mesmo aqui, se essa posição
y for alcançada, e pularmos para esse bloco X
aleatório redefinido aqui, e irmos para x for executado
e depois disso para sempre. Continuará. Então,
esse é um bom truque. Não é necessário
usar blocos personalizados. Você sempre pode ir sem eles. Mas é mais fácil fazer alterações se você usar
esse script aqui, esses blocos dentro
desse bloco personalizado em mais de um lugar. Estamos chamando isso aqui e aqui, e dessa forma
só precisamos alterar esse único local dentro do
nosso X.
Usarei essa possibilidade para criar blocos personalizados também mais tarde, mas aqui está a primeira
introdução a esse conceito, e isso é muito importante porque torna seu
código mais legível Então, imagine se você tem dez blocos aqui
neste bloco personalizado, e você teria que
colocá-los aqui, diretamente sem
esse bloco personalizado, e você tem o dobro do mesmo em dois locais aqui
no código e você quer
mudar alguma coisa lá, então você sempre tem que
mudar dois locais. Se você precisar dessa
funcionalidade em dez lugares, por exemplo, precisará
alterar esses dez lugares. Mas se você tiver esse bloco
personalizado aqui, precisará alterar apenas
esse local. Obviamente, isso também torna o código mais legível porque
você pode nomear esse bloco, o que exatamente esse bloco faz É como escrever um comentário
para que esse bloco aqui redefina a posição x
para um número aleatório, e é isso que a
descrição aqui diz O nome do bloco
diz, reset random x. Você pode colocar uma boa
descrição para que você possa ler seu código como uma frase em inglês,
por exemplo. Ao clicar em redefinir X aleatório, vá para a
camada frontal
e assim por diante, e talvez também
possamos colocar esse loop
eterno em um bloco personalizado ,
não é necessário nomeá-lo. Nós podemos fazer isso. Vamos fazer isso, fazer outro bloco,
fazer um
loop de jogo e, em seguida, tudo bem. Agora podemos definir nosso bloco personalizado de loop de
jogo, colocar esse loop eterno
aqui e usar esse bloco de loop de jogo aqui, e isso será o mesmo. Vamos começar o jogo novamente. E você vê que isso está funcionando
da mesma forma que antes. Mas agora estruturamos
nosso código um pouco melhor, e você pode lê-lo
como em linguagem normal aqui. Ao clicar, redefina um X aleatório, vá para a camada frontal, loop de jogo. E se você quiser saber
o que é feito no Game loop, basta acessar aqui
para definir o loop do jogo. Então você pode
deixar assim, mas vou colocar isso para
sempre aqui Eu fui só um exemplo. Coloque isso de volta aqui, e
podemos nos livrar da definição aqui. O que você precisa fazer primeiro é se
livrar desse bloco aqui. Em seguida, você pode
se livrar do definido
e, em seguida, o bloco
também é excluído aqui. É assim que você define seus próprios blocos personalizados que
podem conter código arbitrário, podem ter seu
script completo aqui dentro Você também pode chamar outro bloco aqui dentro, isso
também é possível. Dessa forma, você pode
estruturar seu código
de forma mais adequada para que você ou outras pessoas
que possam trabalhar
neste jogo possam entender
do que se trata o script
19. 19 Clonando nossa rocha: Nosso jogo é meio divertido
ou pelo menos
mais divertido do que no começo porque introduzimos a
aleatoriedade aqui, e essa é a
posição aleatória da rocha aqui que o jogo seja um
pouco mais difícil de jogar, mas ainda assim, é muito fácil
evitar essa pedra aqui Então, do que precisamos? Precisamos de mais pedras, é claro. Então, dessa forma, o jogo
será mais difícil. E, claro, poderíamos
simplesmente copiar as rochas aqui com o botão direito
do mouse no Sprite Dublic, e então temos duas pedras, e poderíamos
fazer assim Então, vamos tentar. Então, temos duas pedras
e está tudo bem. Então, vamos verificar isso mais uma vez. Então, eles estão mais próximos. Limitamos o
intervalo aqui a 100, -102 a 100 positivos Então, vamos colocar isso de
volta em Eu acho que foi 220 e depois
dois 220 positivos. Então, isso é um pouco melhor, então é mais aleatório. Aqui podemos ver que as
rochas estão mais afastadas, o que é melhor. E o jogo está
mais difícil agora, porque você tem que
evitar duas pedras. E, claro, podemos
fazer outro, kit
duplo e assim por diante. Então, temos três agora.
Eles estão juntos aqui. E aí você
também tem o problema. Essas duas rochas
estão mais juntas. Mas o problema é que eu troquei esse 220 apenas por esse rock e o
primeiro ficou com 100. Então, temos que
mudar isso aqui também, menos 222 positivos 220 Vamos começar de novo. Tão bom. Mas você viu o
problema. Agora eles estão distribuídos uniformemente
aqui, não mais. Mas você vê o problema de
que, se fizermos cópias
dessas rochas aqui, precisaremos mudar
algo mais tarde Temos que fazer isso em
cada sprite aqui. Então, se eu tiver que alterar
o intervalo aqui, tenho que entrar em
cada sprite
no código e depois
alterá-lo para cada sprite Isso não é muito bom, então precisamos encontrar
uma solução melhor aqui. Então, vamos deletar as pedras
adicionais aqui. Podemos fazer isso com apenas uma pedra. E como podemos fazer isso? Esse é um método chamado clonagem, e todo
fã de Star Wars sabe o que quero dizer, o que é clonagem, é claro, porque em Star Wars,
você tem a guerra dos clones, e um clone é uma
cópia de uma fonte,
digamos, uma entidade Então você tem a entidade de origem
e, no nosso caso, é
claro que é o sprite Você está fazendo clones dele, então cópias exatas dele Mas essas cópias têm sua própria vida, por assim dizer, e são independentes
do clone original Ou da entidade original. Como fazemos isso e como
funciona do zero? Selecionamos nossa única
pedra aqui. E estamos fazendo cópias
ou clones dessa rocha. Então, precisamos ir para o controle. Então aqui temos quando
eu começo como um clone
e crio um clone de mim mesmo
e também excluo esse Então, como isso funciona? Precisamos criar um clone primeiro. Vamos arrastar esse bloco
aqui para o Canvas aqui. Então, basta inserir esse clone de
criação de mim mesmo aqui logo após clicar
em go Ok, vamos verificar como
isso afeta nosso jogo. Vamos começar. E
agora temos que fazer isso. Mas apenas um funciona conforme esperado e o outro que não está funcionando, está sempre
aqui nessa posição. Isso não é suficiente.
Temos duas pedras, tudo bem, mas a segunda
não está funcionando de alguma forma. Por quê? Porque o que create
clone of myself está fazendo é apenas criar um
clone neste momento
e, depois disso, o resto
do código não é executado Aqui começa
quando você clica, cria um clone de mim mesmo e, em
seguida, o clone é Portanto, esse código não é executado
novamente para esse novo clone, mas apenas para o sprite
original E somente o
sprite original funciona. Portanto, tudo o que vem
depois de criar clone é executado apenas para
o sprite original, não para o clone.
Como podemos corrigir isso? Isso é muito fácil. É para isso
que serve esse bloco. Quando eu começo como um clone. De alguma forma, isso é o
mesmo de quando G clicou. Mas isso é acionado
sempre que é chamado aqui. Criar um clone de mim mesmo
acionará isso, mas para o sprite clone,
não para o sprite original Como usamos isso aqui? Temos que mover isso para cá. Para este evento, quando
eu começo como um clone. Quando clicamos em go, estamos apenas criando um
clone de nós mesmos, e isso é executado
no sprite clonado Vamos começar. Agora
ainda temos uma pedra aqui no topo e ela
não está se movendo ou
não está descendo para o
fundo, mas esta aqui. Na verdade, esse é o
clone. Vamos parar com isso. Então esse é o clone, e se eu parar o jogo,
o clone
desaparecerá e será excluído Somente o
sprite original permanece. Portanto, cada clone criado durante o tempo de
execução é excluído
se eu parar o jogo Dessa forma, você também pode
ver que esse sprite em movimento é o clone E, claro, o
original está apenas criando um clone,
uma cópia de si mesmo, e depois não está
fazendo mais nada. É por isso que o
sprite original não está fazendo nada. Está apenas sentado lá. E o clone agora está funcionando. Isso é o que nós queremos. Também podemos criar
outro clone. Então, basta colocar outro bloco aqui, criar um clone de mim mesmo, então temos dois clones agora ou devemos
ter dois clones Vamos começar. E
isso está correto. Temos dois clones.
E todo clone tem o mesmo script aqui. Se eu mudar alguma coisa aqui
, isso mudará para todos os clones. O que não é tão bom
é que ainda temos esse sprite original
aqui em exibição, que é fácil de corrigir Podemos simplesmente dar uma
olhada e depois nos esconder. Basta colocar um esconderijo aqui. Então, quando eu começo como um clone, isso é chamado para cada clone Precisamos mostrar isso. Essa é a primeira
coisa que fazemos, mostramos o novo clone, a nova cópia e, em seguida o resto será o
mesmo do sprite original Mas o
sprite original não está fazendo nada aqui,
apenas se escondendo e criando dois clones Portanto, este é um modelo agora. O sprite original
é um modelo, que também está oculto para
que você não possa vê-lo, e os sprites reais usados no jogo
são esses Vamos começar o jogo, e agora
temos dois clones, e o
sprite original aqui está escondido, mas os clones estão visíveis
porque estamos fazendo esse show aqui sempre que
um clone Isso é muito bom. Também podemos
ter cerca de dez clones aqui. Não tem problema. Podemos
simplesmente duplicar isso Clique com o botão direito do mouse aqui
no menu de contexto,
clique em Duplicar. Você tem quatro clones agora. Vamos começar o jogo
novamente com quatro clones. Está ficando
mais difícil para o foguete
evitar todas as rochas Eles ainda estão na
mesma posição y. Não é tão difícil. Você só precisa identificar
a lacuna aqui e depois direcionar seu
chip de foguete para essa Então, isso ainda é fácil. Mas também podemos tornar
isso mais difícil. Mas eu não quero copiar tudo
isso, criar um clone de mim mesmo. Eu quero fazer isso em um loop. E isso é algo que não
fizemos antes. Temos esse loop eterno, que é claro que é um loop
eterno sem parar, mas também há um controle de loop
diferente, e então temos essa repetição e várias
iterações Podemos repetir, por
exemplo, dez vezes. Isso vai acontecer aqui dez vezes. Não precisamos disso,
crie blocos de clones aqui. Não é necessário dessa forma, estamos criando dez clones, esse loop é iterado dez vezes Vamos verificar isso. Devemos
ter dez clones agora. Isso está correto, e
agora é muito, muito difícil, e eu diria que é
impossível assim. Portanto, você não tem chance
de evitar todos os dez. Talvez agora eu tenha uma chance, então está tudo bem, mas agora fica muito
difícil porque talvez não haja nenhuma lacuna entre
todas essas rochas aqui. Isso é muito difícil, mas acho que consigo. De qualquer forma, temos
dez clones agora, e isso é muito bom porque não
duplicamos os sprites, mas criamos clones, e a vantagem é
que você não
precisa alterar o código
em dez sprites aqui, mas você só precisa
alterá-lo Por exemplo, se quisermos que todos os clones estejam
em uma faixa estreita, podemos simplesmente alterá-la aqui, podemos talvez voltar para
essa faixa de -100 100 Todos os clones estão
dentro dessa faixa x. Vamos ver como isso se parece. E agora é muito fácil para o foguete evitar
os clones, porque você pode simplesmente ir até
a fronteira externa Esse não é o problema aqui. Mas veja, você pode
alterá-lo para todos os clones aqui. Todos os clones usam
o mesmo script, e isso é uma vantagem muito
grande O sprite original
é usado aqui apenas como um modelo para criar
os clones, não mais, e está oculto
logo no início, e todos os clones
aparecem logo no início quando
são criados como De alguma forma, esse é o Wen
go click para os clones, semelhante, mas é
um evento diferente Aqui eu uso esse clique Wen go, quando o jogo é iniciado para criar todos os
clones de que precisamos Esse também é um
conceito muito importante, a clonagem, e dessa forma você pode evitar a duplicação de
código aqui, que é muito importante, ou por exemplo, se
você tiver algo como tiros ou também, por exemplo, temos recursos para
pegar não apenas as pedras, mas também alguns objetos que
o jogador pode Você também precisa de talvez dez
deles, algo assim. Então, isso também pode ser feito
muito bem com a clonagem. Se você fizesse isso com essa
duplicação de sprites, isso ficaria muito,
muito confuso Se você precisar alterar
alguma coisa no script, se tiver dez
duplicatas de um sprite, é muito chato mudar
isso Esse é o caminho
a seguir se você tiver objetos
semelhantes
do mesmo modelo. Nesse caso, são as
rochas, os meteoróides, e essa é a maneira de
fazer isso aqui Então você tem esse
modelo de sprite, que também é definido aqui com os figurinos
e os sons, e também com os scripts Esse é o modelo
para os clones, e sempre que o
clone for criado, você receberá esse evento
quando eu começar como um clone, e então o script principal,
por exemplo, pode
ser E dessa forma,
temos dez pedras agora. Mas, é claro,
não é muito bom que todas as pedras estejam na mesma posição
y o tempo todo. Então, precisamos
distribuí-los um pouco, e isso faremos
no próximo vídeo.
20. 20 delay aleatório: Este será um pequeno vídeo. Tornaremos o jogo mais interessante
introduzindo o atraso. Qual foi o problema ou
qual é o problema? Acabei de remover isso aqui novamente porque já
introduzi a aleatoriedade, mas vou removê-la por enquanto e mostrar o problema novamente. Cada pedra aqui está mais ou menos na
mesma posição y aqui. Então, tudo está começando
no topo ao mesmo tempo. É por isso que praticamente
não há como contornar
essas rochas aqui, exceto nos momentos em que
existem algumas lacunas aqui,
mas, por exemplo, agora
é quase impossível
passar por aqui. Como podemos corrigir isso?
É muito fácil. Precisamos introduzir
um atraso aleatório aqui. Então, eu já preparei
isso aqui. Aguarde um número aleatório de segundos e apresentaremos isso no início
do script aqui. Quando eu começo como clone, isso espera por um número
aleatório de segundos
e, em seguida, o movimento começa Podemos colocar isso aqui, ou talvez também possamos colocar
isso dentro do loop, ou também podemos colocar isso
dentro de reset random x aqui. Vamos colocá-lo aqui. E remonte isso. Cada vez que começamos, ou talvez também devêssemos não
mostrá-lo antes desse atraso. O show será aleatório após
essa reinicialização. Quando eu começo como um
clone, reinicio aleatoriamente, isso espera por
um tempo aleatório e depois vai para
a posição inicial, que também usará um
número aleatório entre -200 Estamos usando essa
aleatoriedade aqui duas vezes esperando para redefinir a posição e também
para a posição x aqui Vamos tentar começar e aqui
podemos ver que isso funciona. Alguns estão na mesma posição y, mas também podemos ver que isso não está totalmente
correto aqui, porque tudo está visível
aqui ainda na parte inferior. Vamos consertar isso. Por que isso? Porque não estamos
escondendo o sprite aqui. Vamos ver a aparência e depois escondê-la logo antes de redefinir
o X aleatório. Dessa forma, ela não deve ficar
visível na parte inferior Agora ele está desaparecendo
na parte inferior e depois, com um atraso aleatório,
reaparecendo na Mas esquecemos de mostrá-lo novamente, esse é o problema aqui. Vamos colocar esse show nesse reset aleatório X aqui
e depois show e esse w, também
é chamado
aqui após o atraso. Vamos reiniciá-lo. Então,
existem as rochas e depois desaparecem
na parte inferior e reaparecem na parte superior
com um atraso aleatório Dessa forma, o jogo
fica bastante difícil, eu acho, ainda factível Mas também apresentaremos
alguns objetos para coletar. Isso será então mais interessante para o jogador,
porque o jogador deve coletar os objetos valiosos
e evitar as pedras aqui. E isso é, claro,
mais difícil. No momento, dez
pedras estão bem, eu acho que deveriam estar bem, e agora podemos introduzir nossos recursos valiosos ou talvez ou algo parecido, algo que o
jogador possa coletar e talvez vender depois.
21. 21 Como coletar estrelas: Neste vídeo, apresentaremos nossos recursos que o
jogador pode coletar, ou
seja, são colecionáveis, e estamos implementando-os de forma muito
semelhante às pedras A primeira coisa que fazemos é
duplicar o sprite das rochas, ou melhor chamá-lo rock porque é apenas uma Então, basta renomeá-lo para rock e clicar com o
botão direito do mouse no Sprite Escolha Duplicar e agora
temos um segundo sprite do rock. A primeira coisa que
fazemos é renomear isso para recurso e agora
precisamos trocar a
roupa, é claro Certifique-se de ter selecionado
o spray de recursos aqui
e, em seguida, vá para fantasias. Esse é o traje de rock. Estamos escolhendo um diferente. Então, estamos escolhendo o traje
de estrela aqui. Procure por uma estrela, e
então você a terá aqui. Agora podemos deletar o primeiro
traje, o traje de rock. E agora só temos
a fantasia de estrela aqui. Ok. Portanto, temos estrelas e também temos código aqui. O roteiro é exatamente
igual ao roteiro de rock. Então, talvez possamos começar isso, e então teremos dez
clones aqui da nossa estrela Então faça isso. Talvez não dez, isso é demais. Vamos começar com quatro. E então começamos o
jogo. Então, vamos ver. Aí temos um e
aí temos 12. Mas não está fazendo nada. Se eu bater neles,
não está fazendo nada. Além disso, o que você vê é
que todos os clones estão presos aqui na parte inferior Vamos consertar isso. Pare o jogo. Por que eles não estão reiniciando aqui? Porque essa
coordenada coy não está correta. Vamos ver, é essa coordenada aqui porque temos que
selecionar o recurso, é claro, e ela também está oculta, então precisamos
mostrá-la no momento E então podemos
arrastá-lo para cá, agora, assim aqui. E então esse é
o máximo ou o mínimo y porque se eu tentar
fazer com que seja menor do que
isso, ele está voltando para -180 Então -180 é o limite aqui, e é isso que
precisamos verificar aqui Portanto, não é -180 que
precisamos inserir aqui, então é menos 179 porque a posição y
deve estar Então, vamos tentar isso e
ver se todas as estrelas estão desaparecendo. Ok, então
isso parece funcionar Eles estão todos desaparecendo
na parte inferior e reaparecendo
na parte superior Isso está funcionando.
Não podemos coletá-los. Mas é claro que isso é
algo que implementaremos. Mas, por enquanto, parece funcionar. Talvez sejam estrelas um pouco
demais. Acho que mudamos o script
errado aqui. São dez, e aqui, precisamos ter quatro, agora são mais rochas do que
estrelas, então isso é melhor. É mais
difícil desse jeito. Mas, no final das contas, acho que
dez também é demais. Então, vamos colocar sete aqui. Vamos verificar isso novamente. Sim, acho que isso é razoável. Claro, precisamos adicionar
o teste de acerto agora.
Então, vamos fazer isso. O teste de acerto do
chip do foguete para as rochas está aqui, mas não podemos o teste de acerto
das estrelas aqui também porque precisamos esconder o
recurso aqui e redefinir sua posição quando o
foguete o atingir Então, isso não é nada
que possamos fazer aqui porque, a partir daqui, não
podemos fazer o recurso desaparecer, a estrela desaparecer. Então, o que temos que fazer
é fazer a mesma coisa, ou quase a mesma coisa
que estamos fazendo aqui. Então, se estiver tocando uma rocha, precisa estar no
recurso aqui Então, vamos ao chip de foguete
sensível ao toque. Então, tocando no chip do foguete, e agora temos que inserir
um se estiver Se tocar no chip do foguete. Essa é a condição que
precisamos verificar. Então eu toco no chip do foguete, e isso é algo
que temos que fazer, temos que
colocar o Fevepe
aqui no Vamos fazer isso se
tocarmos no chip do foguete, então podemos, é
claro, escondê-lo Então, vamos escondê-lo
e testá-lo novamente. Se a estrela estiver atingindo ou
tocando o foguete
, ela deve desaparecer, e isso parece funcionar.
Mas o problema é. Depois de acertar, não
ganho pontos por isso, é claro, porque não
estamos contando nada aqui.
Vamos fazer isso então. O que precisamos para
contar os recursos? É claro que precisamos de uma variável, então vamos às variáveis,
criamos uma variável e a
chamamos de recursos. E isso pode ser para todos os sprites. Agora temos recursos, e eu coloquei isso aqui
do outro lado da tela. Se atingirmos o foguete, os recursos precisam aumentar, podemos configurá-lo para mais um, então basta mudar.
Depois dessa altura, podemos alterar os recursos em um Lembre-se de que o chip do foguete, se atingir uma rocha, alteramos os reparos
deixados por menos um, então está diminuindo, e aqui
estamos aumentando os recursos Vamos tentar isso. E
aí está a primeira estrela. Sim, e funciona. Recursos é um recurso
coletado e agora temos dois, três, 45 e assim por diante. Isso parece funcionar e acho que é bem fácil. Talvez devêssemos aumentar o
número de pedras aqui novamente. Isso talvez seja muito fácil.
Ok, vamos fazer isso. O número de pedras está aqui,
repita sete vezes, então talvez nove vezes
estaria bem. Agora fica mais difícil. Claro, um acidente. Primeiro acidente, e vamos ver. Há uma estrela. Este
está fora de alcance, mas eu entendo esse, então eu tenho 21 estrelas. Claro, esquecemos alguma coisa. Esquecemos de redefinir
essa variável aqui. Vamos fazer esse conjunto, e vamos fazer isso aqui
no início, quando clica em recursos até zero. Estamos começando com zero
recursos e três reparos. E eu tenho quatro agora. Não consigo
chegar a cinco, e assim por diante. Ainda não é muito difícil, mas às vezes é muito
próximo. Eu acho que está tudo bem. Temos um sistema de
recursos em funcionamento, para que o jogador possa coletar
com a nave espacial, as estrelas e os
recursos variáveis estão contando progressivamente e o que podemos fazer
com as Decidimos mais tarde, talvez possamos comprar upgrades
para nossa nave estelar aqui, ou talvez possamos comprar reparos para ela, para que tenhamos mais vidas do que
algo assim Mas, por enquanto, coletar
recursos funciona, e isso é muito bom. Isso é quase um jogo. Então você já pode ver o quão bom o jogador é observando
os recursos que ele coletou.
22. 22 Aterrando em um planeta: Agora que o jogador pode coletar
recursos, colete estrelas. Precisamos de uma oportunidade
para o jogador vender esses recursos e
receber algo em troca,
por exemplo, um upgrade
para a nave espacial
ou outro reparo, ou
seja, outra vida, por assim dizer E isso
faremos com planetas, para que o jogador possa
pousar em planetas. Então, temos que adicionar
outro sprite aqui, semelhante às estrelas,
semelhante às rochas Então, basta copiar aqui
nosso sprite de recursos, então clique com o botão direito no
recurso Duplicate E então
trocamos o traje, então vamos até os trajes, escolhemos um traje
e entramos no planeta, e temos essa terra aqui. Mas vamos pegar esse
planeta dois aqui. E agora podemos apagar
a primeira fantasia aqui. Não precisamos mais disso. E então vamos para o código. E aqui podemos
querer mudar isso aqui, talvez repetir quatro vezes. Então, precisamos de quatro
planetas? Eu acho que não. Talvez possamos fazer com
dois planetas aqui. Então o jogador tem que tocar, tem que colidir com um planeta, e então será automaticamente uma aterrissagem neste
planeta Também precisamos mudar o pano
de fundo aqui. Então, no momento, temos apenas
esse pano de fundo branco vazio e adicionaremos outro Então escolha um pano de fundo. E então podemos
procurar uma cidade aqui, e
talvez peguemos esse metrô. Então, espero que isso pareça um
pouco futurista aqui. E o problema agora, no
momento, é que você não consegue ver isso. Então, temos esses dois
sprites de fundo aqui, é claro. Se os movermos, você
pode ver que existe, de fato, o pano de fundo,
o novo pano de fundo Mas se começarmos o jogo, você simplesmente não o verá. E aí temos nosso
planeta, o primeiro planeta, e isso é o mesmo que um
recurso no momento. Então, esse é exatamente o mesmo código, então também aumentará
os recursos aqui. Mas não é isso que queremos. Queremos outra coisa. Temos que esconder
esses dois cenários para ver o
verdadeiro pano de fundo aqui Então esse é o primeiro sprint em segundo
plano
e o segundo, e precisamos escondê-los. Como escondemos os sprites
de fundo? Selecionamos o primeiro aqui. O que faremos é
entrar nesse ciclo eterno aqui. E vamos embrulhá-lo
com uma condição. Desta vez, não usaremos a condição
normal se houver, mas vamos até os controles aqui
e, em seguida, adotamos a condição “se não for o caso
”. Então arraste isso até aqui. Então, temos
quase o mesmo que aqui, mas temos esse outro caso. E esse outro caso
será executado se essa condição aqui no
primeiro não for cumprida. Então, vamos colocar o
primeiro bloco aqui, esse que estava
no formato evlope Vamos colocar isso aqui
no primeiro if. Então, se alguma coisa, precisamos
inventar esses dois, é
claro, e então fazer isso. E se algo não
for cumprido,
ou seja, se não essa
condição aqui, então faremos isso de outra forma. Vamos pensar em que
condição precisamos aqui? Vou usar uma
variável global aqui. Já usamos variáveis antes, então você deve estar
familiarizado com isso. Eu crio uma variável aqui, e para todos os sprites, isso é muito importante porque todos os sprites
precisam da variável, precisam do eixo da variável, e vamos
chamá-la de viagem parada A viagem pelo espaço
será interrompida se isso for verdade, mas veremos como
isso se parece. parada de viagem no
momento é zero, como você pode ver aqui porque a
estamos exibindo. Mas não é isso que queremos. Não vamos mostrar
isso no final, então vamos adiar isso. Agora precisamos verificar se a viagem parou aqui
com uma operadora. Vamos verificar a igualdade aqui, pegar esta e
arrastá-la nesta condição if. E então vamos para as variáveis e arrastamos nossa variável de
parada de viagem aqui. Então, eu viajo, a parada é igual a zero, que é o valor inicial, depois faço as coisas que
fizemos antes
no forevelope, e então precisamos fazer
outra coisa E isso é que podemos
esconder o sprite. Então, vamos fazer isso. Se a viagem
interrompida não for zero, esconderemos
o sprite aqui Agora podemos colocar esse bloco aqui de volta
dentro do loop eterno, e não haverá
mudança, é claro, porque sempre estaremos
neste caso aqui se a parada de
viagem for igual a zero porque esse é o valor
inicial da variável e a variável não
está alterada no momento OK. Então, nada
ganhou no momento. Mas faremos isso se
atingirmos o recurso dois
e, a propósito, devemos
renomeá-lo para planeta Então faça isso agora. Então,
temos o planeta aqui. E se atingirmos o planeta ou se o planeta atingir
o foguete, no momento isso é esconder-se e depois trocar os recursos por um Vamos deixar esse esconderijo aqui. Mas livre-se dos recursos de
mudança por um, porque isso não é uma estrela, é um planeta, e isso
deve esconder o fundo, sprite aqui ou os dois. Aqui, precisamos definir essa variável
de parada de viagem. Então vá para variáveis e escolha este bloco,
defina, repare, à esquerda. Mudamos isso para parar de viajar e colocamos isso aqui
depois do esconderijo. Então, defina a parada de viagem dois, um. Por exemplo, qualquer outra coisa, exceto zero, faremos aqui. Então, se a nave estelar, se o foguete
atingir o planeta
, a parada de viagem
será definida como 1,
e
isso fará com que ela , a parada de viagem
será definida como 1, falhe Então, se estivermos dentro
do for evepe, chegaremos a esse
ponto em que o if é verificado Portanto, se a parada de viagem for igual a zero, isso não será mais verdade e passará para
esse outro caso Vamos tentar isso. E vamos ver quando o primeiro
planeta chega, lá está, e
vemos que está funcionando. Claro, está apenas
escondendo o primeiro, o plano de fundo aqui. Precisamos duplicar
esse bloco aqui. Precisamos colocar algo
no segundo plano de fundo. Vamos fazer isso, vá para o controle, e temos isso se então, e colocamos esse bloco
dentro do if then, e então podemos copiar
essa condição aqui. I. Esse, arraste isso para fora. Ele voltará, mas arraste-o
aqui para o segundo plano, solte-o e, em seguida, ele
retornará ao local anterior, e agora o temos aqui. Então, podemos arrastar isso
aqui para o if then. Agora temos que se a
parada de viagem é igual a zero, então fazemos o que
fizemos antes, caso contrário, também podemos
esconder o sprite Caso contrário, esconda o sprite. Coloque isso de volta no Fp e agora os dois fundos
devem desaparecer Então, vamos fazer isso de novo, e vemos que o problema aqui
é que os planos de fundo não são mais
exibidos porque não os
mostramos quando clicamos em go Vamos fazer isso. Arraste
esse show aqui. E também no segundo sprint, arraste o show até aqui, e
agora ele deve funcionar novamente. Então vá. Por que não está funcionando? Porque paramos de viajar. Se pudermos exibir, você verá que a parada de viagem
é uma e não
mais zero , porque o script
aqui a definiu como zero e ela não será redefinida. Automaticamente, temos que fazer isso. Já que estamos fazendo isso aqui, talvez também
possamos fazer isso
aqui na redefinição Então, basta definir a parada de viagem
20 ao clicar em Go e agora temos nosso
plano de fundo novamente. E então temos o
planeta, vamos ver. Ok, agora vemos o
fundo aqui, essa queda de cinta aqui Mas um problema permanece ou vários problemas aqui porque
tudo ainda está se movendo, exceto os planos de fundo Mas as rochas inteiras
e as estrelas, tudo ainda está se movendo. Então, precisamos aplicar também essa
lógica aqui. O se mais. Não, onde a temos aqui, se
a parada de viagem for igual a
zero s para os outros
sprites Então, vamos fazer isso, vá para o rock. E então aqui temos o
feverop, o loop do jogo. Então, vamos pegar nosso se mais aqui. Podemos arrastar isso para
dentro do if then. E então também podemos arrastar isso aqui e
copiá-lo para a rocha, e vamos até a rocha novamente, e então colocamos essa parada de viagem igual a zero aqui
na condição if E no bloco S, vamos esconder o sprite aqui Em seguida, colocaremos isso de
volta no loop eterno. Então, agora as rochas devem estar
todas invisíveis
aqui. Vamos tentar isso. Talvez tenhamos o planeta chegando, aí está, e você vê que
as rochas desapareceram. O planeta também
precisa desaparecer, e também as estrelas, é claro. Vamos até as estrelas e
fazemos a mesma coisa
aqui, caso contrário, pegue isso e coloque
aqui no caso n, e também copiamos essa condição
aqui para o recurso. Use-o aqui e depois
esconda o sprite no outro caso. Ok, coloque de volta
no For Evo. O que falta é planeta. Então, fazemos o mesmo aqui. Se mais. E então arrastamos essa condição
aqui para o nosso planeta. Coloque isso na condição if. E então esse bloco
irá para o caso “então”
e, no caso “outro”, esconderemos tudo. OK. Agora vamos tentar isso e vamos esconder
a variável aqui. Ravel, pare. Não precisamos
que isso seja exibido. Vamos tentar isso. Oh, existe um planeta. Mas fizemos algo errado. Claro, fizemos
algo errado. Não colocamos tudo
isso no Favepe. Vamos fazer isso de novo. E aí temos um planeta. E agora temos o foguete. Ainda assim, é claro, o
foguete talvez também desapareça, porque aqui neste planeta, ele pousou, então não deve
ser movido pelo jogador, e o jogador deve
fazer outra O jogador deve negociar
os recursos aqui. Então, vamos fazer isso
para que o foguete também controle, se for o caso. E tudo que está dentro. O loop eterno será
movido aqui no caso n, e esse é um bloco muito
longo aqui, e obtemos a
condição a partir daqui, talvez não
importe porque é o mesmo, mas é apenas mais rápido dessa forma. Aqui está. Coloque isso aqui. Já podemos colocá-lo
no circuito eterno novamente
e, no outro caso, escondemos a nave. E então vamos tentar isso. E há um
planeta, mas há um segundo planeta, e
vamos pegar este. E agora tudo acabou, nada mais, apenas
o pano de fundo aqui, e é isso que queríamos Então, nada será feito aqui. Esse loop eterno se repetirá para sempre e sempre
ocultará os sprites Cada sprite aqui está
escondido nesse loop, e talvez devêssemos colocar outra
coisa aqui no else porque agora tudo está
girando e se escondendo, e também podemos economizar um
pouco de recursos, os ciclos
da CPU, se esperarmos Então, podemos esperar, vamos
esperar por 1 segundo aqui. Então, tudo está dentro
desse loop eterno, e ele se esconderá e
esperará por 1 segundo. E nesse 1 segundo, a CPU desse prise, pelo
menos, está ociosa Então eu acho que é uma boa ideia. Vamos fazer isso em cada primavera. Economizaremos alguns ciclos de CPU aqui, economizaremos um pouco de desempenho aqui. Então, em cada um dos outros, esperamos por 1 segundo. Mas é claro que, se reiniciarmos
a viagem pelo espaço, haverá um atraso de máximo
1 segundo, porque
provavelmente estará em
estado de espera aqui se voltarmos, e se mudarmos a
parada de viagem para zero novamente, os sprites estarão ou
alguns dos sprites, pelo
menos estarão esperando Portanto, haverá um pequeno atraso
máximo
de 1 segundo. OK. Então aqui está o último, eu acho. Vamos esperar 1 segundo aqui. Ok, agora temos em cada sprite a
espera de 1 segundo, então isso será
fácil para a CPU Agora podemos pousar em um planeta. Tudo está
parado e escondido, e aqui podemos
implementar nosso comércio.
23. 23 Como refatorar o roteiro do foguete: Antes de fazermos
a negociação aqui, quero fazer algumas refatorações Refatorar é
reestruturar seu código para torná-lo mais legível e mais fácil manter Se olharmos esse script aqui, esse bloco dentro do
circuito for do foguete,
você pode ver que é
um pouco longo demais
e não é muito compreensível você pode ver que é
um pouco longo demais
e não é ,
não é muito compreensível Então, o que podemos extrair aqui? Então, eu diria que vamos
extrair isso aqui. Então, o exterior, se for,
deixamos como está, e isso aqui, podemos
separar em duas partes. primeira parte é se tecla para cima for pressionada e
as teclas inteiras aqui, e a segunda parte é
aqui se estiver tocando na rocha Então, nós os separamos assim. Nós rasgamos isso aqui e separamos essas duas partes
desse longo bloco aqui, dentro dele se a
parada de viagem for igual E estamos criando dois blocos
para essas duas partes aqui. O primeiro bloco seria
a parte de controle do jogador. Esta parte verifica se
há teclas que são pressionadas e, em seguida,
controlam a nave espacial Vamos chamar esse jogador
de controle e clicar. Agora temos esse bloco
definido aqui, e basta arrastar essa primeira
parte aqui até essa definição. Estamos definindo o controle do jogador
com esses quatro ses aqui. Todos esses ses verificam se há uma tecla, e a tecla de seta, se ela for pressionada e, em seguida, alterando
x ou alterando, y. Ok, então a segunda parte
é esta aqui sobre a condição no caso de
a nave espacial bater em uma rocha, e isso é o que
chamamos de bloco, pressionada e, em seguida, alterando
x ou alterando, y.
Ok, então a segunda parte
é esta aqui sobre
a condição no caso de
a nave espacial bater em uma rocha,
e isso é o que
chamamos de bloco,
também teste de acerto, ou talvez
vamos chamar de teste de impacto de rocha Então, aqui temos essa
definição para o teste rochoso, e vamos arrastá-la até aqui Então, temos essas duas funções, ou esses dois blocos, procedimentos, como
você possa chamá-los. Aqui no zero, eles são chamados de
blocos personalizados ou blocos M. E agora precisamos chamar
esses dois blocos aqui em nosso loop eterno em
nossa parada de viagem I igual a zero. Vamos
colocar isso aqui. O jogador controla o primeiro teste
rochoso depois disso. E agora o jogo deve funcionar
como antes. Vamos tentar isso. Aqui temos o
controle funcionando, e também podemos,
eu atingi o planeta. Então, vamos tentar novamente. Eu quero bater em uma pedra para
poder ver o acidente. E também havia um planeta. É por isso que estamos
aqui na cidade. Então, vamos tentar de novo. Basta bater em uma pedra aqui. Ok. Aí está.
Tudo funcionando da mesma forma que antes. E essa é, obviamente,
também a vantagem da refatoração ou a
exigência de
refatoração : a funcionalidade deve ser
a mesma de antes funcionalidade deve ser
a Então, aqui estamos apenas substituindo essas duas partes
desse bloco longo por
dois blocos personalizados aqui. E estamos apenas
ligando para eles aqui. E talvez
também devêssemos escrever isso com P maiúsculo aqui para
torná-lo igual ao teste de impacto na
rocha. Então é disso que trata
a refatoração. Você não está alterando
a funcionalidade, não está mudando a
forma como ela funciona, mas está mudando
a estrutura e tornando-a mais legível, tornando-a mais sustentável O que quero dizer
com sustentável? Então você pode ver aqui que esses são dois blocos com funcionalidades
separadas. Aqui está o controle do jogador e aqui está o teste de impacto. Alguém que não esteja
familiarizado com o código, ou talvez você mesmo, que talvez não esteja mais
familiarizado com o código porque talvez tenha mudado
alguma coisa aqui há
um mês . Então, agora você não tem certeza de
como esse código funciona. Mas se você fizer isso dessa forma, separando o código
em seu próprio bloco personalizado e chamando
esses blocos aqui, poderá mantê-lo melhor, significa que você poderá
localizar melhor o código que precisa ser alterado
ou estendido. E então você também pode entender
o código que está lá. Então, aqui eu posso
ver imediatamente que esse é o controle do jogador, e esse é o teste de sucesso. Portanto, é muito
fácil, por exemplo, colocar outra chave aqui
neste bloco de controle do player. Então eu teclo,
digamos, pressiono o espaço, depois disparo algo como um
feixe de laser ou algo assim. Portanto, isso pode ser estendido aqui. Neste bloco personalizado, e para o teste de foguete, você pode
querer testar outra coisa, não apenas a rocha, e então você
precisa renomeá-la, é claro, ou definir
outro bloco Por exemplo, podemos testar
outro obstáculo,
sei lá, talvez um
buraco negro, algo assim, e então você pode definir
outro teste de acerto de buraco negro, ou você pode colocá-lo aqui dentro desse teste de foguete e renomeá-lo para Just hit test,
por exemplo,
isso será uma opção, ou você tem Um para a rocha atingida, um para o
buraco negro, teste de impacto, que você pode decidir. Mas a vantagem
da refatoração
dessa refatoração aqui é que ela é muito mais legível aqui Você pode ver qual
bloco faz o quê? Porque você pode nomeá-los e também
encontrar mais facilmente o local onde você
precisa fazer alterações. Ok, então essa é a nossa
primeira refatoração ou não a Já usamos
os blocos personalizados. Então, se formos até a rocha em si, também
temos esse reset aleatório, e isso também é um
tipo de refatoração,
porque tínhamos isso antes,
aqui dentro dessa
longa lista de blocos,
e o refatoramos porque tínhamos isso antes,
aqui dentro dessa , por assim dizer,
nesse bloco e o
chamamos aqui de reset aleatório x.
E também quando eu começo como
clone, reiniciamos o X aleatório. Então isso também foi refatoração, Então isso também foi também
temos esse reset aleatório,
e isso também é um
tipo de refatoração,
porque tínhamos isso antes,
aqui dentro dessa
longa lista de blocos,
e o refatoramos, por assim dizer,
nesse bloco e o
chamamos aqui de reset aleatório x.
E também quando eu começo como
clone, reiniciamos o X aleatório.
Então isso também foi refatoração, mas aqui está mais
explícito. Eu já anunciei isso antes. Estamos fazendo uma
refatoração e não estamos
alterando a funcionalidade aqui ainda
é a mesma de antes, mas aqui temos um código mais legível e
um código mais extensível
24. 24 Mudando de cenário: Mais uma preparação
antes de
entrarmos na tela de negociação. Vamos dar uma olhada
novamente nos cenários. Até agora,
adicionamos apenas um pano de fundo, e isso foi definido
se selecionarmos aqui, o palco, então
teremos os cenários Adicionamos o metrô, e já tínhamos
esse de pano de fundo,
que é o primeiro Teoricamente, poderíamos simplesmente excluir isso porque só
precisamos de um no momento, mas quero
demonstrar aqui como alternar entre os cenários Nós fazemos este primeiro
talvez em uma cor como, vamos fazer isso, talvez
completamente preto. Defina o brilho para zero aqui, e então teremos
um preenchimento de preto. Use esse retângulo com
preto assim mesmo aqui. Vamos apenas estender esse retângulo
aqui com o mouse e temos o pano de fundo. OK. Então esse é nosso primeiro cenário, então precisamos configurá-lo também Então, vamos colocar isso no código
do foguete. Quando a bandeira é clicada,
quando clicar em Go, precisamos
trocar o pano de fundo, e isso está aqui em Looks, então você pode trocar a roupa do sprite
aqui,
mas também pode trocar o mas também pode Então, vamos fazer isso,
alternar o segundo plano de fundo, depois o pano de fundo um, também
podemos renomeá-lo, mas vamos deixar assim O pano de fundo de fundo
é o preto. Então temos isso, e agora o problema é por que não
vemos nada se, quando
iniciamos um jogo, eu
coloquei algo
aqui no planeta para interromper a
viagem em um, para que aqui no planeta para interromper a
viagem em um, eu
possa pular toda a viagem pelo palco
espacial e então ir
diretamente para esta tela aqui porque queremos
implementar essa tela a seguir Então é por isso que eu coloquei
esse atalho aqui. Definindo a viagem como parada para um no início,
aqui no início, vamos simplesmente pular para
esse estado aqui, que é o mesmo que se o chip do
foguete atingisse um planeta Mas vou deixar
assim por enquanto. Vamos voltar ao chip do foguete,
então eu troco
o pano de fundo dois, o pano de
fundo um, ou também posso
mudar o pano de fundo para É o mesmo. Então,
dependendo do que eu escolher aqui, esse será nosso pano de fundo
inicial, seja o preto
ou o metrô Então é assim que você pode mudar
para um cenário diferente. E isso também é o que
devemos fazer no início, mudar para esse pano de fundo aqui E então, se atingirmos um planeta, ele estará aqui. Então, se tocarmos o chip do foguete
no planeta sprite, então escondemos o
sprite do planeta, é claro, e então
paramos a viagem dois E também temos que
mudar para esse metrô de
fundo aqui Além disso, se quisermos
ver esse pano de fundo, também
devemos configurá-lo aqui porque eu adicionei
esse atalho aqui, posso retirá-lo
por enquanto, então veremos, eu tenho que colocá-lo de volta
e configurá-lo como zero Claro, caso contrário,
ele permanecerá em um. Agora temos o mesmo comportamento aqui e, se atingirmos um planeta, vamos para esse cenário aqui E também todo o
resto está parado. É assim que você
muda os cenários. Você também pode alterar ou mudar para o próximo pano de fundo
aqui com este bloco Isso também é possível. Você pode ter uma animação de cenários, isso
também é possível Mas o que você não pode fazer é
não mover o plano de fundo. Mova o pano de fundo. É por isso que criamos esses
dois sprites aqui, para um pano de fundo em movimento
e um fundo em movimento O palco aqui, os cenários do palco não são móveis É por isso que você não tem nada em movimento aqui
se selecionar o palco e pode alterar os cenários Por assim dizer, troque as roupas
do cenário com
esses blocos aqui Mude o pano de fundo para o
metrô e o peso
também é uma possibilidade e
também o próximo cenário Usamos esse
único switch, o
segundo pano de fundo e, em seguida, um pano de fundo
específico Por que temos esse segundo
pano de fundo do Switch e esperamos? Isso ocorre porque também há um evento quando o
pano de fundo muda dois, e esse bloco aqui
está esperando por cada script que é acionado por essa
troca do plano de fundo Vamos ver aqui em eventos, quando o pano de fundo muda para, digamos, metro, então
também podemos executar um script aqui,
blocos aqui embaixo Que aqui vamos esperar esses scripts terminem
e depois continuaremos aqui. Terei um comportamento semelhante
se considerarmos este ano, quando eu receber uma mensagem, mas não usaremos
mensagens por enquanto, então é por isso que não vou
entrar em mais detalhes aqui. Só que você sabe que
isso também
aguardará cada script que
estiver aqui embaixo, quando o plano de fundo for ativado,
e esperará antes
de continuar e esperará antes Estes são os blocos de fundo aqui e podemos alternar
entre os cenários No momento, isso
não faz muito sentido porque estamos começando com essa mudança para a metropolitana, mas você não pode ver o primeiro
cenário de qualquer maneira porque criamos nossos próprios sprites de
fundo Pode ser outra coisa. Poderíamos simplesmente fazer nossas fantasias aqui nos sprites
sem isso Digamos que simplesmente não
teríamos esse retângulo preto aqui, então podemos nos livrar dele Agora só temos esses círculos
aqui e os mesmos aqui. Podemos selecionar o retângulo excluído ou pressionar delete
aqui, botão delete E agora ainda temos
o fundo preto. Então isso é porque
temos esse pano de fundo
nessa cor aqui Nós mudaríamos essa cor. Então, vamos mudar a cor aqui. Vamos torná-lo vermelho. Vamos
ver como isso funciona. Agora temos um
pano de fundo vermelho, e as estrelas, esses pontos aqui, esses
círculos ainda são brancos, mas com a
linha preta aqui no Também podemos nos livrar disso, mas não vou fazer isso
aqui porque no espaço, geralmente
é preto, então vamos
colocá-lo em preto novamente. Agora temos o
mesmo. Mas dessa forma, é
importante trocarmos fundo se
atingirmos um planeta aqui Se o jogador atingir um planeta
, o pano de fundo será alterado
para a cidade para que
possamos ter diferentes cenários nos quais o jogo acontece No próximo vídeo,
vamos realmente negociar.
25. 25 reparos de compra: Ok, vamos implementar
a negociação, para que o jogador possa negociar, vender os recursos
e obter, por exemplo, a primeira coisa que queremos
implementar é obter um reparo em um
reparo adicional aqui. No início, o jogador
faz três reparos
e, em seguida, pode coletar
recursos e trocá-los para
obter mais um reparo. Para isso, precisamos de um botão, então vamos criar um
novo sprite aqui Clique aqui, escolha um sprite, e aqui no campo de pesquisa, você pode inserir um botão
e, em seguida, você tem alguns botões aqui. Eu vou pegar esse. Você também pode pegar este.
Isso realmente não importa, mas você deve considerar
ter um pouco de
espaço dentro do botão
para exibir um texto dentro dele. Vou escolher este e
aqui está e
podemos ir até as fantasias aqui
e inserir um texto. Vamos fazer isso, escolha
essa ferramenta de texto aqui e clique onde
o texto deveria estar. Em seguida, entramos no meu reparo. Também podemos alterar a cor
da fonte aqui para preto. Vamos fazer isso com a
cor preta, e é um
pouco grande demais aqui. Vamos torná-lo menor.
Você pode arrastar esse canto aqui e torná-lo menor.
Algo parecido com isso. Também podemos colocar outro texto aqui informando
quanto isso custará Digamos que cinco
recursos sejam o preço. Vamos fazer esses dois menores, colocá-los em algum lugar aqui. Sim, acho que está
tudo bem. Se quiser, você pode alterar a cor de
fundo aqui, selecione a seta aqui. Este e este
podem ser alterados aqui, então você também pode escolher
uma cor sólida aqui. Não é um gradiente.
Isso é um gradiente. Isso é sólido e também é um gradiente
de cima para baixo, e esse é um gradiente circular Então, como você quiser, vou escolher uma cor de
fundo sólida aqui. Sim,
acho que deveria ser
algo muito brilhante para ter contraste. Eu acho que está tudo bem.
E agora podemos colocar o sprite em algum lugar Talvez aqui, e talvez a borda deva ter
uma cor diferente. Vamos escolher sólido,
algum tipo de azul, talvez, talvez um
pouco mais claro. Eu acho que está tudo bem. Além disso,
vamos deixar assim. Também podemos apagar este ano. Não precisamos da segunda
fantasia aqui para o botão. Agora temos o botão e
agora precisamos, é claro, exibi-lo no
momento em que é exibido, e isso não é bom
porque, quando
iniciamos o jogo, ele não
deveria estar lá. Então, vamos para o código e, em seguida, para
os eventos,
quando clicamos , precisamos ocultá-lo Então, isso é baixo, é claro. E agora está escondido
quando começamos o jogo. Claro, ele deve
ser exibido quando
vamos a esta cidade aqui
neste planeta, e agora ele deve ser
exibido. Como fazemos isso? Poderíamos fazer um loop aqui, também um loop eterno e verificar, por exemplo, se
essa viagem parou. Mas não é necessário
ter um loop eterno aqui. Há um
mecanismo diferente que podemos usar aqui, e isso é sobre mensagens. No zero, você pode
enviar mensagens de um sprite para outros sprites
para todos os outros sprites, e você pode ter mensagens
diferentes, e isso está em A partir daqui, quando eu
receber a mensagem um, transmita a mensagem um, transmita a mensagem
um e espere. Esses três blocos aqui
são sobre mensagens, e isso é importante
aqui porque é uma maneira muito boa de enviar uma mensagem para outros
objetos no jogo. Que mensagem queremos enviar? Queremos enviar a mensagem de que a tela de negociação aqui
deve ser exibida. No momento,
acabamos de desaparecer
todos os sprites de todas essas rochas
planetárias de foguetes,
implementados com isso para evepe
e com essa verificação implementados com isso para evepe
e com essa e com essa Mas também poderíamos
fazer isso, é claro, para este novo sprite para
este sprite de botão e verificar viagem. Se a parada de
viagem for uma, podemos mostrar o sprite,
mas há uma maneira muito mais fácil, na minha opinião, de usar o mecanismo de
mensagem Precisamos enviar uma mensagem se a tela de negociação deve
ser exibida e também, em
seguida, o botão
deve ser exibido. Então, aqui estamos configurando a parada de
viagem para um, e isso faz com que
todos os outros sprites aqui desapareçam,
exceto o botão Aqui, exatamente neste caso, aqui, neste caso, se antes ou depois de
definir a parada de viagem como uma, podemos transmitir uma mensagem. Transmitir uma mensagem
significa que podemos simplesmente enviar uma mensagem para
todos os outros sprites E se um sprite como o
botão, por exemplo, quiser receber uma mensagem
, podemos usar esse bloco
quando eu receber a primeira mensagem Não quero usar a mensagem um porque o nome não
é muito bom Vamos criar outra
mensagem. É muito fácil. Clique aqui nesta lista suspensa nesta seta e
depois na nova mensagem. Vamos chamá-lo de mostrar tela
de negociação. Esse é o nome da mensagem, e então podemos colocá-la aqui
depois de Definir parada de viagem como uma. Cada vez que o
foguete atinge o planeta, estamos definindo a parada da
viagem para uma, e estamos transmitindo
esta mensagem aqui Agora, no botão, podemos
ter esse bloco aqui, quando eu receber, não a mensagem um, mas mostrar a tela de negociação.
Esses são os eventos. Quando recebo esta mensagem na tela
de exibição de negociação
, posso mostrar o
sprite com muita facilidade Quando clicar em go,
o sprite fica oculto. Quando essa mensagem é recebida
, o sprite é exibido Você também pode
clicar nesses blocos aqui e executá-los
sempre que clicar neles. Então, quando eu
clico aqui, ele fica oculto. Quando eu clico aqui, ele é exibido. Então esse foi um bom teste, mas vamos testá-lo no jogo. Então, aqui temos nosso foguete, e precisamos encontrar um planeta Há um, e aí
você tem o botão também. Ok, vamos renomear o
botão para comprar o reparo. Então, dessa forma, podemos identificar melhor
o botão
aqui nesta lista. Agora temos esse botão, e o que fazemos
com o botão? Obviamente, o jogador
precisa clicar no botão. E então os reparos restantes
serão aumentados em um e os recursos
serão reduzidos em cinco. Portanto, cada reparo custa
cinco recursos. Vamos implementar isso. Primeiro,
precisamos de outro evento, quando esse botão é clicado Vamos aos eventos quando a primavera clicar.
Aqui está. Se o jogador
clicar nesse botão, precisaremos
aumentar os reparos,
incrementar os reparos em um
e diminuir os recursos Vamos fazer isso aqui
em variáveis. Podemos fazer isso, trocar
os reparos deixados por um. Isso aumentará os reparos em
um, incrementalmente. E então precisamos
diminuir, é claro, os recursos porque o
jogador tem que pagar por isso. Portanto, altere
os recursos em menos cinco, para que diminuamos
os recursos Então, vamos tentar isso no jogo. Novamente, eu reinicio o jogo. E espero que
haja um planeta lá. E então eu clico
neste botão aqui e vemos que os reparos restantes agora
são quatro eram três, quatro, e os recursos
são menos cinco Então, menos cinco não é bom
porque você está em dívida, mas não é
assim que funciona aqui Você precisa ter os
recursos para comprar o reparo. Então, temos que verificar
se isso é possível, se o jogador tem recursos
suficientes. Vamos controlar
se e vamos pegar esse bloco se for então bloco e colocá-lo ao redor
desses dois blocos aqui. Dessa forma, esses dois blocos
estarão no caso “if then”. Assim. No outro caso, o que podemos fazer no outro caso? Podemos dizer alguma coisa. T's unders, diga olá,
nós mudamos o olá. Você não tem recursos suficientes. Por 2 segundos, talvez
isso seja suficiente. Agora precisamos da condição aqui. As condições estão sob os operadores. Precisamos verificar
se o número de recursos é mínimo de cinco. Vamos verificar se há mais do que variáveis e, em seguida, recursos. Se os recursos forem
maiores que quatro, cinco em cinco ou mais
, podemos simplesmente comprar o reparo ou o
jogador pode comprar o reparo. Se esse não for o caso, dizemos que você não
tem recursos suficientes. Como alternativa, você
também pode usar isso menos de. Vamos fazer isso também. Se os recursos forem menores
que cinco, isso significa quatro ou menos, então podemos dizer, vamos trocar isso,
prolongar isso. Coloque isso e agora
precisamos trocar esses dois. Se os recursos forem
menores que cinco, digamos você não tem o suficiente,
precisamos separar esses dois, você não tem o suficiente
e, no caso. Nós fazemos o comércio. Então você pode
fazer assim ou o
contrário. A vantagem aqui é
que você tem os cinco, e aqui você também tem os
cinco, então é muito mais fácil. Aqui, você deve subtrair
um do preço e aqui você pode usar
o preço diretamente Para que você possa fazer
realmente o que quiser. Também podemos definir outra
variável para o preço
e, em seguida,
substituí-la pela variável.
Nós fazemos isso? Isso faremos
no próximo vídeo. Mas agora vamos tentar no
jogo se isso realmente funcionar. Não estou coletando
nenhum recurso, então meus recursos são zero agora, não o suficiente, devemos entender isso, você não
tem recursos suficientes. Agora vou coletar alguns.
Vamos coletar cinco. Dois, três Agora temos cinco, e agora precisamos de um planeta. Aí está. Então,
temos exatamente cinco, e depois da compra,
devemos ter zero, e funciona, e os reparos
restantes são quatro agora. Então isso parece
funcionar. Portanto, você precisa de um
mínimo de cinco aqui
para comprar o reparo. E, claro, se você tiver dez, também poderá pressionar o
botão duas vezes como jogador e depois fazer dois
reparos, então é fácil. Então, no próximo vídeo, teremos uma
variável de preço aqui, um preço para o reparo. E então vamos usá-lo neste lugar aqui
neste
local, e também neste, é
claro, e dessa forma
podemos usar mais um operador aqui.
26. 26 Variando o preço aleatoriamente: Queremos substituir esse valor
constante aqui de cinco. Esse é o preço
do reparo,
portanto, cinco recursos para um
reparo com uma variável. Então, vamos às variáveis, criar uma variável, é claro, e desta vez podemos
configurá-la apenas para esse conjunto, configurá-la apenas para esse conjunto, porque os outros sprites não precisarão dela porque esse
é o botão de compra, e somente o botão de compra saber o preço no momento,
então a tornamos uma variável
local aqui então a tornamos uma variável
local Então, vamos chamá-lo de preço de reparo, e apenas para esse sprite E agora podemos usá-lo aqui
dentro deste sprite de botões. E, por exemplo, você
não pode usá-lo aqui
neste sprite do planeta
porque não está disponível
aqui em variáveis Só agora está disponível aqui
neste sprite do botão de reparo Então aqui está, o preço do reparo, e precisamos
ajustá-lo ao preço. Então, digamos que toda vez que
mostramos a tela de negociação. Portanto, quando recebermos esta
mensagem, mostre a tela de negociação, podemos definir o preço aqui para que talvez na próxima vez que
mostrarmos o fluxo de negociação, o preço possa ser diferente. Mas vamos configurá-lo
para cinco. Por enquanto. Então, definimos o preço do reparo em 55
recursos dos quais podemos nos livrar. E agora podemos usar
essa variável aqui. E em vez de usar esse cinco aqui e esse
cinco ali, isso menos cinco,
agora podemos usar a variável Então, vamos arrastá-lo novamente. Aqui. Portanto, se o número de recursos for
menor que o preço do reparo, o jogador não
tem recursos suficientes, então essa mensagem
será exibida. E agora precisamos, no outro caso, diminuir os recursos
pelo preço, mas não assim, é claro, então não podemos simplesmente colocar isso
aqui porque isso é errado,
alterar os recursos
em mais cinco. Então, temos que mudar
isso em menos cinco. Como conseguir isso? Vamos
prolongar isso mais uma vez. E então vamos para operadores, e aqui temos esse operador de
multiplicação Então, vamos pegar esse. Então, multiplicamos o
preço por uma constante, e essa constante é menos Portanto, temos o preço de reparo definido como cinco vezes menos
um é menos cinco, e isso é exatamente o que
está aqui como constante Então, vamos colocar isso aqui
e agora isso deve funcionar. Portanto, estamos definindo o preço
para cinco aqui neste caso. Estamos verificando
isso menos do que aqui. E se o jogador tiver recursos
suficientes, estamos diminuindo o número de recursos pelo preço do reparo, e obtemos isso com essa
multiplicação com menos Ok, então vamos tentar isso. Não deveria haver
nenhuma diferença. Portanto, isso é
uma espécie de refatoração aqui, mas usaremos
essa refatoração a
nosso favor, definindo o nosso favor, definindo preço
aleatório Então, vamos tentar isso primeiro. Então, primeiro vou
coletar os recursos. Vamos coletar esse
tempo talvez seis ou sete antes de ir
para o planeta. Desta vez é mais difícil. Eu tenho cinco agora, mais um. Aqui. Agora precisamos de um planeta. Aí está. E agora eu posso comprar um reparo, e isso funciona. Resta um recurso
e temos quatro reparos. Então isso funciona. E agora eu
posso mudar isso aqui para, digamos, dez ou dois, o que eu quiser, e eu não preciso mudar esses
dois locais aqui. Eles também funcionarão. Então essa é a vantagem. Dessa forma, também podemos
definir isso como um preço aleatório. Então, podemos simplesmente substituir os dois aqui escolhendo aleatoriamente de um a dez. Vamos pegar um, 25 aqui
ou um, dois, seis, talvez. Um talvez seja um
pouco pequeno, então vamos pegar dois, dois a seis, para que o preço
seja sempre de 2 a 6. Então, vamos tentar isso. Vamos para
o planeta agora. Eu sei que precisamos
coletar recursos primeiro, digamos cinco às. Então, provavelmente seremos capazes
de fazer isso. Ok,
também podemos coletar mais. Temos sete agora, e isso
deve ser sempre suficiente. Então, compre, repare,
o preço do reparo está definido para seis agora. Podemos ver isso aqui porque
aqui, em variáveis, há essa caixa de seleção aqui
e, se eu
desmarcá-la, ela ficará oculta Se eu verificar, ele
será exibido. Sabemos que precisamos de seis
recursos para comprar um reparo. Temos sete, então vamos comprar um. E agora temos um recurso
restante e quatro reparos. Então está funcionando O único problema
é que o preço
não está correto aqui, então há cinco recursos neste texto aqui
e esse texto está, obviamente, corrigido
porque está no traje. Então, aqui temos esses
cinco recursos, e não é variável. E aqui devemos exibir o valor
do preço variável de reparo. OK. O que podemos fazer é mover isso aqui para este lugar. Então, primeiro, vamos nos
agarrar a ela. Temos diferentes opções de
exibição aqui,
normal, leitura, controle deslizante de leitura
grande ou ocultá-lo Então, podemos simplesmente fazer a leitura grande.
Isso é muito grande. Então, podemos simplesmente
colocá-lo aqui, e então podemos nos
livrar desse texto aqui. Basta deletar esse texto aqui
no traje do sprite, colocando-o talvez no
meio, um pouco acima Tudo bem. Agora também podemos fazer isso um pouco
menor aqui na parte externa 12. Isso parece melhor. E aqui temos o valor
da variável, e talvez devêssemos
colocar algum texto na frente para que o jogador saiba que esse é o preço do reparo. Então, vamos fazer outro sprite
apenas para mostrar isso aqui. Só pode pintar. Então, vamos colocar
o texto aqui. Preço dois pontos, talvez sim, acho
que k.
O tamanho está bom, então vamos colocá-lo
no centro aqui Mas o problema é que precisamos de
um plano de fundo para isso, vamos arrastar um retângulo aqui
e, dessa forma, o
retângulo fica na frente Mas primeiro, vamos mudar
para branco aqui, então o preenchimento deve ser branco. A saturação
precisa cair para zero. OK. Mas mais um problema, está no topo do nosso texto aqui. Então, precisamos mudar. Você tem esses botões
aqui, para frente, para trás, frente para trás Então, colocamos na parte de trás. Então clique nesse botão. Esse caminho está realmente na parte de trás. Por assim dizer, o fundo é o retângulo e o
preço está acima disso Assim, também podemos selecionar o
preço e colocá-lo na frente. Isso é o mesmo. Então, nada mudou aqui. Mas agora temos o preço, mas é um pouco grande
demais, é claro. Vamos torná-lo menor. Aqui precisamos de algum espaço
para essa variável. Vamos torná-lo assim, talvez ainda um pouco grande demais, podemos diminuí-lo aqui também alterando o tamanho aqui. Vamos colocar em 80, talvez, ainda um pouco
grande demais, algo assim. Então paramos o jogo aqui. Coloque esse botão aqui, coloque o preço aqui. E, além disso, podemos colocar isso aqui. Mas o problema aqui
é que você não pode alterar o plano de fundo dessa exibição aqui da exibição variável. Então isso tem que ser assim. Mas podemos mostrar o preço
com esse novo sprite aqui. E vamos colocar isso
um pouco acima, para que fique centralizado aqui Ok, então parece que está bem. Mas agora temos que
mostrar esse sprite também, e também temos que
mostrar a variável Então, vamos primeiro
nos livrar da variável. Então, desmarcamos isso aqui, ou talvez devêssemos fazer isso no código, é
melhor, claro Porque precisamos
inicializá-lo, para ficar escondido aqui. Então, vamos primeiro ao Sprite One, e quando começamos o jogo, precisamos nos esconder porque o foguete
não pousou neste planeta,
então nós o escondemos, é o mesmo que
o botão aqui, é o mesmo que
o botão aqui, e aí vem uma coisa
complicada porque você
pode arrastar isso aqui para
o sprite da etiqueta de preço,
mas eu não vou fazer isso, e
há uma razão para isso Aqui está o problema
com variáveis locais e essa cópia de um
bloco para um sprite diferente Então, se você arrastar isso aqui, este conjunto de preços de reparo
dois escolhe aleatoriamente 226 para este
sprite de texto de preço aqui. Vamos fazer isso. Você verá que
aparecerá aqui, é claro, é uma cópia, mas também
há essa variável
local de preço de reparo aqui. O Scratch também criou uma variável
local aqui. Temos duas variáveis locais
aqui. Um está aqui. E um está aqui, e eles têm o mesmo nome.
Esse é o problema aqui. Então você poderia dizer:
Ok, o preço do reparo é o mesmo
que este, mas não é, e
aqui está a prova. Vou mostrar o preço do reparo aqui, e ele aparece aqui. E se eu fizer o mesmo aqui, ele aparecerá aqui
ao lado do texto do preço. Esses também são dois
valores diferentes, quatro e dois, porque
existem duas variáveis diferentes. Cada um é local do sprite. Então, isso é local para essa noiva, esse preço de reparo, e isso
é local para esse orgulho Então, o que isso significa? Se eu definir aqui o
preço do reparo como um número aleatório, esse preço de reparo
ainda será o mesmo. Então, se eu configurá-lo aqui
para outra coisa , por exemplo, podemos
configurá-lo para, digamos, zero ou menos
um, talvez para que
possamos ver que é
realmente esse valor aqui, e eu começo o jogo Vemos aqui que temos dois. Então, se atingirmos um planeta, podemos ver que esse preço de reparo
de texto é menos um, e esse é quatro Este ainda é menos um, e este aqui é quatro definido aleatoriamente
por este bloco Então, aqui você realmente
precisa ter cuidado. Se você arrastar algo
com variáveis locais, um bloco que está usando uma variável ou
configuração local aqui neste caso
, ele estará
criando ou rascunhando, criando uma nova variável local
no outro sprite Mas essas não são
as mesmas variáveis. Ambos são locais
para cada sprite. Isso é um problema aqui, vamos nos livrar desse,
excluir a variável de preço de reparo.
Nós não precisamos disso. Mas precisamos mostrar isso aqui
no botão comprar reparo. Então, cada vez que mostramos isso aqui, quando eu recebo Mostrar tela de
negociação, precisamos mostrar
essa variável aqui. Como mostramos e
ocultamos variáveis? Isso é aqui, esses dois blocos. Mostrar preço de reparo variável, ocultar preço de reparo variável. Então, quando G clica, vamos esconder isso porque no início do jogo, não
queremos isso. E sempre que eu receber
a mensagem
Mostrar tela de negociação , ela mostrará o preço de reparo variável
aqui, essa variável local. Aqui, o texto do preço
só será exibido e ocultado. Precisamos adicionar aqui este evento quando eu receber a tela
de negociação do show, depois
nos mostramos aqui. É isso, ou deveria
ser isso, vamos tentar. Estou indo direto para o
planeta e aqui está. O preço é quatro. Não tenho nenhum recurso coletado e você não tem
recursos suficientes é exibido. Tudo bem. Vamos
coletar alguns recursos. Pelo menos cinco, eu diria, talvez mais, se houver. Sim, eu tenho três agora. Quatro e talvez mais dois. Ou acidente. Há mais um, e agora precisamos de um planeta. Ok, então aqui temos
os recursos oito. Então eu posso comprar dois
reparos. Vamos comprar um. Agora temos cinco. E
vamos comprar outro, e agora tenho dois
recursos sobrando e não tenho o suficiente
para comprar mais um. Então, faltam quatro reparos
porque eu tive o acidente. Então eu tenho quatro agora, mas comprei dois, então está
tudo correto. Ok, então é
assim que você pode tornar o preço do
reparo aqui aleatório. Por isso, é sempre escolhido
2-6 como um número aleatório. Então, isso fica um
pouco mais imprevisível, qual será o preço,
quantos recursos você precisará Então, se o jogador for para este planeta e não
tiver recursos suficientes
, isso é má sorte, é claro. E então o jogador
precisa voltar a viajar pelo
espaço e coletar mais recursos e depois
voltar para o planeta. Mas o problema é que
não há como voltar a viajar. Então é isso que temos que
implementar no próximo vídeo.
27. 27 Como corrigir o código de fundo: Neste vídeo, quero
corrigir um erro que
acabei de perceber que apresentamos anteriormente
e o introduzimos quando
trocamos as roupas
dos sprites de fundo Então, excluímos
esse retângulo aqui. Esse era
o tipo de plano de fundo para as estrelas,
o retângulo preto, e nós o
excluímos porque tínhamos esse pano de fundo aqui, o fundo preto, esse, e não precisávamos
do outro na época Você também vê que isso
não está corretamente no centro. Mas esse não é o problema aqui. O problema é que mudamos essa roupa aqui e, com a
exclusão desse retângulo aqui, mudamos o tamanho
desse sprite Esse é o problema aqui. Se essa posição y não
estiver correta, esse sprite de fundo não será redefinido para
essa posição aqui Eu intencionalmente errei
esse valor aqui, então não é o valor correto, e você verá
o que isso causa Somente para o primeiro sprite
de fundo. Eu fiz isso. O
outro eu já corrigi Você pode ver que o primeiro
plano de fundo está preso aqui. Aqui você pode ver uma estrela
desse plano de fundo e ela não é redefinida. Isso significa que não
acontecerá se a posição
y for menor que
menos 350. Por que não? Como você não pode alterar a posição mais do que
podemos verificar qual é o valor, -320, você não pode
defini-la abaixo disso Eu posso simplesmente configurá-lo para -500. Mas se eu fizer isso, ele voltará
automaticamente para -320. Não é possível
alterar y abaixo desse valor. Essa condição aqui sempre
será falsa
e não será redefinida. É por isso que temos
que mudar isso. Temos que ajustar isso
ao tamanho do
sprite. Vamos fazer isso. Aqui temos menos 320, temos que verificar se
está abaixo de -319 E então também temos que
redefini-lo para vermelho 20. Vamos verificar se isso
resolve o problema. Colisão. Mas parece que isso realmente está resolvendo o
problema, porque podemos ver que o primeiro
sprite em segundo plano está se movendo corretamente e foi
reiniciado corretamente. Tudo bem. Erro corrigido e
você sempre
terá esses bugs que
precisa depurar, ou
seja, corrigir erros Para corrigir erros, primeiro você
precisa encontrar o erro, e esse é o processo de
depuração Você primeiro encontra o erro, tenta isolar os
casos em que o erro acontece E então você corrige o erro, e isso é depuração O Scratch realmente não oferece suporte à depuração,
pois outras linguagens, outras
linguagens de programação ou ambientes podem fazer
isso porque ele não é
capaz de definir pontos de interrupção nos
quais você possa interromper o script e depois
inspecionar as Mas você pode inspecionar
as variáveis, é
claro, mostrando-as aqui. É por isso que você
pode, em variáveis, fazer com que essas variáveis sejam exibidas
aqui com uma caixa de seleção. Portanto, sempre podemos exibir o valor da
variável de viagem interrompida aqui e ver se
isso está correto. Então, também podemos mostrar a posição y do
sprite, por exemplo, então temos que ir para o movimento, e aqui temos a posição x
e a posição y,
e também a direção Não precisamos disso
no momento. Mas aqui, na posição y, você pode conferir, e então também
estará visível aqui. E então você pode ver a
posição y do fundo um. E então você verá que ,
se chegar ao fundo aqui, será redefinido
para o topo novamente. Trata-se de corrigir o erro. Isso eu acabei de perceber neste
momento, mas durante a codificação
durante a programação, sempre
haverá a
necessidade de depuração Portanto, essa foi mais ou menos uma introdução
à depuração, mas não havia a
intenção de fazer Foi só um erro antes. Mas aqui está como você corrige
isso e, novamente, como você pode definir esses
limites aqui, esses -319 Se você fizer algo errado,
algo assim aqui, esse plano de fundo ficará
preso e não será redefinido. E então você pode ver qual é
o valor mínimo
desse fundo, e então você pode usar
esse valor aqui menos 320 para fazer essa condição aqui, então deve ser mais uma Um pixel, por assim dizer, mais do que essa posição extrema, e então você pode usar isso. E então você define
o mesmo que aqui
no negativo como um y positivo para redefinir o plano de fundo aqui. E também há
mais uma coisa que podemos fazer para tornar as coisas um pouco
mais fáceis aqui em nosso cérebro. Então, podemos trocar isso aqui. Portanto, sabendo que essa posição Y sempre
será no mínimo de -320, podemos trocar isso
aqui por um igual Portanto, se a posição y for igual
e depois menos 320, reiniciaremos
o Isso é mais fácil, mas só
podemos fazer isso porque essa posição y
do sprite é sempre -320 se estiver abaixo dela Ele é sempre redefinido, por assim dizer, para esse valor
mínimo aqui. Portanto, ele sempre
assumirá esse valor. Se usássemos uma variável aqui e sempre a
alterássemos por menos dois
, poderíamos chegar a
algo como -321 e essa condição
não Mas como esse é realmente um caso especial aqui
com a posição x, podemos fazer assim,
e então você não precisará adicionar um a esse limite aqui. Portanto, se a posição y
estiver no mínimo de -320, vá para essa posição
inicial aqui Então, vamos tentar isso. E
veremos que isso também funciona. Dessa forma, você pode usar o
mesmo valor aqui, 320. Desta vez é -320, e aqui é positivo, 320, e é um
pouco mais fácil
28. 28 Saia da tela de negociação: R Agora que temos a tela
de negociação em execução, precisamos sair dela
novamente, é claro. Então, vamos para a tela. Novamente, aqui temos a tela
de negociação, podemos comprar. Se
tivéssemos recursos suficientes, teríamos
conseguido comprar aqui, mas não vamos, então precisamos sair dessa tela para
poder viajar novamente pelo espaço para coletar
recursos e depois comprar reparos aqui nesse
tipo de loja, que é. Ok, vamos nos livrar
dessa posição aqui. Primeira coisa. Então, onde
temos isso? É BG um, então o plano de fundo é o primeiro, e aqui está a posição. Você está lá embaixo,
desmarque a caixa de seleção e ela
desaparecerá. Parada de viagem. Nós
também não precisamos disso. Então, vamos remover a caixa de seleção aqui. Remova a marca
na caixa de seleção aqui. Então, agora isso também acabou. E para a saída, precisamos de um botão, é claro. Então, temos que pintar
outro botão. Talvez, não, não seja tinta. Vamos usar um botão predefinido aqui. Talvez esse sirva. Então, basta apagar este. Essa é a correta e
agora podemos personalizá-la. Então, pelo menos, temos que colocar
um texto aqui que diz saída. Faça-o um pouco mais bonito. Talvez faça a cor, a cor do texto, preta aqui e coloque-a no
centro ou talvez aqui, um pouco acima do centro. Está tudo bem. E também a cor, a cor de fundo
aqui deve ser outra
coisa, talvez a duração. Sim, eu acho que é melhor,
algo assim, e também a borda aqui, isso é um gradiente
no momento Vamos torná-lo sólido aqui, e então talvez apenas preto
neste caso, está tudo bem. E então precisamos
torná-lo um pouco menor. Ok. Então eu acho que deve ficar tudo bem. E aqui mudamos
o tamanho também para 80%. Ok. Agradável. Vamos colocá-lo aqui para
que o jogador possa ver claramente que este é o botão para sair
da tela de negociação. Ok, vamos ver o
código aqui para o script. E precisamos de um evento, é
claro, quando o
sprite é clicado Quando esse sprite é clicado,
o que fazemos então? Obviamente, precisamos
definir a variável. A
variável viagem parada precisa ser definida, então defina viagem parada 20. Isso fará com que
quase tudo reapareça aqui
e se mova novamente. Vamos tentar se isso
já faz alguma coisa. Então, vamos imediatamente
para um planeta aqui. A primeira que vemos, lá está, e tentamos a saída. Ok, então vemos que as
rochas estão se movendo novamente, as estrelas estão se movendo,
os planetas estão se movendo. O foguete não está se movendo, ou pelo menos não está visível Então, vamos e também o
fundo não está visível. Vamos primeiro consertar o chip do
foguete aqui. Por que o foguete
não está se movendo? Porque está preso
nesse ciclo eterno. E então, se a parada de
viagem for novamente
zero, será apenas o
controle do jogador e o teste rochoso E aqui não há nada
para mostrar isso novamente. Ok. Então, temos que mostrar isso. Então vá até os looks e depois mostre ou já o temos aqui, para que possamos nos livrar disso
e usar esse programa aqui. E coloque aqui se a parada de
viagem for igual a zero. Então, a primeira coisa
que fazemos é mostrar e cada vez que ele passa por esse loop e a
parada de viagem é zero Nós mostramos isso. Realmente não importa que mostremos
isso várias vezes. É quase uma operação não, não. Então, isso deve ficar bem. Então, vamos voltar atrás. E agora, cada vez que parada de
viagem está nesse ciclo zero
eterno, o foguete é mostrado.
Isso deve ficar bem. Vamos tentar isso.
Há um planeta, e saímos, e então
temos o foguete novamente. Isso também está funcionando. Reserve um tempo para que
todos os foguetes e estrelas caiam, mas está tudo bem. Eu
acho que isso é bom. O que falta
aqui é, claro, o plano de fundo
também precisa aparecer sempre
que a parada
de viagem for zero. Isso também é fácil. Remova
isso aqui,
coloque isso volta aqui, nesta
parada de viagem é igual a zero, o mesmo para o
segundo Então mostre a cada vez que
ele passa pelo loop, em
cada iteração, que a parada de
viagem é igual Portanto, o plano de fundo também deve
estar bom agora. Vamos experimentá-lo. Claro, tudo o que
você faz você precisa testar. Então, basta fazer uma pequena alteração e testar se essa pequena
mudança realmente funciona. Então é assim que eu faço. Se você fizer muitas, muitas coisas,
alterar muitos blocos e inserir lá e
alterar o valor, teste-os e
perceberá que nada funciona mais. Isso não é muito bom. Então mude um pouco e depois
teste essa mudança. Essa é a melhor maneira de ir. Ok, então vamos fazer isso. O plano de fundo também deve funcionar. Também deve reaparecer se
clicarmos em sair. Sim, é. Mas o que ainda falta é que
o pano de fundo não foi alterado. Então, precisamos mudar aqui para
esse primeiro pano de fundo aqui. Ok, onde fazemos isso? Além disso, neste sprite. Vamos renomear o
sprite aqui para sair botão ou simplesmente sair. Nós faremos. Defina a parada de viagem como zero
e, em seguida, também podemos
definir o pano de fundo aqui, alternar o pano de fundo, dois, o pano de
fundo um e testá-lo Também podemos testar se podemos comprar algo com os
recursos e depois sair. Agora, é muito caro aqui. Não podemos comprar reparos,
mas vamos sair. E agora vemos que tudo está volta ao que era
antes, exceto temos o botão de compra e reparo e
o botão de preço aqui, então eles têm que ir, e também
o botão de saída tem que funcionar. Como fazemos isso? Isso é
um pouco diferente? Eu sugeriria
usar uma mensagem novamente, então transmita uma nova mensagem aqui. Portanto, mostramos a tela de negociação e precisamos ocultar a tela de negociação. Portanto, crie uma nova mensagem
na tela de negociação
e, dessa forma, possamos reagir. Nesse sprite, também
podemos reagir. Então, quando eu receber a tela de negociação
oculta, vamos apenas
esconder o sprite aqui Então se esconda assim. Além disso, precisamos
mostrar o botão de saída. Isso é algo que
não fizemos até agora. Então, sempre que eu receber
essa tela de negociação de fotos, quero mostrar o sprite aqui Para que possamos lidar com a mensagem da tela de negociação do Hides
e também com a mensagem da tela
de exibição de negociação, temos que fazer
o mesmo aqui para o texto do
preço e para o reparo da compra Portanto, posso simplesmente copiar
isso quando receber altura
alta da tela de negociação texto
do preço e também
no botão de compra e reparo. Então, isso também fará o mesmo aqui nos
outros Sprites. Ok. Além disso, o que precisamos
fazer é o que é feito aqui, quando clicar, ocultar, ou vamos pegar essa
, quando clicamos, ocultar e copiar para
o botão de saída aqui Dessa forma,
esse botão de saída também fica oculto
quando o jogo começa. Vamos começar o jogo.
Sem botão de saída. Vamos pousar em um
planeta. Aqui está. Aí temos o botão de saída, temos o botão de reparo e o texto do preço. Portanto, não temos recursos.
Não importa. Saímos e podemos novamente
reunir recursos aqui. Ok. O que ainda
falta é, claro, que essa variável também
precisa ser escondida. Então, precisamos fazer isso porque
é uma variável local. Precisamos fazer isso no botão
de reparo aqui. Vamos fazer isso. Variáveis, variável
Hight Sempre que recebo a tela de negociação
oculta, oculte o preço de reparo variável. Então, vamos testá-lo novamente. Saia, e aí está. Agora podemos alternar
entre esse modo aqui, o modo de viagem e
coleta e esse modo de negociação aqui. Então, eu posso comprar na verdade
dois reparos aqui, sair e coletar mais recursos. Para que eu possa comprar mais reparos aqui.
Vamos tentar isso de novo. Posso comprar mais um e depois não ter
mais recursos, depois sair e
continuar o jogo. Muito bom, podemos
sair da tela de negociação. Podemos entrar na tela de negociação. Portanto, temos esses dois modos de viajar e coletar
e o modo de negociação, que é muito bom.
E estamos fazendo isso usando uma variável aqui, como você viu, essa variável de parada de
viagem, que é sempre verificada
no loop de controle de cada sprite, e estamos fazendo isso
também com mensagens Portanto, temos essa tela de
negociação alta e mostramos as mensagens da tela de
negociação
que são usadas aqui. Dessa forma, não precisamos
daquele loop de jogo eterno para cada sprite que não
é necessário Também é chamado de
ocupado esperando aqui. Então, se estamos neste modo aqui, parada de
viagem não é zero, mas é uma. Estamos aqui
nesta movimentada fila de espera. Para sempre, esconda-se
e espere apenas esperando, esperando, esperando o tempo todo. E aqui, esse não é o caso. Na verdade,
não estamos ocupados esperando. Neste caso, estamos apenas esperando uma notificação
aqui para uma mensagem
e, em seguida, estamos agindo de acordo a recepção
dessa mensagem aqui. E isso é um
pouco diferente. Para métodos diferentes para atingir o mesmo objetivo
ou objetivo semelhante, talvez. Mas aqui também temos um loop de controle do jogo e
é mais fácil
verificá-lo aqui no loop do que fazer isso por meio de uma
recepção de mensagem aqui. Ok. Então esse é o nosso jogo. Eu acho que é um jogo muito bom. Pode não ser muito
difícil no momento, mas você pode
ajustá-lo um pouco Isso fica mais difícil, talvez não tantos planetas, talvez mais rochas
e menos recursos. É claro que também podemos adicionar uma atualização aqui
para nosso chip de foguete,
então talvez o chip de foguete
possa disparar feixes de laser ou algo assim e depois destruir os meteoritos, as rochas E então talvez as rochas também revelem mais alguns recursos, eu não sei, talvez
planetas escondidos ou eu não sei. Você pode fazer isso e também
pode atualizar, é claro,
a tela de negociação aqui para que você possa não apenas comprar um reparo, mas também fazer um upgrade em seu
foguete aqui para que talvez
você possa disparar um laser outra
coisa, mísseis
ou algo parecido Ou você também pode
se estabelecer em planetas. Então, se você tem, digamos, 50 recursos que podem ser
capazes de se estabelecer neste planeta, e então você também pode colher recursos no planeta
e, com o passar do tempo, isso pode realmente
lhe dar mais recursos, para que você possa se estabelecer em
mais planetas e assim por diante. Mas, no momento, esse é o
nosso estado final do jogo. Então você pode,
é claro, estendê-lo. Não é tão difícil estendê-lo. Então, por exemplo, se você quiser vender ou deixar o jogador
comprar outra coisa, basta copiar isso aqui e depois criar
outra variável, talvez o estado de atualização do chip
do foguete, por exemplo E então você precisa
verificar, é claro, talvez aqui no controle do chip do
foguete, possa verificar se há espaço
para a chave de espaço Se a tecla de espaço for pressionada, você pode disparar esse feixe de laser, e se esse
feixe de laser atingir uma rocha, a rocha simplesmente desaparecerá, ou você pode, mais tarde, se entrarmos em animações, você também pode fazer uma explosão, talvez animação,
algo assim Ok. Mas é isso.
Para este jogo, aqui, na próxima seção, começaremos um novo jogo, e isso exigirá que exploremos mais
funcionalidades aqui no zero, porque existem mais Então, você não só tem
essas variáveis aqui, mas também tem listas, e isso será
abordado neste próximo jogo, e também
usaremos mais blocos personalizados, e também
haverá animações.
29. 29 novo jogo que controla o personagem principal: Este será nosso novo jogo e será um jogo de aventura. Assim como algumas antigas aventuras de
apontar e clicar, temos uma personagem principal, e essa personagem principal se
chama Avery porque temos no zero um sprite
predefinido chamado Avery, que é uma garota que
também tem uma Usaremos esse sprite
e, portanto, Avery embarcará
nessa aventura, e o jogador pode
controlar Avery com as teclas do cursor e depois
interagir com os objetos, coletá-los e resolver quebra-cabeças com a
ajuda O que precisamos fazer primeiro é, obviamente, criar um novo projeto. Dê a ela o nome de aventura de Avery. Eu já fiz isso aqui. Em seguida, precisamos criar
nosso primeiro sprite. Normalmente, você tem esse gato. Eu já
removi o gato aqui. Vamos adicionar Avery. Aqui temos Avery em
pé e em duas poses. Vamos conferir as roupas. Essa pose e essa, vamos mudar a ordem aqui. Você pode arrastar isso aqui. Vamos colocar a Avery
em pé primeiro, e então isso pode estar
falando de Avery como uma segunda Precisamos de mais sprites aqui, mais fantasias, não mais
sprites, mais fantasias, e podemos inseri-las
aqui, escolher uma fantasia, e então temos essas roupas
ambulantes Vamos selecionar o
primeiro, depois o segundo, depois o terceiro
e o quarto. Agora temos o aviário
ambulante aqui,
e aqui temos o aviário em pé e
o aviário falante Vamos mover o
aviário falante aqui até o fim. Primeiro temos o aviário
em pé, depois o aviário ambulante, e a última fantasia é
o aviário falante Com a ajuda desses trajes, faremos a
animação ambulante, é claro, e também em pé e falando. Isso é tudo para as
roupas por enquanto, e vamos verificar o código. Vamos fazer com que o jogador
controle o personagem, nosso aviário principal Primeiro, vamos aos
eventos, é claro, quando clicamos, e precisamos de
um loop eterno aqui Este será o nosso loop de jogo, e aqui verificaremos os controles,
e os controles são as teclas, a seta
para e os controles são as teclas, a esquerda e a seta para a direita. Vamos pegar um “se” aqui. Isso verificará a seta para
a esquerda. Então vamos para a
tecla de detecção pressionada e aqui, no
menu suspenso, escolhemos a seta para a esquerda, e então também podemos
duplicar
isso e criar uma
para a Então, o que fazemos?
Estamos alterando x desse sprite em uma certa quantidade para que o personagem se
mova nessa direção Então vá para o movimento e altere x por. Aqui, esta será a esquerda, então. Digamos que movamos x por, ou alteramos x por menos três,
ele vai para a esquerda Duplique isso, e
aqui movemos ou alteramos x por mais três,
k. Já podemos tentar isso ou alteramos x por mais três, k. Já podemos tentar Vamos ver como isso funciona. Vamos começar E somos
capazes de mover o personagem. Ok, em seguida,
mudaremos a orientação, então Avery deve estar voltada para direita quando a seta direita for
clicada ou pressionada
e, claro, para a esquerda se
a seta esquerda for Precisamos mover a orientação de Avery do personagem principal, e isso é feito por um bloco
que também está em movimento, claro, e esse é
um ponto na direção Podemos dizer ao scratch para
orientar esse personagem para
a direção certa ou para
a esquerda e
também para outras direções,
mas, neste caso,
precisamos apenas da direita e da esquerda Vamos fazer isso. Se a seta para a esquerda for pressionada e
aponte na direção 90 graus, isso deve ser -90 graus, então você pode mudar isso
aqui para -90 No outro caso, aponte
na direção 290 graus, se a seta para a direita for pressionada Então, se você clicar aqui, você pode ver que essa é a direção
certa aqui. Vamos tentar isso. E
vemos que não está correto. E isso é porque não
definimos o estilo de rotação correto, e esse é esse bloco aqui. Defina o estilo de rotação. Este é o último quarteirão aqui. Podemos configurá-lo aqui
no início,
definir o estilo de rotação
para a esquerda, para a direita. O padrão está em todos os lugares, e nós o definimos para a esquerda e para a direita. Vamos tentar isso e funcionará. Agora podemos virar o
personagem principal da direita para a esquerda. E agora, vamos à animação
do próximo vídeo.
30. 30 animação de caminhada: I. Agora, queremos adicionar uma
animação ao movimento aqui. No momento, podemos simplesmente nos mover e mudar a orientação
do personagem principal. Mas também queremos uma animação,
uma animação ambulante, e também temos os figurinos aqui para uma animação ambulante. Este é o primeiro quadro, por assim dizer, este é o
segundo terceiro quarto. Precisamos percorrer
esses quadros aqui, os quatro andadores,
os quatro trajes de caminhada aqui, e isso pode ser feito
em um segundo loop. Vamos
clicar e depois para sempre. Aqui faremos a animação. Ok, então como você pode
fazer uma animação? Você tem que trocar
a roupa por uma diferente da
próxima, por exemplo. Isso é descuido. Então, vamos ver Undos trocar o traje 2 Uma específica,
aqui você pode escolher qualquer fantasia do
sprite que quiser, ou também pode
dizer a próxima fantasia Então, por exemplo, se tivermos
o traje de pé, próximo traje, usaremos o
primeiro traje de caminhada aqui. Se estivermos animando, fazendo a animação ambulante, mudaremos para
a próxima roupa aqui Então, se
chegarmos a essa roupa, precisamos verificar
se ela é a primeira roupa de caminhada
aqui. Vamos fazer isso. Primeiro, mudamos
para o próximo traje, escolhemos este aqui, e depois o próximo traje
e esse para sempre. Vamos ver como isso funciona. Sim. Obviamente, há
uma animação aqui. Não é a correta,
mas está trocando
todas as roupas aqui. Mas é muito rápido, então precisamos adicionar um peso aqui. Vamos controlar a espera. E então não
esperamos por 1 segundo. Isso é muito longo. Então,
digamos que 0,2 talvez. Vamos ver como isso parece. Parece muito bom.
Podemos tentar talvez 0,3. Vamos tentar isso. Eu
acho que está tudo bem. Aqui você tem a animação, mas o problema é que não
precisamos da primeira aqui e também não precisamos
da última aqui. Precisamos verificar em que
estado está a animação e depois ajustar o traje
corretamente. Vamos fazer isso. Para isso, precisamos de um if
here ou pegamos um if else. Em seguida, precisamos verificar
em qual traje o personagem está no
momento. Isso também pode ser feito
aqui em looks. Então, aqui temos o
número do traje ou o nome do traje. Então, isso é uma espécie de variável Vamos arrastá-la aqui e verificar,
digamos, o número. Então, verificamos a igualdade, se o número do traje é igual, e então temos que
verificar qual é
o número do último quadro de
animação ambulante Então esse é o primeiro, o segundo, terceiro,
quarto, quinto em pé . Então, são cinco. Então, se chegar a cinco, ou se o
traje atual for cinco, o número, precisamos
configurá-lo para um traje específico, e esse é o primeiro. Então, um, dois, dois é o número do
primeiro traje de caminhada. Ok. Então vamos dar uma olhada
e depois trocamos de roupa. Não precisamos do número aqui. Podemos simplesmente configurá-lo
para este quadro aqui. Acho que está correto. Vamos verificar isso
novamente. Não, não é. É cada caminhada, cada
caminhada A, é claro. Se atingir o
último quadro de animação
, passaremos para o primeiro. E a primeira
é cada caminhada A. E se não for esse o caso, vamos mudar para a
próxima roupa aqui. E, claro, também precisamos esperar
para sempre. Para que a
velocidade da animação não seja muito alta. Vamos verificar isso e
isso parece funcionar bem. Avery está andando aqui. Também podemos deixá-la caminhar em
uma direção diferente. Então, à esquerda e à direita,
tudo funciona. Mas ela não para de andar. Ela anda o tempo todo, então a animação
não para por aqui. E isso, precisamos
fazer com uma variável. Portanto, precisamos definir uma variável com um valor específico e, em seguida, verificar esse valor no loop
forever aqui. Então, vamos introduzir
uma variável de caminhada aqui, tornar a caminhada variável. E só precisamos disso
para esse sprite. Somente para esta primavera, todos os outros sprites têm
suas próprias animações,
se houver, então só precisamos delas para
essa E precisamos
configurá-lo, é claro, para zero no início. Então, comecei a caminhar ou já
tinha uma variável de caminhada aqui. Vamos nos livrar dessa, e também vamos nos livrar
da minha variável aqui. Portanto, defina a caminhada para
zero no início. Então, se estivermos aqui
nesta seta para a esquerda ou para a
direita pressionada, precisamos configurá-la como uma. Vamos fazer isso aqui, configuramos como um,
e também . E então precisamos verificar
esse loop permanente se
devemos continuar a animação ou se devemos apenas esperar aqui. Este ano lá dentro, eu
posso prolongar isso, preciso estar em outro se. Vamos fazer isso se, e
precisamos de um se, então outro. Aqui está, arraste
isso para sempre. Se andar é igual, precisamos de
um operador igual aqui. Então, precisamos de nossa caminhada
variável. Se caminhar é igual a um, então podemos continuar com a animação
. Colocamos isso aqui
e se eu andar não é uma delas, então devemos ficar parados. Precisamos mudar para
esse traje aqui. Troque o traje para Avery. Acho que é B, vamos fazer isso. Troque o traje para Avery B e vamos tentar isso Esquerda, direita,
tudo está funcionando, mas não para por aqui. Isso é um problema, é claro, precisamos voltar a andar 20, e onde fazemos isso? Defina a caminhada para zero, poderíamos fazer isso aqui, mas o problema é que
deveria ser condicional Há várias
maneiras de fazer isso. Podemos ter um ninho,
se não for o caso. Vamos arrastar esses ifs aqui para
fora da eternidade. Dessa forma, fica mais fácil, e precisamos usar if
than else para cada um. Se outra coisa e isso
aqui precisam ir aqui, e isso precisa
ir aqui, é claro. Se a tecla seta esquerda for pressionada, defina Esperando para um, modo que seja o mesmo de antes. Pode se livrar disso se for o caso. Mas no outro caso, verificamos a outra chave aqui, mas não com if then, mas também com if then else. Então, vamos pegar isso aqui. Arraste a condição aqui e arraste esse bloco aqui. Isso pode ser um
pouco complicado porque estamos aninhando aqui se houver condições Primeiro, estamos verificando
a primeira tecla de seta para a esquerda. Se isso for pressionado, e
se isso não for pressionado, estamos verificando aqui,
no caso els, a tecla
de seta direita pressionada. Se esse também não for o caso, estamos
entrando aqui no caso els
desse caso interno, se não. Lá, podemos definir a
caminhada para zero porque tecla de seta
esquerda não foi pressionada porque estamos
neste caso, e também a
tecla de seta direita também não foi pressionada, então estamos neste caso. Nenhuma tecla foi pressionada
e, então, podemos definir a
caminhada para zero. Então, vamos colocar tudo isso aqui
na lupa for eve novamente, e vamos experimentar à esquerda, à
direita, em pé, e funciona Agora temos nossa animação aqui. Então, isso funciona apenas
trocando de roupa, e se a roupa estiver
em um determinado ponto, neste caso, é a
roupa número cinco, precisamos redefini-la para o
primeiro quadro da animação,
que é cada caminhada
A , caso contrário, estamos apenas mudando
para a próxima, mas somente se caminhar for uma, e se caminhar não for uma, estamos apenas mudando para
a roupa de pé. Como determinamos se a caminhada
deve ser um ou zero? Estamos apenas verificando se
alguma tecla foi pressionada, então não qualquer tecla, exceto a tecla de seta esquerda
ou direita, se nenhuma delas for pressionada, então colocamos a caminhada em zero. Dessa forma, temos essa
bela animação de caminhada. Agora temos todas as caminhadas e
o jogador pode controlar em qual direção ou se
ela deve ficar parada. Eu acho que isso é bom? controlar o personagem principal aqui e continuaremos
no próximo vídeo.
31. 31 Como montar a primeira sala: Como podemos controlar nosso personagem aqui, nosso personagem
principal agora. Assim, precisamos nos
preparar para nosso primeiro enigma, nosso primeiro quebra-cabeça
na primeira sala E por falar no primeiro quarto, precisamos escolher um cenário
diferente aqui porque está vazio Então, vamos verificar
o que está disponível. E minha ideia é que estamos
começando em um quarto. Então, vamos pegar talvez o
segundo quarto aqui. E coloque a Avery nesta sala. Vamos movê-la um pouco, então a posição inicial talvez deva ser
algo como aqui, e como ela precisa
andar da esquerda para a direita, ela não pode subir aqui. Precisa haver espaço suficiente e nenhum obstáculo aqui embaixo, e dessa forma, ela pode andar livremente para a
esquerda e para a direita. Vamos fixar a
posição inicial de Avery. Podemos simplesmente definir ir para x, ir para y aqui, e essas coordenadas são as coordenadas
atuais,
então está tudo bem. Ela está sempre
começando a partir daí. Se a movermos e depois partirmos, ela voltará para a posição inicial
e, a partir daí, poderá se mover em seu quarto
para a esquerda e para a direita. Essa é a parte móvel e
essa é a parte de fundo. Agora precisamos de objetos para que Avery possa interagir com
eles e resolver um quebra-cabeça O primeiro quebra-cabeça será que a porta do
quarto dela está trancada. Precisamos encontrar uma chave e
como isso aconteceu? Minha ideia era que ela estava
sonâmbula ontem à noite e acidentalmente
trancou a porta e colocou a chave embaixo da cama, de modo
que agora ela precisa encontrar a chave embaixo
da cama e depois destrancar a porta para
sair do Vamos implementar isso. Para isso, é claro
que precisamos de uma chave. Vamos procurar um sprite chave. Tecla Enter, e
aí temos uma. Felizmente, isso é
um pouco grande demais. Talvez apenas 50% ou 30%. Sim, talvez esteja tudo bem. Vamos mover essa chave para algum lugar. Debaixo da cama,
talvez na sombra aqui perto do topo
da cama, talvez. Eu acho que está tudo bem. Portanto, não é imediatamente
visível aqui e o jogador precisa localizá-lo
primeiro e depois pegá-lo. Essa é a chave, o objeto da primeira
sala para resolver o quebra-cabeça, e agora precisamos pensar como o jogador deve
chegar à solução. Então, a primeira coisa que eu faria é se todo mundo
quiser sair da sala, ela deveria ir para a
esquerda ou para a direita, e deveria haver uma porta, mas a porta está trancada, então podemos decidir agora se a porta está do
lado direito ou do lado esquerdo. Eu diria que está aqui, então temos que dizer ao
jogador que essa é uma porta ali e a porta está trancada. Então, como fazemos isso? Temos que verificar
a coordenada x aqui, e se a coordenada x for
maior que um determinado valor, podemos deixar Avery falar Mas há uma
solução diferente para esse problema. Podemos fazer isso verificando
a coordenada x aqui, mas também podemos colocar
um objeto aqui, talvez um objeto com
uma determinada cor aqui E então, se Avery atingir esse
objeto ou atingir a cor
, podemos deixá-la falar Vamos tentar a segunda solução. Colocamos uma cor especial aqui
e se Avery atingir a cor, deixamos ela falar Então vamos para o pano de fundo. Novamente, cenários aqui. Também podemos apagar o
primeiro. Nós não precisamos disso. Então, vamos mudar primeiro a
cor para algo marrom, acho que deve ficar tudo bem, um pouco mais escuro, talvez E depois um retângulo. Então, vamos colocar esse
retângulo aqui. E esta é, por assim
dizer, a porta aqui. Avery poderia simplesmente
caminhar até a porta, e então precisamos
verificar de alguma forma se ela atinge
essa cor aqui Se esse sprite estiver
tocando nessa cor. Espero que essa cor
seja única aqui
na sala e não seja
encontrada em nenhum outro lugar. Então precisamos
mudar a cor, é
claro, mas esse não é
o problema. Nós podemos fazer isso. Mas vamos primeiro tentar
com essa cor
e, em seguida, precisamos verificar
o toque de uma cor Como fazemos isso? Sensing, esta é a categoria certa aqui, mas estamos em segundo plano Então, vamos mudar para Avery. Então, aqui temos a
possibilidade de. Cor é
cor tocante ou sprite tocando cor, e essa é a Então essa pode ser a condição, e podemos colocar isso aqui
em uma declaração if. Então, vamos pegar um se, então. É, eu toco a cor, e agora precisamos
escolher a cor Aqui você tem o seletor de cores. Basta clicar nele
e agora você pode escolher uma cor aqui
na tela. Nós pegamos, é claro,
a cor da porta. Então essa é a nossa cor. E se acertarmos isso, deixaremos Avery
falar alguma coisa Vamos dar uma olhada
primeiro e dizer olá, e tudo bem por enquanto. Então, podemos colocar
isso no
velope for e, a cada iteração, ele verificará o
toque dessa cor
e, se tocar na
cor, dirá olá Vamos tentar isso
andando até a porta. Olá, e isso funciona. Claro, ela está sempre
dizendo olá agora, e devemos colocar
isso em um if else. Novamente, substituímos isso
aqui por if then else. Mova essa condição para
cá e mova o
olá para aqui. E como podemos nos livrar do
balão de fala aqui? Vamos colocar isso primeiro
no F everop novamente. Não dizemos nada. Então, novamente, diga e não olá, mas nós o apagamos completamente Então não há nada,
nenhum personagem está aqui, completamente vazio, e dessa forma, o balão de fala desaparece Ok, vamos tentar isso. Caminhando até a porta. Estamos batendo na
porta. Ela diz, olá, e estamos nos afastando da porta e o olá desapareceu. O balão de fala desapareceu. Além disso, notamos que
essa é a cor certa. Isso é exclusivo desta sala. Então, só temos essa
cor aqui na porta. Isso funciona, e vamos
mudar esse olá para
a porta está trancada.
A porta está trancada. Devo tê-lo trancado enquanto estava sonâmbulo à noite e colocado a chave em algum lugar para uma explicação
longa, mas isso deve ser uma dica para o jogador o que procurar Vamos tentar de
novo, reiniciando, indo até a porta,
batendo na porta, a porta está Eu devo ter trancado. Há um erro de ortografia ao dormir andando à noite
e colocando a chave em algum lugar Vamos corrigir isso
e agora está correto. Afastando-se da porta,
a tigela de fala desaparece. Este é nosso primeiro
mecanismo aqui, e é baseado
nessa cor tocante Você pode usar isso com cores
especiais que você escolher, e então você pode
sentir a colisão de um sprite com uma cor e depois dizer alguma coisa,
por exemplo, aqui, ou você também pode fazer outra
coisa. Ok, essa é a pista
para o jogador aqui, e agora precisamos verificar como
podemos obter a chave aqui, como o jogador pode
pegar Se o jogador tiver a chave, Avery poderá abrir a
porta e sair da sala
32. 32 Informações da chave de exibição: Agora vamos criar o
código para o objeto chave. Temos a chave aqui, o sprite, e aqui
temos o código No momento,
não temos nenhum código, mas o inseriremos agora
quando clicarmos, como sempre E então o que fazemos
quando clicamos. Quando clicamos em go,
criamos um para everop. E verificamos se o ponteiro do mouse está
tocando esse sprite aqui Vamos até outra coisa. Caso contrário, coloque isso
nos quatro velopes, e então precisamos da categoria de
detecção aqui Se estiver tocando no ponteiro do mouse, se esse sprite estiver tocando
no ponteiro do mouse, então vamos dizer alguma coisa ou
vamos pensar em algo se esse sprite estiver tocando
no ponteiro do mouse,
então vamos dizer alguma coisa ou
vamos pensar em algo. Então pense. Não, não, mas é uma chave e no outro caso, no outro
caso, não
pensamos em nada, então
isso só é exibido se o ponteiro do mouse estiver realmente tocando
no sprite da chave Vamos tentar isso.
Passando o mouse sobre a tecla, é uma chave, funciona, e se eu colocar o
ponto do mouse de lado, ela desaparecerá Isso é bom. Mas
queremos algo mais. Essa bolha aqui só deve aparecer se Avery
estiver perto dessa chave Se ela estiver, por exemplo, aqui
, a poucos pixels da chave, ela deverá exibir isso. É uma chave se eu passar o
mouse sobre a chave, e se ela estiver aqui, por exemplo, então não
deveria estar lá Dessa forma, fazemos com que
o jogador mova o personagem para explorar
os arredores daqui, e não é só o ponteiro do mouse que precisa
ir a qualquer lugar e procurar algo
para, por exemplo, pegar, olhar
ou usar Vamos fazer isso. Como fazemos isso? Certamente, existem várias
maneiras de fazer isso. Usaremos outro
sensor aqui. Então temos essa distância
até aqui, é o ponteiro do mouse. É um padrão, mas também
podemos escolher Avery, então vou fazer o sprite A distância até Avery,
e a distância até Avery deve estar
abaixo de um certo limite Então, vamos até os operadores
e escolha isso aqui. Menor que, a distância até
Avery deve ser menor que, digamos, vamos deixar como
50 ou algo parecido Também podemos ajustá-lo mais tarde. Não tem problema, deixe assim. Em seguida, precisamos verificar se o ponteiro do mouse
está tocando na tecla e também se a distância
até Avery está abaixo E esse fim
não usamos antes, mas isso também está aqui
em operadores. Então aqui temos esse fim. Então, vamos arrastar isso aqui. A distância dois é o
segundo operando aqui, e o primeiro é o
toque do ponteiro do mouse Portanto, temos duas condições agora, e ambas devem ser cumpridas
para mostrar isso. É uma chave. primeira condição é
tocar no ponteiro do mouse e a segunda é que a distância até
Avery é menor que 50 Então essa é a
condição completa com esse fim aqui, e nós colocamos isso aqui. Portanto, você deve ter cuidado
ao inserir isso, então a borda esquerda aqui deve estar alinhada com
essa forma se estiver aqui Então, está destacando se você colocá-lo no lugar
certo aqui e depois soltá-lo Se
tocar no ponteiro do mouse
e a distância até
Avery estiver abaixo de 50, você
poderá É uma chave, caso contrário, não
mostre nada. Vamos tentar isso. Primeiro, tentamos mouse sobre a tecla
quando Avery A distância é, obviamente,
mais de 50 aqui, e não está exibindo
nada, então isso é bom. Vamos nos aproximar. Ah, aqui vemos que a
ordem Z não está correta aqui Mas está funcionando, é uma chave. Agora está sendo exibida,
é uma chave, e se eu mover Avery um
pouco para a direita, ela não está exibindo É isso que queremos.
Avery precisa se aproximar da chave para realmente
receber essa mensagem aqui É uma chave. Isso está funcionando, mas precisamos corrigir a ordem aqui para que a chave esteja
sempre em segundo plano, mas isso é fácil.
Quando você clica, precisamos definir isso
para a camada posterior. Aqui, vá para a camada frontal, mude para trás,
então vá para a camada traseira. E então coloque isso logo
depois de clicar na bandeira. E agora isso deve ficar bem. A chave deve estar em
segundo plano e funciona. Vamos pairar. É uma chave. Também do outro lado, está funcionando. É uma chave, e se eu me afastar da chave
, ela não funciona mais. Isso é o que queríamos e é
isso que também alcançamos. Esse operador final aqui é novo. Portanto, você pode combinar
duas condições aqui, essa condição de
ponto de toque do mouse com essa distância até Avery
abaixo de 50 Esse aqui é o segundo operante, e esse é o primeiro Somente se esses dois forem verdadeiros, exibiremos esse balão de
pensamento
e, caso contrário, esse
balão de pensamento desaparecerá
33. 33 Como pegar a chave: Agora que podemos mostrar uma descrição do
objeto da nossa chave aqui. Precisamos ser capazes
de o jogador
pegá-lo e
colocá-lo no inventário. Vamos tentar isso. Quando o
jogador clica na tecla e precisamos mudar
para a tecla, é claro, para isso, algo
deve acontecer Vamos a eventos quando
esse preço clica
e, em seguida, precisamos
fazer alguma Primeiro, precisamos de uma
nova variável aqui. Para todos os tipos, para que
possa ser acessado em qualquer lugar,
não apenas na primavera não apenas na primavera Chamamos isso de chave retirada, e isso será zero se
a chave
ainda não foi retirada e será definido como um
neste caso aqui quando
a noiva clicou, mas também temos que
considerar isso se estiver aqui Então, precisamos disso se tocarmos no ponteiro do mouse
e na distância dois, não especificamente
tocarmos Acho que isso não é necessário
porque a distância até Avery é essa
condição importante que precisamos aqui Então, vamos duplicar esse clique com
o botão direito do mouse nessa
distância até Avery e colocamos aqui primeiro E precisamos de um controle aqui se então, se a distância até Avery, quando o sprite é clicado,
quando a tecla é clicada, for menor que 50,
podemos pegá-la e definir Ele pegou dois ou um
e, no início, precisamos configurá-lo, é claro, para o
valor padrão de zero aqui. Ok, vamos tentar isso. Aqui temos a exibição do valor
da variável aqui. A chave pegou zero no
início, está correto. E precisamos tentar clicar
na tecla neste momento. Isso não é possível. Tudo
bem. Isso é o que nós queremos. E agora podemos ver que é uma chave, e agora devemos ser capazes pegá-la e ela está funcionando aqui. Então, novamente, vamos
reiniciar o jogo. Tentamos clicar na chave. Não está funcionando e,
assim que uma chave é exibida, podemos clicar nela
e a chave é retirada. A variável será definida como um. O que mais precisamos fazer aqui? Precisamos primeiro dar uma olhada e esconder o sprite para que ele desapareça
aqui da tela Então, vamos tentar isso
aqui. Tudo bem. A chave, é uma chave, e agora eu posso clicar nela, e agora ela sumiu, muito bom. Esta é a parte de coleta
e está funcionando muito bem. Agora precisamos ter
um inventário onde exibamos todos os
itens, por exemplo, essa chave aqui que está
atualmente no inventário, no bolso, por exemplo, ou talvez ela tenha uma mochila,
algo parecido Em seguida, precisamos exibir todos
os itens no momento, temos apenas um
item aqui, a chave, e isso precisa ser
exibido no inventário.
34. 34 Mover a chave para o inventário: Agora queremos colocar nossa chave
retirada no inventário. Então, vamos fazer um inventário. Deveria ser algo como uma mochila ou
algo parecido Mas, na prática, acho que é apenas um retângulo com uma cor de
fundo e pronto Vamos pintar um novo sprite. Então escolha tinta aqui, e depois fazemos
um retângulo aqui Então, desse jeito, coloque aqui
no meio. Talvez seja um
pouco grande demais. Então, talvez algo assim. Agora não é a cor
certa, eu acho. Vamos mudar isso para
quase branco, eu diria. Então, brilho
um pouco menor do
que isso, tudo bem. Podemos ajustá-lo mais tarde. E também a posição e
o tamanho não estão corretos. Então, vamos colocar o tamanho aqui oito, ver o que parece. E então vamos movê-lo
para baixo aqui, e podemos ver que Avery ou sprite aqui está
um pouco baixo demais. Então, vamos movê-la. Vamos ver o código dela. E quando definimos a posição
inicial aqui, talvez
possamos defini-la de 250 a 50 Vamos ver como isso se parece. Agora, um pouco menos do que isso. Um pouco mais
preciso de B. Vamos começar de novo. Sim, talvez um
pouco mais parecido com 42, e agora temos a posição
correta, eu acho. Então, vamos controlá-la um pouco. Isso parece bom. E também isso pode ser um
pouco menor, talvez. Então, nós apenas redimensionamos aqui, vamos até a seta aqui e depois
redimensionamos nas bordas aqui, algo assim, ou até menor, talvez
algo assim Eu acho que está tudo bem, então
vamos deixar assim. Por enquanto, esse é
apenas o plano de fundo da nossa mochila,
digamos que precisamos mover a chave, que está aqui para este inventário se o
jogador a pegar Aqui temos o código
quando o jogador
pega a chave agora no
momento em que a escondemos, mas em vez de escondê-la, devemos movê-la
para o novo local dentro da mochila aqui Vamos nos livrar da
pele e, em vez disso, pegamos a chave que está
invisível no momento. Não o
inicializamos para mostrar. Então, por segurança, vamos fazer isso. No início, mostramos nossa tecla pressionada
aqui no programa
e, em seguida, ela fica visível aqui. Vamos parar o jogo
e depois movemos a chave aqui
para o inventário. Talvez aqui seja um bom lugar. E então vamos para o
movimento e vamos para x y, e esta é a posição
atual aqui. Nós apenas arrastamos isso aqui
até quando o sprite clicou. Agora, o que precisa
acontecer é que se o
jogador clicar na tecla, ela se moverá daqui para cá, então estará na mochila E também essa chave escolhida
é definida como dois, um. Podemos usar esse valor
variável aqui, podemos usar na porta se
o jogador bater na porta, então vamos começar de novo. E o problema aqui é que não definimos uma posição
inicial, então é por isso que a
tecla no momento, podemos clicar na tecla
aqui no sprite
e, em seguida, ela pisca Você olha aqui e
pode ver que ela pisca. Portanto, está abaixo do nosso
inventário, à direita. Então, vamos colocar esse sprite
na camada traseira. Então, quando clicar em
Então, em aparência, temos isso de ir para a camada frontal e isso mudará
para a camada traseira aqui Isso estará sob a
chave agora, deveria estar. Vamos ver onde está a chave. Não, ainda não é. Talvez também precisemos, temos
essa camada posterior aqui. Devemos mudar também
para ir para a camada frontal. Isso foi um erro.
Aqui temos a chave, mas ela não está na posição
correta, então precisamos colocá-la de volta neste lugar embaixo da cama.
Vamos movê-lo para lá. Algo parecido
aqui. Isso parece bom. Go two x y deve ser
a posição correta, e essa é a
posição inicial da nossa chave. Vamos experimentá-lo.
Vá até a chave e tente pegá-la. Esse é o problema aqui. Não está na camada
certa aqui, é mostrado aqui. Isso é um problema, mas
podemos resolver isso mais tarde. E também temos um problema aqui porque a porta está trancada, devo tê-la trancado
enquanto estava sonâmbulo, que é
a mesma cor da porta Então isso também é um problema. Bem, agora vamos
clicar no Sprite, e isso pelo menos funciona Então essa chave é movida para esse local aqui
no inventário. Ok, vamos corrigir esse problema
de camada primeiro. Então, aqui, é claro, precisamos voltar para trás
, porque temos que ter certeza de que
a chave está por trás do nosso personagem principal aqui. Mas então, se
o movermos para o inventário, precisamos ter
certeza de que ele também vai da camada superior
para a camada frontal. Então, sempre que o movemos para cá, podemos simplesmente ir para a
camada frontal. Então, vamos tentar isso. Então, agora está atrás de Avery. Tudo. Há um
problema de cor aqui, mas vamos clicar nele e o
temos em nosso inventário. Vamos nos livrar
desse problema de cores. Então, obviamente, a
chave tem uma cor, que também é a
cor da porta. Então, precisamos mudar a cor da porta ou
a cor da chave. Então, vamos mudar essa cor
aqui em nosso pano de fundo. Então, podemos ampliar
um pouco aqui. Ou talvez seja mais fácil mudar a cor da
chave, então vamos verificar isso. Sim, é uma cor aqui, tudo da mesma cor, então talvez
possamos selecionar tudo aqui. Selecione tudo no comando A ou Controle A no Windows e
no Mac é o comando A. Então, basta selecionar tudo e podemos escolher um preenchimento
diferente aqui. Talvez seja uma chave verde,
algo assim. Então, o brilho é um pouco
mais escuro, talvez essa duração, um pouco menor e um pouco
diferente na cor, não é muito bonito, mas
espero que resolva o problema Agora não é muito bom aqui. O contraste não é muito bom. Então, vamos torná-lo ainda
mais escuro. Agora está melhor. Temos uma chave verde aqui. Então, vamos tentar isso. Ainda
há uma colisão. Oh, eu o selecionei aqui e movi
acidentalmente
com as teclas do cursor Então, devemos desfazer isso. Vamos mudar o código e
depois reiniciar o jogo. Ok, então não entendemos essa cor ou essa mensagem sobre a porta, então está
tudo bem. Então, vamos clicar na
chave e aqui está. Ok, agora precisamos
ir até a porta, e é claro que ela ainda está trancada porque não
implementamos algo
para abrir a porta. Vamos fazer isso no próximo vídeo.
35. 35 Como desbloquear a porta: Agora que temos a chave em nosso inventário ou que o jogador tem a
chave no inventário, podemos abrir a porta, pelo
menos teoricamente, o jogador poderia abrir a porta, e é isso que
implementamos neste vídeo É bem fácil. Já
temos a variável aqui, defina a chave selecionada como uma, então podemos apenas testar isso. E para isso, precisamos
ir até o jogador. E aqui temos a parte colorida
tocante, e caso
o jogador toque na cor da porta, diz
Avery, a porta está trancada Eu preciso e assim por diante. E aqui está o que
precisamos mudar. Portanto, precisamos verificar ou
inserir um cheque aqui. Então, vamos controlar. E então isso se, e
temos que verificar a igualdade
da variável, é claro. Ou é melhor considerar não se
o n, mas se então else, if then else e
essa verificação de igualdade. Se for zero, então
precisamos da variável,
se a chave pega for igual a zero, então podemos dizer que a
porta está trancada Mas se a chave escolhida não for zero, mas uma, podemos deixar o
jogador falar outra coisa. Diga olá por 2 segundos
ou talvez seja 3 segundos, e nós a deixaremos dizer. Como tenho a chave agora, posso abrir a porta. Agora eu posso destrancar a porta
e finalmente sair do meu quarto. OK. Os segundos
devem ser suficientes. E agora colocamos isso de
volta nessa cor, embora tocante, essa cor marrom da
porta aqui. Vamos tentar isso. Primeiro pegamos a chave, ou vamos tentar primeiro não ter
a chave e depois tocar na
porta, com as portas trancadas. Tudo bem. Isso é bom. Agora temos que
pegar a chave aqui. Aproxime-se um pouco mais. Agora podemos pegar a chave, e então devemos ser
capazes de abrir a porta. Como tenho a chave agora, posso destrancá-la e
finalmente sair da sala, ou posso destrancá-la. Isso é melhor. O que vimos é que Avery deveria
parar de andar É por isso que precisamos
trocar o traje Avery B e o
traje de pé para duplicar, e então também fazemos isso antes de dizer esta
frase aqui Vamos ver se isso funciona.
Vamos pegar a chave. Agora ela ainda está andando. O problema é que isso
aqui faz com que
o programa fique preso ou o script aqui
fique preso por 3 segundos. Então essa animação
aqui ainda está progredindo, então é por isso que isso não funciona Mas o que podemos fazer é definir que podemos nos livrar disso aqui, e podemos definir a
variável walking para zero, definir Here set walking 20, então essa animação aqui neste código aqui não
deve progredir. Vamos tentar isso. Primeiro
pegando a chave. Isso é quase o suficiente. Agora eu tenho a chave e Avery está parada e
dizendo a frase Isso é bom. Mas é claro que também precisamos sair da
sala agora e ir para a próxima sala, como
faremos no próximo vídeo.
36. 36 O menu de ação: Antes
de trocarmos os quartos e Avery sair da sala e
ir para a próxima sala Vamos melhorar um pouco nosso
inventário para que você possa clicar em
qualquer item do
inventário no momento, é apenas a chave e, em seguida,
obter um menu com comandos que você pode ou com ações que você pode usar nesse item específico. Então, neste caso, é a nossa chave. Para isso, estamos criando
um novo sprite aqui. Primeiro, renomeamos esse sprite aqui porque é
apenas um Sprite frio, vamos chamá-lo de
n tree assim Então, outra coisa,
precisamos corrigir. Vamos começar um jogo novamente. Basta ir até a chave, e agora o que você vê aqui, se eu clicar na tecla, você vê um piscar aqui, e este é o balão de pensamento O problema é
que o balão de pensamento é visível aqui quando a chave é
movida para o inventário Precisamos esconder o
balão de pensamento se movermos a chave. Vamos fazer isso se
tocarmos no ponteiro do mouse. Pense que é uma chave e
então não pense nada. Aqui, estamos exibindo o balão de
pensamento; se o p, o ponteiro do mouse estiver
tocando na tecla
e, se o
sprite for clicado, precisamos ocultar Apenas duplique isso, não
pense em nada. Antes de nos mudarmos
para este novo local, não
pensamos em nada e, dessa forma, não deve
mais brilhar. Vamos tentar isso. Pare aqui,
clique na tecla e ela
não piscará mais. Isso é agora, então vamos criar
um novo sprite para nossa ação. Essa ação
será a ação de uso para que possamos usar a chave. E então, se você clicar em usar, a porta deve se abrir e Avery destrancar e Avery poderá
ir para a próxima sala Vamos desenhar um novo sprite aqui e precisamos de algum
tipo de retângulo Acho que vamos colocar
um retângulo aqui. O preenchimento deve ser branco, assim, e podemos deixar
a borda aqui, preta. Tudo bem. Mas é
muito grande, claro. Vamos primeiro escrever o texto aqui. O texto será usado e, claro, precisamos definir o preenchimento aqui como preto para que
possamos ler o texto. Em seguida, movemos isso aqui e selecionamos o
retângulo novamente, tornando-o um pouco
menor aqui, ainda muito grande. Então, talvez algo assim, e o sprite, é claro,
seja muito grande no momento Então, digamos que seja 60%. Isso parece estar certo. Então, vamos movê-la aqui para este lugar para que ela
apareça aqui quando a tecla for
clicada no inventário Vamos ao código. Eu acho que a aparência
aqui é muito boa. Eventos, quando clicados, precisamos ocultá-los primeiro porque não devem ser
exibidos no início Escolha ocultar e mova isso aqui. Vamos tentar isso, e acabou. Isso é bom. Quando ele
deve ser exibido? Ele deve ser exibido quando
a chave é clicada, mas não quando a chave
é clicada aqui, mas se a chave estiver
no Vamos até a chave. Aqui temos quando
esse sprite clicou, e aqui precisamos dizer a esse
novo sprite que se mostre E já usamos
algo parecido, como mandar outro
sprite fazer alguma coisa E isso podemos fazer com a
transmissão de mensagens. Aqui temos a
mensagem de transmissão um, e precisamos colocá-la aqui e não vamos
chamá-la de mensagem um, mas vamos chamá-la de
ações de exibição e dessa forma. Também pode ser usado
por um segundo botão, um segundo sprite, que
executará uma ação Neste caso, só temos um, e vamos renomeá-lo aqui
para usar assim Essa chave precisa fazer com que o
sprite aqui se mostre, então transmitimos a mensagem e vamos
usar o sprite E aqui precisamos
receber essa mensagem. Quando eu recebo ações de exibição, exibo Então, desta forma, com
o clique na tecla, ela será exibida. Vamos tentar isso
e está funcionando. Então, sempre que eu clico
aqui na tecla, ela
é exibida aqui. Claro, isso não está correto. Ela não deve ser exibida se a chave não estiver no inventário. Então é isso que precisamos
implementar agora. E isso é um simples “se”. Então, vamos às variáveis
aqui, chave escolhida. Essa é a variável
que precisamos verificar, então vá para operadores. Se a chave captada for igual a um, e agora precisamos de um controle
if se antes e aqui se k
captado for igual a um, então podemos fazer Às vezes, não é tão fácil colocar o if around blocks aqui. Eu simplesmente faço assim, e então eu movo o segundo
if aqui abaixo deste if. Certifique-se de
tê-lo assim,
não aninhado
, pois ele também
só seria executado ou verificado aqui se a chave escolhida
fosse igual a um,
e isso, obviamente, não está Você precisa colocá-lo
abaixo deste primeiro se. Certifique-se de fazer isso assim. Portanto, se a tecla escolhida for igual a um, podemos transmitir
e, em seguida, os
comandos de uso podem ser exibidos E quando o usuário clica em usar, talvez
possamos simplesmente ocultá-lo Então, vamos olhar, é
claro, e nos esconder,
e então precisamos de um evento que esse sprite
clicou em ocultá-lo Vamos tentar isso. Vamos até a chave para que
possamos pegá-la. Agora que o temos no inventário, clicamos na tecla,
o comando de uso, o
botão de ação de uso é exibido e eu clico no botão e ele
desaparece, não é mais exibido. Isso funciona. Mas agora, é claro, precisamos implementar
algo que você ou o jogador precisem clicar
aqui no botão de uso,
e só então a porta poderá ser destrancada, e somente se Avery estiver
realmente perto da porta,
o jogador poderá
destrancar a porta com uma chave usando esse uso da chave de uso, e então a porta
poderá ser destrancada, mas somente se Avery
estiver Então, vamos implementar isso
no próximo vídeo.
37. 37 Como desbloquear a porta com ação de uso: No momento, a porta
é destrancada assim que a chave é pega e Avery bate na porta ou
toca na porta,
então a porta é destrancada, e queremos mudar isso A chave deve
ser usada na porta. Então, vamos começar o jogo novamente. Vá até a
chave e pegue-a. E nesse caso, você não faz nada, é claro, porque Avery não está
tocando na porta E se ela estiver tocando
na porta agora , ela
será automaticamente destrancada, mas queremos que ela seja destrancada
sempre que a tecla for pressionada quando Avery estiver Então, o que precisamos
fazer para isso? Precisamos acessar nosso sprite de
uso aqui. E sempre que esse
sprite de uso é clicado, nós o escondemos. Tudo bem. Mas também estamos transmitindo
uma nova mensagem. Então aqui, transmita, não, precisamos de uma nova mensagem aqui, e essa nova mensagem
será usada clicada E isso precisa ser,
é claro, recebido pela Avery. Vamos até Avery, e
quando eu recebo,
uso clicou, e é aí
que precisamos
verificar se Avery está
tocando a verificar se Avery está
tocando Então, vamos introduzir uma
nova variável aqui, criar uma variável apenas
para essa noiva, e a chamaremos de porta tocante, e a definiremos sempre que
a porta for tocada Então, neste caso,
estamos configurando-a para uma porta de toque 1, e nesse outro caso, se a porta não for tocada, estamos configurando-a, é
claro, para zero Vamos verificar se isso funciona. Vamos até a porta. Tocar na porta é um, e se
eu me afastar da porta, é zero. Então isso funciona. E agora precisamos verificar aqui se uso clicou quando eu
recebo o uso clicado, isso significa que o
usuário clicou ou o jogador clicou
em usar no Upright, então precisamos verificar se
estamos tocando Então, vamos fazer um “se então”. Não sei se
precisamos do estojo, mas vamos fazer isso com isso. E depois verificamos a igualdade, e agora precisamos da nossa variável. Então, tocar na porta, se
tocar na porta é igual a um, então estamos tocando na porta
e estamos recebendo o uso clicado e estamos E nesse caso, podemos dizer que, como tenho a chave agora, posso desbloqueá-la. Então, vamos passar isso
daqui para isso, se então, e isso deve dizer
esta frase aqui. Mas o problema é que
, para fins de avaliação, estamos dizendo nada
aqui o tempo todo Então, vamos remover isso
temporariamente e começar o jogo
novamente para ter certeza. Clicar em usar
agora não deve fazer nada. Então está tudo bem. Então, agora
precisamos tocar na porta, tocar na porta é uma, e agora clicamos em usar, e isso deve aparecer Esta é a porta que está aberta agora. Isso parece funcionar, muito bom. Vamos reiniciar o jogo e ir até a porta. A porta está trancada é exibida, então são k dois. Vamos embora sem tocar, e agora essa mensagem,
essa bolha aqui permanece Então isso é um problema.
Então, podemos simplesmente colocá-lo de volta aqui, se não
tocarmos no outro caso, estamos apenas apagando
a bolha Vamos ver se isso funciona. Vamos começar de novo,
pegando a chave e depois usando-a
ao tocar na porta E isso está funcionando. E eu também
posso me
afastar da porta. E se reiniciarmos o
jogo e depois formos até a porta, ela
deverá aparecer. Essa porta está trancada, então está funcionando também. Tudo bem, do jeito que está. Mas é claro que precisamos pensar outros itens que
entram no inventário. E isso pressupõe que
a chave esteja selecionada aqui alguma forma para que a
peguemos e, em
seguida, clicemos na chave
e depois clicamos em usar Mas se tivéssemos outro item aqui, digamos que talvez tenhamos
algo como uma maçã, clicássemos na maçã
e depois clicássemos em usar, isso não funcionaria porque tudo pressupõe que esse uso seja clicado na tecla Precisamos generalizar um pouco
aqui. Se tivermos mais de um
item aqui em nosso inventário, precisamos verificar qual
item foi clicado e para
qual item essa ação de
uso se destina Eu, por exemplo,
uma maçã é usada, todo mundo precisa comer
a maçã e não destrancar
a porta, é claro. Isso é o que não está funcionando
nesta situação especial
aqui, como a que temos. A lógica é um
pouco específica demais aqui. Precisamos generalizar
a lógica aqui. Mas primeiro, vamos
para a próxima sala, e lá podemos ter um segundo item que
podemos pegar, e isso pode ser talvez
a cozinha, o quarto ao lado, e lá podemos encontrar uma maçã,
pegá-la e usar a maçã.
38. 38 Bloco de fala personalizado: Então,
falta mais uma coisa aqui nesta tela. Se começarmos um jogo novamente, então vamos para cá,
a porta está trancada. Primeiro temos que pegar a
chave. Tudo está bem. Mas o problema é que
, se pegarmos a chave e a
usarmos, e não tocarmos na
porta, nada acontece É exatamente esse o caso aqui
e, nesse caso, precisamos
dizer outra coisa. Talvez digamos que dobramos isso, e então digamos algo como, eu não posso usar essa chave aqui, e isso pode ser por
2 segundos aqui. Vamos fazer isso, pegar a chave, tentar usá-la sem
tocar na porta E isso não funciona.
Por que isso não funciona. É porque aqui
estamos dizendo isso, mas o problema está aqui
em nosso ciclo eterno, neste caso,
não
estamos tocando em cores Portanto, não toque na
porta e, no caso, estamos dizendo nada aqui É por isso que o balão de fala foi imediatamente apagado.
Esse é o problema aqui. Para resolver isso, quero
refatorar nosso código. Refatorar isso
já é mudar o código, mas não mudar Nesse caso, é
como se tivéssemos uma flecha, temos um bug, por assim dizer, mas não estamos resolvendo isso
nessa estrutura aqui, mas primeiro fazemos uma refatoração e depois podemos resolver
com essa refatoração, podemos Vamos fazer isso. A ideia é
ter um bloco personalizado aqui. Já fizemos
isso, criamos um blog e chamamos esse bloco de falar. Também podemos fazer assim, falar em letras minúsculas, e o que também podemos
fazer é adicionar entradas aqui Assim, podemos adicionar um
número ou entrada de texto. Podemos adicionar uma entrada de bleen
ou adicionar um rótulo. Então, vamos nos concentrar neste
primeiro, adicionar uma entrada. A primeira entrada
será a mensagem real. Então, chamamos isso de mensagem, e precisamos de uma segunda
entrada para esse bloco, que é chamada de duração, e essa é a duração do balão de fala que
os balões de
fala exibiram Portanto, temos dois parâmetros aqui. Então, a primeira é a mensagem
que deve ser falada e a segunda é a duração. Então, vamos clicar em, e agora
temos nosso bloco personalizado aqui. Então, temos essa definição. Então,
vamos movê-la até aqui. Portanto, temos
espaço suficiente para implementá-lo. Como implementamos isso?
Podemos usar nossos parâmetros aqui. Temos mensagem e duração, e podemos usá-las
como uma variável. Podemos arrastar isso
aqui e colocá-lo em algum lugar onde também sejam permitidas
variáveis. Vamos primeiro falar aqui. Também é assim que se chama, e vamos
dar uma olhada e ouvir isso, diga olá aqui. Mas não queremos
dizer olá aqui, mas queremos dizer uma mensagem. Tudo o que for fornecido aqui
como primeiro parâmetro, e veremos
como fazer isso,
será definido aqui, será falado. Vamos chamar esse bloco aqui
com esse parâmetro de mensagem. Então, aqui, dizemos que eu não posso
usar esqui aqui por 2 segundos, e estamos tirando isso
do ls e vamos até meus quarteirões, estendendo o alto-falante
aqui para o outro. E agora podemos fornecer
dois parâmetros. A primeira é, como
eu disse, a mensagem, então copiamos isso para aqui, então essa será a mensagem, e agora podemos experimentá-la. Então, pegue a chave. E usamos a chave aqui. Então, talvez você tenha visto isso. Eu posso fazer isso de novo,
e você vê o balão,
o balão de fala, mas ele é
imediatamente apagado Por que isso? É claro?
Por causa disso, diga aqui. Nós podemos nos livrar do calor. Isso significa que nada excluirá
ou apagará o balão de fala Então nos livramos disso
e tentamos de novo, e, e agora isso permanece, é
claro, vai ficar
para sempre, por assim dizer, ou pelo menos até que haja
outra mensagem para falar. Então ela está sempre
falando isso agora. Não posso usar essa chave aqui. Mas é claro que podemos usar a chave aqui e agora
ela está dizendo isso aqui. E agora ela não está
dizendo nada. Aqui, dizemos que, como
tenho a chave agora, posso desbloqueá-la e
finalmente sair do meu quarto, e isso é dito por 3
segundos e após 3 segundos, esse balão de fala é excluído É por isso que está
desaparecendo aqui. De qualquer forma, precisamos
levar em consideração a duração aqui para que também possamos substituí-la pelo
nosso novo bloco de fala. Vamos fazer isso. Para
que isso funcione, temos que esperar Então, esperamos segundos, e esses segundos aqui
são a duração. Então, vamos arrastar a duração aqui, o segundo parâmetro a ser aguardado. E depois de esperarmos o tempo fornecido
aqui nos parâmetros, podemos dizer nada Parece digitar e, em seguida, excluir o
texto aqui, para que fique vazio. Uma mensagem, aguarde a duração que
recebemos do chamador aqui e depois não diga nada Aqui, podemos dizer que
talvez 2 segundos, e para este, podemos arrastar isso
aqui e primeiro
copiamos essa mensagem para o
primeiro parâmetro aqui. E então o segundo
será de 3 segundos aqui. Então, agora podemos nos
livrar desse e substituí-lo pelo
nosso bloco personalizado. Vamos tentar isso.
Vamos pegar a chave, e então podemos usá-la aqui,
e deveríamos, eu não posso
usar essa chave aqui, e então ela está desaparecendo Então é isso aqui.
Mas agora vamos até a porta e aqui
podemos usar a chave. Como tenho a chave agora, posso destrancá-la e
finalmente sair do meu quarto. Tudo bem. Tudo bem. Vamos nos livrar dessa frase aqui e substituí-la
também pelo nosso bloco. Nós arrastamos isso aqui, falamos. O primeiro parâmetro
é, obviamente, nosso texto, e o segundo, talvez
possamos dizer, vamos esperar 3
segundos porque é uma frase longa e
precisamos de 3 segundos para lê-la. O jogador médio pode lê-lo em 3 segundos. Vamos tentar isso. Indo até aqui,
se estivermos tocando na porta, a porta está trancada, e então Avery ainda está
andando, como você pode ver, e eu não consigo mover Avery quando esta mensagem
é exibida aqui Não consigo movê-la. Se eu
entrar mais na porta, também
terei problemas
para sair da porta. Então, essa não é uma boa experiência para o
usuário, eu acho. Qual é
o problema aqui? Não está reagindo às
minhas teclas de seta aqui. Por que isso? Porque
estamos esperando aqui. Se ligarmos para falar, estamos esperando por
essa duração, e se for 3 segundos aqui, então estamos esperando aqui,
estamos bloqueados aqui,
3 segundos, e é por isso que todo
esse loop eterno
aqui não continua,
e não podemos entrar no se a seta esquerda
for pressionada,
se a tecla, a seta direita pressionada. Isso não é possível
porque está preso aqui e precisa aguardar a
duração para continuar aqui. Isso não é legal, mas
há uma maneira de contornar isso. Podemos fazer com que seja assíncrono. O que significa
que não precisamos bloquear aqui, mas ainda assim, após a duração, podemos excluir o balão de fala
aqui. Como fazemos isso? Estamos trabalhando com mensagens de
transmissão. Vamos até os eventos e criar uma nova mensagem de
transmissão. Se dissermos a mensagem,
é claro que ela é exibida e, em seguida, temos que
esperar em outro evento. Aqui, temos uma nova mensagem
e eu a chamo de remover a fala, e isso fará
a espera por nós. Isso fará isso aqui. Mas aqui podemos simplesmente transmitir. Então, podemos reagir a essa
mensagem quando eu receber. Quando recebo essa nova mensagem de
remoção de voz, podemos esperar pela duração e depois não dizer nada.
Vamos tentar isso. Parece estar funcionando, mas não completamente, porque o balão de fala desaparece
imediatamente Então, por que isso? É porque essa duração aqui
não está levando em conta, mas aqui é sempre zero. Porque esse é um parâmetro
aqui nesta função, nesse bloco personalizado, mas não é conhecido aqui quando
eu recebo a fala de remoção. Precisamos de alguma forma
transferir esse valor aqui, esse valor de duração para isso quando eu
receber o manipulador aqui Como fazemos isso com
uma variável, é claro. Vamos criar uma nova variável
e chamá-la de remover
tempo de fala ou, digamos, duração, ou vamos chamá-la de duração da
fala. É mais curto, não para
todos os sprites, porque
não precisamos disso para
os outros sprites apenas para esse sprite, e então temos essa
nova E, claro,
precisamos configurá-lo aqui. Então, quando entendemos a duração da
fala, podemos simplesmente configurá-la aqui,
definir a duração da fala em duas
durações para o segundo parâmetro aqui. E agora podemos usá-lo também aqui. Portanto, nossa
variável de duração da fala precisa estar aqui, e podemos nos livrar disso. E após esses segundos de
duração da fala, estamos excluindo esse
balão de fala aqui. Vamos tentar isso. Agora ele é excluído
após os 3 segundos, mas não se estivermos tocando, se estivermos tocando, ele
sempre será falado novamente, então é por isso que
não está desaparecendo Mas eu acho que está tudo bem. Então, se não estivermos
tocando na porta
, ela desaparecerá
após 3 segundos E o que é bom aqui é que ainda
podemos controlar
o personagem
mesmo que o balão de fala seja
exibido. Isso é muito. Nós sempre temos o controle aqui. E ainda podemos mover Avery, mesmo se exibirmos
o balão de fala E temos o controle
aqui da duração, por
quanto tempo ela será exibida. Então, isso é muito bom, e temos esse bloco personalizado de fala aqui que podemos usar
em todos esses lugares. E se quisermos
mudar alguma coisa, a funcionalidade, se
quisermos melhorar isso, podemos simplesmente alterar
esse bloco personalizado aqui, e então isso será
alterado para todos os chamadores Então, aqui estamos usando isso. Vamos ver se temos
outra palavra a dizer aqui. Não, não temos, então tudo bem, então substituímos todas
as ocorrências de digamos, por nosso novo bloco personalizado
aqui. Isso é muito bom. Definimos um bloco personalizado
com dois parâmetros aqui, mensagem e duração, e ambos os
parâmetros são usados aqui. A primeira coisa que fazemos aqui é definir essa variável local para a duração fornecida aqui. Então estamos dizendo a mensagem que também foi fornecida aqui, e aqui estamos fazendo
essa transmissão, e estamos fazendo essa
transmissão porque aqui, isso não está mais bloqueando nossa função aqui,
nosso bloqueio aqui. Portanto, isso é totalmente
sem bloqueio aqui. É só fazer uma transmissão e também há
outro comando aqui. Transmita e espere,
e isso bloquearia. Então, podemos experimentá-lo aqui. Então, estamos movendo isso aqui
e, em seguida, removemos a fala. Se fizermos assim,
remova a fala e espere, você verá que agora
ela ainda está bloqueando. Então essa não é a maneira
correta de fazer isso. Mas aqui estamos bloqueando
nosso loop eterno e
não podemos lidar com todos os comandos
principais aqui. É por isso que não é
a solução certa aqui, então precisamos dessa transmissão sem
esperar. Porque não está
esperando aqui que esse receptor termine. apenas continuando
esse ciclo eterno aqui, e ainda podemos controlar Avery Esse foi o nosso novo
bloco personalizado com parâmetros, e essa é uma maneira muito
boa de tornar o código mais fácil de manter
e melhor estruturado, e você tem menos esforço
para fazer alterações aqui Dessa forma, é uma boa
prática de programação
ter uma funcionalidade usada em vários lugares em uma função
ou, nesse caso,
é um blog personalizado. Você pode fornecer parâmetros a esse
bloco personalizado aqui
e, dessa forma, podemos fazer cada fala e, ao mesmo tempo, controlá-la.
39. 39 Mude a sala: Vamos mudar os quartos. E para isso,
precisamos, é claro, um novo cenário, então
vamos ao palco E aqui temos os cenários. Só temos um no
momento, quarto dois. E agora estamos
fazendo o upload de outro. Eu gerei uma
imagem de cozinha ou cozinha com a ajuda da IA com o
co-piloto, respectivamente D três. Aqui está,
escolha um pano de fundo
e, em seguida, faça o upload do pano de fundo Escolha aqui uma imagem
do seu disco rígido. Eu fiz este
com a ajuda da IA e podemos usá-lo
neste jogo. Aqui está. Preciso
redimensioná-lo um pouco. Não tem o tamanho correto. Controle A ou comando A, e então
selecionamos a imagem, e então podemos
esticá-la um
pouco e também movê-la para cá, onde, por exemplo,
a cadeira e a mesa não estão visíveis, não estão mais visíveis aqui, ou talvez apenas essa
parte da cadeira, e então podemos
esticá-la um pouco. Eu acho que isso é aceitável. Mas é claro que você pode
gerar sua própria imagem ou pintar sua própria imagem de uma cozinha ou de onde
quiser. Eu o criei com a
ajuda da IA. Você também pode. Mas você também pode, como eu disse, pintá-lo sozinho ou baixá-lo de uma fonte
diferente e carregá-lo aqui como aquele pano de fundo de
upload e depois escolhê-lo no seletor de
arquivos Este foi o localizador porque
eu estou em um MC aqui no Windows, você tem o Windows Explorer Para que você possa
fazer upload de imagens aqui. Pode ser um JPAC ou PNG
ou também pode ser um SVG. Então, agora temos o
pano de fundo aqui como um segundo. Então, o primeiro será esse. E, claro, no
início do jogo, precisamos configurá-lo
para o primeiro. Então, vamos entrar no
código do estágio aqui. Assim, você pode mudar de
cenários para código. E aqui também podemos ter
esse evento quando clicar em Go, e aqui mudamos para o primeiro pano de fundo,
trocamos o segundo plano de fundo Cozinha agora, quarto dois, então está correto, então sempre
voltamos para nosso primeiro quarto aqui. E, claro, se
resolvemos o quebra-cabeça
da primeira sala, precisamos mudar os
cenários aqui Então, vamos até Avery, e esse é o caso em que
o quebra-cabeça está resolvido, já que eu tenho a chave
agora, posso desbloqueá-la e finalmente sair do meu quarto E depois disso, Avery pode mudar de quarto
e ir para a cozinha E isso é muito fácil.
Mude o pano de fundo para a cozinha E dessa forma, temos a
troca da sala. Então, vamos tentar isso.
Primeiro resolva o quebra-cabeça. Clique na chave. Use-o. É muito
cedo porque não estamos na porta ou não na
frente da porta, e agora devemos usar a chave e depois ir para a segunda
sala, que é a cozinha. Aqui podemos mover Avery como
antes, e ela pode explorar
a cozinha aqui Então isso não é problema. Mas é claro que
precisamos de um objeto aqui, e precisamos de outro quebra-cabeça aqui, é
claro, para ser resolvido. Para sair de casa, talvez ela devesse ir para a escola
e sair de casa. Ela deve encontrar
algo para comer, levar
para a escola, talvez uma maçã, ou talvez queira levar sua mochila
escolar com ela. Então é isso que
precisamos criar aqui. Então, primeiro, precisávamos
mudar o pano de fundo, e isso é feito com muita
facilidade com esse bloco, mudar o pano de fundo para a cozinha Então, também podemos ir para
o próximo cenário. Isso também é o que poderíamos fazer. Mas acho que
aqui é mais fácil fazer assim. Então, para ir para um cenário específico porque você pode querer
voltar para a outra sala, e então precisamos ir
para uma sala específica Então, vamos nos livrar disso. E basta mudar o
pano de fundo para a cozinha. Mas aqui talvez tenhamos que
fazer outra coisa. E também, se
quisermos sair desta sala, temos que fazer outra coisa. E é por isso que devemos
definir um novo bloco aqui, que eu chamo de go to Room. E aqui podemos, por exemplo, ter um número ou uma entrada de texto, que será a sala para onde ir. Então, vamos fazer assim e definir ir para a sala
aqui, trocar de pano de fundo Deveríamos fazer isso aqui. E aqui podemos escolher
número ou texto. Troque o pano de fundo dois. Então, isso deve estar aqui
neste caso, cozinha. Portanto, é melhor renomear isso. Então, clique com o botão direito em
definir e adicione-o. Então, aqui chamamos a
primeira sala de parâmetros. Isso é muito melhor.
Então temos essa sala, que é um texto, o nome da sala, e precisamos
chamá-la aqui,
para a sala depois da palestra, e aqui a colocamos na cozinha. Então, vamos tentar se isso funciona. Então, voltamos ao início. Precisamos resolver
o primeiro quebra-cabeça. Vamos até a
porta, use a chave. Estamos aqui e funciona. Isso é bom, então também podemos
fazer outra coisa aqui. Troque o
segundo pano de fundo e, em seguida, o que é fornecido como parâmetro da
sala aqui Por exemplo, poderíamos
colocar alguns objetos aqui. Vamos criar um novo sprite, e desta vez
será essa maçã aqui Vamos colocar a maçã. Nós o tornamos um pouco menor, 60%, talvez. Agora isso é muito
grande, tipo 40, 40%. No código, precisamos
configurá-lo como oculto se você clicar. Então, vamos esconder isso primeiro. E então podemos colocar
a Apple em algum lugar. Vamos colocá-lo
aqui e torná-lo um
pouco menor, talvez 30%. Isso é melhor. Então, vamos reiniciar o jogo e a maçã
desaparecerá. Muito bom. E agora, quando mudamos
para a cozinha, a maçã deve ser
mostrada. Como fazemos isso? Estamos transmitindo. Então, aqui devemos transmitir que mudamos a sala. Vamos aos eventos e
depois transmitimos aqui. quarto foi alterado. Agora, é claro, precisamos saber qual
sala é a sala atual. Estamos definindo uma nova variável e chamamos essa sala atual e essa é uma variável para
todos os sprites, é claro Precisamos definir a sala atual aqui para este parâmetro fornecido, definir a sala atual com duas salas aqui. Agora podemos usar essa sala ou a sala atual para
mostrar a maçã. Eventos, quando
recebo uma mudança de quarto
, verificamos com
um controle
se a variável de quarto atual
está definida como duas cozinhas. O quarto atual é igual a cozinha. Então podemos mostrar a maçã. Vamos tentar isso. Comece o jogo. Pegue a chave, vá até a porta, e agora temos a
maçã aqui. Muito bom. Trocamos os quartos com sucesso. Mostramos a maçã, e esse é o nosso código para
vestiários por enquanto. Isso será expandido, é
claro, mas, por enquanto, podemos mudar
da sala inicial, do quarto para a cozinha.
40. 40 Como mudar objetos de jogo para clones: Agora que temos o
segundo quarto e a maçã, vamos mudar
algumas coisas aqui. No último vídeo, adicionei a maçã como sprite aqui
e aqui neste vídeo Eu removi a Apple novamente. Por quê? todos os objetos do jogo com clones desse sprite Porque
queremos implementar
todos os objetos do jogo com
clones desse sprite
aqui. Qual é a
razão por trás disso? O motivo é que podemos então lidar com todos
os objetos da mesma maneira, e também
podemos usar listas, e como fazemos isso,
mostrarei neste vídeo. Primeiro, temos esse sprite aqui, a chave, e adicionaremos
outra fantasia aqui E o segundo traje
já está aqui. É a maçã. Então, se você
ainda não tem, escolha uma fantasia e
depois escolha a maçã aqui. Então temos duas roupas aqui. A primeira é a chave,
a segunda a maçã. E a ideia é ter
para cada objeto diferente, temos outro traje aqui. OK. Então esse é
o primeiro passo para que tenhamos duas roupas
diferentes aqui. E, claro, no
início do jogo, precisamos escolher a roupa
certa. Então, vamos fazer isso quando
essa noiva é clicada, não
é a função certa aqui Mas ao clicar, quando a bandeira é clicada, precisamos definir a
roupa certa para nosso primeiro objeto Então, vamos mudar o traje para H, e então podemos começar um jogo, e ele será uma chave novamente, e não há
diferença no jogo. Ainda podemos ir até a porta
e usar a chave, e aqui a maçã, é
claro, está faltando. Mas como exibimos
a maçã aqui? É aí que os clones
são úteis, então vamos controlar e criar um clone Esse é o bloco que precisamos, e precisamos criar, é
claro, alguns objetos
aqui, alguns clones. A ideia dos clones é
que você faça uma cópia
do sprite, neste caso do mesmo
sprite meu, então essa será Mas também renomearemos
o sprite aqui. Digamos que seja um objeto de jogo para que seja
mais genérico do que apenas a chave. Ok, então podemos criar um clone dessa chave desse objeto do
jogo aqui, e faremos isso, é claro,
no início do jogo Então, poderíamos simplesmente criar,
digamos, dois clones aqui,
e fazer assim E, claro, também podemos
fazer isso com um loop de repetição. Então repita dez vezes aqui. Então, talvez possamos
repetir duas vezes. E então, apenas um clone de
criação é suficiente porque estamos repetindo
isso duas vezes, então temos dois Como reconhecemos
os clones aqui? Então, quando eu começo, não
vejo nenhuma diferença. A primeira coisa que precisamos fazer é
esconder o sprite original. Então, vamos dar uma olhada
aqui e depois nos esconder. Então, estamos escondendo a chave, neste caso, a primeira fantasia. Então, a chave sumiu.
Estamos criando dois clones. O primeiro clone será a chave. O segundo clone será
a maçã, é claro. O que precisamos agora é, claro, do evento em que eu
começo como um clone Então, este. O que eu faço
quando começo como um clone? Precisamos fazer o mesmo que
quando a bandeira é clicada. Então, movemos esse bloco inteiro aqui para quando eu começar como um clone, e podemos nos livrar
desse aqui Então, agora dois clones são criados, e para cada clone, quando o clone é iniciado,
isso é isso é Vamos ver o que isso
faz com o nosso jogo. Está exibindo a chave
novamente. Isso é bom. Vamos tentar se podemos pegar
a chave. Isso também está funcionando. Mas vemos que aqui, na verdade
, a chave ainda está lá. Esse é o clone
da chave e não a
primeira chave em si. Obviamente, como
o primeiro sprite,
o sprite original aqui, está
oculto e os sprites ocultos
não podem ser clicados, então é claro
que esse é Mas a segunda chave aqui
é o segundo clone, claro, mas o segundo, o segundo objeto
tem que ser o apo Como podemos diferenciar aqui entre o primeiro clone
e o segundo clone .
Isso é muito importante. O que usamos para isso, uma variável, é claro, vamos criar uma variável aqui, e não precisa
ser para todos os sprites, mas apenas para esses sprites Como é apenas para
esse sprite, também
é para os clones Portanto, ele
também está acessível para os clones, e vamos chamá-lo apenas de índice E estamos aumentando o
índice aqui em nosso ciclo de repetição. As variáveis mudam. Então, vamos mudar o índice por um. Obviamente, também definimos o valor
inicial aqui como zero. Então, o primeiro índice será um
e, em seguida, o clone será criado, o primeiro clone e, novamente, índice será alterado por Então, serão dois
e, em seguida, o segundo
clone será criado E para verificar qual valor está
disponível aqui em nosso clone, dizemos a variável aqui Então, vamos dizer olá e, em
seguida, índice variável, e veremos qual
índice é mostrado então. Então, vamos começar o jogo. Então, é claro, nada é mostrado porque fazemos o show depois
do S, então vamos mudar isso. Primeiro temos que mostrá-lo, e então podemos dizer, caso contrário, o balão, o balão de fala, não será visível.
Então, vamos fazer isso. E por que não está funcionando?
Porque estamos pensando aqui. E se você não pensar nada
, o balão de fala também
não estará mais visível. Então, vamos primeiro, nos livrar disso aqui,
e depois vamos ver. Então aqui temos
dez, por que são dez? Porque definimos a variável
errada aqui, então não é a sala atual, mas tem que ser um
índice, é claro. Então, vamos tentar novamente. E agora temos dois, é claro. Não vemos o outro? O primeiro clone precisa dizer um, segundo clone precisa dizer dois, mas é claro que eles estão
no mesmo local, então é por isso que isso não funciona Temos que colocá-los em locais
diferentes para ver se isso realmente funciona. Vá para x e y e y tem que
mudar dependendo do índice. O primeiro clone deve estar
em um local
específico, um local y específico, e o segundo deve estar
em um local diferente Vamos fazer isso com
os operadores aqui e multiplicar pelo índice Então, vamos pegar o índice
aqui. Isso não é multiplicar Vamos multiplicar esse índice, e então podemos
dizer 40, e então vamos para
y 40 vezes o índice Então, primeiro, o sprite
deve estar em 40, segundo deve estar em 80 Então, vamos ver como isso parece. Agora podemos ver que eles
têm índices diferentes. O primeiro tem um,
claro, o segundo tem dois. E a segunda deve
ser uma maçã e não uma chave. Portanto, precisamos trocar de roupa
dependendo do índice. Então, o primeiro objeto, é
claro, tem que
ser o traje principal. A segunda tem que ser
a fantasia de maçã.
Como fazemos isso? Isso é bem fácil.
Só vamos ver os looks e depois a próxima fantasia aqui. Então, nesse ciclo de repetição, vamos mudar para
o próximo traje aqui, e vamos ver como isso funciona. Não funciona porque
trocamos de roupa aqui também. Então, vamos remover isso. Aqui, mudamos para a próxima
roupa e agora ela funciona. Então, o Índice Um é o traje principal. Nas próximas duas está a fantasia de maçã. Dessa forma, podemos dizer
qual clone é qual. A primeira é a chave, a segunda é a maçã, e a primeira está
na primeira sala, a segunda deve
estar na segunda sala, claro, e é isso que
faremos no próximo vídeo.
41. 41 listas de apresentação: Então, como agora temos nossas duas
roupas aqui no início, podemos fazer um pequeno
ajuste aqui para garantir que a primeira seja
sempre a roupa principal. Precisamos trocar de
roupa no início. Portanto, troque a roupa não
por maçã, mas por chave, e talvez devêssemos
fazer isso depois de
escondermos a chave ou o sprite
aqui, o sprite original Então, vamos tentar isso, e isso deve ficar bem. O que precisamos fazer agora
é garantir que os dois
objetos diferentes estejam agora colocados no local correto
na sala correta. Então, a primeira chave tem
que ir aqui novamente, e a segunda precisa
ir para o segundo pano de fundo Vamos mudar para isso
em algum lugar por aqui. Então, primeiro, o primeiro clone deve estar visível
na primeira sala O segundo deve estar visível na segunda sala
desta cozinha aqui. Então é isso que precisamos
alcançar primeiro. E como fazemos isso?
Estamos introduzindo listas. Então, o que são listas de
listas são como variáveis. É por isso que podemos encontrar
listas aqui sobre as variáveis. Aqui criamos
uma variável e, aqui, fazemos uma lista. Então, vamos fazer uma lista. E temos algo
semelhante para criar uma variável. Talvez possamos nomear essa lista como salas de
objetos. Então é aí que armazenamos nossas salas iniciais para os objetos. E
como fazemos isso? Eu vou mostrar mais tarde. Ok, para todos os sprites, não, não precisamos
disso para todos os Sprites Só precisamos dele para
o sprite aqui. Portanto, Sala de objetos significa que,
para cada objeto, precisamos armazenar em
qual sala o objeto
começará. Ok, aqui temos a lista, a exibição da lista. Você pode alternar isso com
esta caixa de seleção aqui. Então, se você não quiser que a
lista apareça no jogo, basta desmarcar essa caixa de seleção O que temos aqui? adicionar itens
manualmente
aqui a essa lista. Então, com essa vantagem aqui. Você pode simplesmente adicionar
quantos itens quiser. E dentro de cada uma
dessas linhas aqui, você pode simplesmente escrever algo como para uma
variável, por exemplo. Então, como este texto
aqui ou como um número. Ok, então temos uma lista de
variáveis, por assim dizer, e essa lista está aqui, aqui, você pode usá-la com essas funções aqui,
com esses blocos. Então, o que você pode fazer com uma lista? Você pode adicionar outra
entrada à lista? Pode excluir uma entrada na lista. Você pode limpar a
lista excluindo tudo e também pode inserir algo em um
local específico dentro da lista, em um índice específico. Então, talvez você possa inseri-lo aqui no final ou em
algum lugar no meio, e é isso que esse
bloco faz aqui. Além disso, o que você pode fazer é
substituir um item por uma entrada aqui na lista em um
local específico em um índice. Além disso, você pode obter
um item específico da lista em um local
específico. Aqui está o índice,
e com isso aqui, você obtém
o item
na posição um aqui neste exemplo, ou digamos dois, e podemos inserir algo aqui e
verificar o valor. Aqui podemos escolher listas
diferentes. No momento, temos
apenas uma lista, então entre aqui na sala de objetos. Essa lista deve
conter, para cada objeto em qual sala esse objeto
deve ser colocado no início. Se você clicar aqui,
poderá ver quais valores estão
dentro da lista neste local no local dois no Índice dois. Clique neste bloco e você pode ver que na posição dois, há essa string aqui. Talvez você também possa fazer isso assim. Esse é o primeiro, esse é o
segundo e esse terceiro. E aqui você pode ver, se você clicar nele,
você tem o segundo. Se você escolher um para o
índice, obterá o primeiro
e, claro, se
escolher três para o índice, obterá o terceiro e assim por diante. Então, o que podemos fazer com isso, podemos armazenar nessa
lista em qual sala cada um dos objetos deve
começar e em qual deve ser colocado. Vamos fazer isso e, para isso, precisamos receber a
mensagem, a sala mudou. Então, vamos aos eventos quando
eu receber uma mudança de quarto. Então, temos que definir
a visibilidade do nosso sprite aqui para ser mais
específico do clone É por isso que
precisamos considerar, é
claro, essa lista aqui. Portanto, precisamos primeiro alterar
as entradas na lista. Então, o primeiro cômodo da
chave será o quarto, o segundo será a cozinha e um terceiro objeto que
não temos no momento. Então, podemos apagar
essas entradas aqui. Ok, temos um quarto para a chave e cozinha
para a maçã, e como obtemos ou como
verificamos o quarto correto? Isso é, claro, um
se estivesse aqui. Então, se não, e verificamos a
igualdade, então isso aqui. E o primeiro operante
será o item da sala de objetos, e aqui, é claro,
precisamos pegar o índice Portanto, o índice será diferente
para a chave e a maçã. Para a chave, será uma. Portanto, o item um da
sala de objetos será o quarto
e, para a Apple,
será o item dois da sala de objetos,
que será a cozinha. E aqui temos, é claro, que verificar a sala atual. E se mudarmos os quartos
, o quarto atual
mudará para a cozinha. Então é isso que
temos que verificar aqui. Vamos abrir um pouco de
espaço aqui para isso. Oh, eu não tenho o se então, mas somente o se então, então vamos ver isso aqui. Vamos trocar isso e
isso que não precisamos mais. Portanto, se o item no índice da sala de objetos desta lista
aqui for igual à sala atual. Então, para o segundo quarto,
essa será a cozinha. E para o primeiro quarto, acho que não definimos o
espaço atual para o primeiro quarto. Então, vamos verificar Avery. E no início de Avery, quando clicamos em go, agora, não
definimos a sala atual Então, o que podemos fazer é
ir para a sala atual. Então vamos para meus
quarteirões, vamos para o quarto e, no início,
vamos para o quarto. Então é aqui que começamos, então devemos ir lá, ir para o quarto, então o quarto atual, será o
quarto no início. E dessa forma,
temos como chave, temos a igualdade aqui. Então, no início,
será o quarto, e depois o segundo quarto,
será a cozinha. E se isso for igual, então precisamos nos mostrar
aqui, mostrar o clone Caso contrário, escondemos o clone. Ok, vamos começar um
jogo e experimentá-lo. E aqui ainda temos dois
objetos. Por que isso? Vamos clicar neste objeto de jogo do
sprite aqui, e vemos que este é o original e também está visível E aqui está a
chave, o primeiro clone. Esse é o segundo clone. Então eu não trabalhei. Quando recebo uma troca de quarto
, essa verificação é feita. índice do item da sala de objetos
é igual à sala atual, e mostramos, caso contrário, ocultamos Por que não está funcionando?
Porque aqui mostramos cada vez que
criamos o clone, vamos nos livrar do programa aqui Vamos tentar novamente. Agora
temos essa chave aqui, e esse é o sprite original E temos a maçã aqui, o que também está errado. Então, vamos verificar novamente se o
item indexa a sala de objetos, e aqui também podemos nos
livrar desse índice de 40 vezes. Não precisamos mais disso. Ambos os objetos estão
no mesmo lugar aqui. Mas tudo bem, porque o primeiro deve estar
na primeira sala, o segundo na segunda
sala, então está tudo bem. Então, vamos resolver o
primeiro problema de que o sprite original
ainda está visível aqui,
o que não é bom Não deveria estar visível
porque a escondemos aqui. Mas o problema é que ele também
recebe essa troca de quarto e depois se mostra. Isso é o que
precisamos evitar aqui Vamos às variáveis
e criar uma nova variável, e eu a chamo de
original,
e é só para esse sprite,
e isso é para que o sprite
original seja
capaz de se identificar Vamos configurá-lo aqui no início. O original está definido como um aqui. E aqui, quando
eu começo como clone, estamos configurando para zero Portanto, cada clone
terá o valor zero, I é original e o original
terá o valor um E agora podemos fazer um se aqui. Então, se, e agora novamente, verificarmos a
qualidade,
consideramos que é original. E nós só verificamos
os clones aqui, então é por isso que
definimos isso como zero Então, se o original é zero, que é sempre o caso, se for um clone,
então podemos fazer isso Caso contrário, não faremos isso. Vamos verificar novamente
e a chave sumiu. Então está tudo bem agora, mas no momento, nada
é exibido aqui. Eu começo como um clone. Então, vamos duplicar
isso por enquanto. E coloque aqui. Então, se essa verificação da
sala for positiva é verdadeira, mostramos o clone,
caso contrário, ocultamos o clone Vamos tentar isso e funcionará. Então aqui temos o clone, o clone da chave, o
original está escondido, porque o escondemos Nesse caso, não será mostrado
aqui porque temos essa
verificação do original. E também, quando eu
comecei um clone, nós também fazíamos isso aqui Então, aqui temos uma
duplicação, é claro É melhor se livrar
dessa duplicação
criando um Aqui, vamos fazer isso. nome do bloco será
a visibilidade definida, e isso definirá
a visibilidade, é
claro, dependendo
dessa condição aqui. Então, só temos que
mover isso aqui para este bloco
personalizado de visibilidade definida aqui. E então chamamos de definir
visibilidade aqui. Nesse caso, se
não for o original, definimos a
visibilidade aqui na mudança de
sala e também
aqui no início, fazendo o mesmo
chamando esse bloco. Então, aqui está a visibilidade definida e agora tentamos novamente. E está funcionando. Vamos
primeiro nos livrar dessa lista aqui. É um pouco grande demais aqui, então vamos esconder isso. Vamos também esconder isso aqui. E pegamos a chave primeiro. Vamos ver se isso
funciona, funciona. Nós vamos até a porta. Use a chave, e aqui também temos a maçã, para que
funcione conforme o esperado agora. Portanto, agora podemos alterar a visibilidade
dependendo dessa lista aqui. Então, vamos mostrar novamente
a lista da sala de objetos e torná-la um
pouco menor aqui. Portanto, temos quarto para o primeiro clone e cozinha
para o segundo clone E essa verificação dinâmica, se quando a sala mudou
, estamos definindo
a visibilidade dos objetos do jogo aqui usando esta lista aqui e
isso funciona conforme o esperado.
42. 42 Como colocar os objetos: Agora que temos a visibilidade
dos objetos correta
, a maçã ficará
visível na segunda sala e a chave estará visível
na primeira sala. Aqui, aqui está a chave. Eu posso pegá-lo e
depois usá-lo na porta. Aqui temos a maçã. Está tudo bem.
Mas, como você pode ver, a maçã não está no local
certo aqui, x e y da maçã não
estão corretos.
Como podemos corrigir isso? Como podemos corrigir isso
com mais listas? Vamos escolher nosso sprite de
objetos do jogo aqui e criaremos mais listas locais Local significa somente para o sprite, então escolha isso, e o
primeiro será o objeto x. Então, um mapeamento do objeto do índice para
a coordenada x
e, é claro, uma segunda
lista para a coordenada y. Então, objete y para essa barra e
agora temos duas listas aqui. Podemos torná-los um
pouco menores. Em cada lista, precisamos, é
claro, de duas entradas
porque temos dois objetos. A primeira entrada será aqui
a coordenada x da nossa chave. Vamos verificar onde isso está. Essa deve ser essa
coordenada aqui, 102 e y é -28 Aqui temos que inserir -28. Para a maçã, temos que verificar. Aqui podemos ir para a
segunda cozinha de fundo. E podemos aqui mover nossa chave. Talvez primeiro
mudemos para maçã aqui para
termos a maçã. I. E coloque-o em algum lugar aqui. Então aqui podemos ver que y
é 11 e X é 127, isso que inserimos aqui, 127, e aqui o y para
a maçã é 11. Então, agora que temos
nossas listas aqui, podemos voltar ao código. Tentamos começar de novo e ver
se está no estado inicial correto ou se você
esqueceu alguma coisa, não, está tudo bem. Aqui temos a coordenada e temos que usar
as coordenadas aqui em nosso conjunto definido de
visibilidade aqui Se o objeto deve
ser mostrado, por exemplo, uma chave ou a maçã
deve ser mostrada, precisamos ir para X e Y. Movimento, ir para x y. Precisamos obter essas coordenadas aqui x e y das
listas que acabamos de fazer Vá para variáveis
, e aqui temos item da sala de objetos
que será x aqui, Objeto x, e não é o item um, mas o índice do item. O índice do item do objeto x
é a coordenada x. A coordenada y é
de co o índice do item, do objeto até y. Novamente, estamos pegando
as coordenadas aqui de nossas duas listas
e, claro, o número da entrada é sempre o mesmo
índice da sala, e temos as duas
listas para x e y. Vamos verificar se isso funciona Começando no jogo. E então pegando a chave,
indo até a porta E está funcionando bem. A Apple está
no local certo aqui, tudo funciona. Agora que temos
isso, também podemos esconder essas duas listas aqui e
também essa lista aqui. Se precisarmos das listas, sempre
podemos mostrá-las novamente e também podemos ocultar isso. Então, se você quiser mostrar uma lista, basta fazer a verificação
aqui na lista
e, se quiser
adicionar outro objeto aqui, talvez seja necessário fazer uma nova entrada em todas
essas listas aqui. No momento, queremos poder pegar
a Apple, eu acho. Então esse é o nosso novo desafio.
43. 43 Lista de inventário: Para pegar a Apple,
precisamos fazer outra lista, e essa lista estará
disponível para todos os Sprites Vamos fazer uma lista
aqui para Sprites, e essa será a lista de objetos Y para A Sprites porque então o objeto Sprite pode adicionar
algo à lista,
e também o Sprite do inventário pode acessar essa Agora temos a
lista de objetos e ela está aqui. O que essa lista conterá? Ele conterá todos os índices dos objetos que
estão no inventário Para pegar um item,
no início, é a chave, precisamos adicionar uma entrada à lista de
objetos aqui. Vamos renomear a lista
aqui para lista de inventário. É claro que essa lista é para os objetos
no inventário. Ok. O primeiro item que
precisa ser retirado é a chave. Podemos ir até o código que está pegando a chave,
e isso é aqui Se a chave escolhida for igual a um, então ela já foi pega,
então temos que ir aqui então temos que ir Se a distância até
Avery estiver abaixo de 50, então ajustamos a tecla
escolhida para um Podemos deixar o
código como está, mas
também precisamos inserir uma nova entrada nessa lista ou adicionar uma nova entrada a
essa lista aqui. Este bloco aqui na lista de inventário
T two é
exatamente para esse propósito. Adicionar coisa à lista de inventário, adicionará uma nova entrada. Você já pode testar isso. Se você clicar aqui, verá que essa coisa foi realmente adicionada
à lista de inventário, mas não queremos fazer isso. Queremos adicionar o índice
desse objeto aqui. Adicione o índice à lista de inventário e podemos testá-lo aqui. E vemos que essa coisa
também está aqui na lista. Então, o que precisamos
fazer é, obviamente, excluir ou
apagar a lista no
início, no início E isso você pode fazer
excluindo toda a lista de inventário. Vamos começar de novo. E você
vê que a lista está vazia agora. E se pegarmos a chave, você verá que o índice aqui
está em nossa lista de empreendimentos. Agora podemos ir para
a segunda sala, e aqui também podemos
pegar a maçã. Mas você vê que não
funciona. E por que isso? Porque a distância aqui
é um pouco aqui. Então, precisamos aumentar isso. Digamos que 80, e
vamos tentar isso. Agora podemos pegá-lo. Então, aqui, a maçã também
está na lista, mas você vê que a chave não
está na lista. E é por isso que precisamos
modificar o código aqui um pouco. Então, aqui temos a
visibilidade definida e, é claro, na segunda sala, a
chave não está visível, mas a chave
ainda deve estar visível se
estiver no inventário. Isso é o que precisamos
verificar. Isso é fácil. Vamos para o controle e precisamos escondê-lo somente se ele não estiver
no inventário. Se antes e agora precisarmos
verificar se a lista de inventário contém alguma coisa, nesse caso, é
claro que, novamente, é o índice. Se a lista de inventário
contiver o índice e, em seguida, ocultar, isso não está correto. Precisamos testar
o oposto. Se não estiver na
lista de inventário, podemos ocultá-lo. O que precisamos é de um não, e este é esse aqui. Arraste isso aqui, não, e isso precisa ir para cá. Caso contrário, se não for o caso de a lista de inventário conter índice, oculte. Vamos experimentá-lo. Comece o jogo
novamente. Pegue a chave. E vá até a porta, use a chave, e agora ainda temos
a chave aqui visível
no inventário e a
Apple também está visível aqui. Mas a Apple está
no mesmo local da chave e isso é um problema, e isso será corrigido
no próximo vídeo.
44. 44 Como colocar objetos no inventário: Precisamos colocar nossos objetos
no inventário aqui embaixo
, nas posições corretas. No momento, eles estão
no mesmo local aqui, e é por isso que não podemos ver a chave aqui ou apenas
partes da chave. Então, eles precisam estar na fila aqui, e nós fazemos isso no
inventário. Então, vamos lá. E o que precisamos fazer aqui é que sempre que algo
é captado, isso precisa ser atualizado, então a colocação e o posicionamento dos objetos
precisam ser atualizados aqui, e fazemos isso Sempre que eu recebo um novo evento, e ele será atualizado para o inventário, o que
estamos fazendo então? Repetimos e repetimos,
está sob controle. Portanto, repita o número dez vezes, mas estamos examinando
essa lista de inventário da lista, então precisamos saber o
tamanho da lista. Para isso, temos um bloco aqui, tamanho da lista de inventário aqui. Isso já está correto. E também precisamos contar
as iterações aqui dentro. Então, precisamos de uma nova variável, mas essa variável pode ser local, então crie uma variável somente
para o local e a chamaremos de índice de
inventário. E estamos configurando 120
e, no início do loop, estamos alterando em um. Então, no inext, agora
podemos contar as iterações
aqui desse loop O que mais precisamos
fazer aqui dentro? Precisamos enviar uma mensagem,
uma transmissão para os objetos para
que os objetos possam se colocar aqui no topo do
sprite do inventário aqui, porque só os objetos
em si podem fazer isso Você não pode colocar um objeto
de fora do sprite. Então, eles precisam receber uma mensagem e depois
colocá-la aqui. Ok, então vamos criar uma nova mensagem, transmitir,
exibir ações, nova mensagem, e
chamamos isso de go to x porque apenas o x
é importante aqui. O y é o mesmo para
sprite aqui para cada clone. Então, apenas o x deve ser diferente, e podemos fazer isso depois de
alterarmos o índice aqui. E então, na chave, podemos receber isso. Então, sempre que eu recebo,
vá para x. Sim, precisamos nos colocar
aqui nesta posição. E qual é essa posição? Com esta mensagem, você não pode fornecer, fornecer nenhum parâmetro. Então, o que devemos fazer aqui é
criar outra variável para todos os sprites e chamar talvez o x
atual para o inventário, x
atual para o inventário Aqui, é claro, antes de
enviarmos uma mensagem, precisamos aumentar isso. Também no
início do loop, precisamos configurá-lo, é claro. Primeiro, definimos dois. Podemos começar do zero e depois ver o que precisamos mudar aqui, ou podemos começar talvez em
-80, algo assim Começando em -80 deve
estar em algum lugar aqui, e então aumentaremos a cada iteração
a coordenada x. Inventário x atual e
, digamos, 40 por 40, use esse x atual
no objeto do jogo. Então, aqui. E, claro, quando pegamos alguma coisa
, precisamos enviar
essa atualização If Então, aqui nós apenas
inserimos a transmissão. Atualize o IP. Vamos primeiro
ver se isso está correto. Vamos começar o jogo novamente. Pegue a chave e
a chave está aqui. Vamos abrir a porta, usar a chave que funciona e depois pegamos a maçã. Agora não estamos perto o suficiente. Agora podemos pegar a
maçã, mas não está funcionando. A corrente x não é
aumentada corretamente, eu acho, porque a
corrente x é zero. Ainda assim, vamos verificar aqui, alterar o x atual em
zero está bem, eu acho, porque o valor atual precisa ser zero porque temos dois itens e -80 mais
40 mais 40 é zero, então o zero está bem Mas o problema é que os dois objetos aqui estão recebendo isso e ambos estão se
ajustando a
esse x aqui no final. Então esse é o problema aqui, então não podemos fazer isso todas as vezes. O que precisamos para que
isso seja resolvido? Precisamos de outra variável. Então, crie outra variável para
todos os sprites, e desta vez, é a corrente no objeto, é o índice da
corrente no objeto, objeto inventário, e precisamos
defini-la aqui como uma variável
global Portanto, defina objeto
Current inf para o índice Então, como obtemos o índice? Nós o obtemos da lista de
inventário, é claro, mas não no item um da lista de
inventário, mas no índice. Então, estamos contando esse índice
inf e definindo esse objeto in atual para o valor neste local aqui, e esse é o índice
do objeto do jogo E aqui precisamos verificar se precisamos ir até lá ou não. Portanto, precisamos de controle se e
aqui verificarmos a igualdade. Se a corrente no objeto for índice, então vamos e, caso contrário, não. Vamos tentar isso. Então isso parece melhor. Aqui temos a chave aqui, a maçã. Não está na
posição correta, é claro. Então eu acho que -80 não estava correto. Acho que precisamos mudar
para -120, talvez. Sim. Parece melhor, mas o y não está correto. Portanto, precisamos verificar
o y correto aqui. Um pouco mais à esquerda
seria bom. Então isso não é necessário. Vá até aqui, mas
o y está correto. Podemos usar esse -160
aqui e colocá-lo aqui. E aqui precisamos
corrigir isso talvez até dez. Vamos verificar isso. Então, pegando a chave, clicando na chave primeira vez, clicando na tecla, não
recebemos nenhuma alteração. E na segunda vez
, não está correto. Então, há algo errado aqui. Vamos verificar nossas variáveis
aqui, nossa lista. A lista de inventário indica dois itens. Está tudo correto. Então, vamos
passar por esse ciclo novamente. Isso parece ser um problema. Estamos definindo esse
x atual como -130, tudo bem, então estamos repetindo isso
enquanto a lista continuar Na primeira vez, esse é apenas um item
na lista Em seguida, estamos definindo o item
atual do objeto dois no índice
da lista de inventário. índice I está no início zero, e isso não está correto porque item zero da
lista de inventário não existe, então
acho que estaria vazio aqui A corrente no objeto está vazia. Isso não funciona,
e então
trocamos próximo por um, e
aqui está o problema. O pedido está errado aqui, então precisamos primeiro alterá-lo. Assim, podemos
definir a corrente no objeto, e então mudamos
o x por 40 aqui, e então fazemos a transmissão. Vamos tentar isso. Agora funciona e a posição
também está bem. Eu diria que esta é quase
a mesma posição de antes de
apresentarmos esse loop aqui. Vamos ver como isso
funciona com a Apple. Use, e agora podemos pegar a maçã e
aqui ela não funciona. É a mesma posição. Vamos ver qual pode
ser o problema aqui. Percorremos o circuito novamente. Estamos definindo o x atual para
essa posição inicial de -130. Em seguida, repetimos isso e alteramos o índice em
um, tudo bem agora, e a corrente no objeto
deve estar boa agora, e então mudamos a
corrente x em 40. E então fazemos a transmissão. Então, na segunda vez
que pegarmos a Apple, esse evento será
novamente enviado e recebido aqui. Em seguida, definimos
novamente a corrente x inf dois -130 E aqui está o problema. Não estamos definindo o
índice como zero novamente. Então isso aqui não está correto. Vamos arrastar isso aqui
e colocá-lo aqui. Então, cada vez que
recebemos a mensagem, temos que redefinir esse índice
de informações para zero, e aqui ele
será alterado para um, e então ele Então, vamos tentar isso de novo. Agora, Apple, e desta vez
funcionou muito bem. Primeiro está a chave e em
segundo lugar, a Apple e a
uma distância muito boa. Tudo bem. E aqui
também podemos coletar mais itens. Se tivéssemos um terceiro item
aqui, ele será exibido aqui. Isso é muito, e podemos
adicionar objetos arbitrários
ao jogo, eles podem ser coletados
e exibidos nesta lista de inventário
45. 45 Como corrigir descrições de objetos: Agora que temos um mecanismo
universal para pegar objetos, também
precisamos de um mecanismo
universal para as descrições
dos objetos Quando começamos o jogo, temos essa descrição da chave. É uma chave, e se eu pegá-la
, posso usá-la aqui
na porta desse jeito. Mas para a Apple, não
temos essa
descrição aqui. Se passarmos o mouse, colocarmos o
ponteiro do mouse aqui sobre a maçã, não
veremos nenhuma descrição Para a descrição,
nós, é claro, ou para ambas as descrições, precisamos agora de outra lista. Vamos às variáveis
e fazer uma lista. Aqui fazemos uma lista, para todos os sprites, não, somente
para esse espírito Porque as
descrições só são necessárias nos
objetos em si. Então, chamamos isso apenas de descrições porque essa é uma descrição
localista, não
precisamos colocar mais
nada aqui Então, a descrição é suficiente, a
descrição do
sprite, é claro De qualquer forma, isso é apenas para
o sprite. E se olharmos aqui, temos a descrição do
cólon do objeto do jogo, então tudo bem Nós adicionamos duas entradas aqui. A primeira é que é uma chave e a segunda, é uma maçã. Claro, você pode colocar outra
coisa aqui, um texto mais descritivo, mas eu quero
ser breve aqui Primeiro, é uma chave para
a chave, é claro, e a segunda é para a maçã, e diferenciamos
essas duas pelo índice aqui Um é um índice, um
é sempre a chave e o índice dois é
sempre a maçã. Ok, então não
precisamos exibir isso. Podemos ocultar isso e
também a lista de inventário, não
precisamos exibir
isso e também os outros e também os outros que podemos esconder para que possamos ver a tela
completa aqui. O que fazemos com a
lista deve ficar claro. Em vez disso, é uma chave, simplesmente
retiramos a descrição da lista
da nova descrição da lista. Então, aqui temos esse
item um de descrição
e, no nosso caso, não
é o item um, mas o índice de descrição do item. E acabamos de substituir
esse texto fixo aqui, é uma chave por este. Vamos verificar se isso
funciona no jogo. É uma chave, ainda está bem. Mas, para ter certeza, precisamos
verificar se está funcionando também para a maçã. E não é. Por que não? Porque temos essa condição aqui de
que a distância até Avery deve ser pelo menos
50 ou deve estar abaixo de 50 Então, podemos aumentar isso aqui e ver se isso
funciona e agora funciona. 50 é muito próximo A centra-se talvez aqui em algum lugar
e 50 é menor do que
isso, é difícil
alcançar essa distância. Definimos
como 80 da mesma forma que aqui e, dessa forma, podemos mostrar que é
uma maçã aqui, mas também podemos ver que,
assim que a
colocamos no inventário, não podemos mais ver as
descrições. Isso é o que
precisamos corrigir também para
que , depois de
colocá-lo no inventário, você ainda possa ver
a descrição que ficará boa e é isso que
faremos no próximo vídeo.
46. 46 Mostrando a descrição no inventário: Ainda temos o problema de que a descrição do objeto não é visível se passarmos o mouse sobre o
objeto no inventário Quando pego a chave aqui, passo o mouse sobre a chave
no inventário Não há nada exibido
e isso deve ser possível. Vamos consertar isso. É bem fácil. Só precisamos reorganizar
essa parte do for evepe aqui no
objeto-chave ou no objeto do jogo Para que isso funcione, temos que
considerar também se a
chave ou o objeto, nesse caso, foi
pego ou não. temos que pensar nada apenas no caso de estarmos
longe do objeto e de o objeto
não estar no inventário. Como fazemos isso? Vamos
separar isso aqui. E vamos inserir
outro desse, se for o caso, assim. Temos dois
blocos, se assim for, aninhados aqui. O primeiro, o externo, conterá
apenas um ponteiro de
mouse tocante Portanto, tudo
dentro só será executado se o
ponteiro do mouse estiver tocando, e isso também é, obviamente, o pré-requisito para a exibição
da descrição Se o ponteiro do mouse não
estiver tocando
, não pensamos em A segunda condição deve ser um pouco
diferente da anterior, tínhamos esse fim aqui e agora precisamos de outra operação
lógica. Este é o bloco ou aqui. Uma dessas duas condições
precisa ser satisfeita. Uma é, obviamente, a
distância até Avery, precisa estar abaixo de 80 Ou o objeto deve
estar no inventário. Se o objeto estiver
no inventário,
a chave foi retirada, que não é o melhor nome
porque não é apenas a chave, deve ser algo
mais geral porque a maçã também
pode estar no inventário, mas podemos
cuidar disso mais tarde. Primeiro, precisamos verificar se a
chave escolhida é igual a um, e é por isso que podemos duplicar isso e colocar
isso aqui Se considerarmos
essa condição aqui, ou a chave
escolhida
é igual a uma,
então o objeto está no inventário ou
a distância até então o objeto está no inventário ou
a Avery está Isso podemos verificar depois de termos
certeza de que o ponteiro do mouse
está tocando o objeto Se o ponteiro do mouse estiver
tocando o objeto, e essa condição
aqui também for verdadeira, podemos pensar que
a descrição, ou seja, a
tecla escolhida é
uma ou a distância
até Avery está Dessa forma, deve
funcionar. Vamos verificar isso. Aqui está funcionando e agora o
temos no inventário. Vamos passar o mouse aqui. É uma chave. Também está funcionando aqui
no inventário. Então, vamos verificar se ele
também está funcionando com a Apple. Não deveria haver diferença. É uma maçã. Tudo bem. E se passarmos o mouse aqui
no inventário, também
é uma maçã. Muito bom. E isso é o que
queríamos alcançar para que em todos os lugares
obtivéssemos essa descrição, exceto se o objeto não
for pego e Avery estiver muito
longe dele Dessa forma, não
fica tão fácil, e Avery precisa se mover para examinar o ambiente aqui para
que o jogador realmente ande por aí para ver todos os objetos disponíveis
aqui nesta tela
47. 47 Como corrigir a lógica do jogo: S. Agora temos que ajustar nossa lógica de jogo
à lista de inventário. No momento, o problema é que podemos resolver o
primeiro ou o jogador pode
resolver o primeiro problema
clicando em usar aqui quando
o sprite é clicado,
o botão de uso é clicado, o botão de uso é clicado, então transmitimos Ue click, e isso é recebido
no sprite Avery Em seguida, é verificado
se a porta está tocando, e aqui é decidido se o jogador pode
ir para a próxima sala, cozinha neste caso, ou responder com esta
frase aqui Eu não posso usar essa chave aqui. Isso é muito específico para a
chave e o primeiro quebra-cabeça, e temos que ajustar isso
à lista de inventário porque não
temos apenas a chave, mas também temos a maçã
na segunda sala, e a maçã, é claro, é
um pouco diferente. Podemos usar a maçã, mas temos que definir o
que isso significa usar a maçã, e não podemos usar a chave para
resolver a segunda sala aqui. Dessa forma, temos que ajustar
a lógica no Avery para que
saibamos qual item foi clicado aqui e qual item deve
ser usado, por exemplo Mas primeiro, precisamos
corrigir uma seta aqui, e isso pode ser encontrado
aqui no objeto do jogo. Quando esse sprite clicou. Se estiver no inventário,
se a chave retirada for igual A primeira coisa que talvez precisemos
mudar é que essa chave escolhida
não é o nome certo para essa variável
porque não é apenas a chave, mas também pode ser
a Apple, é claro, ou outro objeto
que adicionaremos posteriormente. Essa variável precisa mudar. Além disso, esse é outro problema. Essa é uma variável global aqui. Passamos para as variáveis
e verificamos isso aqui, podemos ver que
não é uma variável local. É uma variável global
e, dessa forma, não podemos
usá-la dessa forma. Como o pickup precisa ser uma variável local para
cada objeto do jogo, ele precisa ser um valor separado. Do jeito que é usado
aqui, isso não é verdade. Na verdade, precisamos mudar
isso aqui um pouco também porque isso é um se então e também
isso é um se então. Isso significa que se a chave
estiver no inventário, transmitimos
ações de exibição, tudo bem. Mas se Avery também tiver uma distância
menor que 82 a chave, por exemplo, no inventário
, isso também será
executado, e isso está errado Eu te mostro o que quero dizer. Começamos o jogo e
ajustamos isso para, digamos, 120, para que a
distância possa ser maior aqui, e eu estou pegando
a chave primeiro. Agora, se
eu for com Avery até a tecla logo acima da tecla aqui e
clicar na tecla, vemos que há outra entrada na lista de
inventário adicionada Então esse código aqui é executado, e isso está errado porque não
podemos executar esse código se a chave ou o objeto aqui já estiver
no inventário. Então isso significa que precisamos
mudar isso aqui. Para e se for o caso. Vamos arrastar isso até aqui. Se eu pegar igual a um
, transmita as ações de exibição, que podemos deixar como estão, mas precisamos substituir o controle aqui por
um se não Podemos simplesmente arrastar isso
daqui para aqui. Este vem para o
caso de então e isso podemos colocar aqui. Podemos nos livrar de Mas agora perdemos esse evento,
mas isso não é problema. Posso adicionar isso novamente aqui
quando este lado clicar. Se a chave variável
selecionada
for igual a um, exibiremos a
ação, tudo Caso contrário, se o objeto
não estiver na lista de inventário, podemos fazer disso
a verificação de distância
e, se a
verificação de distância for cumprida, podemos adicioná-lo
à lista de inventário. Vamos tentar isso.
Se isso resolver isso, então pegamos a chave aqui. Podemos fazer isso sem que isso seja adicionado outra vez
ao eventualista Portanto, isso não é executado aqui. Sempre só isso é
executado e não esses dois. Então, antes o problema era que isso e aquilo fossem executados. Agora, só um desses. Ok. Corrigimos isso, e podemos recuar essa distância aqui para
algo menor, então 80, eu acho que estava tudo bem, e 120 foi só para mostrar aqui que
isso era uma flecha aqui. Isso está corrigido. Agora,
o que precisamos fazer é apenas nossa lógica de jogo, como eu já disse,
isso precisa mudar. Isso precisa ser
uma variável local. Caso contrário, os diferentes objetos do
jogo serão todos
recolhidos se um deles for pego. No momento, essa
é uma variável global e precisamos substituí-la por uma variável local. Então, vamos arrastar isso até aqui e substituí-lo por uma
variável diferente. Nós fazemos um novo. Desta vez, dizemos que apenas para
esta noiva, isso é importante para que seja uma variável local
e para cada clone, para cada objeto do jogo, esse será um valor
separado aqui Vamos chamá-la de
retirada, não chave retirada, mas retirada, e isso significa que ela está realmente
no inventário. A chave foi retirada,
podemos nos livrar e podemos colocar aqui. Aqui você também tem um objeto de jogo. Essa é uma variável local obtida igual a zero no momento Agora, precisamos substituir
todas as ocorrências da chave
coletada por essa retirada. Aqui, aqui temos um. Agora, aqui não podemos
configurá-lo assim. Precisamos escolher entre
esse menu suspenso selecionado. Em qualquer outro lugar aqui, além disso, isso funciona ou deveria
funcionar, pelo menos, então nenhuma chave foi detectada
aqui neste sprite, mas como era uma variável
global, ela também é verificada
aqui no Avery Aqui, a chave foi retirada. Obviamente, essa não pode ser
a variável local selecionada porque você não pode acessá-la de fora do objeto do
jogo aqui. Isso é algo que precisamos
substituir por outra coisa. E aqui podemos pegar esse bloco. A lista de inventário contém coisas. Essa coisa deve ser, obviamente, a ID da
chave do objeto do jogo, e essa é uma. Se o inventorist contém um, o índice do objeto
chave do jogo, então não precisamos
dessa igualdade aqui Só precisamos disso aqui. Se o eventualis
contiver a chave
, podemos falar que
a porta está trancada Eu devo ter trancado. Não, é diferente.
Não está aqui. Se não contiver uma
, a porta está trancada. Precisamos de um não aqui. Isso está aqui, esse bloco, e arrastamos isso
aqui para o não, e então arrastamos esse
não de volta para o se. Caso contrário, o inventoralis
contém um, um é o índice, por assim dizer, o ID do objeto-chave, então essa frase deve
ser dita por 3 segundos Caso contrário, a caminhada
será definida como zero, apenas uma ocorrência em
que
a chave foi pega. Não tenho certeza se
há algum outro. Acho que deve haver. Vamos verificar o uso. Não, esse não é o caso, e aqui também não é usado. Então, acho que realmente substituímos todas as ocorrências
dessa variável. Então, podemos tentar
apagar essa variável. Então, clique com o botão direito aqui. Quando a chave foi retirada, exclua e não há nenhum aviso, que significa que provavelmente
excluímos todas as ocorrências
da chave retirada Vamos tentar resolver o
primeiro quebra-cabeça novamente. Deveria funcionar. Pegar
a chave funciona, usá-la. Não consigo usar essa
chave aqui está correta. Então vamos até a porta. Use a chave na
porta, isso também funciona. Agora que temos a maçã, podemos pegar a maçã. Vamos tentar usar a Apple, e então Avery diz, eu não posso usar a chave aqui Isso é algo que precisamos
ajustar, é claro. Na primeira etapa,
substituímos essa variável selecionada
pela chave por essa variável
local aqui. Isso foi necessário
para que não
usássemos a
variável global porque
precisamos de valores separados para cada um dos objetos
do jogo aqui para
cada um desses clones. Oh, aqui, podemos nos livrar disso. Essa foi a primeira refatoração
ou a primeira correção da lógica
do jogo Mas é claro que precisamos fazer mais porque se você usar a chave,
o resultado deve ser
diferente do que se você usar a maçã aqui. Obviamente, precisamos definir
qual é o quebra-cabeça aqui. O que o jogador
precisa fazer aqui ou ter aqui para
ir para a próxima sala? Além disso, há um pequeno problema aqui, se começarmos o jogo novamente, deixaremos esta sala aqui. E entramos na próxima sala
aqui pelo mesmo lado, o que não faz nenhum sentido. Então, devemos entrar
na sala aqui, então precisamos mover
Avery daqui para
aqui para que ela entre na cozinha
pelo lado esquerdo E isso será feito
no próximo vídeo.
48. 48 Como colocar Avery no lado correto: Vamos fazer com que Avery entre
no lado correto da
sala ao lado No momento, está
do lado errado. Porque se pegarmos aqui a chave e sairmos da
sala pela porta, acabamos no lado direito, ou pelo menos Avery não está se movendo Então é por isso que ela fica
aqui do lado direito, mas ela precisa ir
para o lado esquerdo. Como podemos mudar isso?
Isso é bem fácil. Aqui temos nossa
definição de ir para a sala, então nosso bloco personalizado vai para a sala, e isso precisa de
outro parâmetro. Clique com o botão direito do mouse nessa definição aqui, escolha e aqui
podemos adicionar uma entrada. Vamos adicionar uma entrada
e chamá-la de lado. E isso será um número
ou um texto, e podemos dizer, digamos que é um texto,
então podemos clicar em, e agora temos
outro parâmetro. O segundo é o lado aqui, e isso podemos usar aqui em
nossa função em nosso bloco. Então, para verificar o lado, temos a esquerda ou a direita,
sem outras possibilidades. Vamos controlar se não,
e temos que verificar se o lado
é o texto à esquerda ou à direita. Precisamente, precisamos apenas
verificar se o lado está à esquerda
e, caso contrário, está à direita. Então, verificamos o lado. Você pode arrastar esse
parâmetro aqui, lado a lado se eu estiver do lado, e então verificamos o texto
deixado aqui, caso
contrário, está à direita ou
algo diferente da esquerda, e então vamos para um local
diferente aqui. Se o local estiver à esquerda, então vamos em movimento
e escolhemos definir x dois, e aqui precisamos verificar a coordenada certa aqui, o valor certo para x, e no outro caso, temos que escolher
um diferente para que, no lado esquerdo, cada um esteja em
algum lugar em menos, eu diria que talvez
realmente menos isso, e no outro caso, então vamos em movimento
e escolhemos definir x dois,
e aqui precisamos verificar a coordenada certa aqui,
o valor certo para x,
e no outro caso,
temos que escolher
um diferente para
que, no lado esquerdo,
cada um esteja em
algum lugar em menos,
eu diria que talvez
realmente menos isso,
e no outro caso,
na direita
caso lateral, podemos deixar assim. Isso precisa ir para algum lugar aqui, acho que estaria tudo bem antes
da transmissão aqui. Se o lado for esquerdo, coloque Avery
à esquerda em -197
e, se não, coloque-a no lado direito em x igual
a Agora precisamos chamá-lo com o parâmetro certo aqui com
o segundo parâmetro direito, e isso é aqui,
vá para a cozinha da sala, e aqui precisamos entrar à esquerda. Para que possamos, no
segundo quarto aqui, a cozinha tem que ser
deixada no lado direito. Podemos então ir para a sala,
qualquer que seja a sala, e então no
lado direito está a saída, e então também no lado esquerdo deve estar a próxima sala, talvez. Mas vamos ver. Aqui
neste bloco, nessa chamada desse bloco, podemos escolher de que lado Avery
deve entrar na sala Vamos tentar se isso funciona. Comece o jogo, pegue a
chave. Nós já sabemos disso. Se eu usar a chave agora, Avery deve ir para a
esquerda, e isso está correto Tudo está funcionando. Também podemos tentar colocar
aqui apenas para testar
o outro caso. Então, deve ser
o mesmo de antes, e Avery, portanto, deve
permanecer mais ou menos na mesma posição x. Sim. Isso também está funcionando. Então, Avery estaria desse
lado, mas, neste caso, ela não está voltada para
a direita ela não está voltada para
a direita e para o lado esquerdo, mas acho que está tudo bem Não precisamos mudar isso. Vamos colocar a esquerda aqui novamente, para que os dois lados estejam funcionando e
Avery esteja no lado direito, que é o lado esquerdo aqui Ok, vamos continuar
no próximo vídeo.
49. 49 Como adicionar a mochila: Para avançar a
lógica do jogo aqui e também para completar
nosso segundo quebra-cabeça. Precisamos adicionar outro objeto,
outro objeto do jogo, que
será usado para resolver
o segundo quebra-cabeça. Para Avery sair
de casa para ir à escola, ela precisa
da maçã, é claro, para comer alguma
coisa na escola, e também precisa de sua
mochila para Precisamos adicionar a
mochila e, para isso, precisamos adicionar uma
nova roupa aqui Vamos ao
objeto do jogo, às fantasias. Temos a chave como primeira, a maçã como segunda e a próxima
será a sacola, mas isso nós mesmos temos que
pintar Então, vamos fazer isso. Eu quero manter as coisas
bem simples aqui. Vamos escolher retângulos aqui, e talvez como preenchimento, possamos definir algo como marrom, talvez assim, e um
pouco mais escuro, algo assim E fazemos nosso primeiro retângulo aqui, algo assim, e então fazemos um
segundo retângulo aqui, e então escolhemos a ferramenta de seleção aqui para
ajustá-la um pouco Isso não foi muito bom. OK. Portanto, o contorno ou a borda são um
pouco grossos demais. Vamos fazer com que sejam dois pixels aqui. Algo parecido com isso.
Sim, isso parece bom. E então talvez algo
para fechar a mochila aqui. Novamente, dois retângulos,
este e este. Precisamos mandar isso para a
parte de trás aqui. Vamos desfazer isso Precisamos
enviar isso para a frente. Vamos primeiro selecionar
esse. Envie para a frente. Agora está tudo bem, e o preenchimento deve ser algo como cinza. Então, digamos que a saturação seja zero, e isso é um
pouco leve demais. Então, vamos torná-lo mais escuro,
algo assim. Também para o outro,
vamos escolher cinza. Além disso, ou vamos usar o seletor de
cores aqui. Então, o conta-gotas aqui,
escolha a mesma cor. Agora podemos
ajustá-lo um pouco. Coloque-o em algum lugar no centro e também
em algum lugar no centro. OK. Acho que
deve ficar tudo bem. Claro, você sempre pode
torná-lo mais bonito,
mas para mim, tudo bem, então todo mundo deveria ver uma maleta ou sacola
aqui, pelo menos Isso é o que deveria ser. Vamos mudar para o código agora. E o que temos que
adicionar aqui para adicionar nosso novo
objeto de jogo, a bolsa Precisamos tornar
nossas listas visíveis. Então, descrição, precisamos de uma nova descrição
para a bolsa Também precisamos da lista da sala de
objetos porque queremos dizer
que na segunda sala, a sala da cozinha, a bolsa estará e deverá estar visível Então, vamos nos livrar dessa tela
captada aqui. E também precisamos do
objeto x e do objeto y. Ok, vamos
primeiro fazer uma nova entrada, adicionar uma nova entrada aqui na sala de objetos
do jogo. Então, a terceira é a mochila, que
também deve estar na cozinha Então, temos que entrar na
cozinha aqui. E o índice do
terceiro objeto
de jogo da bolsa será Também aqui, na
descrição do objeto do jogo nesta lista, precisamos adicionar outra entrada e dizemos que é sua
mochila, e isso é Também aqui, precisamos
colocá-lo em algum lugar da cozinha. Então, vamos adicionar outra
entrada aqui e também aqui. E agora precisamos verificar a posição correta
aqui para a bolsa Ok, então o que
podemos fazer é tornar esse objeto do jogo
aqui, visível à direita. Então, basta
clicar aqui em mostrar este I, e agora o temos visível, e podemos movê-lo
para o local certo. Então, podemos mover isso para cá. Também podemos colocar Avery um
pouco de lado aqui. E vemos que é um
pouco pequeno demais aqui. Então, precisamos voltar ao
traje e reajustá-lo. Mas vamos pegar as
coordenadas aqui. Então temos 219 para x. Então insira isso aqui E para y, temos -70 e inserimos isso aqui no objeto de
jogo y. Eu criei erroneamente
uma quarta entrada Não tem problema, exclua isso. Está bem? Então, agora ampliamos todas as listas
com nosso Satchel, sala de objetos do jogo, descrição do
objeto do jogo, objeto x e objeto y. Ok, agora precisamos verificar se já
estamos criando clones
suficientes aqui, e aqui podemos
repetir aqui É claro que podemos
colocar três aqui, e tudo bem, mas
para sermos mais flexíveis. Então, da próxima vez
que
adicionarmos um objeto, não precisaremos
mudar nada aqui. Também podemos usar o comprimento
de e, em seguida, uma lista, e eu diria o comprimento do espaço do objeto, porque isso é algo que precisamos
adicionar, é claro, aqui. Sempre precisamos adicionar
a entrada aqui na sala de
objetos para fazer com o objeto apareça sempre que o objeto, sempre que
a sala for inserida, então estamos calculando o
tamanho disso. Aqui escolhemos a sala de objetos. E isso será
automaticamente agora três. Portanto, cada lista já
tem três entradas. Portanto, também é possível
usar a descrição do objeto do jogo
ou uma dessas, mas vamos pegar essa lista aqui e o tamanho dessa
lista para criar os clones. Ok, agora três clones
devem ser criados, e podemos desmarcar
todas essas listas aqui para que possamos ver nossa tela de
jogo aqui novamente e começar o jogo E aqui não podemos ver
a sacola, é claro. Precisamos ir para a próxima sala. Então, vamos pegar
a chave e usá-la, e aqui podemos ver que
a maçã está lá, e também a bolsa é
um pouco pequena demais, como eu disse, então precisamos
ampliá-la um Esta é uma bolsa muito pequena, então eu não acho que seja adequada, então vamos
redimensioná-la um Mas vamos ver se podemos
pegá-lo, e está funcionando, e aqui você também pode ver
que o pedido é dinâmico, então podemos pegar a maçã e a maçã estará ao
lado da sacola Se fizermos o
contrário, podemos reiniciar o jogo. E faça isso de novo rapidamente. E aqui também podemos
pegar
primeiro a Apple e depois a mochila Então, aqui você tem a ordem correta em que
pegou os objetos, e isso será dinâmico. Ok, vamos fazer a mochila
um pouco maior. Então vamos às fantasias. O traje da
mochila diminui um pouco e depois selecionamos tudo Então, basta arrastar esse
retângulo aqui e você selecionou todas, todas essas subformas E então podemos
ampliá-lo um pouco assim e colocá-lo
novamente no centro, talvez um pouco
mais. Assim. Vamos testá-lo. Sim, tudo bem. Acho que é grande o suficiente. Talvez um pouco
maior fosse bom. Mas acho que está tudo bem, porque se o tornarmos maior aqui, teremos que
fazer isso aqui também, então será do mesmo tamanho. Caso contrário, teremos que redimensioná-lo quando for retirado, e acho que não vale
a pena o esforço aqui Então, deixe como está. Então esse é o tamanho e a maçã também tem
o tamanho correto. Agora temos o terceiro objeto
e, em teoria, o jogador
pode resolver esse quebra-cabeça. Ele ou ela só precisa
pegar a maçã e a bolsa, e então Avery pode sair da
sala do lado direito aqui Obviamente, precisamos
verificar no inventário se a sacola e
a maçã no inventário, e
então ela pode sair E se não, ela não pode
sair desta cozinha.
50. 50 Como colocar o button corretamente: Neste vídeo, trata-se de
selecionar objetos de itens
na lista de inventário nesta área aqui para que
depois possamos usar esses objetos com a
ajuda desse sprite aqui, com a ajuda do sprite use Como é no momento, se nos livrarmos de todas
essas listas aqui, escondemos todas elas e
pegamos a chave. Na próxima sala,
temos todos os objetos. Agora primeiro a chave,
depois a maçã, depois a bolsa aqui, e tudo está funcionando
com a descrição, mas se clicarmos aqui
na chave, por exemplo, ou se você clicar na maçã, ou se clicar na bolsa,
não há diferença E se eu agora clicar no
Satchel, por exemplo,
e depois usar, então
Avery está dizendo, eu não posso usar a É claro que isso está errado,
porque não sabemos qual objeto aqui é clicado
antes de clicar no uso Além disso, você notou que, se eu clicar na maçã
ou na bolsa, essa noiva usada aqui não
é movida para
este local aqui, mas deveria estar em algum lugar
aqui para pegar a bolsa, ou se eu clicar na maçã, deveria estar em algum lugar aqui
acima da maçã, mas está sempre neste E é isso que
queremos corrigir primeiro. Então, esse botão de ação aqui, esse brite tem que se mover para
o objeto que foi clicado antes ou que foi selecionado aqui no inventário.
Então, vamos fazer isso. Então vamos ao objeto do jogo e
quando essa noiva é clicada, e se ela já estiver
selecionada aqui, fazemos uma transmissão das ações de exibição. E essa
transmissão é recebida aqui Então, quando eu recebo ações de
exibição, esse botão aqui, esse botão de uso, esse
botão de ação acaba de ser exibido. E também precisamos que
algo mais aconteça aqui. Precisamos mover isso ou pelo menos alterar
a coordenada x aqui para que esse botão fique logo acima do item de inventário
que foi selecionado anteriormente Ok, então como fazemos isso? Precisamos de outra
variável para isso. E essa variável contém o índice do objeto
que foi clicado Então, para todos os sprites, isso é necessário aqui. E podemos chamá-lo de
selecionado no objeto, ou
seja, objeto de inventário selecionado. E cada vez que um objeto é
clicado na lista de inventário, nós o configuramos para esse índice Então, vamos até o local em que esse objeto do jogo é clicado
e está na lista de inventário É aqui, onde
fazemos a transmissão. E aqui também precisamos
definir nossa nova variável. Então, defina o objeto If selecionado aqui, e isso precisa ser
definido para o índice. Índice é, lembre-se, Índice é
o ID desse objeto do jogo. Então, para a chave, será uma, para a Apple, serão duas
e, para a destiladora, serão três Então, agora que
definimos essa variável, podemos usá-la aqui
para definir a coordenada x. Definir a coordenada x
é esse bloco, defina x dois, e fazemos
isso antes de mostrá-la Caso contrário, poderemos ver um movimento e não
queremos isso. Antes de mostrá-lo, definimos
a posição x correta. No momento, isso é -75, e o que precisamos fazer é
adicionar espaço adicional ou adicionar
mais espaço x a
essa coordenada aqui para que o botão de ação se mova com um item
selecionado preciso haver um deslocamento e , em seguida, algo é adicionado a isso Vamos até os operadores
e, em seguida, precisamos
adicionar algo. Vamos primeiro de -75. Talvez tenhamos que
corrigir isso mais tarde. Coloque isso aqui, defina
x dois -75 mais, e então, é claro,
precisamos de alguma forma considerar o objeto selecionado Mas não diretamente,
precisamos disso aqui. Número do item
na lista de inventário. Então, vamos colocar isso aqui. número do item significa o
índice do número, que pertence à
coisa na lista de inventário, e a coisa é,
obviamente, índice aqui. E como não temos o índice do
objeto do jogo selecionado,
temos que pegar o objeto selecionado
aqui. E para a chave, essa
será uma, como eu disse, para a Apple duas
e uma velha três, mas isso
dependerá da ordem em que o jogador
pegou os objetos E isso é importante. Portanto, se a Apple, por exemplo, estiver no terceiro lugar
na lista de inventário e a Apple for o
objeto inf
selecionado, o objeto inf selecionado será dois, já que a Apple tem dois
como índice como ID,
e o item número dois será três quando a
maçã estiver no final Então, vamos verificar isso. Então, estamos pegando
o primeiro item aqui. E precisamos
usá-lo, é claro, e está tudo bem aqui porque -75 é a
posição correta para este ano,
mais essa será uma, já que inf
selecionado será
o único objeto na
lista de inventário Então esse número será um, então é -75 mais um, -74 Já podemos ver que aqui selecionado no objeto é um,
então está correto, e vamos aqui pegando, vamos primeiro pegar
a bolsa aqui e depois pegar Então, a lista de inventário
será assim. A primeira entrada é uma, segunda entrada é três e a terceira é duas.
Então, vamos verificar isso. Lista de inventário, podemos
exibir um, três, dois. Então, isso está correto porque a chave tem o
ID, o índice um, a bolsa tem o índice
três ou o ID três e a Apple tem o ID Até agora, tudo bem. Mas é claro que isso não está correto aqui porque isso é apenas
um, dois, três. Isso não é suficiente para colocar o botão de ação de uso
em outro lugar. Podemos tentar, talvez,
vejamos a diferença. Sim, podemos ver a diferença. É apenas um pixel, mas você pode notar que aqui está
um pixel à esquerda, depois um pixel à direita e outro pixel à
direita se eu pegar a maçã. Você pode vê-lo se movendo levemente. Tudo bem, mas precisamos
multiplicar isso aqui por
40 porque 40 é a distância entre os
objetos na lista de inventário Vamos ver os operadores e o
operador de multiplicação aqui. Agora precisamos multiplicar
isso aqui por 40. E depois coloque de volta aqui. É -75 mais 40
vezes e depois uma, duas ou três,
dependendo da posição aqui Vamos tentar isso. Acho que já
veremos a diferença.
Sim, está aqui. Ok. Vamos ver o que acontece
se clicarmos na Apple, a Apple é a
última, e está aqui. E o estado está aqui,
a chave está aqui. Parece funcionar, mas esse
deslocamento aqui não está correto. E isso ocorre porque sempre
multiplicamos com pelo menos
um e nunca com zero, então sempre há -75
mais 40 pelo menos É por isso que precisamos
alterar esse deslocamento aqui,
dois -115, que é -75 -40.
Isso deve funcionar melhor. Devemos ver a diferença
aqui com a chave. Então isso funciona muito bem. Use-o. E agora podemos ir até a
maçã e a bolsa e ver que ela está sempre no centro, de alguma forma centrada sobre o
objeto que foi Aqui está, logo acima
da bolsa, sobre
a maçã e sobre a chave, aqui mesmo Isso funciona, você pode encontrar um pouco de
sintonia para que talvez não esteja aqui, mas um pouco para a esquerda aqui para que esteja sempre
centralizada aqui,
pode movê-la um
pouco, talvez assim E vemos agora que está centrado aqui também sobre a maçã
e a bolsa também Acho que isso é bom o suficiente, e o jogador agora pode
ver para que serve esse uso. Nesse caso, é claro para a chave porque
está logo acima da chave, aqui está para a
maçã e aqui para a bolsa. Isso
deve ficar bem. Mas o problema é que,
se eu usar a bolsa,
Avery ainda diz, eu
não posso usar a Isso é o que precisamos
abordar no próximo vídeo.
51. 51 Como exibir mensagens diferentes para cada uso de objeto: Vimos que essa lógica aqui também se aplica
a outras salas. Se eu clicar em usar na Apple
ou clicar em usar na bolsa, isso também
será falado Não posso usar essa chave aqui. O que fazemos sobre isso? Precisamos de outro cheque aqui. O quebra-cabeça da primeira
sala está resolvido aqui, então devemos verificar a
sala antes de fazer isso. Vamos controlar se for o caso
e colocar isso por aqui. Assim, você vê isso em cinza, como será, e
é assim. Vamos até os operadores e precisamos verificar
o quarto. Igualdade aqui. Agora precisamos da sala de contagem. Se a contagem de quartos for igual a quarto, que é o primeiro quarto
, podemos fazer essas Caso contrário, não faremos nada aqui. Vamos tentar isso e nos
livrar da lista de inventário aqui. Esconder. Pegar a chave ainda
deve funcionar. U e então estamos
na sala ao lado. Agora pegamos a
maçã e a sacola. E aqui, se usarmos a
mochila, nada será exibido. Se usarmos a maçã, nada será exibido, e o
mesmo acontece com a chave. Então, a chave não faz nada. Se eu usá-lo na segunda sala. Se eu usar na
primeira sala, isso funciona, e se eu usar
na segunda sala, nada é feito aqui. Então está tudo bem. Mas é claro que precisamos fazer alguma coisa quando estamos
em uma segunda sala, os jogadores na
segunda sala e a bolsa e
a maçã são usadas Então, pelo menos devemos mostrar alguma coisa ou vamos falar
alguma coisa. Ok, então isso é fácil porque acabamos de verificar
a sala atual. Caso contrário, vamos
primeiro arrastar isso aqui, e podemos clonar
essa condição aqui, então basta
clicar com o botão direito do mouse em Duplicar E coloque aqui. Se a sala atual é cozinha, estamos em uma segunda sala agora, e agora podemos dizer alguma coisa, então duplique isso, por exemplo Obviamente, agora podemos verificar qual objeto está sendo
usado no momento. Mas, por enquanto, só falamos, não
posso usar esse objeto aqui. Não posso usar esse objeto aqui, e depois colocamos isso aqui embaixo do outro. Se a
sala atual for igual a um quarto, assim, mova-a
um pouco. OK. Então, se o quarto atual é o quarto, então temos a velha
lógica para o primeiro quarto, e se o quarto atual é a cozinha, então nós apenas dizemos, eu não posso
usar esse objeto aqui. Podemos ser mais específicos mais tarde, mas por enquanto, vamos tentar. Isso não deve mudar
nada aqui. Mas aqui, depois de
pegarmos os dois objetos, agora
podemos usar e Avery está
dizendo essa frase aqui É a mesma frase para esses
dois objetos, é
claro, ou mesmo para
a chave, é a mesma. Obviamente, agora podemos verificar
o objeto selecionado. Então, isso é viável
selecionado no objeto. Isso é isso aqui. Podemos
fazer outra se estiver aqui. E verifique a igualdade. Eu selecionei o objeto é e
, em seguida, a ideia do objeto. Talvez se for
uma, seja a chave, e podemos dizer algo como eu já usei a chave pronta, por exemplo, coloque isso aqui e possamos
duplicá-la. Guarde isso. Se for dois, então
é a maçã. Podemos dizer algo sobre
a maçã. Mova isso um
pouco. Eu estou melhor. Digamos que é melhor
não comê-lo aqui, mas levá-lo comigo para
nós, algo assim. Novamente, boca direita. Então, para a mochila, esse será o caso em que o objeto de informação
selecionado for três Tenho que levar isso para a
escola, sem mais nem menos. No final das contas, isso
significa que você não pode usar nenhum dos objetos
na segunda sala. Então, para resolver o quebra-cabeça aqui, facilitamos muito. Você só precisa pegá-los
e depois sair
para a direita aqui. E, claro, você pode pensar um quebra-cabeça diferente aqui, onde você tem que usar a maçã,
por exemplo, na sacola, e então você pode deixar
algo assim Podemos estender isso, talvez não. Mas vamos primeiro tentar isso aqui. Portanto, para cada objeto, há uma
mensagem diferente aqui ,
dependendo do objeto selecionado. OK. Então, primeiro, a chave, é
claro, use-a. Tudo bem. A maçã e a bolsa.
Primeiro, use a chave. Eu
já usei a chave e aqui, Apple, é melhor
não comê-la aqui, mas levá-la para a escola. Não é longo o suficiente. Você não pode ler isso, então
vamos fazer 3 segundos aqui. Use isso. É melhor não comer
aqui, mas levar comigo. Tudo bem. E use o Sach Eu tenho que levar isso para a
escola. É isso mesmo. Agora temos que cuidar da
Avery saindo desta sala aqui. No momento, isso não
é possível se ela tentar sair da sala do
lado direito. Não é possível. Então, temos que implementar isso, e temos que verificar se a mochila
e a
maçã estão no inventário, e então Avery pode sair
da sala e sair de
casa para ir à escola
52. 52 Verificar as condições de saída: Precisamos ajustar
as condições
de saída dos dois quartos que temos. Para o primeiro quarto,
já temos um cheque. Isso está aqui, se tocar na cor, então assumimos que Avery
está tocando a porta, e então verificamos
se ela tem a chave,
se ela não tem a chave, então dizemos que a porta Devo tê-lo trancado enquanto estava
sonâmbula e então ela pegou a chave e a usou enquanto estava
na porta, então ela pode sair do quarto Então, a primeira coisa que precisamos
fazer é refatorar um
pouco porque esse é um bloco
bem longo aqui, então precisamos extrair
isso se estiver aqui Então, vamos arrastar isso para fora, se tocar na cor, arrastamos isso aqui e colocamos em
um bloco personalizado Então, fazemos um bloco e
chamamos de verificar a saída do quarto, sem
nenhum parâmetro aqui. Então colocamos isso aqui. E então precisamos de um “se e verificamos
a sala atual. Então, se a
sala atual é igual a quarto, então precisamos da variável da
sala atual aqui E aqui colocamos o quarto. Então podemos ligar para nosso
quarteirão para verificar a saída do quarto. OK. E isso nós colocamos aqui
no loop F ever novamente. Portanto, isso não deve mudar
nada porque acabamos refatorar aqui essa verificação neste bloco
personalizado Ok, então vamos verificar se isso realmente não está mudando nada. E parece que funciona. Além disso, isso
não fará nada aqui se Avery
tentar sair daqui Nada está sendo dito aqui. Isso é o que precisamos
verificar, é claro, se Avery tentar sair daqui Precisamos verificar as condições
para sair desta sala aqui.
Como fazemos isso? Acabamos de verificar a
posição aqui de Avery. Em movimento, temos
essa posição x aqui. Vamos arrastar isso para dentro e
definir outro bloco. Verifique a saída da cozinha. E aqui também podemos
ter se, então, verificarmos se a posição
é maior do que a exposição
maior do que, digamos 200 talvez e então
podemos falar alguma coisa Vamos primeiro dizer ou falar. Usamos nosso
bloco personalizado para falar aqui, pois dessa forma ele
não bloqueará nada. Basta duplicar
isso, colocar aqui, e eu não posso sair sem minha mochila
e algo para comer,
e os segundos Vamos primeiro verificar isso. Precisamos ir para
a segunda sala, é
claro, e agora
direto para a saída. Claro, não está
funcionando. Por que não? Porque não ligamos para ele. Então, vamos duplicar isso aqui. Coloque-o logo abaixo do
outro, se for o quarto atual. E então a
sala atual é igual a cozinha. Então chamamos nosso novo bloco aqui. Então verifique a saída da cozinha. Oh, vejo agora que é uma ordem
diferente aqui, verifique a saída do quarto e
verifique a saída da cozinha. Mas de qualquer forma, vamos
deixar as coisas assim. Portanto, se a sala atual for a cozinha, verificamos a condição
de saída da cozinha, que
é definida aqui. E, no momento, simplesmente
não é possível
sair da sala aqui. Vamos tentar novamente. Desde o início, ok, quem pode ir e agora eu não posso sair sem minha mochila
e algo para comer Sim. Então, isso está correto agora. Mas é claro que aqui temos que
verificar a bolsa
e a maçã Se ambos estiverem no inventário, Avery poderá
sair da cozinha Podemos sair de casa
e depois ir para a escola. Isso é simples. Vamos fazer isso, abrir um pouco de espaço aqui. Dentro disso, se a exposição for
maior que 200, podemos colocar outro if,
mas agora é if else, então temos que verificar
as variáveis Se a lista de inventário contiver, precisamos verificar
duas coisas, é por isso que precisamos
do bloco final aqui. Primeiro, a
lista de inventário contém
e, em seguida, temos dois, que são o índice ou o
ID da Apple, e aqui precisamos novamente que a lista de
inventário contenha três, que é a bolsa Se ambos estiverem no inventário, então podemos dizer
alguma coisa e, caso contrário, dizemos que não posso sair como antes. Vamos duplicar
isso também e aqui. Por enquanto, podemos dizer que está
tudo bem, acho que posso ir para a escola agora, e vamos tentar que isso funcione. Vamos começar de novo.
Usando a chave. Vamos colher a maçã. Pegue a mochila e
agora podemos sair. Eu posso ir agora para a escola. No momento, agora Avery
poderia sair da sala. Poderíamos trocar de quarto aqui, mas acho que está tudo bem por enquanto. Ela diz, eu posso sair agora, e se vocês não pegaram aqui, a maçã e a
sacola, então ela diz, eu não posso sair sem minha
bolsa e Acho
ótimo porque essa é a solução para
nossa segunda sala
e, dessa forma, o jogador pode
resolver o segundo quebra-cabeça, que é bem fácil. Só tem que pegar dois
objetos e depois sair. Mas é claro que você sempre
pode complicar ainda mais
o fato de o jogador combinar
talvez dois itens,
talvez criar outro
item a partir dele, ou colocar a maçã talvez na sacola,
algo assim, ou talvez você tenha que usar
a maçã em
uma faca para cortar e
fatiar a maçã, e então você pode
levá-la Talvez essa seja a solução, mas aqui você tem o
padrão de como fazer isso.
53. 53 Novo jogo Jump 'n Run: Tudo bem, estamos aqui
para começar nosso próximo jogo, e esse próximo jogo
será um jogo de corrida de saltos Então, temos esse gato aqui e ficamos com um gato. Esse gato vai pular. Ele será lançado em plataformas. Ele coletará geleias,
estrelas, qualquer coisa, e esta é a
oportunidade de obter nosso controle de salto e corrida
aqui do zero Até agora, acabamos de tornar nossa nave espacial controlável E também Avery era
controlável à esquerda, à direita. Mas isso é sobre pular, sobre animação, sobre gravidade Então, vamos começar. Primeiro, o que precisamos
é de um piso, um chão. Então, vamos pintar algo aqui. Vamos para o palco
e depois recuamos, e aqui podemos pegar esse retângulo aqui
para formar o chão Então, basta fazer um retângulo,
algo assim. Talvez mudemos a cor. Então, algo assim
e a cor
será marrom, talvez, ou
vamos torná-la verde, um pouco mais escura, para que
possa ser algum tipo de grama Então está tudo bem. Agora temos o fundamento, e também temos um
esboço aqui ou você pode decidir se livrar
do esboço
selecionando este Então, podemos fazer isso, e então você não
tem o esboço Mas, por enquanto, acho que usamos
o preto como contorno. Agora, eu tenho que torná-lo
um pouco maior, talvez assim e um pouco mais largo,
algo assim Aqui temos o chão
e aqui temos o gato. O gato é um pouco grande demais. Diria que, então,
vamos selecionar o gato, e então podemos
alterar o tamanho para 50 ou 50%, o que parece bom. Então, vamos deixar as coisas assim. E aqui podemos dar uma
olhada nas roupas. O primeiro traje é o
gato nesta posição aqui. O segundo é uma espécie
de gato saltador, então é isso que podemos usar
na fase de salto Falando em pular, definiremos nossa primeira
posição inicial aqui do gato, então vamos arrastar o gato talvez para algum lugar aqui
e, a partir daí, o gato cairá no chão, cairá no chão aqui, sempre que clicarmos, sempre que o jogo Então, vamos aos eventos
e, ao iniciar, clique em.
O que fazemos aqui? Claro, precisamos de um loop de
jogo, então uma eternidade. Isso podemos arrastar aqui, e precisamos definir a posição
inicial
do gato para que cada vez que
reiniciarmos o jogo, o gato fique
nessa posição, então arraste para x e y aqui,
e as coordenadas devem
ser as coordenadas atuais. Então, podemos começar, mas nada acontecerá porque acabamos de definir essa posição aqui, podemos arrastar o gato para
longe e depois começar, e ele se
reposicionará e ele se
reposicionará aqui na posição
inicial Então, como fazemos o gato cair de lá para o chão?
Isso é bem fácil. Temos que mudar y
do gato, e não até dez, mas por algo
como talvez cinco, mas dessa forma ele vai subir, então é menos cinco, e o gato vai descer Então, ao mudar aqui, ele cai automaticamente, mas é claro que cai
abaixo do solo aqui. Então é isso que precisamos
evitar, é claro. Mas, por enquanto, o gato
está caindo aqui. Mas não há nenhum sinal de
gravidade ou aceleração aqui. O gato tem uma velocidade constante, o que, obviamente, não é bom, mas primeiro vamos fazer nossa detecção de
colisão funcionar com o solo Então, como podemos verificar
a colisão do gato com o chão
aqui? Isso é bem fácil. Precisamos sentir, e aqui temos
essa cor tocante,
e essa cor precisa ser, é
claro, esse verde que temos Então clique neste conta-gotas aqui e selecione o
verde do chão Então, agora temos a cor
correta. E precisamos de um controle
aqui, se for o caso. Então, se tocarmos em cores,
o que fazemos? No momento, podemos
simplesmente parar o script aqui. Então, isso está interrompendo o jogo
completo do jeito que está. Stop all encerrará imediatamente todos os scripts e não fará mais nada. Então, tudo é interrompido e nenhum script
está mais em execução. Além disso, esse velop
não funcionará mais. Então, isso
impedirá completamente que o gato caia. Espero que. Então, vamos
ver se isso funciona. Então, se o gato estiver
tocando nessa cor, pare o script
aqui, pare o código Vamos ver se isso
funciona, e funciona. E vamos dar uma olhada
mais de perto aqui. Podemos ver que o
pé do gato aqui está dentro da área verde, e é claro que não é isso que queremos, então
temos que consertar isso mais tarde. Mas, por enquanto, temos
o gato caindo. E então ele para sempre
que atinge o chão aqui. Mas é claro que é
um pouco tarde demais, então o pé precisa
estar acima do solo, é
claro, então temos
que pensar em uma solução para isso. Mas, no momento,
a próxima coisa que implementaremos
será a gravidade.
54. 54 Simular a gravidade: Então, o gato
já está caindo, como podemos ver aqui, mas não é realista porque não
temos nada
parecido com a gravidade, que aceleraria
a velocidade aqui. Portanto, essa é apenas uma velocidade uniforme, o que, obviamente,
não é fisicamente correto. Ok. Mas como simulamos a
gravidade? Muito fácil. Nós mudamos y por, neste caso, menos cinco aqui, e isso
é uma mudança constante, e precisamos que essa
mudança constante seja alterada, dinâmica, e isso deve ser ajustado
no for evolut Eu mostro o que quero dizer,
mas antes de
fazermos isso, vamos introduzir uma
variável que
chamamos de velocidade ou melhor chamá-la de velocidade y porque também
queremos uma velocidade
para a direção x. Então, chamamos isso de velocidade y, e somente para esse
orgulho, é claro, porque essa noiva
está fazendo o movimento Ok. Agora temos a velocidade y. Agora a configuramos
no início do
jogo para um determinado valor. Então, vamos configurá-la para
uma, não minha variável, mas para a velocidade y aqui, e podemos apagar ou excluir
essa minha variável aqui Nós não precisamos disso.
E, a propósito, devemos nomear nosso jogo de
pular e correr. Então, chamamos isso de jump around, não é muito criativo,
mas é claro que você pode nomeá-lo de forma diferente, mas vou chamá-lo
assim aqui. Ok. Então, agora, se definimos a velocidade y como um,
precisamos usá-la, é
claro, e a usamos
aqui para
evolut em vez dessa
constante menos cinco Então, vamos arrastar a velocidade y
até a mudança y y, e temos a mudança y y velocidade y. Então, podemos configurá-la para menos
cinco e tentar novamente Então, nos livramos disso aqui também, ocultamos a exibição da velocidade y para que possamos ver
o gato caindo. Agora o gato cai novamente. Sem mudanças, mas agora temos a possibilidade de introduzir uma estimulação gravitacional.
Como fazemos isso? Nós mudamos a velocidade
y, em uma certa quantidade em cada iteração aqui
nos quatro evolutivos Então, no final,
podemos alterar a velocidade y por menos, digamos 0,5 Vamos começar com isso
e ver como isso funciona. Essa é uma gravidade muito
forte aqui. Então, o gato está realmente
caindo rápido. Mas eu acho que está tudo bem. Também
podemos alterar isso para, por exemplo, menos
um e depois testá-lo Então, está começando devagar e depois ficando mais rápido
muito rapidamente. Você pode experimentar um
pouco com as configurações aqui, então mude isso e altere
a velocidade inicial aqui. Mas você pode ver
que isso é mais realista do que ter uma
velocidade uniforme aqui o tempo todo. Uma velocidade constante não é natural. Então isso é uma espécie de simulação para a aceleração aqui, para a gravidade da Terra. E eu acho que isso é um
pouco lento demais. Então, talvez vamos começar com menos dois. Sim, acho que está tudo bem. Talvez devêssemos
começar um pouco mais rápido assim
e depois fazer
isso um pouco
menos. Vamos tentar isso. Agora, isso é muito lento. Vamos
aumentá-lo um pouco mais alto. Isso é muito rápido. Você pode ver que o gato está preso
no chão aqui. Então, talvez estivesse tudo
bem aqui. Sempre podemos ajustá-la mais tarde porque temos
essa variável aqui, então você pode ajustar
esses dois valores aqui. Ou podemos, é claro, também colocar uma variável
para esse valor aqui, que possamos criar uma nova variável
e chamá-la de gravidade. E talvez devesse
ser para todos os sprites, porque a gravidade deve ser
a mesma para todos os sprites, não apenas para esse Então, digamos que para
todos os sprites aqui, podemos definir a
gravidade aqui -0,5 e, em seguida, colocar gravidade aqui
nessa velocidade de mudança y pela gravidade. Vamos tentar. Não deveria ser a diferença. Então, aqui você pode
ver explicitamente de uma forma muito bonita que o gato está afundando no chão porque a
velocidade é muito maior agora, e a
detecção de colisão é lenta, por assim dizer, o gato está
caindo no chão Então, isso é o que abordamos
como o próximo problema, mas não é muito
difícil fazer isso, mas podemos usar outro recurso de
blocos personalizados ao fazer isso. Então, o próximo vídeo será sobre puxar o gato do chão
novamente até a superfície
e, para isso, precisamos de um
novo recurso para blocos
55. 55 Como cavar o gato: Então o gato está caindo. Tudo bem, mas está
preso no chão. Então, o que podemos fazer sobre isso? A resposta é que podemos
desenterrá-lo novamente. E como fazemos
isso com uma repetição? Ou, nesse caso, repita até que então arraste essa repetição
até repetir aqui. E agora precisamos de uma
condição aqui. E para essa condição,
usaremos novamente a
cor tocante Cor tão tocante. Se esse sprite estiver
tocando na cor, ele deve ser da mesma
cor do Então escolha a cor
do chão. Deve ser dessa cor. Caso contrário, não funcionará. E repetimos até tocar na cor Não, repetimos até
não tocar na cor. Isso não está aqui sob operadores, esse verde não, precisamos
usá-lo sem tocar em cores Arraste isso para o não aqui e isso não
precisa ir aqui. Isso, precisamos repetir
até não tocar
mais na cor para que o gatinho
fique realmente fora do chão Algo parecido, talvez. E então podemos pará-lo para que
esse loop não continue aqui. O que fazemos até que o
gato saia do chão? Precisamos movê-lo, é claro, para fora do solo. E isso é mudando
o y, é claro. Precisamos mudar y por um
porque um está para cima, então precisamos mudar y
nesse loop. Contanto
que ele toque na cor,
então, quando não estiver mais tocando
na cor, esse loop sairá e o gato estará na superfície Então essa é a teoria, e agora precisamos
colocá-la em algum lugar aqui. E, claro, precisamos fazer isso
aqui, se tocando em cores Se tocar na cor, então
o gato já está dentro do chão dentro
dessa área verde aqui, e precisamos subir mudando y
por Passo a passo, estamos
subindo novamente. De descer,
cair no chão, subimos novamente até que o gato não toque
mais nessa cor Depois disso, depois que
o laço sair, paramos tudo e o gato
deve estar na superfície, sem tocar mais na cor Vamos tentar e
você verá
que está funcionando. Então,
enfatizo, está lentamente saindo do solo novamente e depois parando
na superfície. Então, dessa forma, isso é
bom porque você pode ver o procedimento
aqui, o que ele está fazendo. Então, o gato está um pixel
por um pixel indo para cima até
chegar ao
ponto em que não está tocando
na cor verde Não mais. Então, isso está funcionando, mas não é muito bom para o jogador
porque está visível. Essa ascensão do gato é
visível na superfície. Então, precisamos fazer
algo sobre isso. E isso é possível com
a ajuda de um bloco personalizado. Então, fazemos um bloco. E nós a chamamos de correção Y. Isso serve para fixar a corneta Y, que é um
pouco baixa demais para estar
na superfície da cor
desse retângulo Mas não clique em K
agora porque precisamos
marcar esta caixa aqui, executar sem tela, atualizar O que isso significa? Nós
podemos ver isso agora. Então marque esta caixa, clique em OK, e então vamos colocar isso aqui, essa repetição até dentro do
nosso bloco de definição aqui. Então defina fix y. Então, vamos reparar a posição
y aqui para o gato, e chamamos isso, é claro, sempre que o gato estiver tocando o chão ou
tocando a cor Vamos tentar isso. E vemos que não vemos mais esse
surgimento do gato. Portanto, isso corrige nosso problema. Mas por quê? Como você pode ver ao
clicar novamente em Editar. Essa é a caixa de seleção que
marcamos executar
sem atualização de tela, e é exatamente isso que
ela deveria significar Portanto, você não pode ver nada do que é feito aqui
dentro desse bloco personalizado. Portanto, tudo o que é feito aqui não é atualizar
a tela Então isso significa que esse
aumento aqui não é visível. E isso é exatamente o que
precisamos para esse procedimento aqui. Além disso, há outra
vantagem nisso,
e a vantagem
é que é muito
mais rápido sem a atualização da tela Então, esse bloco aqui ou esse
código aqui dentro é executado muito mais rápido do
que todo o código que está aqui
nesse loop eterno, por exemplo, porque não
há necessidade atualizar a tela
para desenhar a tela E no zero,
há uma taxa de quadros,
uma taxa de quadros fixa de
30 quadros por segundo, uma atualização de tela é
feita 30 vezes por segundo, e tudo o que você faz aqui
acionará uma atualização de tela, e é por isso que você não pode
atingir uma certa velocidade Portanto, é limitado a esses
quadros por segundo, 30. Mas se você usar um bloco personalizado aqui com essa caixa de seleção aqui, você não está mais limitado. Ainda há um limite aqui
porque você não pode bloquear toda
a CPU do seu computador aqui enquanto faz isso
aqui dentro do loop, mas é muito mais rápido do que
com a atualização da tela Então, podemos ver aqui que o gato está completamente sólido
na superfície do solo, então não há como afundar
e subir novamente. E isso é muito bom
porque dessa forma, um lado, é mais rápido
e, por outro lado, você
não consegue ver nada
na tela que é feito
aqui dentro desse bloco. Muito importante. Então, se você tem algo que precisa ser feito muito rapidamente e com desempenho
mais rápido do que, por exemplo, a atualização normal da tela, então você pode fazer isso aqui dentro um bloco personalizado com
esta caixa de seleção aqui, execute sem a atualização da tela Como eu disse, ainda há um limite para o que pode ser feito em termos de
desempenho, mas aqui, isso é muito mais rápido e você não pode ver os efeitos até que esse bloco termine. Então, depois, é claro, esse bloco tenha terminado,
você poderá ver os efeitos na tela. Mas aqui dentro, por exemplo, se y for alterado por um, essa alteração aqui não será
renderizada na tela, mas continuará aqui nesse loop até que
esse
bloco seja encerrado Ok, agora temos a
queda do gato, e sim,
e o gato está parado em terra
firme sem afundar
na lama ou Então, isso é bom, e agora podemos
realmente implementar os controles para mover
o gato para a esquerda e para a direita, e também, é claro,
para pular
56. 56 O gato salta: Antes de fazermos os controles
aqui para a parte de pular, precisamos trocar de roupa Então, se o gato cair, precisamos colocar esse traje, que já está lá, o primeiro traje inicial, mas precisamos torná-lo explícito Então, quando clicar em go, a roupa certa
deve ser escolhida, então é a fantasia, que é
esse tipo de gato pulando E se o gato estiver realmente
caindo no chão, devemos mudar para uma roupa
diferente aqui Se tocar na cor, então conserte y, e antes disso, podemos mudar o traje
aqui para o primeiro E vamos tentar se isso funciona. E vemos que funciona
assim que o gato cai no chão, ele muda para essa outra
fantasia para a primeira fantasia Ok, então isso está funcionando, e agora precisamos adicionar
controles para o salto, e isso é com a
barra de espaço, eu sugeriria, então temos que colocar
um se aqui, se, e então precisamos verificar se a tecla
de espaço está sendo pressionada Então, isso está aqui sob detecção, e temos essa
tecla de espaço pressionada Já é espaço aqui, mas você também pode pular com uma tecla
diferente, se quiser, então talvez seta para cima, algo parecido, mas estou
usando a tecla de espaço aqui. Então, vamos colocar isso aqui
no formulário evelop. Então, talvez aqui, e
precisemos prolongar isso. Portanto, certifique-se de que todo o
código que já
está lá não esteja posicionado
aqui dentro disso se precisarmos
colocar outra coisa aqui Então, se a tecla de espaço for pressionada, fazemos algo diferente ,
ou depois disso, fazemos o resto aqui que
já fizemos antes. Ok, o que faremos se o
espaço continuar pressionado? Isso é surpreendentemente fácil. Precisamos que uma velocidade seja
mais rápida do que é agora.
No momento , esse é um valor
desconhecido aqui, então podemos exibi-la assim. Então, vamos nos livrar da gravidade. Nós precisamos disso. É uma constante, então não precisamos
mostrar isso. E aqui temos o -16,5. Esse é o valor no momento. Então, se o gato cair, ele atinge essa velocidade e não muda mais. Mas acho que
ainda há um problema. primeiro problema é que
agora o jogo parou, então não podemos mais interagir com o gato ou
com o código aqui. Então, precisamos remover toda
essa parada aqui. Então guarde isso.
O outro problema é que não estamos definindo a
velocidade y para zero. É isso que devemos fazer. Se
você for aqui para corrigir y, podemos fazer isso aqui atrás após
a repetição até mudarmos a velocidade y para zero. Então deve ser zero aqui. Mas ainda está flutuando. E isso é porque estamos
sempre mudando a velocidade aqui. Então mude a velocidade y pela gravidade. Mas não vamos falar sobre
isso no momento. Portanto, há algo que
precisamos fazer aqui se a tecla de espaço for pressionada. Então é isso que precisamos
implementar aqui. Este é um
método muito fácil de saltar. Precisamos apenas definir a velocidade
variável aqui, velocidade y, para um determinado valor. Digamos oito, por exemplo. E o que isso faz é
redefinir a velocidade y para oito. Então, oito é para cima. E isso faz com que y
do gato aumente
para essa altura, e então a gravidade a altere,
então, recue passo a passo, dois diminua novamente. Então, vamos ver como isso funciona. Então o gato está caindo
e se preparando para o espaço, e o gato está pulando Então isso já funciona, e isso é apenas
definindo a velocidade y, dois, oito aqui neste caso. E com esse oito, você pode
dizer o quão alto ele está pulando, então vamos talvez configurá-lo para 16 E então podemos ver que este
é um salto muito alto aqui. É muito alto, então acho que oito é razoável.
Agora, isso é um bom salto. Você sempre pode ajustá-lo mais tarde, claro, e oito é um
bom valor, acho que por enquanto. Então, o que fizemos aqui? Na verdade, acabamos de
introduzir aqui, a troca de
roupas, é claro, o que não é tão importante
para a parte de pular, mas essa é a parte
importante aqui Se o espaço da tecla for pressionado, defina a velocidade y para
oito e pronto. E, claro, a gravidade
cuidará do resto. A velocidade oito aqui está fazendo com que
a captura aumente. Mas, novamente, aqui, a gravidade é sempre
subtraída da velocidade y. Então, a velocidade será
negativa ou zero, e zero, estará no pico
do salto Aqui em algum lugar aqui. Neste
ponto, será zero, e então a velocidade
será novamente negativa, e então o gato
cairá novamente. Sempre que a velocidade y é positiva
, o gato está subindo, e se a velocidade for zero, ele não está fazendo nada, e se a velocidade for
negativa, ele desce. Então, isso não é
mais nada
a fazer para pular ou talvez apenas
mais uma coisa que precisamos fazer Precisamos trocar de roupa
novamente para a segunda. Então olha e depois
troca de roupa. E se o espaço da tecla for pressionado, podemos mudar para
o segundo traje aqui. Então, vamos tentar isso. E
cada vez que pulamos, o gato vai para
a próxima roupa ou essa fantasia de
pular ou caminhar E isso está funcionando bem. Ok, agora
que fizemos isso, precisamos, é claro, controlar o gato no espaço horizontal, indo
para
a esquerda e para a direita. Além disso, se estivermos pulando, também
precisamos controlar
o gato no ar Então é isso que faremos
no próximo vídeo.
57. 57 Mover o gato para a esquerda: Tudo bem, então vamos mover
o gato para a esquerda e para a direita. Isso é o que falta
agora para o controle de gatos. Vamos fazer isso. O que nós precisamos? Precisamos disso se estivermos aqui. Vamos copiar isso, duplicar isso. E você verá que o dobro coloca o bloco inteiro aqui,
o resto do bloco, então vamos nos livrar
dessa parte inferior, e agora
não precisamos da tecla de espaço,
mas da tecla de seta direita. Claro, estamos fazendo outra
coisa aqui, não trocar de roupa e
não definir a velocidade y. Falando em velocidade y,
precisamos de outra coisa aqui. Criamos uma nova velocidade variável x. Isso é o que precisamos
para o movimento x na
direção horizontal aqui. Para todos os sprites, é claro, apenas para o sprite do gato, e podemos usar Primeiro, precisamos
inicializar isso. velocidade x está no início zero porque o gato não
deve se mover no início, e então podemos configurá-la
para outra coisa se a tecla for pressionada para
o movimento para a esquerda ou
para a direita. Para a
tecla de seta direita, precisamos mudar, precisamos definir a velocidade x para
algo como cinco, talvez, e cinco é a direção certa. Dubica isso e eu pressiono a seta para a
esquerda,
depois é menos cinco Menos cinco seria
então para a esquerda, e precisamos, é claro, mudar x também, não apenas y. Então, vamos para o movimento, altere x. Não por dez, mas temos
essa nova variável aqui, velocidade x, e precisamos
configurá-la para velocidade x aqui Mude x pela velocidade x, mude y pela velocidade y. Parece lógico
e é, e agora precisamos
inserir isso aqui no espaço certo
no lugar certo aqui. Então, isso deve estar logo abaixo
do espaço da tecla if pressionado, e isso fica um pouco longo, então talvez tenhamos que
refatorar isso mais tarde Mas, por enquanto, tentamos isso. Se a tecla de espaço for pressionada,
saltaremos, e isso significa que a velocidade y está definida, e se a
tecla de seta direita for pressionada, a velocidade x
será definida como cinco, tecla de seta
esquerda será pressionada, então ajustamos a velocidade
x para menos cinco
e, em seguida, alteramos x pela velocidade x, assim como fizemos para
a direção y. É isso mesmo. Vamos experimentar e podemos ver que podemos controlar o gato com a tecla
do cursor. Agora estou pressionando para a direita, agora estou pressionando para a esquerda. Mas você já vê um problema porque o
gato não está parando. Agora não estou pressionando nenhuma tecla
e o gato ainda está se movendo. Agora ele não está se movendo
porque está na borda direita, mas vamos verificar por que
esse é o caso. Estamos definindo a velocidade x
para cinco ou menos cinco
e, no início,
configurando-a para zero Mas se, para everop, definirmos para um valor diferente de zero, ele não será redefinido para zero.
Isso é o que temos que fazer. Definimos a velocidade x como zero
no final do loop eterno. Dessa forma, ele
percorre o loop e define a velocidade
x25 ou menos cinco,
se alguma tecla for pressionada, para a
esquerda ou para a direita, alterando x pela velocidade x
e, em seguida, configurando-a para zero novamente Se na próxima iteração nenhuma tecla for pressionada, ela permanecerá zero e o gato parará Vamos tentar isso. Funciona, então também podemos parar o gato. Na verdade, é isso.
Nada mais do que isso. Podemos mover o gato para a esquerda, tudo bem, com as teclas de seta esquerda e direita. Mas o problema aqui é que o gato está sempre
voltado para a direita, o que obviamente não é correto. Se pressionar para a esquerda, ele
deve ficar voltado para a esquerda, ou seja, isso também podemos corrigir, mas faremos isso
no próximo vídeo.
58. 58 Como enfrentar a direção certa e corrigir o salto duplo: Neste vídeo,
vamos corrigir duas coisas. O primeiro, eu já
sugeri no último vídeo. O gato não está voltado para
a direção certa. Se eu levar o gato para a direita, tudo bem, mas se eu
andar com ele para a esquerda. Ele deve estar voltado para o lado esquerdo. Mas isso é fácil porque
já tivemos isso com Avery. Avery também precisou virar à esquerda
e à direita. Vamos fazer isso. Nós já sabemos como fazer isso. A primeira coisa que precisamos fazer é definir o estilo de rotação
para a esquerda e para a direita. Este é esse bloco
aqui em movimento. Então, quando você clica. Defina o estilo de rotação para a esquerda.
Essa é a primeira coisa. Então, precisamos de dois,
dependendo da direção, é
claro, dependendo da seta para
a esquerda ou para a direita. Precisamos apontar na direção
certa aqui. Vamos colocar o ponto na
direção de 90 graus aqui. Agora esse é o lugar errado. Não é espaço, mas seta para a direita
e, em seguida, aponte na
direção da seta para a esquerda. Precisamos girar isso
em torno de -90 graus
e, dessa forma, ficaremos bem Vamos testar isso, e está funcionando como já funcionou
na aventura de Avery Isso não é nenhuma surpresa aqui. Então esse é o primeiro desafio e o primeiro problema
que resolvemos agora. Então, o segundo problema que temos que
resolver é o problema do salto,
porque o jogador também pode pular quantas vezes quiser no ar quiser Então isso não é bom. Como corrigir isso é muito fácil. Precisamos lembrar que já
estamos pulando. Se já estamos no ar ou o gato
já está no ar, não
pulamos novamente. Então, precisamos de outra
variável aqui, uma variável local somente para
esse direito, e a chamamos de salto
e precisamos
defini-la , é claro, como zero
no início do salto, e então precisamos configurá-la
para outra coisa quando pulamos Pressione o espaço da
tecla e salte para um. E se atingirmos o chão aqui, colocamos em zero novamente. Aqui, se tocar na cor verde
, nós a configuramos para zero novamente. Vamos tentar isso primeiro.
Aqui temos o salto. Está começando com zero, e esse é um. Se atingirmos o chão,
é zero, então isso funciona. Para evitar que o
jogador possa pular duas vezes, precisamos disso se houver igualdade
de operadores. E agora verificamos nossa variável de salto
recém-criada aqui. Se já é um, não
devemos fazer nada. Se for zero, então podemos pular. Então aqui está. Precisamos
colocar isso aqui, arrastar isso até aqui então. E então arrastamos
isso novamente para a tecla
if pressionada aqui
para a tecla de espaço. Então, se a tecla de espaço for pressionada, verificamos se há salto, então o salto deve ser zero, e então podemos definir o
salto para um, podemos trocar de roupa e podemos definir a velocidade
Y para Então o gato vai pular, caso contrário, o gato não vai pular. Vamos testar isso, e eu
só posso pular uma vez até cair no chão, depois
posso pular novamente. Então isso é bom.
O gato pode pular, mas só tão alto
e não mais alto. OK. Agora temos um bom
controle do nosso gato. Mas, no momento,
temos apenas esse avião aqui, no chão, e isso
não é muito empolgante aqui, e não há nenhum desafio. precisemos pular em
uma nova plataforma, Talvez precisemos pular em
uma nova plataforma, ou precisamos ser
capazes de cair de uma plataforma
para o chão. Portanto, isso não é muito envolvente. Então, precisamos consertar.
59. 59 Como corrigir a detecção de colisão: Tudo bem, então podemos
mover o gato, o gato está caindo, e temos detecção de colisão, como você pode ver aqui, o gato não
está preso no chão Mas há um problema e,
para mostrar esse problema, precisamos mudar um
pouco o cenário aqui para introduzir outro
obstáculo, outra plataforma A primeira coisa que quero fazer é me
livrar do contorno,
porque acho que é melhor ver tudo e raciocinar sobre
a detecção de
colisão,
por exemplo, se não
tivermos um esboço aqui Então clique em Esboço
e selecione este ano, e o esboço desaparecerá E agora fazemos outro
retângulo em algum lugar aqui, talvez seja um
pouco alto demais. O gato deve ser
capaz de pular na plataforma. Então, algo assim, e
para garantir que o gato seja realmente capaz de
pular na plataforma, aumentaremos um pouco a
força de salto aqui. Aqui, definimos a
velocidade y para oito, e eu gostaria
de aumentá-la para, digamos, dez, então vamos tentar
se isso é realmente alto. Sim, está tudo bem,
mas não é alto o suficiente para a plataforma. Então, vamos fazer com que seja 12. E dessa forma,
deve ser fácil para o gato
subir na plataforma. E você pode ver que
a detecção de colisão também
está funcionando aqui, então o gato não está caindo
da plataforma ou
através da plataforma Mas se eu sair da borda aqui, então ela está caindo. Ok, até agora tudo bem. Mas agora vamos ver o problema. Se eu passar por baixo da plataforma
aqui com um gato e depois pular, vemos que o gato é realmente teletransportado
pela plataforma E para explicar isso, isso é bem fácil porque
aqui fazemos essa correção y, estamos sempre fixando o y em uma direção,
e isso é para cima. Então, sempre que o gato
os toca,
a cor de fundo está aqui
, corrigimos
y subindo E, claro, aqui
neste caso, isso está errado. Precisamos ir até aqui. Se o gato estiver pulando de baixo contra a
plataforma, isso está errado. Então, o que precisamos
fazer é corrigir isso aqui. O que poderíamos fazer é decidir se
precisamos aumentar ou
diminuir a correção dessa correção aqui, verificando a velocidade y, se a velocidade y estiver abaixo de zero, então poderíamos fazer a
correção para cima
e, no outro caso, se for maior que zero, poderíamos fazer a correção
na outra direção Mas isso leva a mais
alguns problemas se considerarmos também o movimento
horizontal. Então, por exemplo, o gato
agora pode simplesmente subir as escadas
aqui desse jeito Se você pode ver isso,
eu só preciso
ir até a borda direita
ou a borda esquerda aqui. Então, a borda direita do gato está atingindo a borda esquerda
desta plataforma aqui, e está subindo automaticamente
as escadas, por assim dizer Então, isso também está errado. Precisamos considerar também
o movimento X aqui, o movimento na direção
horizontal. Ok, precisamos mudar um
pouco a estratégia aqui. Então, essa estratégia é que
corrigiremos y
assim que percebermos que o
gato está tocando a cor, e vou mudar a
estratégia agora que
vou dar passos
na direção certa,
na
direção larga da velocidade, é claro E então, para cada pixel, verificamos se o gato
toca na cor
e, se ele toca na cor
, voltamos um passo Então, isso é um
pouco diferente. Aqui estamos nos afastando
do gato preso no
chão ou na plataforma Então, neste caso,
vamos subir até que o gato não
toque mais na cor, mas eu quero mudá-la para
que possamos dizer que o
gato deve se mover, digamos cinco passos
ou três passos E para cada passo, procuramos o toque
e, se for tocante, não estamos dando o passo, estamos recuando um passo
na outra direção Então, vamos ver como fazer isso. Primeiro, precisamos
mudar isso aqui, repetir até precisar ser repetido. Então, vamos arrastar isso para cá. E agora estamos sob controle. Nós prolongamos este ano
, repetimos até. E agora precisamos
dizer quantas vezes isso deve ser repetido e esse é o número de etapas
que queremos dar nesta rodada. Precisamos parar o script aqui. Caso contrário, ele está fazendo
esse loop infinito aqui e não fazendo nada no
loop. Isso não é muito bom. Portanto, se você
estiver com gagueira
e tudo estiver lento, talvez queira
parar o jogo Com esse código aqui, você pode ter um desempenho lento
de todo o navegador aqui,
então, certifique-se de
parar o jogo. Ok. Quantas vezes
devemos repetir isso? O número de vezes
depende da velocidade y. Precisamos cobrir essa
distância, velocidade y.
Por exemplo, menos três aqui Claro, você não pode
fazer isso menos três aqui, mas precisamos de um valor
absoluto aqui, e há um bloco para isso Aqui podemos pegar o
valor absoluto da Velocidade y. Ah, esse foi o bloco errado aqui. Precisamos repetir isso, repetir dez, e então precisamos
definir isso aqui. O que é absoluto? Você também pode escolher funções
diferentes aqui: funções matemáticas. Se a velocidade y for menos,
digamos menos três, isso será três, e se a velocidade for três, então isso também será É eliminar
esse sinal negativo,
se houver , porque não podemos
repetir esse loop, claro, menos três vezes, mas precisamos
repetir três Então, o que precisamos
fazer nesse loop? Então, vamos passo a passo na direção
da
velocidade y, e precisamos verificar aqui se a velocidade y está acima de
zero ou abaixo de zero. Então, vamos ver isso se então e
o operador for maior que. E então dobramos
a velocidade aqui. Se a velocidade y for maior que
zero, então fazemos alguma coisa, ou se vamos fazer outra se for
aqui, duplique esta, e depois abaixo se a velocidade y estiver abaixo de zero, então
essa é essa Ok. Então, se a velocidade
y está abaixo de zero, então fazemos outra coisa. E o que fazemos?
Nós mudamos y por um. Então, se estiver acima de zero, alteramos por um, se estiver abaixo de zero, alteramos por menos um E se for zero, então não mudamos y. Ok. Então, isso está indo na direção correta
e no
número correto de etapas aqui. Então, isso deve funcionar. Nós nos livramos deste ano, então não está funcionando. Então, o gato está caindo
no momento. Não é um problema. Isso ocorre porque
não estamos corrigindo isso aqui. Então, estamos apenas
nos movendo na direção aqui. Mas também precisamos nos
livrar desse ano, então troque y pela velocidade
y. Então isso é o dobro. Devemos substituir isso pela correção y. Então, isso não é só
no caso de toque Então, precisamos nos livrar disso precisamos fazer isso em vez
dessa mudança y pela velocidade x. Então, podemos deletar isso. Vamos remover isso. ,
o nome desse bloco não está Obviamente,
o nome desse bloco não está
mais correto, então podemos alterá-lo. Adicione-o e, em seguida, mova. Podemos chamar isso de movimento, talvez. Acho que está tudo bem e
certifique-se de
marcar essa caixa de seleção, execute sem atualizar a tela Agora, isso é movimento
e, no momento, está se
movendo apenas na direção ampla, mas tudo bem, e não
se moverá para a cor de
fundo aqui. Esse é o objetivo. Precisamos verificar, é claro, se o gato está tocando na
cor e depois recuar Ok. Então, agora no velop F estamos apenas nos movendo
com a velocidade y aqui, e estamos verificando se isso
está acima de zero ou abaixo de zero, e estamos fazendo isso passo a passo
aqui para que, em cada etapa, possamos verificar se o sprite
está tocando Ok, o que faremos se
essa cor for tocante? Este gato está tocando a cor. Precisamos de outro, se estiver aqui. Coloque isso abaixo e
, se tocarmos na cor, então fomos longe demais, é
claro, e
precisamos fazer backup, então precisamos ir para o local y
anterior. Então é aqui que introduzimos outra variável,
outra variável local. Então, vamos criar uma variável somente
para isso, e a chamaremos de valor de pus antigo. Portanto, esse será o
valor antigo de pus antes da mudança. Então, antes de
mudarmos aqui y, precisamos lembrar
o y atual. Então, vamos fazer esse conjunto Não a gravidade, mas o valor da pose antiga, nossa variável recém-criada aqui, e a configuramos como, vamos para o movimento
, e aqui embaixo, temos essa posição y. Então coloque isso aqui. Defina o valor da pose antiga
para a posição y. Então, queremos lembrar essa posição y
antes de alterá-la. Então, podemos alterá-lo
por um ou por menos um. E então, se sentirmos que o gato está
tocando a cor, já
é tarde demais.
Está tocando a cor Não queremos isso, então
voltamos à antiga posição aqui. Então, vamos definir y definir y para a posição
antiga neste caso. R Então, esse é o recuo. Então percebemos que
estamos tocando na cor
e, em seguida, redefinimos isso para o valor antigo que definimos aqui no início do loop de
repetição Está bem? E há outras
coisas que precisamos fazer. Precisamos começar a pular e precisamos trocar de
roupa aqui Então, coloque o salto em
zero porque
não estamos mais pulando
porque batemos em alguma coisa, atingimos a plataforma
ou o chão e trocamos a roupa
para o gato em pé Então, vamos tentar se isso funciona, se isso realmente funciona, e vamos nos livrar de todas essas
variáveis aqui. Então esconda tudo aqui, e vamos ver se isso funciona. Ok, até agora
funciona, parece funcionar. E o movimento na direção
horizontal ainda funciona, é
claro, porque
não o alteramos. E agora vamos verificar se podemos
pular contra essa plataforma. Oh, estamos presos. Portanto,
não está funcionando completamente. O gato está preso aqui. Por que isso? Porque
não definimos a velocidade y como zero. Então, isso é o que já
temos aqui. Então, vamos colocar isso aqui,
se tocarmos na cor
, precisamos definir
a velocidade y como zero Então o gato não está mais
se movendo e simplesmente cairá. Vamos tentar isso. Isso é melhor e parece
funcionar muito bem. O gato pode pular muito alto agora, mas acho que está tudo bem. Sempre podemos ajustar isso
aqui com a velocidade definida y para 12, e talvez possamos configurá-la para 11. Vamos verificar isso.
Tudo bem, também. Mas ainda há um problema. Então, vamos ver se
podemos pular aqui. Então, o gato pode ficar
preso aqui. Você pode ver porque isso é causado pelo movimento
horizontal. Portanto, precisamos também
cuidar do
movimento horizontal aqui. Precisamos substituir
essa mudança x pela velocidade x com a mesma
lógica ou similar à deste ano. Então, precisamos fazer
tudo também para x para velocidade x
e direção x.
60. 60 correção de movimento horizontal: Agora estamos lidando com
o movimento x aqui, então o movimento Y já
está funcionando. Vamos copiar esse loop de repetição aqui com o
botão direito do mouse em Fazer isso, e vamos colocá-lo aqui
logo abaixo do primeiro O que fazemos agora é
substituir
tudo o que tem a
ver com y aqui por x. velocidade y precisa ser a velocidade x. Vamos fazer isso aqui é a velocidade x, e mudamos todas as
ocorrências aqui. Excluímos essa velocidade y aqui. Velocidade x, velocidade x, e
aqui também a velocidade x, e aqui precisamos definir a
velocidade x em vez da velocidade y. Ok, aqui precisamos definir x. Vá para o movimento defina X
duas posições antigas. Podemos excluir, clique com o botão direito do mouse neste bloco aqui
e exclua o bloco. Só vamos deletar este único
bloco aqui, apenas definir y. Então, isso desapareceu agora. Defina a velocidade x20. Nós fizemos isso. Mude y, mude y, precisamos mudar isso também, então mude x e mude x. Primeiro, altere x por menos um é o segundo
e aqui por um, e agora podemos excluir isso aqui Mas isso e também isso. Claro, isso aqui
precisa ser a posição x. Então, isso é aqui embaixo.
Defina o valor antigo da pausa Podemos reutilizar essa variável aqui, então não há problema em
usar a mesma aqui porque sempre a
configuramos aqui no
início do loop Defina o valor antigo da pausa dois, posição
x, velocidade x
maior que zero, altere x por um, velocidade x, menor que zero, altere
x por menos Isso deve ficar bem. Ok.
Vamos tentar isso. Parece funcionar. Mas mais um problema:
é um pouco rápido, porque
saímos deste ano, trocamos x pela velocidade x. Precisamos deletar isso. Então exclua aqui
e vamos tentar agora. Ok, então isso parece funcionar, e vamos tentar acessar a
plataforma aqui de lado. Então é assim que
vemos um problema aqui. Então, estamos presos aqui com
nosso gato com bigodes. Então, isso é algo que precisamos
resolver, mas não agora. No momento,
podemos ver que
não podemos entrar na plataforma. Mas podemos ficar presos
aqui no limite. Mas, felizmente,
podemos contornar isso pulando então, e pular nos livrará de
ficarmos presos Você também pode ver que nosso
gato não é simétrico. A cauda está um
pouco mais para o lado. Se virarmos o gato, teremos uma colisão aqui, depois teremos um toque,
e isso é um problema,
e é isso que precisamos consertar,
e vamos consertar isso
com Mas, no momento, o movimento está funcionando. Está melhorado. Portanto, não podemos
atingir a plataforma baixo e também não diretamente, pelo
menos aqui pela lateral. Mas ainda podemos ficar presos aqui, e esse é um problema que
precisamos resolver, e isso faremos
no próximo vídeo.
61. 61 Bata na caixa, não no gato: Então, eu já sugeri
no último vídeo o que
podemos fazer sobre nossa
detecção de colisão para melhorá-la E eu quero te mostrar novamente
o problema que temos. Então, se eu
pular aqui na plataforma, você pode ver que podemos ficar
presos aqui com nossas cabeças, por exemplo, com a cabeça de um gato. Então, isso é um problema aqui. Ainda podemos ficar presos, e também com um
rabo aqui porque a fantasia está virada
ou o gato está virado E depois do lançamento, a cauda está dentro
dessa plataforma aqui Portanto, ele está tocando
nessa cor específica, e você não pode mover
o gato para fora, exceto pelo que funciona como pular aqui
nesta posição Isso funciona novamente, mas podemos resolver esse
problema com bastante facilidade E fazemos isso com a ajuda de caixas de colisão ou caixas de impacto Vamos chamá-la de caixa de acerto, e o que é caixa de acerto. No nosso caso, uma caixa de sucesso
é outra fantasia, então precisamos criar
outra fantasia aqui. Vamos divulgar o primeiro. E agora temos uma fantasia
que será a caixa de sucesso. Então, vamos chamá-lo de hit box aqui. Ok. Então, agora
não temos a caixa. Então, fazemos uma caixa
com essa ferramenta aqui, com uma ferramenta retangular, arrastamos uma caixa aqui, em algum lugar aqui, talvez, e
depois a colocamos na parte de trás Então pressione aqui para trás, e agora o gato
está acima da caixa. Ok, qual é o propósito
dessa caixa de sucesso? Primeiro, vamos nos
livrar do esboço, então clique aqui, e não temos o esboço Ok, isso não é tão importante, mas eu prefiro que seja assim. Então, qual é o propósito
da caixa de sucesso? A caixa de acerto deve ser
usada para fazer o teste de acerto? Nós, no nosso caso, é essa cor tocante Esta caixa será usada para
testar as cores tocantes, a cor do pano de fundo do solo e
os obstáculos
aqui e as plataformas Essa será a caixa em
que será testada a colisão ou a cor em que o toque
será testado Isso significa que temos que livrar do gato
aqui, é claro. Mas primeiro, vamos ajustar um pouco
a caixa aqui. Primeiro, ele deve estar centralizado. Arraste-o para o centro
aqui e ele deve
se encaixar nessa cruz aqui
com o círculo Se você o tiver centralizado, basta ajustar aqui o tamanho Então coloque isso logo abaixo da última linha, talvez
dos pés do gato. E aqui, também precisamos
colocá-lo em algum lugar aqui. Portanto, em todos os lugares onde o gato
está tocando o chão, a caixa de sucesso
também deve estar E aqui precisamos pegá-lo, talvez até chegar aos ouvidos
aqui, então algo assim. Então eu acho que podemos
viver com isso. Podemos testá-lo um
pouco mais tarde ou
ajustá-lo um pouco mais tarde. Mas agora vamos nos
livrar do gato aqui. Então, selecione todas as partes
do gato e exclua-as. Não precisamos deles aqui.
Então esta é a nossa caixa de sucesso, e vamos mover
essa fantasia para cá, talvez até o fim. Não é tão importante, mas eu prefiro ter os
dois quadros de animação aqui primeiro e
depois a caixa de sucesso. Ok, agora temos uma caixa de
sucesso para nosso gato e agora precisamos usá-la. Qual é a ideia para isso? Portanto, esse teste de cores tocantes
aqui é importante. Para determinar se o gato
está tocando a cor, o fundo, o
chão, a plataforma Então, precisamos mudar para essa fantasia de hit box
antes de fazer o teste, e isso será no
início desse movimento definido. Então, vamos mudar para
nossa fantasia de caixa de sucesso, trocar de roupa para caixa de sucesso. E então, é claro, no
final, precisamos voltar atrás. Então, vamos voltar para, digamos, fantasiar um. Ok, então não temos mais essa armação de
pular aqui, essa roupa de pular,
mas vamos consertar isso mais mas vamos consertar isso Ok, então o que temos agora é que antes de
fazermos o teste de acerto,
o teste de colisão, esse teste de cores
tocantes, estamos mudando para nossa caixa de acerto E então estamos fazendo
esse teste de acerto,
esse teste de colisão ou toque
com essa caixa de acerto, e não com um sprite felino Não com uma fantasia de gato, pelo menos. E então, no final dessa função
desse bloco personalizado, voltaremos
à fantasia normal de gato aqui. O que isso significa? Isso significa que
o jogador não verá nenhuma caixa de sucesso aqui porque tudo
isso é feito sem
uma atualização na tela, então o jogador não verá
essa fantasia de caixa de sucesso, que é bom porque
não queremos que o jogador
veja a caixa de sucesso porque é
feia e não é um gato Então, vamos tentar se isso
já muda alguma coisa.
Aqui temos nosso gato. Vamos pular um
pouco e podemos ver
imediatamente que
não estamos mais presos. Além disso, a cauda não fica presa e tudo
parece funcionar bem aqui. Além disso, se formos até a
borda dessa plataforma, vemos que
caímos imediatamente assim que essa perna aqui sai
da plataforma. Então, mais um, e
então ele cai. Então, vamos dar uma olhada
um pouco em tela
maior aqui.
Vamos ver isso de novo. Então, assim que essa perna
sai da plataforma, o gato cai, que é muito bom. E isso é
claro, porque
temos nossa caixa de sucesso para o teste e não mais a fantasia de
gato. Portanto, ele não é testado
para essa cauda, por exemplo, ou para tudo que está
fora da nossa caixa de sucesso. Portanto, ainda há
um problema aqui. Temos que nos livrar
dessa fantasia de troca por fantasia porque então
não teremos nossa fantasia de caixa de sucesso,
e precisamos da fantasia de caixa de sucesso dentro desse bloco de fantasias aqui, e somente no final, podemos voltar para
a fantasia original
para a fantasia de gato. Portanto, precisamos substituir este ano e este ano
por outra coisa. Então, primeiro, vamos lembrar qual roupa tínhamos
no início. Então, para isso, precisamos de uma variável, torne variável para o
sprite apenas um traje antigo E nós o configuramos no início
do nosso bloco personalizado aqui. Coloque um traje antigo, e como
obtemos o traje atual? Entendemos daqui que o
número da fantasia não é o que queremos. Queremos o nome do traje. Então, o traje antigo é definido com
o nome do traje atual. E então, no
final, precisamos devolvê-lo ao nome desse traje. Então arraste isso aqui, coloque de fantasia em fantasia. O não é a escolha certa
aqui, mas um traje antigo. Então, aqui estamos configurando para
hit box
e, no final,
voltando ao traje antigo. E agora, para esses
dois lugares aqui, precisamos mudar isso para
um conjunto de roupas antigas,
duas, e depois uma fantasia, uma. Então, isso fará o mesmo que trocar o
traje pelo traje um, mas no final, aqui
estará o traje um e não mais
o traje antigo. Então, podemos duplicar isso e
também fazer isso aqui, em vez dessa fantasia
de troca Ok. Agora lembramos qual fantasia o
gato tinha no início
e, em seguida, a redefinimos
aqui no final Mas esses dois lugares também
podem mudar o traje antigo ou o
traje para o qual ele foi redefinido. Então, vamos testá-lo aqui. Se ainda estiver funcionando, não deve ser uma
grande diferença. Mas agora, o
teste de acerto deve funcionar sempre com a caixa de sucesso e não mais com uma fantasia de gato. Então você pode ver que está funcionando bem e o gato cai, e a cauda, por exemplo, passa pela plataforma, o
que é muito bom Então, podemos mudar um
pouco a caixa de
acerto para que possamos
ver como isso funciona. Então vá até a caixa de acerto e
torne-a muito menor. Então, algo assim, talvez. E então começamos um jogo e vemos que o gato está
afundando no chão Ainda podemos movê-lo,
mas ele está no chão. Pelo menos a fantasia, a fantasia de gato
está no chão, mas a caixa de sucesso aqui não
está. E, claro, não é uma boa ideia
fazer assim porque
precisamos que o gato fique de
pé e não no chão, então vamos reajustar isso e
desfazer as mudanças Vamos tentar de novo. E agora o gato está realmente
tocando a superfície Ok, então esse é
o truque da caixa de sucesso. Eu diria que esse é um truque muito importante porque dessa forma podemos
fazer o teste de impacto,
a detecção de colisão muito melhor do que com a fantasia de
gato aqui E o truque é trocar a
roupa pela caixa de sucesso, nossa caixa de sucesso, e depois
trocá-la novamente no final. E tudo dentro
desse bloco personalizado,
obviamente, não é renderizado
na tela Portanto, você não verá a caixa de acerto, mas verá o resultado. E o resultado é
que o teste de acerto
agora está muito melhor e o gato não deve
ficar preso aqui.
62. 62 quebra-cabeça e 2ª sala: Agora que temos o controle do
player trabalhando aqui, vamos verificá-los novamente. Assim, podemos pular,
verificar se há colisões, e o gato,
pelo menos no momento,
não fica preso aqui Então, tudo isso é muito bom. Acho que isso também é algo com o qual
podemos começar. Adicione um quebra-cabeça para sair desta sala aqui e
ir para a próxima sala, e também para tornar essa sala um
pouco mais desafiadora. Então, precisamos adicionar
algumas paredes aqui, talvez outra plataforma
ou talvez duas plataformas aqui e uma pequena joia que
o gato precisa coletar. E então, se a captura atingir
a gema, por exemplo ,
uma estrela, a saída se
revelará e o gato poderá
ir para a próxima sala. Então, vamos começar com um pano de fundo. Então, fazemos paredes aqui.
Vamos copiar esta. Selecione aqui a seta
e, em seguida, esta plataforma aqui, faça uma cópia dela e nós fazemos uma parede a partir dela. Algo assim, talvez, e depois copiamos isso novamente
e colocamos do outro lado. Agora temos duas paredes
e os gatos não podem escapar. E temos essa única plataforma, fazemos uma cópia novamente. Faça-o talvez um
pouco menor aqui, coloque-o aqui,
e então faremos uma cópia novamente onde
a estrela estará. Então, agora, acho que temos. Então, temos que verificar, é claro, se o gato consegue alcançar
todas as plataformas aqui, então acho que isso
deveria ser possível. E aqui vemos o problema de que o gato não consegue
pular mais alto do que isso. Então, talvez devêssemos colocar isso um pouco mais
abaixo aqui, abaixo e fazer disso
talvez um salto distante aqui. Agora, agora o gato está
caindo na plataforma aqui. Isso não é bom, então
torne-o um pouco menor. E agora o gato está
caindo ao lado. E vamos verificar se
isso é razoável. Sim, acho que é muito fácil, mas está tudo bem. Nós
podemos viver com isso. E, claro,
precisamos agora da estrela, a joia que o gato
precisa coletar. Então, fazemos outro sprite aqui. Procure por uma estrela. Clique nele e agora temos a estrela. É um pouco
grande demais, então faça cerca de 40%, e esse é o
tamanho certo, eu acho. Então, vamos posicioná-lo
em algum lugar aqui, e vamos ver como o
gato pode lidar com isso. Então isso é fácil.
Isso é fácil, então isso. E agora poderíamos coletá-lo. OK. Então, agora precisamos verificar se o gato toca essa estrela aqui E a ideia é que se ele
realmente coletar a estrela aqui, então aqui a porta se abrirá ou aparecerá para que
o gato possa sair Então, vamos pintar outro sprite. Então, podemos fazer o
retângulo aqui. Algo assim
muito grande, é claro. Então, vamos torná-lo
menor, como 20. Sim, isso deve estar bem. Mas não podemos torná-la dessa cor porque
tem que ser uma cor de
passagem para que a arma do gato possa passar
pela porta para a próxima sala. Então, vamos fazer uma cor acastanhada. Algo parecido.
Eu acho que está tudo bem. E agora vamos posicioná-lo. Então, vamos mover isso aqui. Sim, acho que está tudo bem. Vamos dar uma olhada em
uma tela grande. Não. Não está bem porque
temos a cor verde aqui. Ainda assim, precisamos movê-lo um pouco
para a esquerda. Então, vamos verificar novamente, não, ainda assim. Então, talvez algo parecido. Sim. Vamos torná-lo um
pouco menor também. Vamos verificar novamente. Sim,
acho que isso deve funcionar. OK. Então, vamos ver se o gato
consegue andar pela loja. Sim, eu trabalho. Bem,
acho que acidentalmente mudei
essa porta para cá Vamos colocá-lo de volta. OK.
Vamos verificar novamente. Se o gato conseguir passar pela porta. Sim. Está tudo bem. Agora, é claro, a porta precisa estar escondida
quando o jogo começa. Então, vamos colocar isso aqui quando o
lag é clicado e depois ocultar. Então, quando começamos um jogo,
a porta não está lá. Portanto, isso precisa ser revelado
coletando essa estrela aqui. Ok, então como verificamos
a colisão do
gato com a estrela aqui? Isso é fácil. Nós já
temos isso para sempre. Nosso loop de jogo, e aqui
podemos verificar a colisão. Então, vamos pegar um “se” aqui. E temos que sentir o toque, não tocando no ponteiro do mouse,
mas tocando em outro sprite, e esse será Sr Então, se o gato tocar
a estrela, o que acontecerá? Então precisamos revelar
esse sprite aqui. Podemos renomeá-la como porta e precisamos revelar a
porta. E como podemos fazer isso? Podemos nos comunicar com outros sprites enviando
mensagens, é claro Então, vamos aos eventos. E então, quando eu recebo e precisamos
definir uma mensagem, é claro. Mas quando eu recebo
essa nova mensagem
, a porta pode aparecer sozinha. E aqui, é claro,
precisamos enviar a mensagem. Então, transmita, vamos
chamá-la de nova mensagem aqui. Vamos chamá-lo de show exit. Para que aqui possamos receber essa saída do show e
mostrar a porta. Ok, então isso precisa entrar
aqui para acelerar. Então, se tocar na estrela, então transmita a saída do programa, e então a porta
se mostre. Vamos verificar isso. Estou subindo até a
estrela, e está funcionando. Agora, o gato teoricamente poderia
ir para a próxima sala. Mas a estrela aqui tem
que desaparecer, é claro, porque senão o gato
não a coletará. Então, precisamos enviar outra
mensagem aqui para a estrela. Ou talvez possamos usar a
mesma mensagem por enquanto. Eu acho que isso também está bem. Então, se essa saída do show for
recebida aqui, primeiro, vamos mostrar a estrela
no início para redefinir
tudo para o início. E então podemos receber
esta mensagem mostrar saída. E então podemos esconder a estrela. Ok, então teste-o. Certifique-se de sempre
testar sua lógica. Então, assim que tivermos
algo novo, uma nova mensagem ou uma nova reação
à sua mensagem, algo parecido,
você precisará testá-la. Então isso funciona. Essa
estrela desapareceu e os gatos podem entrar
pela porta. Ok, bom. Portanto, a próxima sala deve
ser outro pano de fundo. É por isso que
precisamos desenhar um, e podemos dobrar o primeiro e mudar
um pouco aqui Então, primeiro, precisamos
dessa porta, novamente. Então, vamos até lá,
escolha a seta aqui, copie-a e depois vá para os cenários Novamente, o segundo pano de fundo
e, em seguida, cole isso. Você pode usar este botão
aqui para colá-lo ou controlar ou comandar
V. E, claro, temos que redimensioná-lo É muito grande aqui. Vamos torná-lo menor,
menor, menor. Ainda é muito grande, talvez algo
assim. OK. Então, vamos colocar isso aqui. Essa será a entrada. Acho que está tudo bem, e
aqui o gato entrará. E para ir para a próxima sala, precisamos trocar os cenários, é
claro, aqui vamos para
o código novamente do gato, e isso podemos fazer aqui se a porta for tocada,
talvez outra se estiver aqui, se então sentir, tocar na
porta, então podemos mudar os
cenários, então Troque o pano de fundo e, em
seguida, o segundo pano de fundo. E podemos colocar isso,
podemos colocar aqui,
e então, pelo menos, o
pano de fundo deve mudar aqui Vamos tentar isso de novo,
e vemos que
temos que redefinir o
cenário aqui, é claro Então suba ao palco aqui e,
quando clicar em Preto, podemos trocar o pano de fundo
aqui dois, o pano de fundo OK. Então, agora estamos de
volta ao primeiro plano Vamos até a estrela
e depois podemos sair da sala. E estamos na segunda sala. Claro, precisamos
esconder a porta aqui. Novamente, então vamos até a porta
quando eu receber o próximo quarto. Não recebemos essa
mensagem até agora, então precisamos criá-la. Então, transmita aqui. Mudamos o pano de fundo,
mas antes que possamos criar uma nova mensagem
e enviar essa mensagem aqui na próxima sala, para que
a porta saiba que
pode se esconder na próxima sala e depois se esconder e a
porta deve sumir Vamos testá-lo novamente.
E a porta sumiu, e somente essa porta está lá, mas isso faz parte
do pano de fundo, então não podemos esconder isso
e não precisamos Há mais uma coisa por enquanto. Precisamos colocar o gato
aqui nessa posição. Então, vamos colocá-lo talvez
em algum lugar aqui. Então, a posição x é 208 -208, vamos reinicializar o t Vamos para o conjunto de movimentos
dois, agora vamos testá-lo. Ei, aí está a
porta que passa, e então começamos aqui,
o que é correto. Não podemos voltar atrás, é claro,
e não precisamos. E aqui, esses são
os mesmos obstáculos que estão aqui e na mesma plataforma. Precisamos mudar isso, é
claro, para torná-lo um quebra-cabeça
diferente aqui. Mas, por enquanto, isso funcionou. Então, temos dois quartos agora. O primeiro tem esse quebra-cabeça
muito fácil. O gato só precisa pegar a estrela e depois sair da sala
pela porta. É isso mesmo. E a segunda sala pode
ser mais difícil de resolver. Talvez isso dependa de
você. O que você faz aqui. Acho que você tem
a capacidade resolver quebra-cabeças mais difíceis aqui Então, já sabemos como
lidar com colisões com sprites
e, dessa forma, você pode fazer muita coisa Talvez aqui você tenha que
coletar duas estrelas antes que a porta apareça
para sair da sala, ou talvez você precise pular em
um interruptor ou algo
parecido para revelar a próxima
porta, algo assim. Mas acho que temos uma plataforma agradável, simples, mas agradável,
que você pode estender. E isso é algo
sobre o qual
você pode desenvolver e criar seus
próprios jogos com ele. Claro, isso não é perfeito. Então, por exemplo, a animação do gato não é muito boa. E não tem uma animação aqui se você estiver
andando ou correndo, então está apenas mudando de
direção, mas nada mais. Então, é claro, isso é
algo que você pode adicionar aqui. Não temos uma animação real
com animação quadro a quadro. Estamos apenas mudando de
um quadro para outro. Então, uma fantasia para a fantasia
de pular. É isso mesmo. Mas você já viu como fazer
isso com o jogo Avis Adventure, então você pode fazer o mesmo aqui. E como estamos usando essa caixa de
sucesso aqui,
lembre-se mudar para essa caixa de sucesso
e fazer o teste de acerto, não
há problema com
as roupas de animação. Essa caixa de sucesso sempre
será testada, e não importa
qual roupa você tem aqui e qual
animação você usa aqui. Ok, então é isso para este
simples jogo de pular e correr, esta plataforma ou jogo, e espero que você
se divirta
estendendo-o e criando talvez
mais níveis aqui, mais quebra-cabeças, e talvez
você tenha alguns inimigos, e os inimigos estejam impedindo o gato de
coletar todas as estrelas, ou talvez você também possa
usar power-ups para fazer o gato usar uma
força de salto maior, Tudo isso está ao seu alcance. Acho que você tem
as ferramentas para fazer isso e espero que se
divirta fazendo isso.