Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

O som da raquete do oponente

O som da qaquete do oponente fica bugado, fica todo travado

//Variáveis da Bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 20; let raio = diametro / 2;

//Velocidade da Bolinha let velocidadexBolinha = 6; let velocidadeyBolinha = 6;

//variáveis da Raquete let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 10; let raqueteAltura = 90; let colidiu = false;

//Variáveis do Oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeyOponente;

//Placar do Jogo let meusPontos = 0; let pontosOponentes = 0;

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

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

//tela function setup() { createCanvas(600, 400); trilha.loop(); }

//Draw executador dos comandos. function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); verificarColisao(); mostraRaquete(xRaqueteOponente, yRaqueteOponente); movimentaraqueteOponente(); verificarColisaoOponente(); incluiPlacar(); marcaPonto(); }

//comandos function mostraBolinha() { circle(xBolinha, yBolinha, diametro); }

function movimentaBolinha() { xBolinha += velocidadexBolinha; yBolinha += velocidadeyBolinha; }

function verificaColisaoBorda() { if (xBolinha + raio > width || xBolinha - raio < 0) { velocidadexBolinha *= -1; } if (yBolinha + raio > height || yBolinha - raio < 0) { velocidadeyBolinha *= -1; } }

//Raquetes comando function mostraRaquete(x, y) { rect(x, y, raqueteComprimento, raqueteAltura); }

function movimentaMinhaRaquete() { if (keyIsDown(UP_ARROW)) { yRaquete -= 10; } if (keyIsDown(DOWN_ARROW)) { yRaquete += 10; } {yRaquete = constrain(yRaquete, 10, 310);} }

//Movimentação Raquete function verificarColisao() { if ( xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete ) { velocidadexBolinha *= -1; raquetada.play(); } }

function movimentaraqueteOponente() {

velocidadeyOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30; yRaqueteOponente += velocidadeyOponente yRaqueteOponente = constrain(yRaqueteOponente, 10, 310); raquetada.play();

}

function verificarColisaoOponente(){ if (xBolinha + raio > xRaqueteOponente && yBolinha - raio< yRaqueteOponente + raqueteAltura && yBolinha + raio > yRaqueteOponente){ velocidadexBolinha *= -1} } 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(pontosOponentes, 470, 26)

}

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

1 resposta
solução!

Olá, Victor!

Pelo que pude analisar no seu código, o som da raquete do oponente está sendo tocado toda vez que a função movimentaraqueteOponente() é chamada, o que provavelmente está causando o bug no áudio.

Isso ocorre porque a função movimentaraqueteOponente() é chamada a cada quadro do jogo, fazendo com que o som seja reproduzido repetidamente e de forma sobreposta, causando esse efeito de "travamento".

Para corrigir isso, você pode mover a linha raquetada.play(); para dentro da função verificarColisaoOponente(), assim como fez na função verificarColisao(). Dessa forma, o som será tocado apenas quando a bolinha colidir com a raquete do oponente.

Aqui está como ficaria:

function movimentaraqueteOponente() {
  velocidadeyOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30;
  yRaqueteOponente += velocidadeyOponente;
  yRaqueteOponente = constrain(yRaqueteOponente, 10, 310);
}

function verificarColisaoOponente(){
  if (xBolinha + raio > xRaqueteOponente && yBolinha - raio< yRaqueteOponente + raqueteAltura &&
   yBolinha + raio > yRaqueteOponente){
   velocidadexBolinha *= -1;
   raquetada.play();
  }
}

Espero ter ajudado e bons estudos!