Получение положения мыши и воспроизведение звука с Lua в Love2D - PullRequest
0 голосов
/ 05 декабря 2018

Я пишу небольшую игру для людей с нарушениями зрения, но мне трудно получить положение мыши.Позвольте мне объяснить:

Мне нужно знать, где в таблице находится курсор мыши без щелчка, а затем я хочу воспроизвести звук.Этот звук будет отличаться для каждой позиции.Какие-нибудь мысли?Заранее спасибо!

например, когда мышь находится на 1-ом блоке, будет воспроизводиться звук «a1», когда он находится на 2-м блоке, «a2» и т. Д.

Я пробовал с:

mouse_x, mouse_y = get_Position()

if mouse_x and mouse_y == map[x][y] then
if map[x][y] == 0.1 then
Audio:play()

Но он делает петлю, и звук продолжает играть вечно!

1 Ответ

0 голосов
/ 10 декабря 2018

Я думаю, что часть проблемы связана с тем, насколько точным может быть 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

Вот изображение, которое объясняет обнаружение, перекрывает ли мышь для ластика линию.

enter image description here

Только с двумя координатами 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-область

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...