Olá, sobre a biblioteca collide2d mostrada na aula, fiz um teste aumentando a largura da raquete e centralizando-a no meio da tela para verificar se colisões nas partes de cima e em baixo eram detectadas. As detecções dos dois lados são ok, porém as parte de cima e de baixo não apresentam colisão. A bola "entra" e colide nas paredes interiores... Será que tem algo errado com meu código? Acredito que o criador da biblioteca tenha levado em consideração as colisões no topo e em baixo do retângulo... https://editor.p5js.org/lemos/present/kEF5PLUJV
https://editor.p5js.org/lemos/sketches/kEF5PLUJV
// Variáveis da Bola
let bola_x = 300;
let bola_y = 200;
let bola_diametro = 30;
let bola_raio = bola_diametro / 2;
// Velocidade da Bola
let bola_velocidade_x = 6;
let bola_velocidade_y = 1;
// Variáveis da quadra
let borda_oponente = 600;
let borda_jogador = 0;
let limite_superior = 0;
let limite_inferior = 400;
// Variáveis da Raquete
let raquete_x = 200;
let raquete_y = 150;
let raquete_largura = 100;
let raquete_altura = 100;
let colidiu = false;
function setup() {
createCanvas(600, 400);
}
function draw() {
background(0);
mostraBola();
movimentaBola();
verificaColisaoParede();
mostraRaquete();
movimentaRaquete();
//verificaColisaoRaquete();
verificaColisaoNovo();
}
function mostraBola() {
circle(bola_x, bola_y, bola_diametro);
}
function movimentaBola() {
bola_x += bola_velocidade_x;
bola_y += bola_velocidade_y;
}
function verificaColisaoParede() {
if ((bola_x + bola_raio > borda_oponente) ||
(bola_x - bola_raio < borda_jogador)){
bola_velocidade_x *= -1;
}
if ((bola_y - bola_raio < limite_superior) ||
(bola_y + bola_raio > limite_inferior)){
bola_velocidade_y *= -1;
}
}
function mostraRaquete() {
rect(raquete_x, raquete_y, raquete_largura, raquete_altura);
}
function movimentaRaquete() {
if(keyIsDown(UP_ARROW)) {
raquete_y -= 10;
}
if (keyIsDown(DOWN_ARROW)) {
raquete_y += 10;
}
}
function verificaColisaoRaquete() {
if (bola_x - bola_raio < raquete_x + raquete_largura &&
bola_y - bola_raio < raquete_y + raquete_altura &&
bola_y + bola_raio > raquete_y) {
bola_velocidade_x *= -1;
}
}
function verificaColisaoNovo(){
colidiu = collideRectCircle(raquete_x, raquete_y, raquete_largura, raquete_altura, bola_x, bola_y, bola_raio)
if(colidiu){
bola_velocidade_x *= -1;
}
}