Boa tarde.
Ao testar a colisão, caso a mesma aconteça, o padrão é remover 1 ponto do jogador, porem este ponto somente deve ser removido se a quantidade atual de pontos for maior que zero.
Para isso voce deve fazer uma verificação com if conforme o exemplo abaixo:
if (colisao) {
audioColidiu.play();
yAtor = posicaoInicialAtor;
if (pontuacao > 0) {
pontuacao--;
}
}
No seu caso voce esta executando o codigo abaixo:
if (colisao) {
voltaPosicaoInicial();
perdeVida();
somDaColisao.play();
if (pontosMaiorQueZero() {
meusPontos -=1
}
}
Voce testa a colisão, caso aconteça o jogador volta a posição inicial, perde um ponto (aqui esta o erro pois nao verifica se tem mais de zero), em seguida toca o som e depois, ao final, faz uma checagem da pontuação e remove 1 se a pontuação for maior que zero.
Na sua função perdeVida() não existe teste nennhum teste, ela somente remove o ponto:
function perdeVida () {
vidas -=1
}
Parta corrigir seu codigo basta remover esta função ou ajusta-la.