5
respostas

ReferenceError: collideRectCircle is not defined

ola, estou travado em minha aula por não conseguir e não saber como corrigir esse erro, (collideRectCircle is not defined), copiei o codigo todo igual a do professor tambem para ver se corrigia e também estou travado nisso, estou na parte para por os placares, e quando consegui fazer o game rodar ele ficou sem a colisao das raquetes.

5 respostas

Opa Wesley, tudo certo?

O erro em questão indica que não foi encontrado a função collideRectCircle. Como esse problema pode ocorrer por vários motivos, peço que por gentileza compartilhe o link do seu projeto.

Para compartilhar o projeto no P5, você pode seguir os seguintes passos abaixo:

  • Com o p5 aberto e já logado, clique em File (arquivo)
  • Logo depois em Share(compartilhar)
  • Por fim, copie o terceiro link do "edit".
  • Cole o link na resposta do fórum

Série de imagens que mostra como compartilhar passo a passo o código no p5.js

Fico à disposição.

Tenha um bom dia e bons estudos.

OLA, Por algum motivo não consigo pegar o link do projeto e deixar aqui, porem estou deixando aqui junto ao comentário, obrigado.

//variáveis da bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 13; let raio = diametro / 2 ;

//velocidade da bolinha let velocidadeXBolinha = 6; let velocidadeYBolinha = 6; let raqueteComprimento = 10; let raqueteAltura = 90;

//variáveis da raquete let xRaquete = 5; let yRaquete = 150;

//variáveis do oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeYOponente;

let colidiu = false;

//placar do jogo let meusPontos = 0; let pontosDoOponente = 0;

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

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

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

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); //verificaColisaoRaquete(); verificaColisaoRaquete(xRaquete, yRaquete); mostraRaquete(xRaqueteOponente, yRaqueteOponente); movimentaRaqueteOponente(); verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente); incluiPlacar(); marcaPonto(); }

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; } }

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

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

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

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

function movimentaRaqueteOponente(){ velocidadeYOponente = yBolinha -yRaqueteOponente - raqueteComprimento / 2 - 30; yRaqueteOponente += velocidadeYOponente }

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(pontosDoOponente, 470, 26); }

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

Oi Wesley! Na function marcaPonto() há uma chave a mais { . Isso já resolve seu problema.

Porém na function movimentaRaqueteOponente(){ Você tem que usar raqueteAltura / 2 - 30; Acho que deve melhorar sua colisão. Em todo o caso, isso fica pra você experimentar. Porque o valor de raquete comprimento é 10, e não faz sentido vc dividir 10 por 2 e depois subtrair 30. Sim, há uma confusão nessa aula, quando o instrutor diz comprimento ele se refere ao valor 90, e se não me engano e faz o contrário no código. Bons estudos!!

Olá Romeu! O que você quer dizer com usar raqueteAltura / 2 - 30; ? Pois troquei comprimento por altura e continua dando o mesmo erro, consegue ser mais especifico?

raqueteComprimento = 10; let raqueteAltura = 90;

já fazem dias que não vejo isso, porém, se vc coloca o valor 90 na variável raqueteAltura e divide por 2, terá um resultado muito diferente do que se vc isso com a raqueteComprimento com valor 90. afinal 90/2 -30 = 15 e com o outro valor ficaria 10/2-30 = -15. Perceba que, o que eu quero dizer é que se vc não ficar atento na aula, vais ver que o instrutor faz alguma incoerência do tipo falou valor de altura, mas usou comprimento..Enfim, o grande detalhe é perceber que o valor que vc deve usar é o 90 e no seu caso seria a raqueteAltura. tente postar o seu link.