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

erro no codigo ReferenceError: collideRectCircle is not defined

function verificaColisao(){ //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter) for (let i = 0; i < imagemCarros.length; i = i + 1){ colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarro, alturaCarro, xAtor, yAtor, 15) if (colisao){ Colidiu() } } }

function colidiu(){ yAtor = 366; }

não sei porque mas esse codigo não funciona de jeito nenhum, já testei em outros cursos mas não vai.

o link do meu projeto: https://editor.p5js.org/Heitor1206/sketches/XLyoirE1d

3 respostas

Olá, Heitor! Tudo bem?

O seu código apresenta alguns erros de escrita, referência e também falta inserir algumas variáveis para que ele funcione corretamente. No entanto o problema maior está na biblioteca collide2d, pois no seu arquivo ela contém alguns elementos que foram traduzidos para o português e, dessa forma, mesmo que todo o seu código esteja correto, o conflito de referência ainda vai existir.

O primeiro passo é arrumar sua biblioteca collide2d, você pode copiar o conteúdo e colar no seu arquivo, certifique-se que vai no idioma original: https://github.com/bmoren/p5.collide2D/blob/master/p5.collide2d.js

Outra coisa é chamar corretamente as referências no seu arquivo index.html:

  <script src="sketch.js"></script>
    <script src="imagens.js"></script>
    <script src="ator.js"></script>
    <script src="carro.js"></script>
    <script src="p5colide2d.js"></script> 

Observe que no seu projeto você chamou a collide2d da forma correta e no arquivo escreveu de outra forma. Para encontrar a referência , os nomes dos arquivos precisam ser exatamente iguais.

Segue o código do carro:

//código do carro

let xCarros = [600, 600, 600, 600, 600, 600];
let yCarros = [40, 96, 150, 210, 270, 318];
let velocidadeCarros = [2, 2.5, 3.2, 5, 3.3, 2.3];
let comprimentoCarro = 50;
let alturaCarro = 40;

function mostraCarro(){
  for (let i = 0; i < imagemCarros.length; i++){
    image(imagemCarros[i], xCarros[i], yCarros[i], comprimentoCarro, alturaCarro);
  }
}

function movimentaCarro(){
  for (let i = 0; i < imagemCarros.length; i++){
    xCarros[i] -= velocidadeCarros[i];
  }
}

function voltaPosicaoInicialDoCarro(){
  for (let i = 0; i < imagemCarros.length; i++){
    if (passouTodaATela(xCarros[i])){
      xCarros[i] = 600;
    }
  }
}

function passouTodaATela(xCarro){
  return xCarro < - 50;
}

continua no próximo tópico

solução!

Do ator.js

//código do ator
let xAtor = 85;
let yAtor = 366;
let colisao = false;
let meusPontos = 0;

function mostraAtor(){
  image(imagemDoAtor, xAtor, yAtor, 30, 30);
}

function movimentaAtor(){
  if (keyIsDown(UP_ARROW)){
    yAtor -= 3;
  }
  if (keyIsDown(DOWN_ARROW)){
    yAtor += 3;
  }
}

function verificaColisao(){
  //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
  for (let i = 0; i < imagemCarros.length; i++){
    colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarro, alturaCarro, xAtor, yAtor, 15)
    if (colisao){
      voltaAtorParaPosicaoInicial();
    }
  }
}

function voltaAtorParaPosicaoInicial(){
  yAtor = 366;
}

function incluiPontos(){
  textAlign(CENTER);
  textSize(25);
  fill(color(255, 240, 60))
  text(meusPontos, width / 5, 27);
}

function marcaPonto(){
  if (yAtor < 15){
    meusPontos += 1;
    voltaAtorParaPosicaoInicial();
  }
}

imagens.js

// imagens do jogo

let imagemDaEstrada;
let imagemDoAtor;
let imagemCarro;
let imagemCarro2;
let imagemCarro3;

function preload(){
  imagemDaEstrada = loadImage("imagens/estrada.png");
  imagemDoAtor = loadImage("imagens/ator-1.png");
  imagemCarro = loadImage("imagens/carro-1.png");
  imagemCarro2 = loadImage("imagens/carro-2.png");
  imagemCarro3 = loadImage("imagens/carro-3.png");  
  imagemCarros = [imagemCarro, imagemCarro2, imagemCarro3, imagemCarro, imagemCarro2, imagemCarro3]
}

sketch.js

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

function draw() {
  background(imagemDaEstrada);
  mostraAtor();
  mostraCarro();
  movimentaCarro();
  movimentaAtor();
  voltaPosicaoInicialDoCarro();
  verificaColisao();
  incluiPontos();
  marcaPonto();
}

Fico à disposição!

Bons estudos!

muito obrigado Camila por ter me ajudado, agradeço muito.