1
resposta

Ator Morte nao mostrando

Ola Pessoal,

Gostaria da ajuda de vocês para resolver uma questão que estou querendo colocar no codigo, porem não estou achando como.

Eu quero mudar a imagem da vaca para uma morta e segurar o jogo na imagem da vaca morta por 2segundos, porem adicionei no codigo na função verificaColisao() para mostrar a imagem do Ator Morto, um pause de 1s e depois ele chama a funcao colidiu para retornar ao inicio pontuando a morte.

Porem percebi que o carro ao tocar no ator ele altera a imagem do ator como esperado, porem nao esta segurando os segundos nessa imagem, antes de voltar para o inicio. eu gostaria de ficar com a imagemAtormorto por mais tempo e o jogo travado, so após os 1s ele voltaria para posição inicial

Obrigado...

Maikel

https://editor.p5js.org/maikelreis87/sketches/ZlKw0NGsu

//Variaveis Ator
let xAtor=100;
let yAtor=366;
let velocidadeAtor=5;
let colisao= false;
let meusPontos = 0;
let pontosMorte = 0;


function sleep(milliseconds) {
  const date = Date.now();
  let currentDate = null;
  do {
    currentDate = Date.now();
  } while (currentDate - date < milliseconds);
}

function mostraAtor(x){
    image(x,xAtor,yAtor,30,30); 
}

function movimentaAtor(){
  if (keyIsDown(UP_ARROW)){
    yAtor -= velocidadeAtor;
  }
  if (keyIsDown(DOWN_ARROW)){
    yAtor += velocidadeAtor;
  }
  if (keyIsDown(LEFT_ARROW)){
    xAtor -= velocidadeAtor;
  }
  if (keyIsDown(RIGHT_ARROW)){
    xAtor += velocidadeAtor;
  }
}

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){
        mostraAtor(imagemDoAtorMorto) //colidiu()
        pausejogo()
        colidiu()
      }
  }
}

function pausejogo(){
  sleep(1000)
}

function colidiu(){
  //volta posicao inicial e marca 1 ponto pra morte
  yAtor = 366;
  mostraAtor(imagemDoAtor);
  pontosMorte += 1;
  voltaPosicaoInicial();      
}



function incluirPontos(){
  stroke(255)
  textAlign(CENTER)
  textSize(25);
  fill(color(255,140,0));
  text(meusPontos, 170, 26);
  fill(color(255,140,0));
  text(pontosMorte,470,26);
}

function marcaPonto(){
  if (yAtor < 15){
    meusPontos += 1
    voltaPosicaoInicial()
  }
}

function voltaPosicaoInicial(){
  yAtor = 366;
}
1 resposta

Fala, Maikel! Tudo bem contigo?

Desculpe a demora em dar um retorno

Pensei se pudéssemos isolar a troca do autor juntamente com o método sleep e assim chamar essa função dentro da colisão.

Acredito que vamos conseguir.

Nos dê um retorno para sabermos se deu certo

Um abraço!