![]() video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_1777761974932553732 1. 概述使用Unity引擎,仿照“FlappyBird”设计了一款手势识别的小游戏,原游戏通过点击屏幕控制小鸟,此项目通过手部运动控制小鸟运动,躲避障碍物。由于使用摄像头对手势进行捕捉和识别难度相对较大,此项目中设计了一个简易的手柄,通过单片机、陀螺仪等来判断手部的运动,并通过ZigBee与电脑进行通信。项目开发用时约40小时。 主要功能如下:- 小鸟会自动下落,接收到触发信号之后会上升一段距离。- 能够检测小鸟与树木、地面、以及天空的碰撞,并结束游戏。- 能正确计分,小鸟穿过树木之后积分加一。- 制作简易“手柄”,并能与电脑能通过无线方式自动连接。- “手柄”能够正确识别到手部的运动,并与电脑进行通信。 2. 方案2.1 手势识别方案 对手势进行识别,首先想到的是通过视觉进行识别,由于本人没有OpenCV基础,以及时间比较紧张,所以放弃了这个方案。 在这个项目中,只有能够识别手上下挥动,并给出触发信号就可以,所以第二种方案就是使用传感器来检测手的动作。检测动作的传感器首先就是加速度计、陀螺仪。在智能手机中,这些传感器都是必备的,但是我安卓APP开发也不熟练,以及手机与电脑的通信没有掌握,所以还是想通过自己擅长的,通过搭建的简易硬件平台的方式来实现功能。 这里采用了单片机和加速度计来采集信息,单片机为ARduino Pro Micro,加速度计MPU6050。Arduino Pro Micro体积小,并且有两个串口,调试更方便,最重要的是有Arduino开发平台和相应的开源库文件。MPU6050价格便宜,识别精度在这个项目中也是完全够用,同样的优势:GitHub上有此传感器的很多开源库。(连接方式:MPU6050的SCL、SDA与arduino的SCL、SDA相连) ![]() 图1 MPU6050引脚图以及方向 ![]() 图2 Pro Micro引脚图 2.2 开发软件 由于没有任何经验,这里就采用的比较容易入门的Unity,版本为2019.4.16长期支持版,Visual Studio为2019社区版。 硬件开发使用Arduino IDE 18.1。 2.3 电脑与“手柄”通信方式 a) 有线连接,在游戏过程中手要上下挥动,有线连接的话体验会下降。另外由于“手柄”是使用单片机作为主控,有线连接也要使用UART进行通信,而要改为无线通信的话难度并不大。 b) WiFi Socket通信,这是与使用安卓APP的方案配套的通信的方式,此方案无论是硬件还是软件来说较优的,但是由于“手柄”采用的单片机,要实现Socket通信的话就要使用ESP8266等WiFi开发板或者增加WiFi模块,会给硬件开发增加很多困难。所以这个方案也暂时放弃了。 c) 蓝牙串口通信,这种方案需要电脑多接一个USB转串口的设备和一个HC-06(05)蓝牙模块,手柄端接一个HC-06(05)。这个方案的问题是配对有一些麻烦。 ![]() 图3 HC-06与Arduino连接方式 d) ZigBee串口通信,相比于蓝牙的方案,使用ZigBee模块只要在第一次设置好波特率、通信方式和频道,之后上电便可以自动连接。这个方案的问题就是成本会增加很多,不过我手上恰好有多余的ZigBee模块,这个问题就可以暂时忽略。 ![]() 图4 ZigBee模块 3. 效果及测试1) 在电脑上插上USB转串口线以及ZigBee模块作为接受端。 ![]() 图5 电脑接收端 2) 先打开“手柄”,上下晃动手柄,发送端以及接收端指示灯都会闪烁。 ![]() 图6 “手柄”成品图 3) 将手柄固定在手上,然后打开游戏,电脑与“手柄”会自动连接。 4) 电脑端控制台输出“Connection established”,表示与手柄连接成功,如果输出“Connection attempt failed or disconnection detected”则要检查端口号是否改变。 5) 游戏开始之后,上下挥手,控制小鸟上下移动,穿过树枝,得分加一。 ![]() 图7 最终游戏界面 6) 小鸟装上树枝或者撞上地面,游戏结束,小鸟停止移动。 4. 遇到的问题及解决方法a) 参照网上教程,设置好串口波特率以及端口号,串口可以正常打开,但是不能读取数据,一读取Unity就会卡死。 解决方法:使用第三方插件SerialComm,解决卡死问题。 b) 使用第三方插件之后,软件可以与串口建立连接,但是发送数据之后,Unity没有debug输出。 解决方法:测试了很长时间,发现那个插件默认一组数据是以换行符结尾的,发送数据的时候没有发送换行,Unity就默认这一次数据传输没有结束,在数据的结尾加上换行符解决 c) 不能自动切换端口号,需要在Unity中手动修改,如果端口号改变的话,需要重新修改。 ![]() 图8 端口号手动修改 d) 由于“手柄”采集信号的频率比较高,在一次挥手期间会检测到多次加速度超出阈值的情况,挥手一次就产生多个触发信号。 解决方法:在Unity中设置Bird两次上升之间的时间差,每0.15秒只能接收一此触发信号。 e) MPU6050初始化非常慢,在调试阶段Arduino与电脑通过USB数据线相连,每次开启串口时Arduino都会复位,而复位之后MPU6050初始化需要1秒以上时间,导致在开始后无法控制。(见下图,建立连接到接收到第一个Trig信号间隔了1秒时间) ![]() 图9 MPU6050初始化 解决方案:Arduino开发板与电脑之间通过USB转串口线相连,先给Arduino上电,MPU6050初始化成功之后再打开游戏。 5. 后续改进思路a) 增加开始界面,不要程序一运行就开始。b) 游戏结束后增加重新开始按键,现在只能停止才能重新开始。c) 增加不同的难度档位。d) 增加端口号选择框或者自动选择。e) 手柄采用2S航母电池,重量很重,改进可以换小电池,改用STM32,减轻重量,减小体积,可能的话可以自己画PCB,设计外壳。 6. 开发过程总结从零开始学习Unity和C#,最后三天才开始做,所以说时间还是很紧张的。虽然还有很多需要完善的地方,不过自己还是很满意的。 之前基本只用过C和C++,这次用了C#,感觉上手还是挺快的,基本没有什么门槛,C#和Unity配合一起做游戏比C语言写游戏简单得多得多了,基本上找几个教程视频,照着操作一下就能做出成品了,而且不光简单,做出来的效果还好。 我觉得这个项目的难点就是电脑和单片机通信,因为没有这方面的经验,就查了很多的资料,自己也尝试自己写C#的串口通信代码,但是没有成功,最后还是借助第三方的插件实现的通信。 因为我是比较擅长也比较热衷于单片机这类偏控制的硬件,这次做这个小项目能把软件和硬件结合起来,我觉得也是提供了一个思路,可以利用C#和Unity来写单片机控制的上位机,对于之后肯定是有很大帮助的。 7. 参考代码或教程[1](GitHub)Arduino MPU6050库 ElectionicCats/MPU6050 https://github.com/ElectronicCats/mpu6050 [2](Bilibili) [Unity游戏开发教程]-0.1Flappy Bird https://www.bilibili.com/video/BV1cx411D7Px [3](Bilibili) [极客学院]Unity3D入门教学+附c#编程基础 https://www.bilibili.com/video/BV19x41127BP 本文部分图片和文字来自公开文献如有使用不当之处请私信告知- END - 相关阅读 VR实践|基于Unity3D的谢尔曼坦克世界 VR实践|基于WMR平台的射击游戏《代号美洲豹》 VR实践|用Unity开发一个简易的小球跑酷游戏 AR实践|基于Unity的传送门——穿越如此简单 VR实践|逃离双子岛 VR实践|一款基于Unity3D的FPS游戏 VR实践|用增强现实玩大富翁,有趣又便携 VR实践|旋风鸡蛋——一只鸡蛋闯荡AR迷宫 VR实践|无限城市VR跑酷 VR实践|基于Unity3D的音频可视化 VR实践| 基于 Kinect 和九轴传感器的虚拟潜泳 |
[VR交流学习] 群星召唤者(Starcaller)vr
游戏视频: [austglcmp=1,650,500,0 extcredit=0]https://media.st.dl.pinyun
[VR交流学习] 直升机模拟器VR 2021-救援任
游戏视频: [austglcmp=1,650,500,0 extcredit=0]https://media.st.dl.pinyun
[VR交流学习] 流齿轮赛车(Flow Gear Racin
游戏视频: [austglcmp=1,650,500,0 extcredit=0]https://media.st.dl.pinyun
[VR交流学习]卡纸!(Paper Jam!)vr game
游戏视频: [austglcmp=1,650,500,0 extcredit=0]https://media.st.dl.pinyunc
本站内容全来至于网络收集,用于学习交流请24小时内删除
网站VR学习交流资源更新时间2天/更新1/次,如侵犯到贵公司版权请来信.
本站非实际运营网站,所载全部信息内容均仅作为软件系统功能测试之用,请适量下载.
1.冲VIP送500G 移动硬盘/U盘活动进行中 2.独家VR汉化游戏,拥有PC客户端,5条下载通道
本站不会以任何形式发布、破解、制作盗版中国VR游戏内容,请大家支持中国VR行业发展