Oi,
Fiz o primeiro exercício de apenas duplicar a função de colisão da bolinha nas raquetes com apoio da biblioteca. Mas não funcionou.
function colideBiblio(xRaq,yRaq,compRaq, altRaq, xBolinha, yBolinha, raio){
colidiu = collideRectCircle(xRaq, yRaq, compRaq, altRaq, xBolinha, yBolinha, raio);
if (colidiu){
velXBolinha *= -1;
}
}
function colideBiblio2(xOp,yOp,compRaq, altRaq, xBolinha, yBolinha, raio){
colidiu = collideRectCircle(xOp, yOp, compRaq, altRaq, xBolinha, yBolinha, raio);
if (colidiu){
velXBolinha *= -1;
}
}
Inseri a função no draw, mas não deu certo. As variáveis do oponente também estão declaradas antes. A bolinha colide na minha raquete e não colide na do oponente.
Também tentei fazer uma única função com parâmetros x e y. Tampouco funcionou. Será bug do P5?
//Variáveis de posição e tamanho da Bolinha:
let xBolinha = 300;
let yBolinha = 200;
let diametro = 30;
let raio = diametro / 2;
//Variáveis de movimento da Bolinha
let velXBolinha = 6;
let velYBolinha = 6;
//Variáveis da Raquete
let xRaq = 5;
let yRaq = 150;
let compRaq = 10;
let altRaq = 90;
//Variáveis Oponente
let xOp = 585
let yOp = 150;
let velOp;
let colidiu = false;
function setup() {
createCanvas(600, 400);
}
function draw() {
background(0);
mostraBola();
moveBola();
attBorda();
mostraRaq(xRaq, yRaq);
mostraRaq(xOp, yOp);
movRaq();
movOp();
colisaoRaqs(xRaq, yRaq);
colisaoRaqs(xOp, yOp);
//colideBiblio();
//colideBiblio2();
//bordaRaq();
borda2();
}
function mostraBola(){
circle(xBolinha,yBolinha,diametro)
}
function moveBola(){
xBolinha += velXBolinha
yBolinha += velYBolinha
}
function attBorda(){
if (xBolinha + raio > width ||
xBolinha - raio < 0) {
velXBolinha *= -1
}
if (yBolinha + raio > height ||
yBolinha - raio < 0) {
velYBolinha *= -1
}
}
function mostraRaq(x,y){
rect(x, y, compRaq, altRaq);
}
function movOp(){
velOp = yBolinha - yOp - compRaq/2 - 30;
yOp += velOp
}
function movRaq(){
if (keyIsDown(DOWN_ARROW)){
yRaq += 10;
}
if (keyIsDown(UP_ARROW)){
yRaq -= 10;
}
}
//function bordaRaq(){
// if (xBolinha - raio < xRaq + compRaq && yBolinha - raio < yRaq + altRaq && yBolinha + raio > yRaq) {
// velXBolinha *= -1;
//}
function borda2(){
if (xBolinha - raio < xRaq + compRaq && yBolinha + raio > yRaq && yBolinha - raio < yRaq + altRaq) {
velXBolinha *= -1;}
}
//function colideBiblio(xRaq, yRaq, compRaq, altRaq, xBolinha, yBolinha, raio){
//colidiu = collideRectCircle(xRaq, yRaq, compRaq, altRaq, xBolinha, yBolinha, raio);
//if (colidiu){
//velXBolinha *= -1;
// }
//}
// function colideBiblio2(xOp, yOp, compRaq, altRaq, xBolinha, yBolinha, raio){
// colidiu = collideRectCircle(xOp, yOp, compRaq, altRaq, xBolinha, yBolinha, raio);
//if (colidiu){
//velXBolinha *= -1;
// }
//}
function colisaoRaqs(x, y, compRaq, altRaq, xBolinha, yBolinha, raio){
colidiu = collideRectCircle(x, y, compRaq, altRaq, xBolinha, yBolinha, raio);
if (colidiu){
velXBolinha *= -1;
}
}
SOS