1

在一个相关问题中,我询问了如何通过 IUP 获取输入。这工作得很好,除了它通过系统,并且受制于对游戏来说不是最佳的重复率。我真正想要的是在给定时间获得任何键的当前状态的能力。有没有办法做到这一点(通过 IUP 或其他方式)?

4

1 回答 1

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

于 2009-05-07T00:05:38.800 回答