1
resposta

Nao entendi a logica da regra de colisao

Segue abaixo duvida, fiz cada condição separada e consegui entender a logica mas quando junto as 3 nao entendo:

function verificarcolisaobolinha(){

  if (xBolinha-raio< xRaquete + Raquetelargura && OK ENTENDI.

      yBolinha-raio< yRaquete + Raquetealtura && NAO ENTENDI, ESSA SERVE PARA "ANULAR" A CONDIÇÃO 3?

    yBolinha +raio>yRaquete){  NAO ENTENDI, ESSA SERVE PARA "ANULAR" A CONDIÇÃO 2?
  velocidadeXBolinha *= -1;

QUANDO A BOLINHA BATE NA PAREDE QUAL CONDIÇÃO ELA ESTA UTILIZANDO? ESTOU PERDIDO NESTA PARTE.

1 resposta

Fala ai André, tudo bem? Vou tentar explicar cada condição de maneira separada, vamos lá:

xBolinha-raio< xRaquete + Raquetelargura

Nessa pegamos a posição da bolinha no eixo X subtraímos seu raio, ou seja, estamos querendo pegar a borda da esquerda da bolinha, para que a bolinha não passe a raquete.

Uma vez que temos a posição da borda esquerda da bolinha, precisamos comparar com o eixo X da raquete, sendo assim, pegamos a posição atual da raquete no eixo X e somamos com o tamanho da raquete, isso é necessário para pegarmos a borda direita da raquete.

Por fim, com a posição referente a borda da esquerda da bolinha nos comparamos se ela é menor do que a borda da direita da raquete.

yBolinha-raio< yRaquete + Raquetealtura

Nesse ponto estamos pegando a posição da bolinha no eixo Y e de novo subtraindo o raio, isso é necessário para pegar a borda de baixo da bolinha.

O mesmo processo é feito com a posição Y da raquete, somamos ela com a altura da raquete, isso está sendo feito para pegarmos a borda de cima da raquete.

Tudo isso é necessário para sabermos se a bolinha está acima da raquete ou não, caso ela esteja acima, a colisão não pode ser feita então o jogador vai marcar o ponto.

yBolinha +raio>yRaquete

Esse processo é o mesmo anterior, porém, ele está pegando a borda de cima da bolinha e verificando com a borda de baixo da raquete.

Simplificando: A primeira condição é para saber se a bolinha passou da raquete, a segunda e terceira é para saber se a bolinha está na mesma altura da raquete, pois se a raquete estiver la em baixo e a bolinha lá em cima, elas não podem colidir.

Espero ter ajudado.