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

Após a ser adicionada a colisão o "carro" não se move

1 resposta
solução!

Olá, Nícolas, tudo bem?

O problema da movimentação está na função acertou.

Note que essa função posiciona nosso jogador exatamente em um X e um Y fixos na tela, portanto ela só deve ser chamada quando algo específico acontecer (como por exemplo, a colisão).

Mas você está chamando ela também na função draw que é repetida várias vezes por segundo. Assim, não importa que a gente clique os botões para mover o jogador, ele vai sempre voltar para aqueles X e Y fixos na tela.

A solução seria remover a função acertou de dentro da função draw e chamá-la somente quando realmente ocorrer uma colisão.

function draw() {
  background(imagemDoCell); 
  mostraPassaro();
  mostraPedra();
  movimentaPedra();
  movimentaPassaro();
  voltaposisao();
  //voltaposisaoPas();
  passouTodaATela();
  pedradaSky();
    //acertou();
}

(No exemplo acima comentei a linha apenas para você ver o que mudou, mas no seu código você pode removê-la!)

Também pude notar que há alguns um erro de digitação no seu código de colisão (a função pedradaSky dentro do arquivo passaro.js)

No collideRectCircle você chama duas vezes o vetor yPedras sendo que no primeiro argumento você deve chamar o vetor xPedras.

function pedradaSky(){
  for (let i = 0 ; i < imagensPedras.length; i = i + 1){
    colisao = collideRectCircle(
      xPedras[i], yPedras[i],
      comprimentoPedra,alturaPedra,
      xPassaro,yPassaro, 
      20);
    if (colisao){
      acertou();
    }
  }

}

Quebrei a linha na própria chamada do collideRectCircle para ficar mais fácil de ver.

Com essas duas alterações seu código funcionará bem! Tanto para mover o jogador, quanto para efetuar as colisões!

Espero ter ajudado!

Reforço que estou à disposição para tirar dúvidas.

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