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

[Dúvida] verificaColisao não funciona!

chamei a função verificaColisao no Draw, e não funciona.Por favor se achar algum erro me avisem!

let imagemDaEstrada;
let imagemDoAtor;
let imagemCarro;
let imagemCarro2;
let imagemCarro3;
let colisao=false;
//carros
let xCarros=[600,600,600];
let yCarros=[40,96,150];
let velocidadeCarros=[2,2.5,3.2];

//ator
let yAtor=366;
let xAtor=100;

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

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

function draw() {
  background(imagemDaEstrada);
  mostraAtor();
  mostraCarro();
  movimentaCarro();
  movimentaAtor();
  voltaPosicaoDoCarro();
  verificaColisao();

}
function mostraAtor(){
  image(imagemDoAtor,xAtor,yAtor,30,30); 
}
function mostraCarro(){
  for(let i=0; i < imagemCarros.length;i=i+1){
    image(imagemCarros[i],xCarros[i],yCarros[i],50,40)

}}


function movimentaCarro(){
  for(let i=0;i< imagemCarros.length;i=i+1){
      xCarros[i] -= velocidadeCarros[i];
  }
}
function movimentaAtor(){
  if(keyIsDown(UP_ARROW)){
    yAtor -= 3;
  }
  if(keyIsDown(DOWN_ARROW)){
    yAtor += 3;
}

function  verificaColisao(){
    for (let i=0;i< imagemCarros.length;i=i+1){
      colisao=collideRectCircle (xCarros[i],yCarros[i],50,40,xAtor,yAtor,15)
       if(colisao){
       (colidiu);
     }
  }
function colidiu(){
  yAtor=366

}
}



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

  }
  function passouTodaTela(xCarros){
  return  xCarros <- 50;
  }
1 resposta
solução!

Oii Jessica, tudo bem?

Pelo código que você postou, parece que há um erro de sintaxe na função verificaColisao(). Acredito que seja porque você esqueceu de fechar as chaves da função movimentaAtor() antes de abrir a função verificaColisao().

Tente adicionar uma chave de fechamento ( } ) antes da linha function verificaColisao(){ e veja o que acontece.

Provavelmente outro erro vai acontecer, pois a confusão nas chaves acontece em outras partes do código também. Observe que cada function, for e if são abertos e fechados com chaves ( { } ). Caso uma nova função seja declarada antes do fechamento da função anterior, ela não estará funcional na totalidade do projeto.

Além de movimentaAtor(), isso ocorre também em verificaColisao() e colidiu().

Procurar as chaves e colocá-las em seus lugares é um exercício bem bacana pra compreender melhor seu código! E não se preocupe, é super normal passar por isso quando estamos aprendendo a programar. Você está indo muito bem, seu código em geral está ficando muito legal.

Caso fique alguma dúvida, estarei a disposição. Espero que dê tudo certo!

Abraço e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!