1
resposta

Andar a vaca para os lados e colidir

Boa tarde pessoal, tudo bem?

Consegui seguir os passos do professor e meu programa rodou direitinho, porém agora estou tentando fazer com que a vaquinha ande também para os lados (não só pra cima e pra baixo) e continue executando as funções (colidir nos carros, chegar no topo e retornar ao inicio, etc). A questão é que após eu ter implementado a função da colisão (utilizada através da biblioteca do P5), minha vaquinha parou de andar para os lados e agora só vai pra cima e pra baixo. Segue como está meu código. Obrigado desde já pessoal!

//código do ator:

let yAtor = 370;
let xAtor = 100;
let colisao = false;
let meusPontos = 0;

function mostraAtor(){
  image(imagemDoAtor,100, yAtor, 25, 25);
}

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

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){
      voltaAtorPosicaoInicial();
    }
  }
}

function voltaAtorPosicaoInicial(){
  yAtor = 370;
  xAtor = 100;
}

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

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



1 resposta

Boa noite Caio! Tive o mesmo problema após adicionar o código de colisão, mas estava acontecendo por ter colocado a função voltaAtorPosicaoInicial dentro da função draw (presente no sketch.js). Veja se você não fez o mesmo vendo o sketch.js. E não precisa colocar dentro da função voltaAtorPosicaoInicial o xAtor que vc colocou para iniciar no jogo. Att Natália Ramos