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!