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

[Dúvida] Ajuda para usar setTimeout

Boa tarde

Gostaria de usar o setTimeout para criar um delay toda vez que o ator voltar ao inicio, para que demore cerca de 1/2 segundos até que ele volte a se movimentar.

Sou iniciante e tenho dificuldade, então se puderem me dar uma explicação detalhada agradeço.

Segue meu código para ajudar. https://editor.p5js.org/LuizBelice/sketches/eNvLJnsq8

2 respostas
solução!

Oi, Luiz

Criei a variável "stop" para usar no " Ator.js"

// Ator.js
let xAtor = 100
let yAtor = 370
let compAtor = 30
let altAtor = 30
let colisao = false
let meusPontos = 0
let stop = false;  // criada variável

function mostraAtor(){
  image(imagemAtor, xAtor, yAtor , compAtor, altAtor)
}

function movimentaAtor(){
  
  if (stop) return; // encerra aqui  se for true
  
  if (keyIsDown (UP_ARROW)){
    yAtor -= 3
  }

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

if (keyIsDown (LEFT_ARROW)){
    xAtor -= 3
  }

if (keyIsDown (RIGHT_ARROW)){
    xAtor += 3
  }
}

function verificaColisao(){
  for (i=0 ; i<imagemCarros.length ; i++){
  colisao = collideRectCircle(xCarros[i], yCarros[i] , compCarro1, altCarro1, xAtor+15, yAtor+15, 28);
  if (colisao){
    somColisao.play();
    voltaAtorPosicaoInicial();
  if (pontoMaiorQueZero()) {
    meusPontos -=1;
      }
    }
  }
}

function pontoMaiorQueZero(){
    return meusPontos > 0;
}

function voltaAtorPosicaoInicial(){
  xAtor = 100
  yAtor = 370
  stop = true;  // parar o Ator
  setTimeout(function() {
    stop = false;
  },500); // tempo  de 0,5 segundos
}

function marcaPonto(){
  if (yAtor < 9){
    meusPontos +=1;
    voltaAtorPosicaoInicial();
    somPontos.play();
  }
}

function podeSeMover(){
 return yAtor < 370;
}

Perfeito Luis!! Exatamente o que queria, muito obrigado!!