Смещение мыши по положению камеры - PullRequest
0 голосов
/ 11 мая 2018

В моей игре мне нужно получить шестиугольник под мышкой.Это работало хорошо, прежде чем я добавил систему камер, чтобы позволить мне иметь большие шестиугольные сетки, которые выходят за пределы экрана.Если я перемещаю камеру, она начинает странно себя вести и не получает правильный шестиугольник.

Я попытался вычесть положение камеры (определяемое как cam.x и cam.y) из положения мыши, вычтя положение мышииз положения кулачка.Очевидно, я мало представляю, что я должен делать в этой ситуации.

Вы можете увидеть соответствующий код ниже.

        if button==3 then
            local hovering=hexGrid:containingHex(x,y) -- get hexagon at mouse position onclick
            if hovering then
                local data=hexes.getHexagon(hovering)
                data["text"]=data["text"]=="1" and "2" or "1" 
            end             
        end

1 Ответ

0 голосов
/ 11 мая 2018

Оказывается, что модуль камеры, который я использую - gamera - имеет две функции, называемые «toScreen» и «toWorld», где последняя исправила мою проблему.

Я получаю положение мыши (этот кодвнутри love.update), а затем преобразовать его в мировые координаты, используя toWorld.

local mx,my=love.mouse.getPosition()
local worldMx,worldMy = cam:toWorld(mx,my) -- convert mouse positions to their world coordinates
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...