文章目录
-
-
-
- 一、需求概述
- 二、需求思考
- 三、JoyStick游戏杆编程方法
-
- 1. 基于底层操作直接操作游戏手柄
- 2. 使用Windows下的API
- 3. 使用Directlnput或者XInput技术
- 4. 使用joystick接口库
- 四、总结
-
-
最近由于项目需要采集游戏杆的二维运动数据。
一、需求概述
采集模拟飞机器中驾驶杆、油门和脚蹬的数据异机驱动(模拟飞行软件)。
二、需求思考
经查阅资料知道操纵杆、油门和脚蹬都属于输入设备,而飞行模拟类游戏使用飞行杆,绝大多数是直接采用飞机飞行控制杆作为原型去设计的,可以说具有很强的仿真度,游戏摇杆利用前后左右拨动直接影响着飞行游戏中的飞行状态。
什么是游戏杆br> 游戏杆属于输入设备是人或外部计算机进行交互的一种装备,用于把原始数据和处理这些数据的程序输入到计算机中。键盘,鼠标,摄像头,扫描仪,光笔,手写输入板,游戏杆,语音输入装置等都属于输入设备。
对需求分解:
- 采集模拟飞行器中驾驶杆、油门和脚蹬的数据。使用到的技术点是游戏杆编程
- 驱动的过程中采用开源的xplaneconnect库
X-Plane Connect(XPC)工具箱是一个开源研究工具,用于与商业飞行模拟器软件X-Plane进行交互。 XPC允许用户使用C,C ++,Java,MATLAB或Python编写的功能通过 络实时控制飞机并从X-Plane模拟飞机接收状态信息。 该研究工具已用于可视化飞行路径,测试控制算法,模拟有效空域或生成用于内部飞行模拟软件的窗外视觉效果。 可能的应用包括对XPlane仿真的主动控制,飞行可视化,在飞行过程中记录状态或通过UDP与任务交互。
三、JoyStick游戏杆编程方法
获取游戏杆输入的方式有种:
1. 基于底层操作直接操作游戏手柄
通过底层开发接口或者读取设备直接访问。这样的操作比较复杂,但也未必能够达到所需要的结果。直接放弃
2. 使用Windows下的API
这种方式是直接使用来读取的C++代码程序,而游戏手柄相关的函数都封装在 Winmm.dll 中。相应的头文件是 Mmsystem.h, 链接时需要链接 Winmm.lib。这里大家可以直接访问官 或者访问https://blog.csdn.net/qq_17525633/category_9865804.html 这里已经总结好了。
缺点:使用中的有一些弊端,就是只能获取四个按钮的按键的消息,不能获取个方向键的消息。如果不获取按键的状态使用它就很方便了。
在 windows 系统中,是通过一个系统服务来实时监控游戏手柄的状态的。这个系统服务最多可以同时监控两个游戏手柄,每个游戏手柄最多可以有四个控制键。我们在程序中既可以直接读取游戏手柄的位置信息和按键状态,也可以通过监控相应的系统消息的方式来获得游戏手柄的信息。
3. 使用Directlnput或者XInput技术
是微软提供的一个输入设备的,用于结合键盘、鼠标、摇杆,或其它的游戏控制器。如果是想要在Windows平台下使用摇杆的,可以参考Directlnput和XInput这两篇文章。
如果是游戏开发,可能对操纵杆或者输入设备的操作比较复杂,而且对兼容性要求较高,而和提供的接口比较全面,而且和的技术结合紧密。所以这个技术应该是开发平台游戏的不二选择了。
4. 使用joystick接口库
-
libenjoy。这是一个简单的操作接口库,使用C语言实现,可以与C++应用程序一起使用。
-
SDL-mirror/SDL。这个是一个全面的跨平台媒体/游戏开发库。
四、总结
对游戏杆编程有了新的认识,并介绍了几种读取游戏杆输入的方式。
个人比较喜欢接口库,使用造好的轮子很方便。但是平台微软提供的库也很方便。
推荐学习文章:
- 游戏手柄(JoyStick)编程学习笔记(1)
- 游戏手柄(JoyStick)编程学习笔记(2)
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!