3
respostas

Dúvida na colisão da bolinha com a raquete

function verificaColisaoRaquete() { if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) { velocidadeXBolinha *= -1; } }

Neste caso, até a segunda condição do if consegui compreender, porém na terceira condição: yBolinha + raio > yRaquete, porque não preciso especificar após o yRaquete a altura da mesma? Ela já foi estabelecida no código anterior? Se sim, não consegui entender o porque.

3 respostas

Fala ai Thales, tudo bem? Acabei de responder uma outra dúvida similar a sua, dá uma olhada na explicação:

https://cursos.alura.com.br/forum/topico-nao-entendi-a-logica-da-regra-de-colisao-99742

Espero ter ajudado.

Ainda assim não consegui compreender Matheus, e quando você diz que pega o eixo y da bolinha menos o raio, na verdade é para achar a borda de cima da bolinha e não a debaixo correto?

Fala ai Thales, nesse exemplo que você deu seria para pegar a borda de baixo.

Se você somar no eixo Y ele vai para cima, logo, se você subtrair ele vai para baixo.

O mesmo para o X, ao somar ele vai para a direita e ao subtrair ele vai para a esquerda.

Vamos a um exemplo:

Imagine que temos uma bolinha de 20x20, ou seja, ela tem 20 pixels de altura e 20 de largura, seu raio seria 10. No momento, vamos supor que ela esteja na posição 100,50, ou seja, ela está 100 pixels no eixo X e 50 pixels no eixo Y.

Com esse cenário, se a gente pegar os 50 pixels do eixo Y ele vai se referir ao centro da bolinha, caso precisemos pegar a borda da cima, vamos somar com o raio, assim, a posição para cálculo seria:

posicaoY = 50px
raio = 10
posicaoY + raio => 60px

E para pegar a borda de baixo, a gente subtrai:

posicaoY = 50px
raio = 10
posicaoY - raio => 40px

A ideia é mais ou menos essa.

Espero ter ajudado.