Я думаю, что часть проблемы связана с тем, насколько точным может быть love2d с его мышью.
Скорее всего, вам придется изменить часть логики в вашем коде, чтобы она была больше похожа на
(есть четыре различных сценария, потому что будет назначен порядок в домах 1 и 2)
if map.x1 < mouse_x < map.x2 and map.y1 < mouse_y < map.y2 or
map.x1 > mouse_x > map.x2 and map.y1 > mouse_y > map.y2 or
map.x1 < mouse_x < map.x2 and map.y1 > mouse_y > map.y2 or
map.x1 > mouse_x > map.x2 and map.y1 < mouse_y < map.y2 then
TEsound.play(soundList, "a1", 1, 0.1)
end
Вот изображение, которое объясняет обнаружение, перекрывает ли мышь для ластика линию.
Только с двумя координатами x и y этот пример, приведенный выше, вероятно, будет слишком точным, и вам, возможно, придется расширить диапазон, которого достигает мышьдобавляя и вычитая небольшие числа на каждой стороне неравенства.
if (map.x1 - 2 < mouse_x and map.x2 + 2 > mouse_x and map.y1 - 2 < mouse_y and map.y2 + 2 > mouse_y)
or (map.x1 + 2 > mouse_x and map.x2 - 2 < mouse_x and map.y1 + 2 > mouse_y and map.y2 - 2 < mouse_y)
or (map.x1 - 2 < mouse_x and map.x2 + 2 > mouse_x and map.y1 + 2 > mouse_y and map.y2 - 2 < mouse_y)
or (map.x1 + 2 > mouse_x and map.x2 - 2 < mouse_x and map.y1 - 2 < mouse_y and map.y2 + 2 > mouse_y)
Или другой вариант - использовать 4 координаты x и 4 координаты y, предполагая, что вы выбрали 2D-область