在Love2D中使用Lua获取鼠标位置并播放声音

时间:2018-12-05 13:06:29

标签: lua love2d

我正在为视力不佳的人编写一个小游戏,但是我很难确定鼠标的位置。让我解释一下:

我需要知道鼠标光标在表中的位置,而无需单击,然后我想播放声音。每个位置的声音都会不同。有什么想法吗?提前致谢!

例如,当鼠标位于第一个框上时,将播放音频“ a1”,当鼠标位于第二个框上时,将播放音频“ 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 :(得分:0)

我认为问题的一部分与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

只有2个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)

或者另一个选择是假设您选择2D区域,使用4个x坐标和4个y坐标