3
respostas

Bolinha gruda na extremidade da Raquete, como solucionar?

Boa noite, recriei o Pong no Scratch mas de vez em quando a Bolinha gruda na extremidade da raquete quando ela rebate em movimento algumas vezes. Alguem sabe se existe uma solucão pra esse bug? Talvez alterar o tamanho da raquete ou da bolinha?

Estou colocando o meu código scratch para que vocês possam averiguar e dar a opnião de vocês.

Desde Já agradeço!

BolinhaRaqueteP1RaqueteP2

3 respostas

Olá Bruno, tudo certo?

Podemos sim trabalhar em uma solução para este problema, entretanto, para que possamos nos aprongundar nesse ponto, peço que por gentileza compartilhe o link do seu projeto conosco, dessa forma podemos te auxiliar de forma mais assertiva, cuidando com das peculiaridades do seu código, atores, proporções de objetos, etc.

Para enviar o link do seu projeto é só seguir os passos abaixo:

1. Com o projeto aberto na parte superior da tela ao centro, clique em compartilhar;

Captura de tela colorida do Scratch mostrando no lado esquerdo uma barra com o nome do arquivo “Movimento Browniano” e ao lado direito um botão retangular laranja escrito “Compartilhar”. O fundo da imagem é azul claro.

2. Você será redirecionada para outra página, nela clique no canto inferior direito em “Copiar link”, que está ao lado do botão “Adicionar ao Estúdio” ;

Captura de tela colorida  do Scratch mostrando no lado esquerdo um botão azul claro escrito “Adicionar ao estúdio” e ao lado direito outro botão azul claro escrito “Copiar Link”.

3. Cole o link do projeto aqui no fórum da Alura;

Caso surja alguma dúvida conte conosco!

Um bom dia e bons estudos.

Fala Gabriel, obrigado pelo retorno.

Compartilhando link:

https://scratch.mit.edu/projects/786129259

Oii Bruno, obrigado pela paciência!

Parabéns pelo seu projeto! Tanto o visual quanto os sons estão show!

A bolinha se prende na raquete por conta do código de movimento da bolinha, isso acontece pois definimos que ao tocar na raquete a bolinha deve inverter a sua direção, ou seja, ir para o lado contrário.

Quando a bolinha colide com a borda da tela e a raquete está próxima, ela também vai acertar a parte superior ou inferior da raquete, sendo assim, a bolinha colide com a borda e logo em seguida colide com a raquete, criando um loop onde a bolinha colide infinitamente de um lado para o outro. Tendo isso em mente, iremos definir uma brecha de direções específicas, dessa forma, sempre que houver a colisão com a raquete a bolinha irá para onde queremos:

  • No ator bolinha, removeremos o bloco “aponte para a direção * (-1)”. Mudaremos para um bloco mais preciso quanto a direção da raquete, assim evitando o problema:

Captura de imagem do jogo Pong no Scratch mostrando o bloco aponte para a direção vezes menos abre parênteses menos um fecha parênteses sendo retirado. O aponte para direção direção vezes menos um está destacado em vermelho

  • Removeremos também o bloco verde com o operador “ou” e usaremos o bloco “tocando em raquete 1”. Como definiremos uma direção específica, ela vai variar para as duas raquetes, sendo assim precisaremos tratar da colisão com individualidade para as duas raquetes:
Captura de imagem do jogo Pong no Scratch mostrando, quando a bandeira verde que inicia o jogo for clicada, sempre, se tocando em raquete 2 então, volte. O bloco, se tocando em Raquete2 ? então, está destacado em vermelho
  • Adicionamos o bloco “aponte para a direção”, o bloco “número aleatório entre” e colocamos os números -30 e -125. Quando ocorre a colisão da bolinha na raquete, a sua direção vai ter como base a circunferência, sendo assim, usamos valores negativos pois são mais baixos e representam os ângulos possíveis de direção da bolinha:
Captura de imagem do jogo Pong no Scratch mostrando quando a bandeira verde que inicia o jogo for clicada, sempre, se tocando em raquete 1 então, acrescente aponte para a direção e número aleatório entre -30 e -125, este bloco está destacado em vermelho
  • Repetimos no código da Raquete, alterando os ângulos para 30 e 125.
Captura de imagem do jogo Pong no Scratch mostrando quando a bandeira verde que inicia o jogo for clicada, sempre, tocando em raquete2 então, aponte para a direção, número aleatório entre -30 e -125, toque o som acertar bolinha, se, tocando em raquete então, aponte para direção, número aleatório entre 30 e 125, toque o sim acertar bolinha, volte. O segundo bloco está destacado em vermelho.

Segue o código funcionando:

Caso surja alguma dúvida estamos à disposição, conte conosco!

Um bom dia e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓