今天有很多赛车游戏,玩这些游戏太有趣了! 通常,在此类游戏中,我们通过使用键盘或操纵杆来控制汽车。 如果我们能够通过手部动作来控制它呢? 此功能将使此类游戏更加有趣,并使开发人员吸引更多玩家。 考虑到这一想法,我们开发了一种使用Unity3D和Arduino的设备,该设备将通过手部运动来控制游戏的玩家对象(汽车)。
Unity是Unity Technologies开发的游戏引擎,在其中我们可以为各种平台制作2D和3D游戏。 它提供对两种编程语言的支持:C#和JavaScript。 Arduino是一个开放源代码的硬件和软件,可与不同的传感器和执行器接口。 Arduino提供了一个IDE,我们可以在其中使用C和C ++语言编写程序并将其上传到Arduino开发板。
如何使用装置:
- 向前移动手以使汽车向前移动,向后移动以使汽车向后移动。
- 左手转左车,右转右转车。
- 从键盘上按1进入第一人称视角,按2进入远摄,并按下3进入正常视角。
建立游戏场景和接口传感器:
游戏场景是使用Unity游戏引擎制作的。 预先提供的Unity Standard资产(车辆类别)的汽车预制件用作游戏的玩家对象。 该设备由一个简单的控制器组成,该控制器由嵌入式传感器MPU6050(加速度计)和4×4键盘矩阵组成。 Arduino用于连接传感器和键盘。 使用Arduino作为接口设备的原因之一是,Unity游戏引擎提供了与Arduino串行通信的支持。
传感器将提供沿所有三个轴(X,Y和Z)的读数。要使汽车沿前后方向移动,请使用X轴值,并使用Y轴将其左右旋转。 此外,我们还连接了一个键盘,可用于在第一人称视角,远距离和普通相机模式三种不同模式之间更改相机模式。 我们已经缩放并形成了这些值,以将其从Arduino Uno串行传递给Unity游戏引擎。
设备设置:
软件要求:Unity游戏引擎和Arduino IDE
硬件要求:Arduino Uno,MPU6050传感器,4×4键盘矩阵,连接线和USB 2.0电缆
下载I2Cdev.h和MPU6050.h库。
将Arduino与带有Arduino的MPU6050连接,并加载“ MPU6050_calibration.ino”并打开串行监视器以设置MPU6050的偏移值。 确保MPU6050稳定且没有移动。 您将获得如下输出:

一旦获得偏移值,就如图2所示,在“ game_arduino.ino”中输入这些值。我们需要在脚本中设置这些偏移值,因为需要稳定这些值,以最大程度地减小这些值的波动。

“ game_arduino.ino”脚本将根据汽车的速度统一缩放加速度计值,并将这些值与使用4×4键盘矩阵获得的值一起依次传递给游戏引擎。 在Arduino中上传该脚本。
一旦Arduino串行监视器上的值可用,即可在Unity游戏引擎中打开游戏场景,更改端口号,并在“ CarUserControl.cs”脚本中将波特率设置为9600,该脚本与Unity Standard Assets提供的汽车预制件的移动相关。 您可以在Assets文件夹中找到游戏场景。

再次构建场景并从Build文件夹中打开.exe文件,或选择Build and Run选项来玩游戏。 这是该设备的演示。
在这里找到项目:github链接
致谢:特别感谢Sumit Goyal为项目提供的指导和帮助,以及我的队友 Hena Ghonia 和Shanaya Mehta。