Вопрос

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

Это было полезно?

Решение

Скорее всего, вам понадобится заключить вызовы в соответствующий Win32 API, DirectX или что-то еще в модуле lua. Для захвата событий нажатия клавиш в IUP необходимо, чтобы они были доставлены в окно или элемент управления через «нормальный» режим. Механизм сообщений Windows, и, вероятно, не лучший подход в игровой среде.

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

Это легко сделать с помощью небольшого количества кода на C, скомпилированного в DLL.

Это можно сделать довольно легко с помощью SWIG , для некоторых видов API. Другие возьмут на себя достаточно работы по настройке / демонтажу, чтобы легче было просто изготовить упаковку вручную.

Существует также Alien модуль для Lua, который позволяет осуществлять прямые вызовы в произвольные API-интерфейсы из чистого Lua. Чужой включен в состав Lua для Windows , а также на странице проекта в Luaforge. Сам по себе Alien даже несколько переносим между платформами, хотя вы ничего не называете.

Когда вы идете по этому пути, стоит обратить внимание еще на один или несколько существующих игровых движков. Обычно они скрывают цикл событий внутри движка (как и IUP), но они оптимизированы для построения игр, а не для настольных приложений.

В списке рассылки Lua есть слухи, о которых я слышал. Один, который приходит на ум, потому что он упоминался довольно часто, - это L & # 214; VE .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top