Я бы предложил получать координаты передней части головы змеи каждый раз, когда она движется (возможно, в каждом кадре).
Затем используйте snakeHead.style.display = 'none';
, чтобы временно скрыть голову змеи (Вы переделаете это снова перед рендерингом)
Затем document.elementFromPoint(x, y)
, чтобы проверить, какой элемент находится прямо под передней частью змеиной головы.Может быть, добавить класс с именем collidable или что-то еще для всех элементов, вызывающих столкновение, и протестировать
var class = ' '+document.elementFromPoint(x, y).className+' ';
if(class.indexOf(' collidable ') > -1){
alert('Collision!');
}
Затем, конечно, заново показать голову змеи:
snakeHead.style.display = 'whatever is was before probably inline';
ПростоИдея.
elementFromPoint также имеет хорошую совместимость с браузерами: http://www.quirksmode.org/dom/w3c_cssom.html#documentview
Дайте мне знать, как это работает:)