Movendo um personagem no Scratch

Movendo um personagem no Scratch

Estou estudando Scratch. Para testar meus conhecimentos, estou fazendo vários mini projetos e em um deles resolvi criar um jogo onde controlamos um avião.

Nosso jogo vai se passar, basicamente, no ar. Logo, vamos alterar nosso palco para que apareça um céu:

Legal! Já temos o palco para o nosso jogo, agora precisamos adicionar o nosso ator:

Nosso ator está na tela, mas ele está meio grande para o nosso cenário. Podemos falar para o Scratch para, quando o jogo começar, reduzir o tamanho do nosso ator, no meu caso, vou reduzi-lo para 30%:

Nosso avião já está em um tamanho bom. Porém ele ainda está no meio da tela. Quando o nosso jogo começar, o nosso avião deve se posicionar na parte central e inferior da tela. Isto é, sua posição horizontal (x) deve ser 0 e sua posição vertical (y) deve ser -120, no meu caso:

Bacana! Nosso avião já está posicionado, mas ele ainda está parado quando o jogo começa. Precisamos movimentá-lo.

Movimentando o nosso ator

No Scratch, conseguimos capturar diversos eventos que nosso usuário pode produzir, como por exemplo um evento de click. Só que nesse caso, não queremos capturar o evento de click e sim o de uma tecla.

Nosso ator vai ser mover, a princípio, para a esquerda e para a direita, ou seja, só trabalharemos com o eixo horizontal (x). Para mover nosso ator, vamos utilizar as setas do teclado.

Então vamos falar para o Scratch mover o nosso ator alguns passos para a esquerda quando a tecla seta para esquerda for pressionada:

Como estamos movendo nosso ator para a esquerda, o valor dos passos é negativo. Podemos falar para ele se mover para direita também quando a seta para direita for pressionada, só que, neste caso, o valor dos passos é positivo:

Agora quando digitamos algumas dessas teclas, nosso ator se movimenta:

Nosso ator está se movimentando, mas o que vocês acham desse movimento? Ele está um pouco estranho, travado. Como podemos deixar ele mais fluido?

Banner da Imersão Phyton: Inscreva-se gratuitamente na Imersão Phyton da Alura e mergulhe em análise de dados!

Melhorando a movimentação

Quando apertamos uma tecla no computador e a mantemos pressionada, o computador executa uma vez e espera um pouco para executar as demais ações. Por isso, o movimento do ator fica travado.

Mas nós precisamos saber quando o usuário pressiona a tecla para mover nosso ator, como podemos fazer isso sem fazer com que a movimentação pareça travada?

Quando apertamos uma tecla, um sensor localizado no teclado captura essa informação e a envia para ser processada. Nós podemos falar para o Scratch utilizar um sensor e sempre ficar verificando se a tecla foi acionada.

Logo, vamos apagar os comandos do evento de click e falar para o Scratch que, quando o jogo começar, ele fique sempre perguntando se as teclas de movimento estão pressionadas, se estiverem, ele deve mover o personagem:

Agora quando pressionarmos as teclas, nosso ator terá um movimento mais fluido:

Continuando nosso jogo

Nosso ator principal já está com um comportamento muito legal. Agora precisamos adicionar mais elementos, como obstáculos para o nosso avião desviar, criar um efeito de para simular o movimento do voo, entre diversas outras coisas para deixar nosso jogo mais divertido.

Aqui na Alura, temos um curso de Scratch onde você criará um jogo de naves espaciais. Nele você aprenderá sobre como funciona o Scratch, como adicionar inimigos e como dar comportamentos a eles. Como adicionar efeitos e muito mais.

Yuri Matheus
Yuri Matheus

Yuri é desenvolvedor e instrutor. É estudante de Sistemas de Informação na FIAP e formado como Técnico em Informática no Senac SP. O seu foco é nas plataformas Java e Python e em outras áreas como Arquitetura de Software e Machine Learning. Yuri também atua como editor de conteúdo no blog da Alura, onde escreve, principalmente, sobre Redes, Docker, Linux, Java e Python.

Veja outros artigos sobre Programação