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

[Bug] A colisao so esta funcionado no ultimo carro.

Quando fiz o código de colisão do carro com o ator, a colisão so devolve um ressultado se colidir com o carro da fileira de baixo, nao com os outros. obs: Tomei a liberdade de usar outras imagens para fazer o jogo, são imagens d referencia a undertale e mudar alguns detalhe.

Codigo do jogo: https://editor.p5js.org/joaovitorcarmassi/sketches/1bEuBAU2A

2 respostas
solução!

Oi João, tudo bem com você?

Parece que o problema está na sua função verificaColisao(). Atualmente, você está verificando a colisão do ator com o osso apenas na última iteração do loop, pois o bloco de código que verifica a colisão não está dentro das chaves do loop for. Como resultado, a variável colisao é atualizada apenas uma vez, e a colisão é considerada apenas para a última posição do osso.

Para corrigir isso, você deve mover o bloco que verifica a colisão para dentro das chaves do loop for, assim a colisão será verificada para cada posição do osso. Ficaria assim:

function verificaColisao(){
  for(var i = 0; i < xOsso.length; i++) {
    colisao = collideRectCircle(xOsso[i], yOsso[i], 70, 45, xAtor, yAtor, 1);
    if(colisao){
      posicaoInicial();
      if(pontos > 0){
        perderPontos();
      }
    }
  }
}

Certifique-se de incluir as chaves {} para definir o escopo do loop for e do bloco que verifica a colisão. Isso garantirá que a verificação de colisão seja feita para cada osso na posição correta e atualize a variável colisao conforme necessário.

Espero ter ajudado, qualquer dúvida estou à disposição.

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

Oi, João

Faltou usar chaves no "for"


function verificaColisao(){
    for(var i = 0; i < xOsso.length; i++) {
        colisao = collideRectCircle(xOsso[i], yOsso[i], 70, 45, xAtor, yAtor, 1)
        if(colisao){
            posicaoInicial()
            if(pontos > 0){
               perderPontos();
            }
        }
    }
}