unity3D AR体感游戏的设计与实现

传统游戏中,人们都通过键盘、鼠标、触摸屏以及手柄游历于游戏世界,弊端是人和游戏交流的肢体仅限于手,长此以往,对人们身心健康无益,特别是对青少年,微软体感设备kinect让人们全身动了起来。随着手游时代的到来,现在主流游戏引擎被unity3d和虚幻打败,unity3d是由Unity Technologies开发的一个让用户轻松创建3维视频游戏、建筑可视化、实时3维动画等类型互动内容的多平台综合型游戏开发工具,是一个全面整合的专业游戏引擎,支持Windows.Mac和Android等多平台。Unity3d开发游戏的优点有:1)相对于传统游戏引擎而言,它的功能强大,支持跨平台运行;

Unity3d拥有非常丰富的插件,如NGUI,Easy Touch.GIF播放工具、UMotion Pro动画制作、地图插件等,能很方便地制作2D和3D游戏;3)支持多个平台,其编辑器运行在Windows和Mac Os x下,可发布游戏至Windows,Mac,Wi.iPhone WebGL(需要HTML5)、Windows phone 8和Android平台,也可以利用Unity web player插件发布网页游戏,支持Mac和Windows的网页浏览[1;4)支持第三者写的各种功能的插件可以快速发布,方便他人快速开发和复用;5)该引擎是3D游戏引擎,渲染游戏效果逼真,可使用3Dmax和maya制作3D人物和游戏模型,只要转换为FBX格式即可使用;6)可以快捷地在AssetStore中购买所需的素材和相关功能插件;7)untiy3d发展至今已成为做手游和中小3D游戏中最方便、最流行的游戏引擎。体感设备品种繁多,而微软开发的KINECT是最成熟的设备,特别是Kinect2.0问世以来,可同时识别6个人,识别范围为0.8 mx4 m,识别的彩色图像为1920×1 080xbbp且30 fps。以往体感游戏的开发都是以微软C++或C#框架为基础,逻辑复杂、开发周期长、3D效果差,而将kinect与untiy3d相结合,使人们能快速地开发出理想的体感3D游戏。

1 AR体感游戏总体设计

1、游戏的原理

运用投影仪将3D游戏模型、玩家的彩色图像以及现实的周围环境投射到墙面,kinect2.0传感器来采集玩家的骨骼、彩色图像和深度图像的数据并传送给unity3d程序,程序根据这些数据来判断玩家的数量和动作,并将玩家动作和游戏中动物模型的动作相结合,增强现实效果,即实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术体感交互,整个系统的布置结构见图1.

2、AR游戏开发的流程

本游戏启动后进入游戏主界面,主界面上显示游戏玩法的介绍,当有玩家出现且被Kinect设备识别时(游戏初始设定仅一个玩家被识别,可更改设定3个同时玩),随后随机进入游戏场景1至场景6,每个场景时间设置1.5min:当被跟踪玩家做游戏中设定的7种动作时,将和场景中动物或动画进行交互。整个游戏的详细流程、人物动作和对应效果见图2.

3、游戏涉及的关键技术、方法和插件

游戏开发用到Kinect v2 Examples with MS-SDK and Nuitrack SDK、微信支付接口调用,untiy3d中动画状态基技术,Kinect捕捉的运动与Mecanim动画结合、体感动作识别,场景切换实例单一化等。

1)Kinect和unity3d的插件包。

目前i插&持unity 版%Unity 2017.1.0,该插件是unity3d为使用Kinect v2而封装microsoft kinect相关的SDK3,在工程中导入该插件即可,其主要功能的管理组件在KinectScripts文件夹中,可在项目中使用它们,具体取决于所需要的功能。

KinectManager是最常用的组件,其与传感器进行交互,并从中获取基本数据,如颜色、深度流以及Kinect空间中主体和关节的位置(单位:m)。

AvatarController的目的是将检测到的关节位置和方向转换为一个操纵的骨架。CubemanController功能类似,但它可与变换和线条一起工作来表示关节和骨骼,以便更轻松地定位跟踪问题。FacetrackingManager处理脸部点和头部/颈部方向。它由KinectManager内部使用来获取头部和颈部的精确位置和方向。InteractionManager用于控制手形光标并检测手柄,释放和点击,最后SpeechManager用于语音命令识别。

2)微信扫码支付功能。

本次开发基于微信支付SDK3.1.1,安装SDK后需要3种资源:微信支付的APPID、微信支付依赖包 libmmsdkjar和1个 Activity类WXPayEntryActivityjava。这里的Activity类直接从之前下载的规范代码拷贝到工程中直接使用。图3是在调起微信支付完成支付(或取消或失败)后,再回到本程序的APP时会调用的一个页面。图4是微信支付时携带的相关参数。整个流程为:提交商品ID和商品数量到服务器;服务器进行处理,并返回一个订单号给APP,通过订单号向服务器发送支付请求;服务器返回给微信支付所需要的参数。

    THE END
    喜欢就支持一下吧
    点赞13 分享
    评论 抢沙发
    头像
    欢迎您留下宝贵的见解!
    提交
    头像

    昵称

    取消
    昵称表情代码图片

      暂无评论内容