3
respostas

[Dúvida] Código de Verificação da Colisão com a Bola diferente, mas como mesmo resultado. Está certo, ou não estou vendo onde pode dar ruim?

Olá pessoal!

Eu tenho por hábito assistir as aulas, fazer anotações e depois tentar fazer sozinha, tentando aplicar o que aprendi. Quando eu fui fazer a verificação da colisão da bolinha com a raquete, meu código ficou assim:

//Variáveis MyRaquete
let xMyRaquete = 5;
let yMyRaquete = 160;
let widthMyRaquete = 10;
let heightMyRaquete = 90;
let velocidadeMyRaquete = 10;

function verificaColisaoMyRaquete (){
  if (xBolinha - raio < xMyRaquete + widthMyRaquete
    && yBolinha + raio < yMyRaquete + heightMyRaquete 
    && yBolinha - raio > yMyRaquete){
    velocidadeXBolinha *= -1;
  }

O código dado em aula é bem diferente (modifiquei abaixo para que as variáveis assumissem os mesmos nomes das minhas:

function verificaColisaoRaquete(){
  if (xBolinha - raio < xMyRaquete + widthMyRaquete 
  && yBolinha - raio < yMyRaquete + heightMyRaquete  
  && yBolinha + raio > yMyRaquete){
    velocidadeXBolinha *= -1;
  }
}

Mesmo assim, o código parece funcionar perfeitamente, com a bolinha mudando a rota de colisão como deveria.

A minha dúvida é: eu encontrei uma outra solução para o problema ou meu código está errado e eu não estou percebendo o erro?

3 respostas

Oi, Thais! Tudo bem?

Podemos tornar o que está acontecendo mais visualizável, visto que, a imagem abaixo representa as posições dos comandos utilizados na lógica do código:

Posições y e y mais altura da raquete e posições y, y - raio e y + raio da bolinha.

Podemos representar, então, o sentido de posição e movimento definido pelos comandos yBolinha + raio < yMyRaquete + heightMyRaquete && yBolinha - raio > yMyRaquete da seguinte forma:

Imagem que representa o sentido de posição e movimento do comando: yBolinha + raio < yMyRaquete + heightMyRaquete && yBolinha - raio > yMyRaquete Enquanto, os comandos yBolinha - raio < yMyRaquete + heightMyRaquete && yBolinha + raio > yMyRaquete podem ser visualizados da seguinte maneira:

Imagem que representa o sentido de posição e movimento do comando: yBolinha - raio < yMyRaquete + heightMyRaquete && yBolinha + raio > yMyRaquete

Dessa forma, podemos concluir que ambos os comandos geram um resultado positivo no objetivo de definir e verificar uma colisão entre a bolinha e a raquete, porém, possuem comportamentos levemente diferentes, que, entretanto, não influenciam fortemente no resultado do código.

Espero ter ajudado!

Um forte abraço e bons estudos!

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

Oi Sarah!! Já ajudei alguns aluno aqui , com essa dificuldade!! E gostava de dizer, que seu exemplos, mostram muito bem o que acontece! Eu diria que seria perfeito, se vc fizesse o mesmo (rss) com o ponto X. E esse excelente material que vc criou, deveria ser fixado na descrição da aula pertinente ao assunto, como um post fixo!!! Parabéns, pois ficou uma ótima explicação, o que lhe faz jus ao titulo !!! Parabens mesmo!!! Permita-me, "fazer uso" de suas imagens quando for necessário, para tentar ajudar um colega?" Acho que esse material vai ajudar muitos, que ainda tem essa dificuldade de visualizar o que realmente acontece. Talvez, um dia a Alura possa fazer essa aula, ou parte dessa aula em CG(nem precisa tanto kk), com pausas e gráficos, mas em tempo real!! Assim as colisões seriam pausadas e o instrutor poderia mostrar o que seus desenho mostram perfeitamente!!! Obrigado e bons estudos!!

Oi, Romeu!

Muito obrigada pelo feedback, fico muito feliz em poder ajudar e em saber que a didática está acessível e está sendo recomendada por você! Pode usar as imagens e os exemplos para explicação, o importante é estarmos unidos com o intuito de espalhar ainda mais conhecimento com a comunidade.

Espero que possamos ajudar muitos alunos a compreender e a transformar suas vidas através da tecnologia!

Um forte abraço!