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

Bug do Ator que não vai para trás

Pessoal eu estou com um problema no código do jogo da estrada. Quando eu adiciono o código para que o ATOR não suma da tela, a função (keyIsDown(DOWN_ARROW)) não funciona.

segue o link https://editor.p5js.org/JeffersonBraga/sketches/WqiM5uyMk

1 resposta
solução!

Olá Jefferson, tudo bem? Espero que sim!

Você pode tentar fazer desta maneira:

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

Assim o ator não ultrapassará os limites da tela, e andará para trás normalmente.

O código na pasta sketch.js ficará assim:

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

function draw() {
  background(imagemEstrada);
  movimentaAtor();
  ator();
  carros();
  movimentaCarros();
  loopingCarros();
  verColisao();
  placar();
  pontos();
}

E na pasta ator.js ficará dessa forma:

//codigo ator
let yAtor = 366;
let xAtor= 70;
let colisao = false;

function ator(){
   image(imagemAtor,xAtor ,yAtor , 30, 30);
}

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

function verColisao(){
  for (let i =0; i < imagemCarros.length; i++){
    colisao = collideRectCircle(xCarro[i], yCarro[i], aCarros, cCarros, xAtor, yAtor, 5)
    if (colisao){
      colidiu()
    }
  }
}

function colidiu(){
  yAtor = 366;
  if (meusPontos > 0){
    meusPontos -= 1;
  } 
}

Espero ter ajudado!

Caso surjam dúvidas, fico à disposição.

Abraços e bons estudos!

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