Olá Fernando, tudo bem?
Pelo código que você compartilhou, parece que a função colidiu() é chamada sempre que há uma colisão entre o ator e um dos carros, independentemente de qual carro seja. Isso faz com que, ao colidir com qualquer carro, o ator sempre volte para a posição original, independentemente de qual carro tenha sido atingido.
Para corrigir isso, você pode passar como parâmetro para a função colidiu() o índice do carro que colidiu com o ator. Assim, você pode fazer com que o ator volte para a posição original apenas quando colidir com um carro específico.
Para fazer isso, você pode alterar a função verificaColisao() para passar o índice do carro que colidiu para a função colidiu(), assim:
function verificaColisao(){
for(let i=0; i<imagemCarros.length;i=i+1){
if(collideRectCircle(xCarros[i],yCarros[i],comprimentoCarro, alturaCarro, xAtor, yAtor, 15)){
colidiu(i); // passa o índice do carro que colidiu para a função colidiu()
}
}
}
E a função colidiu() deve ser alterada para receber esse índice como parâmetro e verificar se o ator colidiu com o carro correto:
function colidiu(indiceCarro){
if(indiceCarro == carroAtual){ // verifica se o ator colidiu com o carro correto
yAtor=355; // volta para a posição original
}
}
Note que nesse exemplo, estou assumindo que a variável carroAtual é a que indica qual carro é o correto para colisão. Se isso não estiver correto, você pode substituir pelo nome correto da variável que guarda essa informação no seu código.