1
resposta

p5 não carrega com som

Quando adicionei os comandos para tocar o som o Preview do p5 fica não carrega.

/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 comprimentoRaquete = 10;
let alturaRaquete = 90;

//Variáveis da raquete do oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;

//Placar do jogo
let meusPontos = 0
let pontosOponente = 0

//Sons
let raquetada;
let ponto;
let trilha;


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

let colidiu = false;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaMinhaRaquete();
  colisaoRaqueteBiblioteca(xRaquete, yRaquete);
  colisaoRaqueteBiblioteca(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
  incluePlacar();
  marcaPontos();
}

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

function movimentaBolinha (){
  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;
}

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

function mostraRaquete (x, y){
    rect(x, y, comprimentoRaquete, alturaRaquete);
}
function movimentaMinhaRaquete() {
    if (keyIsDown(UP_ARROW)) {
        yRaquete -= 10;
    }
    if (keyIsDown(DOWN_ARROW)) {
        yRaquete += 10;
    }
}

function colisaoRaqueteBiblioteca(x, y){
  colidiu = collideRectCircle(x, y, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
  if (colidiu){
    velocidadeXBolinha *= -1;
  }
}

function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente - comprimentoRaquete /2 - 90
  yRaqueteOponente += velocidadeYOponente;
}

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

function marcaPontos (){
  if (xBolinha < 10){
    pontosOponente++;
  }
  if (xBolinha > 590){
    meusPontos++;
  }
}
1 resposta

Opa Renzo, tudo certo?

Então, eu acho que ali na function 'preload()' você precisa botar o nome certinho dentro da 'loadSound()', igual ao nome que tá no arquivo mp3, se não ele pode dar algum erro mesmo, que deve ter sido o caso aí...

No seu está assim:

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

Mas no meu está assim:

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

Mudei aqui pra testar e o Preview fica num "Loading..." eterno, então pode ser isso.

Além disso só faltou fazer também as outras chamadas que faltaram de 'ponto.play()' e 'raquetada.play()' dentro dos if's das function 'marcaPontos()' e 'colisaoRaqueteBiblioteca()'.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software