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!