1
resposta

Som da raquete reproduzindo infinitamente

Consegui adicionar os sons no jogo, estão funcionando normalmente, porém o som da raquete toca sem parar infinitamente, como se a bolinha estivesse encostando na raquete. https://editor.p5js.org/DEV007/sketches/RNEwmigYQ

//variáveis da bolinha let xBolinha = 300; let yBolinha = 200; let dBolinha = 20; let raio = dBolinha / 2;

//variáveis da velocidade da bolinha let velocidadeXBolinha = 10; let velocidadeYBolinha = 1;

//variáveis da raquete1 let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 12; let raqueteAltura = 70;

//variáveis do oponente let xRaqueteDoOponente = 585; let yRaqueteDoOponente = 150;

//Placar do jogo let meusPontos = 0; let oponentePontos = 0;

//Sons do jogo let ponto; let trilha; let raquetada;

function preload(){ trilha = loadSound("trilha.mp3"); raquetada = loadSound("raquetada.mp3"); ponto = loadSound("ponto.mp3"); }

let colidiu = false;

//seta as dimensões do background function setup() { createCanvas(600, 400); trilha.loop(); }

//Define a cor do background e chama as funções utilitárias function draw() { background(0); mostraBolinha(); movimentaBolinha(); checkColisaoBorda(); mostraRaquete(xRaquete,yRaquete); movimentaMinhaRaquetea(); movimentaMinhaRaqueteb(); verificaColisaoRaquete(); movimentaMinhaRaquetea(); movimentaMinhaRaqueteb(); verificaColisaoRaquete(); verificaColisaoRaquete(xRaquete, yRaquete); verificaColisaoRaquete(xRaqueteDoOponente, yRaqueteDoOponente); mostraRaquete(xRaqueteDoOponente,yRaqueteDoOponente); movimentaRaqueteDoOponente(); incluiPlacar(); marcarPonto();

}

//Função criada para desenhar e mostrar a bolinha function mostraBolinha () { circle(xBolinha,yBolinha, dBolinha); }

//Função criada para definir os parâmetros de movimentação da bolinha function movimentaBolinha () { xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }

//Função criada para checar se a extremidade da bolinha toca na borda da tela. Quando toca, inverte a direção function checkColisaoBorda(){ if (xBolinha + raio > width || xBolinha - raio < 0) { velocidadeXBolinha *= -1; } if (yBolinha + raio > height || yBolinha - raio < 0) { velocidadeYBolinha *= -1; } }

//Função criada para mostrar e definir parâmetros da raquete function mostraRaquete(x,y){ rect(x, y, raqueteComprimento, raqueteAltura); }

function movimentaMinhaRaquetea(){ if (keyIsDown(UP_ARROW)){ yRaquete -= 10; } }

function movimentaMinhaRaqueteb(){ if (keyIsDown(DOWN_ARROW)){ yRaquete += 10; } }

function verificaColisaoRaquete() { if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) { velocidadeXBolinha *= -1; raquetada.play(); } }

function verificaColisaoRaquete(x, y) { colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio); if (colidiu) { velocidadeXBolinha *= -1; raquetada.play(); } } function movimentaRaqueteDoOponente(){ yRaqueteDoOponente = (yBolinha - raqueteAltura /2) - 50 }

function incluiPlacar(){ stroke(255); textAlign(CENTER); textSize(16); fill(color(255,140,0)); rect(150,10,40,20); fill(255); text(meusPontos, 170,26); fill(color(255,140,0)); rect(450,10,40,20); fill(255); text(oponentePontos, 470,26); }

function marcarPonto(){ if(xBolinha > 590){ meusPontos += 1; ponto.play(); } if(xBolinha < 10){ oponentePontos += 1; ponto.play(); } }

1 resposta

Comente a chamada da função verificaColisaoRaquete() isto já é feito nas chamadas verificaColisaoRaquete(xRaquete, yRaquete); verificaColisaoRaquete(xRaqueteDoOponente, yRaqueteDoOponente);

As funções abaixo só precisam ser chamadas uma única vez: movimentaMinhaRaquetea(); movimentaMinhaRaqueteb();