ola,
não consegui entender a necessidade de diminuirmos o comprimento da raquete dividido por dois.
se possível alguém me explicar, agradeço!
ola,
não consegui entender a necessidade de diminuirmos o comprimento da raquete dividido por dois.
se possível alguém me explicar, agradeço!
Fala ai Izaque, tudo bem? Vamos lá:
não consegui entender a necessidade de diminuirmos o comprimento da raquete dividido por dois.
Isso é necessário para que a colisão seja verificada levando em consideração as bordas da raquete e não o seu centro.
Imagine que sua raquete tenha 10px
de largura e esteja na posição 100px
no eixo X. Agora imagine que esses 100px
no eixo X está levando em consideração o centro da raquete.
Já a bolinha, imagine que ela seja de 20x20
e esteja na posição 100px
do eixo X.
Dado que temos esses dados queremos verifica se a borda direita da bolinha passou da borda esquerda da raquete.
Se fizermos posicaoXBolinha > posicaoXRaquete
ele vai levar em consideração se o centro da bolinha passou o centro da raquete.
Precisamos então pegar a borda direita da bolinha, para isso, pegamos sua posição e somamos (borda direita) com metade do seu raio:
posicao + (raio / 2)
100 + (20 / 2)
100 + 10
110
Então, a posição do eixo X da borda direita da bolinha seria 110px
.
Precisamos fazer o mesmo para a raquete.
Precisamos então pegar a borda esquerda da raquete, para isso, pegamos sua posição e subtraimos (borda esquerda) com metade do seu tamanho:
posicao - (comprimento / 2)
100 - (10 / 2)
100 - 10
90
Nesse caso, teríamos a colisão, porque a borda direita da bolinha está em 110px
e a borda esquerda da raquete está em 90px
.
Espero ter ajudado.