1
resposta

Duvidas na movimentação da raquete do oponente

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!

1 resposta

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.