1
resposta

Ator continua ultrapassando o limite da tela mesmo com a função podeSeMover

Estou com problemas na hora de limitar o movimento do ator, para que ele não ultrapasse a tela. Ele continua desaparecendo quando aperto a tecla pra baixo mesmo depois de feita a função podeSeMover.

//variaveis ator
let xAtor = 85;
let yAtor = 366;
let larguraAtor = 30;
let alturaAtor = 30;
let colisao = false;
let meusPontos = 0;

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

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

function verificaColisao(){
  for(let i = 0; i < imagemCarros.length; i++){
    colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarro, alturaCarro, xAtor, yAtor, 15);
  if (colisao){
    voltaAtorParaPosicaoInicial();
    if (pontosMaiorQueZero()){
      meusPontos -= 1
      }
    }
  }
}
function voltaAtorParaPosicaoInicial(){
  yAtor = 366;
}

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

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

function pontosMaiorQueZero (){
 return meusPontos > 0 
}

function podeSeMover() {
  return yAtor < 366
}
1 resposta

Acho que sei resolver seu problema,

na sua função, na parte : if (keyIsDown(DOWN_ARROW)){ yAtor += 3 if (podeSeMover()){ yAtor += 3; } } }

retire a primeira linha "yAtor += 3", pois nela você está mandando o seu ator continuar se movendo, quando você retirar, em português, seria mais ou menos:

se a tecla "para baixo" for pressionada, e caso o yAtor seja menor que 366, parar de se mover". Ou seja, ela só pode se mover acima do y 366.

a resposta correta então seria:

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

altere isso e veja se funciona, qualquer dúvida poste aqui no fórum novamente que eu tentarei te ajudar.