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

O jogo trava quando acontece alguma colisao

A vaquinha trava quando colide ou quando chega na posição final, e ela esta colidindo muito antes de relar no 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;
}

//codigo 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 colidiu(){
  yAtor=366;
}

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

function marcaPonto(){
  if(yAtor<15){
    meusPontos +=1;
    voltaAtorParaPosicaoInicial();
  }
}
function setup() {
  createCanvas(500, 400);
}

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

}



1 resposta
solução!

Olá Kimberly , provavelmente o erro esta no trecho do código onde e declarado a função voltaAtorParaPosicaoInicial(), já que você chamou ela mas não criou a função.

Esse é o código que eu usei na colisão:

 function verificaColisao(){
       //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
             for( var i = 0; i < carros.length; i += 1){
             colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarro, alturaCarro, xVaca, yVaca, 10)
             if (colisao){ colidiu.play();
                   voltaAtorParaPosicaoInicial();

              colisao = collideRectCircle(xCarros2[i], yCarros2[i], comprimentoCarro, alturaCarro, xVaca, yVaca, 10)
                                  if (colisao){ colidiu.play();
                                   voltaAtorParaPosicaoInicial(); 

      }
                 }

                   function voltaAtorParaPosicaoInicial(){
                                    xVaca = 50;
                                  yVaca = 387;

obs: meu codigo esta duplicado por que os carros estão em centidos diferentes.

link do p5.js: https://editor.p5js.org/carlosbarros723513/sketches/wPNcfCeDX

E tem a função" colidiu" no seu código que eu não entendi a função dela se você puder me explicar eu agradeço

     function colidiu(){
      yAtor=366;
        }