回 帖 发 新 帖 刷新版面

主题:游戏中的键盘控制对象是如何实现的?求救!

例如:
    飞机游戏中,当按下方向键,飞机就立刻相那个方向移动了,但在MFC编程时,如果用onkewdown,则会有键盘延迟的问题,即按下键盘后,需要延迟一小段时间,即使用SystemParametersInfo把键盘的延迟修改都最小,但延迟还是很明显的,请问飞机游戏是如何解决这个问题的?

回复列表 (共5个回复)

沙发

用GetAsyncKeyState函数!

板凳

onkeydown时设置标志位,onkeyup时清除这个标志位。
然后在主循环中判断这个标志位的状态。

3 楼


这个方法我也试过,一般情况无问题,但是方向转换时,例如从"按左键"转为"按右键"时,有时候依然有延迟,有时就不会

4 楼

可以试试用Accelerator(加速键),且不用关联到菜单,因为keydown是在有输入焦点的窗口才能引发,而Accelerator是在主窗口捕获消息的,只要在游戏程序内,无论何时按下某个键就会执行。

5 楼

你基于MFC架构当然MFC就一定已经提供了解决的方法。只是标准的游戏开发是会自己写个键盘模块,来接管系统级的键盘管理

所以,建议直接用成熟的游戏引擎来做。或自己去试着写个游戏开发包,这样精进效果才明显!

我来回复

您尚未登录,请登录后再回复。点此登录或注册