Olá meu código tem algumas diferenças para o do prof. pois fui tentando fazer do meu jeito, estava dando certo até precisar fazer a colisão da raquete do oponente, das maneiras que tentei nao funcionam, sem entrar em detalhes a melhor solução é a apresentada pelo professor, mas não consigo fazer a biblioteca apresentada gerar o efeito de colisão devido; meu código:
//sessão de declaração de variáveis.
//variaveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 50;
let raio = 25;
//velocidade da bolinha
let xVelocidadebol = 2;
let yVelocidadebol = 6;
//velocidade da bolinha oponente
let xVelocidadebolOp = 2;
let yVelocidadebolOp = 6;
//Variáveis Raquete
let xRaquete = 5;
let yRaquete = 150;
let raioNormal = 10
let xRaqueteComRaio = xRaquete + raioNormal
let raqueteComprimento = 10;
let raqueteAltura = 100;
let MovRaquete = 6;
//variáveis raquete oponente
let xRaqueteOp = 585;
let yRaqueteOp = 150;
let MovRaqueteOp = 6;
let raioOp = 10
//variável referente a biblioteca de colisão importada do github: https://github.com/bmoren/p5.collide2D#colliderectcircle
let colidiu = false;
//sessão de funções do programa.
function setup() {
createCanvas(600, 400);
}
//DRAW
function draw() {
background(0);
describe ('black outline');
mostrabolinha ();
movimentoBolinha ();
//colisaoBordasBolinha ();
Raquete (xRaquete, yRaquete);
Raquete (xRaqueteOp, yRaqueteOp);
movimentoRaquete ();
//movimentoRaqueteOp();
colisaoMinhaRaqueteBiblioteca ();
//colisaoRaqueteBola();
//colisaoRaqueteBolaOponete ();
}
//Funções desenho da bolinha
function mostrabolinha (){
circle(xBolinha,yBolinha,diametro);
}
//Função movimento da bolinha
function movimentoBolinha (){
xBolinha += xVelocidadebol;
//yBolinha += yVelocidadebol;
}
//FUNÇÃO colisão da bolinha com bordas
function colisaoBordasBolinha (){
if(xBolinha + raio >= width || xBolinha - raio < 0){
xVelocidadebol *= -1; }
if (yBolinha + raio > height || yBolinha - raio < 0){
yVelocidadebol *= -1; }
}
// FUNÇÃO DESENHO da raquete
// ______
function Raquete (x,y){
rect (x,y,raqueteComprimento,raqueteAltura);
}
//FUNÇÃO Movimento da raquete e
function movimentoRaquete() {
if (keyIsDown(UP_ARROW)){
yRaquete -= 10 ;}
//else if(yRaquete + raioRaquete >= height ){
//MovRaquete *= +1;
// }
if(keyIsDown(DOWN_ARROW)){
yRaquete += 10; }
}
//FUNÇÃO Movimento da raquete oponente
function movimentoRaqueteOp (){
MovRaqueteOp = yBolinha - yRaqueteOp -RaqueteComprimento / 2 - 30;
yRaqueteOp += MovRaqueteOp
}
//FUNÇÃO colisão raquete e bolinha
function colisaoRaqueteBola () {
if(xBolinha - raio <= xRaquete + raioNormal && yBolinha - raio < yRaquete + RaqueteAltura && yBolinha + raio > yRaquete ){
xVelocidadebol *= -1; }
}
function colisaoRaqueteBolaOponete (){
if(xBolinhaOp + raioBolOp <= xRaqueteOp + raioBolOp ){
xVelocidadebolOp *= -1; }
}
// Função colisão raquete da biblioteca
function colisaoMinhaRaqueteBiblioteca() {
colidiu = collideRectCircle(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
if (colidiu) {
velocidadeXBol *= -1;
}
}