eu prefiro o codigo antigo, ai fico colocando o codigo que usavam antes para a colisão e sempre dava erro, alguem pode me ajudar?
eu prefiro o codigo antigo, ai fico colocando o codigo que usavam antes para a colisão e sempre dava erro, alguem pode me ajudar?
Olá, Heitor, tudo bem?
A colisão da raquete oponente apesar de seguir a mesma lógica da colisão minha raquete, ela terá uma diferença no código por estar em posição diferente.
Antes de abordarmos o código da colisão do oponente, recapitularei a lógica da colisão na minha raquete:
xBolinha - raio < xRaquete + raqueteComprimento
Nessa linha, primeiro subtraímos o raio da bola do ponto X da bola, pois queremos achar o ponto de contato do lado esquerdo da bola. Depois, nós somamos o comprimento da raquete ao X da raquete, pois queremos achar o ponto de contato do lado direito da raquete. Por fim, usamos o sinal de menor que para saber se o ponto de colisão da bola está antes do ponto de colisão da raquete.
Considerando que, você seguiu o código do professor na colisão minha raquete, abordarei mais detalhadamente apenas a colisão da raquete oponente. Na função verificaColisaoOponente() na primeira verificação utilizaremos:
xBolinha + raio > xRaqueteOponente - raqueteComprimento.
Queremos achar o ponto de contato a direita da bolinha, por isso somamos o raio (do X da bola) .Também queremos agora achar o ponto de contato à esquerda da raquete oposta, e por isso, subtraímos o comprimento da raquete oposta (ao seu X). Por fim, precisamos verificar se o ponto de contato da bola passou do ponto de contato da raquete oposta, e por isso usamos o maior que.
Na segunda verificação utilizaremos:
yBolinha + raio > yRaqueteOponente
Essa linha fará a verificação na parte abaixo da bolinha na posição y.
Segue o código com as devidas alterações:
function verificaColisaoRaqueteOponente(){
if (xBolinha + raio > xRaqueteOponente - raqueteComprimento &&
yBolinha + raio > yRaqueteOponente&&
yBolinha - raio < yRaqueteOponente + raqueteAltura){
velocidadeXBolinha *= -1;
}
}
Não esqueça de chamá-la na função draw.
Espero ter ajudado.
Caso a dúvida persista, você pode também compartilhar o link do seu projeto, assim podemos te ajudar mais assertivamente.
Reforço que estarei à disposição para tirar dúvidas.
Abraços.