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

Uncaught ReferenceError: keyIsDown is not defined (ator: line 20)

//variáveis ator
let yAtor = 366
let xAtor = 105

//variáveis placar

let p1Pontos = 0

let colisao = false 

function mostraAtor(){
image(imagemAtor, xAtor, yAtor, 40, 40)
}

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



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){
      colidiu();
    if(pontosMaiorQueZero()){
    p1Pontos -= 1;
    }
    }
  }
}

function colidiu(){
  yAtor = 366;
}

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



}
function marcaPonto(){
  if (yAtor < 15){
    p1Pontos += 1;
    colidiu();
  }
}

function pontosMaiorQueZero(){
    return p1Pontos > 0;
}

function podeSeMover(){
  return yAtor < 366
}



  {




 }

//ele está reconhecendo keyIsDown(DOWN_ARROW) como variável (só o "keyIsDown")

//https://editor.p5js.org/Virthuz/sketches/4f2Dbb32O

2 respostas
solução!

Fala, Michel! Tudo bem contigo?

O erro está acontecendo porque estamos declarando o segundo if fora da função

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

Vamos deixar assim:


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

Agora, vamos só trocar essa parte:

  if (keyIsDown(DOWN_ARROW)){
    yAtor += 3
    if(podeSeMover()){
    }
  }

Ficará dessa forma:

  if (keyIsDown(DOWN_ARROW)){
    if(podeSeMover()) {
    yAtor += 3;
    }
  }

Significa que "Se" podeSeMover faça com que o yAtor ande 3. O yAtor estava antes e quando chegava o if ele já não fazia nada porque ele dizia: "Ok! Se eu posso me mover, faço o que?" E ficava sem uma ação, por ter sido declarada anteriormente.

Essa parte completa fica dessa forma:

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

Espero ter ajudado, Michel!!!

Bons estudos e vamos em frente!!!

Ok!! Deu certo aqui, muito obrigado mesmo!