【问题标题】:Asynchronous input in LuaLua 中的异步输入
【发布时间】:2010-10-24 07:26:56
【问题描述】:

In a related question I asked how to get input via IUP。这工作得很好,除了它通过系统,并且受制于对游戏来说不是最佳的重复率。我真正想要的是在给定时间获得任何键的当前状态的能力。有没有办法做到这一点(通过 IUP 或其他方式)?

【问题讨论】:

    标签: asynchronous input lua


    【解决方案1】:

    您可能需要包装对适当 Win32 API、DirectX 或 lua 模块中的任何内容的调用。在 IUP 中捕捉击键事件需要通过“正常”的 Windows 消息机制传递到窗口或控件,这可能不是游戏框架中的最佳方法。

    您可以使用 IUP 计时器对象按计划运行重绘,但您仍然需要一种方法来收集键盘状态。如果您想使用游戏手柄、操纵杆或键盘和鼠标以外的任何 HID,那么 IUP 在任何情况下都不会直接提供帮助。

    只需将少量 C 代码编译为 DLL,即可轻松完成。

    对于某些类型的 API,使用 SWIG 可以轻松完成。其他人将进行足够的设置/拆卸工作,以使手工包装更容易。

    还有用于 Lua 的 Alien 模块,它允许从纯 Lua 直接调用任意 API。 Alien 包含在 Lua for Windows 的一部分中,以及通过其在 Luaforge 的项目页面。 Alien 本身甚至可以在一定程度上跨平台移植,尽管你不会用它来调用它。

    当您沿着这条路走时,还需要注意一个或多个现有游戏引擎。通常,它们将事件循环隐藏在引擎内部(IUP 也是如此),但它们针对游戏构建而非桌面应用程序进行了优化。

    我在 Lua 邮件列表中听到了一些传闻。因为经常提到它而想到的一个是LÖVE

    【讨论】:

    • 我目前正在研究 LÖVE,到目前为止我印象深刻。这似乎是我一开始就在寻找的东西。
    猜你喜欢
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2013-05-04
    • 2021-10-06
    • 2011-08-13
    • 1970-01-01
    相关资源
    最近更新 更多