查看: 1688|回复: 4

OSG中如何响应多个按键同时操作?

[复制链接]

该用户从未签到

发表于 2012-7-19 15:31:51 | 显示全部楼层 |阅读模式
本帖最后由 dslwz2008 于 2012-7-19 15:33 编辑

以漫游器为例,OSG中的对键盘的响应是单个按键的:
比如按下w就往前走,然后再按下a会往左走,就不再往前走了。

但是vrp中的漫游器不是这样的(OpenGL的NEHE教程中也有例子),
比如:它的漫游器是按下w往前走,然后再按下a,会既往前又往左走,就是左拐了。

请问这个效果在OSG中怎么实现?

该用户从未签到

发表于 2012-7-19 22:07:58 | 显示全部楼层
试试osgGA::GUIEventAdapter::getButtonMask() 组合键,通过把键值和返回值与运算应该可以获得
比如,判断是否有a键
getButtonMask() && osgGA::GUIEventAdapter::KEY_A

该用户从未签到

发表于 2012-7-19 22:52:24 | 显示全部楼层
用一个int标识按键状态,用位运算标识按键状态
update的时候从int中获取按键的的状态

该用户从未签到

发表于 2012-7-23 10:33:14 | 显示全部楼层
OSG获取的是来自Windows消息的按键,因此并不能同时得到多个键的信息。您可以考虑替换成查找GetKeyState()的方式,可以参考源代码中的osgdirectinput例子

该用户从未签到

 楼主| 发表于 2012-9-4 14:23:24 | 显示全部楼层
谢谢大家,已经通过记录键盘状态实现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表