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

vaquinha parou de movimentar do nada

Gente se alguém mais experiente puder me ajudar eu ficaria muito grata. No meio do projeto a função parou de funcionar e eu não consigo entender o porque, já tentei copiar o código do professor e nada também...e mesmo clicando com o botão esquerdo do mouse ele só não se movimenta mais.

https://editor.p5js.org/eduardagmartins/sketches/yN_BxmIHT

//código do ator

let xAtor = 100;
let yAtor = 366;
let colisao = false;


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

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

  function draw() {
  background(imagemDaEstrada);
  mostraAtor();
  mostraCarro();
  movimentaCarro();
  movimentaAtor();
  voltaPosicaoInicialDoCarro();
  passouTodaATela();
  verificaColisao();
  colidiu();
}
2 respostas
solução!

Oi Eduarda, tudo bem?

Antes de mais nada, tomei a liberdade de editar sua publicação para conseguir ver melhor o código que você enviou.

Se quiser postar diretamente o código aqui no fórum, segue os passos para que você consiga enviar seu código completo:

  • No seu terminal, selecione e copie a seção com o código;
  • Aqui no fórum, procure o ícone </>. É a sétima opção na aba superior do nosso editor de texto;
  • Cole o código copiado entre as duas linhas que surgirem;

Agora referente a sua dúvida, analisei o código enviado e identifiquei o erro.

A função colidiu() faz parte da função verificaColisao() :

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

Sendo assim, quando a função colidiu() é adicionada dentro da função draw() o ator fica impossibilitado de se mover, pois ele estará preso na posição indicada pela condição da função, portanto apenas a função verificaColisao() precisa ser adicionada ao escopo da função draw() :

function draw() {
  background(imagemDaEstrada);
  mostraAtor();
  mostraCarro();
  movimentaCarro();
  movimentaAtor();
  voltaPosicaoInicialDoCarro();
  passouTodaATela();
  verificaColisao();
}

Ao realizar essa pequena alteração o movimento do ator voltará a funcionar.

Espero ter ajudado. Caso tenha outras dúvidas, estarei à disposição.

Grande abraço e bons estudos!

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

Nossa muito obrigada. Ajudou demais S2.