》亲520VR红包来咯
首页 首页 VR新闻资讯 查看内容

VR实践|“FlappyBird”小游戏和手势控制硬件开发

2021-3-12 23:29| 发布者: huhuvrhk1| 查看: 431| 评论: 312

摘要: video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_17777619749325537321.概述使用Unity引擎,仿照“FlappyBird”设计了一款手势识别的小游戏,原游戏通过 ...


VR实践|“FlappyBird”小游戏和手势控制硬件开发

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相连)

VR实践|“FlappyBird”小游戏和手势控制硬件开发
图1  MPU6050引脚图以及方向

VR实践|“FlappyBird”小游戏和手势控制硬件开发
图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)。这个方案的问题是配对有一些麻烦。

VR实践|“FlappyBird”小游戏和手势控制硬件开发
图3 HC-06与Arduino连接方式
d) ZigBee串口通信,相比于蓝牙的方案,使用ZigBee模块只要在第一次设置好波特率、通信方式和频道,之后上电便可以自动连接。这个方案的问题就是成本会增加很多,不过我手上恰好有多余的ZigBee模块,这个问题就可以暂时忽略。

VR实践|“FlappyBird”小游戏和手势控制硬件开发
图4 ZigBee模块

 3. 效果及测试



1) 在电脑上插上USB转串口线以及ZigBee模块作为接受端。

VR实践|“FlappyBird”小游戏和手势控制硬件开发
图5 电脑接收端
2) 先打开“手柄”,上下晃动手柄,发送端以及接收端指示灯都会闪烁。

VR实践|“FlappyBird”小游戏和手势控制硬件开发
图6 “手柄”成品图
3) 将手柄固定在手上,然后打开游戏,电脑与“手柄”会自动连接。
4) 电脑端控制台输出“Connection established”,表示与手柄连接成功,如果输出“Connection attempt failed or disconnection detected”则要检查端口号是否改变。
5) 游戏开始之后,上下挥手,控制小鸟上下移动,穿过树枝,得分加一。

VR实践|“FlappyBird”小游戏和手势控制硬件开发
图7 最终游戏界面
6) 小鸟装上树枝或者撞上地面,游戏结束,小鸟停止移动。

 4. 遇到的问题及解决方法



a) 参照网上教程,设置好串口波特率以及端口号,串口可以正常打开,但是不能读取数据,一读取Unity就会卡死。
解决方法:使用第三方插件SerialComm,解决卡死问题。
b) 使用第三方插件之后,软件可以与串口建立连接,但是发送数据之后,Unity没有debug输出。
解决方法:测试了很长时间,发现那个插件默认一组数据是以换行符结尾的,发送数据的时候没有发送换行,Unity就默认这一次数据传输没有结束,在数据的结尾加上换行符解决
c) 不能自动切换端口号,需要在Unity中手动修改,如果端口号改变的话,需要重新修改。

VR实践|“FlappyBird”小游戏和手势控制硬件开发
图8 端口号手动修改
d) 由于“手柄”采集信号的频率比较高,在一次挥手期间会检测到多次加速度超出阈值的情况,挥手一次就产生多个触发信号。
解决方法:在Unity中设置Bird两次上升之间的时间差,每0.15秒只能接收一此触发信号。
e) MPU6050初始化非常慢,在调试阶段Arduino与电脑通过USB数据线相连,每次开启串口时Arduino都会复位,而复位之后MPU6050初始化需要1秒以上时间,导致在开始后无法控制。(见下图,建立连接到接收到第一个Trig信号间隔了1秒时间)

VR实践|“FlappyBird”小游戏和手势控制硬件开发
图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 和九轴传感器的虚拟潜泳





鲜花

握手

雷人

路过

鸡蛋
| 收藏

最新评论(312)

引用 jennifer24 2021-4-11 00:23
:lol
引用 易启妮 2021-4-11 00:21
广告位,,坐下看看
引用 ★红肩章 2021-4-11 00:20
楼上的稍等啦
引用 早跑了 2021-4-11 00:17
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
引用 _小川b 2021-4-11 00:16
围观 围观 沙发在哪里!!!
引用 ¨佛佛佛佛 2021-4-11 00:11
不错 支持一个了
引用 乐舞允在 2021-4-11 00:10
路过
引用 从沈开始 2021-4-11 00:10
好贴坏贴,一眼就看出去
引用 宁波沙砾 2021-4-10 00:31
LZ敢整点更有创意的不?兄弟们等着围观捏~
引用 石家庄第一帅 2021-4-10 00:15
天啊.
引用 澈未央 2021-4-10 00:15
撸过
引用 ★红肩章 2021-4-10 00:14
路过 帮顶 嘿嘿
引用 hule0911 2021-4-10 00:13
好啊,谢楼主!!!
引用 a86102766 2021-4-10 00:11
回帖是种美德.
引用 小y布衣 2021-4-10 00:08
有空一起交流一下
引用 澈未央 2021-4-10 00:05
楼上的稍等啦
引用 丹东—棉花糖 2021-4-9 00:17
真是汗啊 我的家财好少啊 加油
引用 从沈开始 2021-4-9 00:15
有空一起交流一下
引用 a86102766 2021-4-9 00:13
是爷们的娘们的都帮顶!大力支持
引用 欧阳曜凰 2021-4-9 00:13
好困啊

520VR公告(下载游戏 无流量限制/无速度限制 支持迅雷)

本站内容全来至于网络收集,用于学习交流请24小时内删除

网站VR学习交流资源更新时间2天/更新1/次,如侵犯到贵公司版权请来信.

本站非实际运营网站,所载全部信息内容均仅作为软件系统功能测试之用,请适量下载.

1.冲VIP送500G 移动硬盘/U盘活动进行中 2.独家VR汉化游戏,拥有PC客户端,5条下载通道

本站不会以任何形式发布、破解、制作盗版中国VR游戏内容,请大家支持中国VR行业发展

我知道了(关闭)

版权保护投诉指引|小黑屋|520VR游戏客户端|关于我们|520VR游戏破解汉化玩家交流学习网 |网站地图

Powered by 520VR X3.4  © 2018-2019 版权所有.