Solucionado (ver solução)
Solucionado
(ver solução)
15
respostas

[Dúvida] collideRectCircle NÃO TÁ DEFINIDO

Eu segui passo a passo o vídeo mas o p5 insiste em dizer que não tá definido, aqui o código me da uma ajuda, faz favor.

// varíaveis da Bolinha
 let xBolinha = 300;
 let yBolinha = 200;
 let diametroBolinha = 18;

 //velocidade da Bolinha
 let velocidadeXBolinha = 6;
 let velocidadeYBolinha = 6;

 let raio = diametroBolinha / 2;

 //varíaveis da Raquete
 let xRaquete = 6;
 let yRaquete = 160;
 let larguraRaquete = 10;
 let alturaRaquete = 80;

 //velocidade da Raquete
 let velocidadeDaRaquete = 8;

 let colidiu = false;

 function setup() {
   createCanvas(600, 400);
 }

 function draw() {
   background(0);
   mostraBolinha();
   movimentaBolinha();
   verificaColisaoBorda();
   mostraRaquete();
   movimentoRaquete();
   //verificarColisaoRaquete();
   colisaoMinhaRaqueteBiblioteca();
 }

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

 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(){
   rect(xRaquete, yRaquete, larguraRaquete, alturaRaquete);
 }

 function movimentoRaquete(){
   if(keyIsDown(UP_ARROW)){
     yRaquete -= velocidadeDaRaquete;
   }
   if(keyIsDown(DOWN_ARROW)){
     yRaquete += velocidadeDaRaquete;
   }
 }

 function verificarColisaoRaquete(){
   if(xBolinha - raio < xRaquete +larguraRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete){
     velocidadeXBolinha *= -1;
   }
 }

 function colisaoMinhaRaqueteBiblioteca(){
   colidiu = collideRectCircle(xRaquete, yRaquete, larguraRaquete, alturaRaquete, xBolinha, yBolinha, raio);
   if(colidiu){
     velocidadeXBolinha *= -1;
   }
 }

aqui o do sketch. js

<!DOCTYPE html>
 <html lang="en">
   <head>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.js"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/addons/p5.sound.min.js"></script>
     <link rel="stylesheet" type="text/css" href="style.css">
     <meta charset="utf-8" />

   </head>
   <body>
     <script src="sketch.js"></script>
     <script src="p5.collide2d.js"></script>
   </body>
 </html>

e aqui do Index.html minha pergunta é: Como eu resolvo?

15 respostas

Por favor, clique no botão </> para colocar o código formatado aqui no fórum.

Você incluiu a biblioteca p5.collide2d.js e incluiu o link dela no index.html?

oi Osni, posta o link do projeto.

Também estou com o mesmo erro.

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

//variáves de movimento da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let comprimentoRaquete = 10;
let alturaRaquete = 90
let colidiu = false;

function setup(){
  createCanvas(600, 400);
}

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete();
  movimentaMinhaRaquete();
  //verificaColisaoRaquete();
  colisaoMinhaRaqueteBiblioteca();
}

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(){
  rect (xRaquete,yRaquete,comprimentoRaquete,alturaRaquete)
}

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

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

function colisaoMinhaRaqueteBiblioteca(){
  colidiu =
  collideRectCircle( xRaquete, yRaquete, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
  if (colidiu){
    velocidadeXBolinha *= -1;
  }
}

No meu caso a raquete do oponente sumiu e a balinha parou de movimentar.

let xBolinha = 300; let yBolinha = 200; let diametro = 15; let raio = diametro /2;

let velocidadeXBolinha = 2; let velocidadeYBolinha = 2;

//variaveis da raquete let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 10; let raqueteAltura = 90; let colidiu = false;

//variaveis do oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeyOponente;

function setup() { createCanvas(600, 400); }

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); rect(xRaquete,yRaquete, raqueteComprimento, raqueteAltura); mostraRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); verificaColisaoRaquete(xRaquete, yRaquete); mostraRaquete(xRaqueteOponente, yRaqueteOponente); movimentaRaqueteOponente(); verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente); }

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(x, y) { colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio); if (colidiu){ velocidadexBolinha *= -1; } }

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

ReferenceError: collideRectCircle is not defined 5.js says: [sketch.js, line 75] "collideRectCircle" is not defined in the current scope. If you have defined it in your code, you should check its scope, spelling, and letter-casing (JavaScript is case-sensitive).

Conseguem postar o link dos projetos?

Provavelmente, falta incluir a biblioteca de colisão que tem a função "collideRectCircle".

Gabriel aqui os links, o incorporara:

tela cheia: https://editor.p5js.org/Vida-Morte/full/J2S-fIJW4

editar: https://editor.p5js.org/Vida-Morte/sketches/J2S-fIJW4

Romeu o link tá logo a cima. Rudson vamos ver se o pessoal consegue ajudar agente.

Marcelo Camata, acho que você comentou linhas que não era pra ter comentado, comentar é os //.

Quando você comenta uma linha o computador não a lê nem executa. exemplo:

let xRaquete = 55; o computador lê.

// let xRaquete = 55; o computador não lê.

por GABRIEL DE JESUS FILHO | 1061.9k xp | 666 posts TÉCNICO JUDICIÁRIO : ÁREA ADMINISTRATIVA 2 dias atrás Por favor, clique no botão </> para colocar o código formatado aqui no fórum.

Você incluiu a biblioteca p5.collide2d.js e incluiu o link dela no index.html?

Osni Cecco Sim, inclui a biblioteca e link dela no index. E valeu pelo </> para colocar o código formatado se eu sabia, eu esqueci.

Queria ter respondido a todos antes, mas estava meio apertado.

pessoal achei o problema, sabe o Sketch Files p5.collide2d.js, a pasta esta vazia, diferente do vídeo que tem conteúdo.

oi Osni.

olha só, parte da solução:

Voce declarou a função :

let raqueteComprimento = 10;

Depois quando a usou, escreveu errado, inverteu.

function mostraRaquete(){
  rect(xRaquete, yRaquete, ******comprimentoRaquete******, raqueteAltura);
}

Outro problema, esta na função:

function colisaoMinhaRaqueteBiblioteca()

Eu a comentei na função draw, e o jogo voltou ao normal, com a bolinha e uma raquete e movimentos. Corrija isso e olhamos mais depois da correcão.

O seu problema, foi o melhor do dia, no melhor sentido. Que trabalho pra encontrar isso. kkk boa sorte.

solução!

Pessoal consegui, de um jeito meio estranho mas consegui. Eu abri o arquivo no Visual Studio Code, salvei como: p5.collide2d que funcione coloquei ele dentro do Sketch Files pelo Upload File, e alterei o código no index. html para:

O Romeu Aparecido de Oliveira já ajeitei, valeu.

Ótimo!! Parabéns!!

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