Não consegui entender a lógica por trás da função verificaColisaoRaquete( ), não entendi os critérios aplicados no if.
Não consegui entender a lógica por trás da função verificaColisaoRaquete( ), não entendi os critérios aplicados no if.
Fala aí!!
A lógica da função verificaColisaoRaquete() é dividida em 3 condições:
Se a posição em X da bolinha menos o raio é menor do que o X da raquete mais o comprimento da mesma, ou seja, se a posição da borda da bolinha de X for menor ou igual ao valor em X da borda da raquete. Dessa forma garantimos que a bolinha irá colidir no eixo X, pois se esse valor for um número menor significa que a bolinha passou do comprimento da raquete, sinalizando uma colisão
Se a posição em Y da bolinha menos o raio é menor que o a posição em Y da raquete somada de sua altura, ou seja, se a borda da bolinha está no mesmo eixo em Y da borda da raquete. Dessa forma garantimos que haverá uma colisão no eixo Y, mostrando que caso esse valor esteja menor, sinalizará uma colisão.
Se a posição da bolinha acrescida de seu raio no eixo Y seja maior do que a posição em Y da raquete. Isso garante que a altura total da nossa raquete esteja sendo levada em consideração na colisão, e faz com que ela toque a borda do canvas caso ela não esteja presente naquele momento.
A multiplicação por -1 só indica que a nossa velocidade irá para a direção oposta, visto que iremos alternar entre uma velocidade constante positiva e uma negativa para simular a movimentação da bolinha para a esquerda e para a direita.
Ficou mais claro? Caso não tenha ficado, posso tentar explicar de maneira mais detalhada para ajudar a fixar essa parte do conteúdo. Sucesso e bons estudos!!