Коллизия объектов Canvas

У меня есть 2 объекта - Персонаж и монетка. У монетки есть ключ со значением true, и пока она true я рисую монетку на холсте. Вот условие с коллизий

if(player.x + player.width >= coin.x && player.x + player.width <= coin.x + coin.width) { 
 coin.status = false; 
 player.score++; 
 }

Статус монетки становится false и она больше не рисуется при пересечений объектов. Проблема в том, что я не могу сообразить как мне прибавить очко игроку нормально. У меня получается, если находится в этом диапозоне, то очки будут прибавляются бесконечно. Игра находится в бесконечном цикле, где все перерисовывается. Поэтому я вызываю функцию генераций монетки. Код игры : https://github.com/woody21978/game/blob/master/test.html (тут коллизия не обновлена) игра в браузере:https://woody21978.github.io/game/test.html


Ответы (1 шт):

Автор решения: Stranger in the Q

Полагаю так:

if (player.x + player.width >= coin.x && 
    player.x + player.width <= coin.x + coin.width) { 
   
  if (coin.status) {
    coin.status = false; 
    player.score++; 
  }
  
}

→ Ссылка