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

Colisao nao esta Verificando no lugar certo

Não sei explicar de certeza mas a colisão não esta funcionando para a segunda linha de carros, como meu codigo esta diferente do professor (quiz que os carros fossem em direções opostas, porem não estava conseguindo inverter a imagem então fiz uma ''gambiara'', a ''gambiara'' esta da linha 26 ate a 37, do arquivo CodigoCarro.js, porem a funçao scale estava sendo aplicada nas funções sequentes entao fiz com que o scale ficase sempre impar, para o comprimento e a altura ficar negativo para inverter a imagem, porem mantendo o x e y positivos. Mesmo assim ficou uma bagunça e preciso de ajuda.... Desculpa).

O link do codigo: https://editor.p5js.org/BPTesch/sketches/LyFyxJj_i

2 respostas
solução!

Oi Bernardo, como vai?

Analisando seu projeto pude perceber que utilizou a função scale() em três funções diferentes. Em vez de usar a função scale(-1) e fazer ajustes complicados nas coordenadas, você pode simplesmente usar a função image() normalmente, mas usar valores negativos para a largura e altura para inverter a imagem, como no exemplo abaixo:

function MostraCarro(carro, x, y, c) {
  if (c >= 3) {
    // Carros da segunda linha
    image(carro, x, y, -55, -35);
  } else {
    // Carros da primeira linha
    image(carro, x, y, 55, 35);
  }
}

Dessa forma, você não precisa usar a função scale() ou fazer cálculos complexos nas coordenadas.

Para corrigir a detecção de colisão, você pode adicionar uma verificação separada para a segunda linha de carros no loop da função detectaColisao(). Aqui está um exemplo de como você pode fazer isso:

function detectaColisao() {
  for (let i = 0; i < imagemCarros.length; i++) {
    if (i < 3) {
      if (collideRectRect(xAtor, yAtor, 30, 30, xCarro[i], yCarro[i], 55, 35)) {
        // Houve uma colisão com a primeira linha de carros
        console.log("Colisão com carro " + i);
      }
    } else {
      if (collideRectRect(xAtor, yAtor, 30, 30, xCarro[i], yCarro[i], -55, -35)) {
        // Houve uma colisão com a segunda linha de carros
        console.log("Colisão com carro " + i);
      }
    }
  }
}

Sugiro também, que mantenha o código organizado, pois assim você terá mais visibilidade do que foi feito.

Espero ter ajudado!

Caso surjam dúvidas, fico à disposição.

Abraços e bons estudos!

muito obrigado