Я недавно столкнулся с этой проблемой и в конечном итоге использовал этот плагин jQuery: http://www.48design.de/news/2009/11/20/kollisionsabfrage-per-jquery-plugin-update-v11-8/
Это отлично подходит для обнаружения столкновения объектов. Однако , чтобы определить, когда курсор мыши находится над объектом, я использовал трюк, чтобы создать абсолютный блок inline-block размером 1x1 и всегда располагать его там, где находится курсор мыши..
Итак, когда пользователь перетаскивает, чтобы проверить и увидеть, сталкиваются ли объекты, используйте:
if ($('.cursorBlock').collidesWith('.staticBlock')) {
// objects are colliding
} else {
// objects are not colliding
}
Так что если вы сохраняете 1x1 .cursorBlock
с курсором мыши, как выперетащите, когда курсор находится над элементом .staticBlock
, элемент .cursorBlock
тоже будет, и столкновение будет обнаружено, даже если реальный объект, который вы «перетаскиваете», будет между ними.
Я знаю, что вы не пометили свой вопрос с помощью jQuery, но я подумал, что все равно отвечу, если это поможет вам.