虚拟现实头盔游戏设计与开发.docx
摘 要1ABSTRACT2第1章绪论3VR研究历史及开发的现状31. 1. 1 VR的研究历史31. 1 VR设备及VR游戏的现状41.1 本次设计的主要意义53论文的主要工作51.4论文的组织结构5第2章VR迷宫游戏设计与开发的框架与思想81 VR迷宫游戏开发平台与框架82. 1. 1 VR迷宫游戏开发的平台82. 1. 2 VR迷宫游戏开发的框架92. 2 VR迷宫游戏设计思想102. 1 VR迷宫游戏内容的设计思想102. 2.1 VR迷宫游戏交互方式的设计思想122.3 VR迷宫游戏的规那么13第3章VR迷宫游戏的交互设计151 VR迷宫游戏的交互方式152.2 VR迷宫游戏的交互流程16VR迷宫游戏交互的内部实现183. 3.1 VR迷宫游戏中操纵人物进行游戏的交互行为的内部实现183.2 VR迷宫游戏中与UI进行交互的内部实现21第4章VR迷宫游戏的测试与评价261 VR迷宫游戏的用户测试264.1.1 VR迷宫游戏测试的硬件条件264. 1. 2 VR迷宫游戏中操纵人物进行游戏的交互行为的内部实现26第2章VR迷宫游戏设计与开发的框架与思想2.1 VR迷宫游戏开发平台与框架VR迷宫游戏开发的平台在本次VR迷宫游戏设计与开发中,我们所使用的游戏开发引擎为Unity 3D开 发引擎以及由暴风魔镜提供的Mojing SDKoUnity 3D是由Unity科技开发的跨平台的游戏开发引擎,可用于开发PC端、 游戏机端、移动端以及网站端的视频游戏。有着便携性这一特点,该引擎的目标为以下API: Windows系统以及XBox360上 的 Direct3D, Windows 系统以及 Mac OS 上的 OpenGL,安卓及 IOS 上的 OpenGL ES 以及视频游戏机的专有API。Unity对该引擎支持的任意平台允许规范化的纹理压缩 以及分辨率设置。它对凹凸贴图、反射贴图、视差贴图,屏幕空间环境光遮蔽(SSAO)、 使用阴影贴图的动态阴影、渲染到纹理和全屏后处理效果也提供支持。Unity的图 形引擎的多平台的特点能够提供一个具有多样性的着色器和一个可表达的可应变的 规范,它能够允许Unity为当前的视频硬件检测最正确的候选者,如果没有合适的, Unity可以退而选择另一个可选的但是会牺牲一些性能特点的着色器。Unity是当下十分火热的高级游戏引擎,为开发者提供了极大的便利,可视化 的操作更是为开发者减少了很大的麻烦,如在Unity对游戏UI进行开发时,可直接 对组件进行拖拽将其拖拽到目标位置,并使用自主布局器对组件的位置进行布局。 在使用布局器布局后,在任何屏幕大小的终端,组件的相对位置不变,极大减少了 开发者的工作量。Unity可开发2D、3D游戏,智能手机端的流行游戏神庙逃亡也为用Unity开发。 为了顺应时代的潮流,Unity中增加了对Virtual Reality的支持,不过在本次VR 迷宫游戏的设计与开发中,由于我们的设备为暴风魔镜小D,我们直接使用了由暴 风魔镜提供的Mojing SDKoMojing SDK是暴风魔镜科技为开发者开发适用于VR眼镜相关app而 开发的SDK,其中包括了头部陀螺仪跟踪、蓝牙手柄适配及交互等功能。Unity在脚本语言中支持C#与JavaScript两种脚本语言,由于MojingSDK为C#语言所编写,为了更方便的进行本次设计与开发,本次VR迷宫游戏设计与开发中 所使用的脚本语言为C#语言。2.1.1 VR迷宫游戏开发的框架本论文在这局部中将简单介绍本次VR迷宫游戏设计与开发的框架,详细介绍将 在第三章给出。由于头戴式设备的特点所致,玩家多从两个方面来与游戏进行交互:通过手柄 交互与通过手机陀螺仪。手柄交互即玩家通过手柄做出行为,如按下ok键、按下menu键、将摇杆向前 后左右推来参与到游戏中,手柄将用户的行为转化成键值传送给游戏,由游戏内部 的脚本文件对这些键值进行处理,如将键值传送给Mojing自带SDK,对玩家行为进 行解析,并且在游戏场景中做出相应的响应,如玩家将摇杆向前推,那么人物前进, 假设游戏为第一人称控制游戏,玩家在将摇杆向前推时,通过代表玩家眼睛的相机的 前移来反响给用户已经前移的事实。在一些游戏场景中,不仅仅存在玩家对场景中 “自己”控制,也存在着与场景中UI的交互,此时通过其它的脚本文件来限定用户 操作的响应者。手机陀螺仪用于对手机的偏转角度进行测定,当玩家将手机组成头戴式设备的 一局部时,手机陀螺仪可以测定用户的头部的偏转,将玩家头部偏转数据传送给游 戏内部的脚本文件(在本游戏中为MojingSDK中的脚本文件),经脚本对数据进行 处理后将该数据转换为游戏场景内相机坐标系的转动,从而向玩家展现随其头部移 动而变换的视角。在本次VR迷宫游戏设计与开发中,我们采用了手柄交互与头控相结合的方式, 具体框架流程见图2-1-1. VR迷宫游戏的开发框架。玩家通过手柄交互控制游戏场景中的人物的移动,并与游戏场景中的UI控件交 互来学习游戏、推进游戏进程。玩家通过转头的方式来观察游戏场景,游戏场景中 的第一人称控制器中的摄像机对玩家转头的行为作出响应并相应地调节摄像机在世 界坐标系中的位置以及旋转角度。在两种交互方法的共同作用下组成游戏的交互框 架,增加玩家的沉浸感以及对游戏的参与度。手柄交互手机陀螺仪手柄键值用户头部移动数据Mojing SDK相机的平移旋转交互相关脚本与UI界面交互用户在场景中 的行为用户所看到参与到的游戏场景图2TT VR迷宫游戏的开发框架2. 2 VR迷宫游戏设计思想2. 2.1 VR迷宫游戏内容的设计思想在 Morgan. Kaufmann 的 Game Design Workshop, Second Edition: APlay-centric Approach to Creating Innovative Games 一书中,我们知道游戏是 一个封闭的形式化的系统,在这一系统中设置了一系列结构化的冲突来吸引玩家积 极参与,让玩家通过努力来把这一不确定性消除。同时书中也告诉我们,作为一个 游戏,要具有形式要素和戏剧化要素。形式化要素为以下几点:玩家(Palyer)、 目标(Objective)、过程(Progress)、规那么(Rule)、资源(Resource)、冲突(Conflict) s 边界(Boundaries)与结果(Outcome)。戏剧化诸如挑战性(Challenge)、玩耍(Play)、 前提(Premise)、人物(Character)、故事情节(Story)、世界架构(World Building)、 戏剧弧(Dramatic Arc)。尽管VR游戏是在头戴式设备上进行显示与交互的,交互方式与其它的游戏有较 大的区别,但是它仍然属于游戏这个大范畴中,所以我们根据以上理论来设计了我 们这次的VR迷宫游戏。结合VR沉浸式的特点,我们选择了迷宫来作为游戏的主题。平日我们所见过的 迷宫多为二维平面迷宫,往往是一个平面图,上面用线来代表墙体,没有线阻拦的 地方为通路,这类游戏根据迷宫复杂度有一定的难度与趣味性。后来在一些公园或 游乐园等地方出现了真人迷宫,即用植物(如冬青)来组成墙体来阻碍玩家的行动, 让玩家真实的进入迷宫并努力走出迷宫。这类游戏玩家参与性更强,玩家充当了游 戏中的一个局部进入到游戏中,也更有趣味性。而这次VR迷宫游戏正是以这为原型 而设计,通过丰实细节,提高其趣味性,是其更加吸引玩家。在本次VR迷宫游戏中,玩家以第一人称操控场景中的角色,能更好的使玩家沉 浸,目标即为走出迷宫。为了增强难度以及趣味性,在迷宫中玩家可以选择答题,通过答题可获得通关 道具,此时目标变更为走出迷宫并获取相应的通关道具。为了进一步增强游戏难度 使游戏更富有挑战性,游戏设计了计时模式,在计时模式中,目标有会有所变更: 在限定时间内走出迷宫并获取相应的通关道具。在本游戏中玩家持有的资源即为时间与通关道具,通关道具通过答题获得。玩 家答题为自主选择,即并不需要在进入每个答题点进行答题,但是规那么对答题正确 及通关道具的数量有下限限制。冲突即为计时模式中在有限时间内走出迷宫并获得 要求数量的通关道具。本游戏将结果笼统的分为两大类:成功走出迷宫与未能成功走出迷宫。而在这 两大类中,存在着时间这一变量,即两大类的结果中会因时间的不同出现更多的结 果,时间的差异会对玩家的反映有一定的影响:在第二次的尝试中刷新了上一次的记录,这可以让玩家产生一定成就感并且为挑战自己而对游戏持续性存在兴趣。2. 2.1 VR迷宫游戏交互方式的设计思想在本次VR迷宫游戏中,我们采取了头控与手柄控制相结合的方式来让玩家与游 戏进行交互。本游戏中采用了第一人称控制,通过手机的陀螺仪来获得玩家的头部动作,并 通过对数据进行处理将玩家动作反映在游戏场景中,以视角的变化来直接的反响给 用户。通过手柄来进行玩家与UI控件的交互并且移动当前玩家在游戏场景中的位置。UI控件被设定固定于玩家视角正前方,就像眼镜上显示的东西一样。如果UI 控件固定于游戏场景中的某一地点,在本游戏中会对玩家造成一定困扰,因为玩家 在游戏进行中是处于一种移动状态,在游戏中假设玩家想通过UI对游戏进行操作如暂 停退出等,那么需移动到固定地点来进行操作,这是十分不方便的。但UI被设定于固 定距离处且随玩家移动而移动时,无论玩家如何转动视角UI都在眼前,此时玩家与 UI的交互是十分方便的。其次,本游戏中玩家可以在游戏未开始阶段通过与UI进 行交互,即查看帮助,来了解游戏,也可通过UI对游戏模式进行选择,选择玩家自 己当下更感兴趣的一种游戏模式来进行游戏。在这一阶段,玩家与UI的交互是主要 目标,通过与UI的交互来了解、开始游戏,此时UI总出现在玩家眼前并占有较大 的视觉空间能够起到强调左右,引导玩家首先与UI进行交互。在游戏中可通过手柄调出游戏中UI界面这一点可以使玩家在游戏中获得一定 的主动权,在能够控制全局的情况下,玩家往往更加富有自信。在对UI界面的设计中,由于我们选择的交互界面为图形用户界面,所以我们遵 循了图形用户界面设计的一般性原那么。游戏中局部按钮图标采用了隐喻的方式,用图形代替文字,这是因为用户对于 图形的认知度高于文字。但是为了防止玩家的对图标的误解,按钮周围也会出现少 量的文字进行辅助解释(图2-2-1 VR迷宫游戏的UI展示图)。图2-2-1 VR迷宫游戏的UI展示图因为玩家是通过手柄与UI进行交互,并不能切实的触碰UI与之交互,所以部 分UI控件诸如按钮之类需要一定方式来说明玩家选择(此处选择并不代表点击,为 点击前的动作)了它,在本游戏中,我们采取对玩家选中的按钮进行一定的放大来 进行反响,能与未被选择的其他按钮有明显区别。针对向退出游戏、重新开始游戏这类会对游戏结果产生重大影响的操作,我们 设定了警示框来要求用户进行确认。对玩家持有的游戏资源,即小旗数目与星星数目,我们将其以图形及数字相结 合的方式显示在玩家所见画面上方。已用时间或当前所余时间也以平日所见的时间 显示方法进行表示,并显示在画面的右上方。以上措施可以让玩家对当前资源有直 观了解。在对手柄的使用上,我们充分利用手柄上的已存按钮,玩家可通过手柄进行选 择、确认、返回、调出菜单、放置小旗、回答下列问题等功能。2. 3 VR迷宫游戏的规那么本游戏共有两种模式可供用户选择:休闲模式与计时模式。练习模式即为不限时模式,玩家可在随意时长中努力走出迷宫,走出迷宫计时 即停止,可以帮助玩家来提高自己的能力,更加熟悉游戏的玩法并且在计时模式中 取得较好的成绩。对于面对倒计时会有一定紧张的玩家,休闲模式也是不二的选择, 当然努力克服自己的紧张取得较好的成绩是为最正确。计时模式即为倒计时模式,玩家被要求在给定时间内走出迷宫并完成任务,即 正确回答下列问题的数量。该模式下可增强玩家的紧张感,增加紧张感的同时会增加一 定的沉浸感,玩家能够很好地进入游戏环境中。在该模式下,限定时间内走出迷宫 并到达要求会激发玩家的挑战心理,能够吸引住玩家。两种模式的区别仅为不限时与限时,游戏要求没有其它区别。玩家被置于迷宫入口,在游戏进行中,通过按下手柄上的0K键来放置小旗对迷 宫地点做标记,小旗的数量为有限数量,放置小旗可以对迷宫地点进行标注辅助玩 家走出迷宫。在迷宫一些带有问答环节标记的地点,玩家可自主选择进入问答标记 所标记的问答区域来进行答题,玩家可通过答题来积攒星星,星星数到达要求数量 即为通关。玩家所持有的小旗以及星星数量将会在一直显示在玩家视角上方。第3章VR迷宫游戏的交互设计2.1 VR迷宫游戏的交互方式在目前的一些VR游戏中,一般分为两种主要的交互方式:手柄控制与头控。关 于这两种交互方式的一些区别,本论文在第二章VR迷宫游戏设计与开发的思想与框 架中VR迷宫设计与开发的框架中已有介绍,所以在这里我们将从用户体验方面进行 比拟。一些VR游戏仅仅采用了头控,这类游戏大局部为体验类游戏,如过山车。玩家 佩戴头戴式设备后,游戏中的游戏场景将填充玩家的视觉,并且随着玩家转动头部 玩家所看到的场景也会发生变化。这类游戏往往玩家参与度较低,主要是以游戏场 景的模型的逼真还原以及游戏场景中增加现实世界的物理规那么来增加玩家沉浸感并 吸引玩家。仍然以过山车这个游戏来举例,该游戏仅从视觉上来增加玩家的体验,通过对 环境的设计:城市中高楼大厦的环境、过山车曲折刺激的轨道;附加上与现实世界 类似的物理规那么:过山车在平行阶段的缓慢爬升,在由高向下的高速俯冲;通过这 两类相结合来向玩家反响游戏场景并将玩家拉入游戏场景。但单纯的视觉体验并不能一直吸引玩家,或许在一两次的体验过后,玩家或许 会对这类游戏失去兴趣。增加玩家对游戏的参与度能够有效提高玩家对游戏的兴趣,者能够将玩家的身 份从一个旁观者转换至参与者。手柄交互通过手柄让玩家能够介入游戏,让玩家的行为能对游戏的结果产生影 响,从而创造未知的结局,这能够大大引起玩家的兴趣。如射击游戏,由玩家通过 手柄控制与头控相结合进行目标锁定与射击,极大地提高了玩家在游戏中的参与度, 由于射击精度即玩家操作程度的不同可以出现不同的结局,在一定程度上能够激起 玩家的胜负欲。结合以上分析,在本次VR迷宫游戏设计与开发中,我们采用了手柄交互与头控 相结合的方式。在VR迷宫游戏中,玩家通过手柄交互控制游戏场景中的人物的移动,并与游戏 场景中的UI控件交互来学习游戏、推进游戏进程。玩家通过转头的方式来观察游戏 场景,游戏场景中的第一人称控制器中的摄像机对玩家转头的行为作出响应并相应 地调节摄像机在世界坐标系中的位置以及旋转角度。在两种交互方法的共同作用下 组成游戏的交互框架,增加玩家的沉浸感以及对游戏的参与度。3. 2 VR迷宫游戏的交互流程在VR迷宫游戏的整个交互过程中分为游戏中操纵人物进行游戏的交互行为以 及游戏中与UI的交互行为。玩家可通过控制手柄的摇杆来控制游戏场景中的人物进行前后左右等移动,通 过按下0K键来放置小旗来标记路线辅助玩家走出迷宫,通过按下menu键来调出游 戏进行时的控制面板来展开与UI控件的交互,也可按下c键退出游戏。在图3-2-1. VR迷宫游戏的交互流程示意图中表现了用户在本游戏中的除操纵 游戏场景中的人物进行移动以外的与UI进行交互的主要操作的交互流程。玩家在进入游戏后可有3种选择:阅读帮助、开始游戏、调节音量。阅读帮助 可给予玩家游戏规那么上的指导,并告诉玩家一些图标的含义;调节音量是玩家根据 自己的个人情况通过手柄来调节游戏音量大小。玩家选中开始游戏时,会进入游戏模式的选择:练习模式与计时模式。练习模 式即为不限时模式,即计时从零开始正向计时,玩家可在成功走出迷宫后看到自己 使用的时间。计时模式即为倒计时模式,玩家需在指定的时间内走出迷宫并到达任 务要求。玩家在游戏过程中可以通过手柄上已有的键与游戏进行交互,控制并辅助游戏 的进行。如流程图中的所示的暂停游戏即为玩家通过手柄中的menu键达成。玩家通 过menu键调出游戏时菜单,此时游戏会暂停,菜单提供三种选项:继续游戏、重新 开始游戏、退出游戏。也就是说menu键也可以当做暂停键使用,但是一旦玩家选择 重新开始游戏,游戏场景将会重新加载,玩家将会回到起始位置,UI面板也将会编 程最初的开始界面。假设玩家选择继续游戏,那么计时将会在暂停时间的基础上重新开 始计时,游戏中操作面板也会消失。假设玩家选择退出游戏界面,程序将会直接退出。进入游戏IW1阅读帮助> 开始游戏 <调节音量T选择游戏模式练习模式计时模式¥进行游戏暂停游戏WWW继续游戏重新开始退出游戏图3-2-1 VR迷宫游戏的交互流程图由于玩家只能通过手柄来控制游戏进程(头控仅为观察游戏场景),所以玩家 与游戏的两种交互行为需要进行限定与切换,在本游戏中,与UI的交互行为优先等 级高于玩家控制游戏人物进行游戏的交互行为,即在有UI面板出现时,玩家对手柄4.2 VR迷宫游戏的评价与改进方案314. 2. 1 VR迷宫游戏的评价312. 2 VR迷宫游戏的改进方案32第5章结论34致谢错误!未定义书签。参考文献36附录1英文原文37附录2译文40摇杆做出的操作将首先被UI控件响应,这一内容将在接下来的局部中予以详述。3.3 VR迷宫游戏交互的内部实现在上节中我们提到过在本游戏中玩家有两种交互行为:游戏中操纵人物进行游 戏的交互行为以及游戏中与UI的交互行为。而由于玩家只用手柄进行与游戏系统的交互,如果不加限定,两种交互行为会 产生冲突:玩家在对手柄做出操作时,游戏系统并不知道该响应哪一个方面。见图 3-3-1. VR迷宫游戏中手柄对玩家的两种交互行为的不同相应。如玩家将手柄摇杆向 前推(即按下UP键),游戏系统究竟是响应UI空间上的按钮选中向上移动还是控 制游戏系统场景中的人物前进。所以在本游戏系统中,将UI控件的优先级设置高于 游戏系统的人物操纵。即在有UI控件出现的时候,玩家对手柄做出的操作将优先被 UI控件所响应,此时游戏场景中的游戏人物并不能移动。图3-3-1 VR迷宫游戏中手柄对玩家的两种交互行为的不同相应3. 3.1 VR迷宫游戏中操纵人物进行游戏的交互行为的内部实现在本游戏中操纵人物进行游戏的交互行为仅限于控制游戏场景中的人物进行前 后左右移动、放置小旗、进入答题区域进行答题、调出游戏进行中的菜单面板、退 出游戏这几种有限的行为。控制游戏场景中的人物进行前后左右移动通过MojingSDK自带的第一人称控制 器MojinglstController实现,其中自带的脚本中有对控制权的改变方法 SetControlable (bool control),通过设定方法参数control可以对控制权进行 控制,即当有UI控件出现时使用该方法并将control设定为false,将控制权移交 至UI控件;当最后一层UI控件关闭后,再使用该方法并将control设为true。为 了使UI响应手柄摇杆的行为,对UI的监听脚本也有一定的限制,具体内容将在下 一小节中进行介绍。而在UI的监听脚本中同时对手柄上的其它按钮的响应作出限制 并且根据条件不同进入不同的响应程序段。当玩家所见画面中没有任何可操作的UI控件时,当玩家按下0K键,将会在玩 家所控制的人物的当前位置上放置一个小旗。小旗是在MAYA中构建的模型,在MAYA 中生成一个。bj格式的文件,可直接导入到Unity的工程中。将小旗变为一个预制 (prefab),这样可以在任何位置通过Unity中的方法Instantiate (Object prefab, Vector3 position, Quaternion rotate)进行仓4建。在VR迷宫游戏场景中,在地面上会有明显标志来说明答题区域,当玩家进入答 题区域时,答题系统的面板将会出现在玩家眼前。这是通过设定触发器来实现的: 创立一个空的物体(Empty GameObject),然后对其添加碰撞盒(box collider) 组件,根据地标范围设定碰撞盒的大小,并勾选触发器选项,同时在第一人称控制 器中建立脚本重写OnTriggerEnter (Collider other)方法,其中类型为Collider 的变量other为碰撞盒。由于玩家到达终点也是由碰撞盒检测实现,所以对不同的碰撞盒设置不同的标 签(tag)用于区分其为游戏问答区域内的碰撞盒还是终点检测区域内的碰撞盒,该 功能由函数e. gameObject. tag. CompareTo (tag)实现。e为碰撞盒,tag应为一个 字符串,是碰撞盒的标签(tag),通过标签(tag)的不同可以区分玩家所触发的 触发器的类型。当玩家在操纵人物进行游戏过程中按下c键时,系统响应为退出系统,但由于 该操作是会对本游戏系统造成重大影响的操作,所以我们设置游戏会弹出警示框询问玩家是否确定退出游戏。当警示框弹出时,玩家所看到的画面内出现了可操作的UI控件,此时对手柄的一切操作首先做出响应的为UI控件,即退出警示框。当玩家在操纵人物进行游戏的过程中按下menu键,系统响应为调出游戏时菜单 界面。当游戏时菜单界面显示时,玩家所看到的画面内出现了可操作的UI控件,此 时对手柄的一切操作首先做出相应的为UI控件,即菜单界面。由于要对玩家进行游戏状态的反响,例如各种资源的使用情况:当前所剩小旗 数目、当前获得星星数目、剩余时间或已花费的时间,游戏进行中将会有属性面板 和时间面板对这些资源进行显示。玩家的一些操作可能会影响玩家的所持的资源从 而影响玩家的游戏进行,属性面板以及时间面板的存在即是让玩家了解当前其掌握 的资源并且知道自己的操作对自己所持资源的影响。如当玩家按下手柄上的0K键放 置一个小旗时,玩家所持有的小旗数目会减少,这将直接的反映在属性面板上,但 这些面板仅为可视的,并不可以操作。通过编写类Attribute来对玩家持有资源进行限制,并编写获取当前资源数的 方法,在面板中可通过这些方法来获取玩家当前的资源数量。通过 getComponentText方法获取面板中的Text组件,修改Text组件的内容来显示。由于游戏模式有不计时模式与计时模式,计时系统需要有两种方法来计时:正 向计时,即从0开始计时;倒计时,即从一个规定时间内倒计时。这两种计时方法 分别由两种方法来实现。由于时间面板上显示的最小单位为秒,但是并没有以秒为 单位的与时间有关的方法,所以我们使用了 Unity3D中的Time类中的deltatime 属性,该属性反响的为帧之间刷新的时间,而deltatime往往为0. 02秒左右的时间, 利用该属性在Update ()方法中进行累加,每当其到1秒时秒数增加并置零重新累 加。下面为练习模式的计时方法,如下表所示表3-3-2 VR迷宫游戏中某段按钮重绘代码public void PracticeMode()OneSecond 十二 Time.deltaTime;string SS;string MS;if (OneSecond >= 1) seconds+;OneSecond = O.Of;)if (seconds = 60) minute+;seconds = 0;)if (seconds < 10)SS = “0" + seconds;elseSS = "" + seconds;if (minute < 10)MS = "0" + minute;elseMS 二"” + minute;TimeString.text = MS + SS;)3.2 VR迷宫游戏中与UI进行交互的内部实现为了帮助玩家更好地融入本游戏系统,在本次VR迷宫游戏中添加了许多UI界 面来与用户交互,其中包括主界面、帮助界面、模式选择界面、游戏中菜单界面、 退出游戏警示界面、重新开始游戏警示界面。为了更方便玩家与游戏系统的交互, 在本次VR迷宫游戏中将UI控件置于与玩家固定距离处,可跟随玩家头部的移动而 移动,这是通过对UI组件中的画布(Canvas)组件的渲染模式以及画布(Canvas)的放 缩大小(Scale)共同调整并将画布(Canvas)组件放置在主相机(main Camera)下使之 成为其的一局部来实现的。IH1 布(Canvas)组件有 3 种渲染模式:Screen Space-Overlay ; Screen Space-Camera; World Spaceo在以往制作移动端游戏的时候,多采用第一种渲染模 式,画布(Canvas)会直接渲染在屏幕上,但是由于头戴式设备是将手机近距离置于 眼前,考虑到玩家的体验(是否会对眼睛造成不适),采用了第三种模式,即将画 布(Canvas)像GameObject一样置于世界坐标系中,并设置一定距离,给用户以悬浮 窗的感觉。完成了画布(Canvas)的显示问题,下面讨论画布(Canvas)中的各界面的实现问 题。界面与界面之间有一定的附属关系:只有一个界面的翻开后才能够进入另一个 界面,界面附属关系见图3-3-2 VR迷宫游戏中UI界面附属关系。主界面为用户最先见到的界面,可通过主界面进入帮助界面或模式选择界面。 在模式选择界面选择游戏模式然后开始游戏。在游戏进行过程中玩家可通过按下手 柄上的menu键展开游戏中菜单界面。假设玩家在该菜单中选择退出游戏,那么会出现退 出游戏警示界面;假设玩家在该菜单中选择重新开始游戏,那么会出现重新开始游戏警 示界面。图3-3-3 VR迷宫游戏中UI界面附属关系由于不同界面的按钮分布方式不同,所以需要针对每一个界面编写一个处理在UI控件(在这里主要指按钮)之间的不同移动方式的脚本。如纵向排列的按钮与横 向排列的按钮的移动方式不同。从认知上来讲,大多数人看到横向排列的按钮,会 潜意识认为按钮间的移动方式为从左到右,而纵向排列的按钮移动方式为总上到下。 所以如果玩家想从一个按钮横向移向右边另一个按钮时,他/她会选择将摇杆向向右 摇动。为了让玩家能够直观的感受到自己通过摇杆对游戏系统做出的操作,在每一 个界面的脚本文件中,根据每个界面中的按钮大小不同,在每一次玩家对UI界面做 出摇杆操作来变换选择时,变换方法中会对界面中的按钮进行重新绘制:将玩家选 择的那个按钮进行放大,没有被选择的那么为通常的大小,两者之间会有较明显的差 异。下面为游戏菜单界面中的局部按钮重绘方法,如下表3-3-3所示 表3-3-4 VR迷宫游戏中某段按钮重绘代码for (int i = 0; i < Button_Object.Length; i+) if (i = buttonCurlndex) Button_Object i.GetComponent<RectTransform> ().sizeDelta = new Vector! (90, 40); else Button_Object i.GetComponent<RectTransform> ().sizeDelta = new Vector? (80, 30);)在本次游戏设计与开发中,我们选择将接收并处理手柄输入信息的程序放在一 个脚本中,即InputListner. cs。这个脚本将监听玩家对手柄做出的操作。不仅如 此,它还要判断当前在玩家眼前是否有UI界面出现,如果有UI界面出现是哪个UI 界面。判断是通过对每一个界面所含的脚本文件中的一个布尔值进行检测来进行的, 从而赋予不同界面不同的索引,根据索引的不同可使用if以及else if语句对不同 的情况进行分块并使程序做出正确的响应。如同样是对手柄的摇杆进行向左推动, 假设当前显示界面为主界面那么会进入主界面下的程序块进行执行,在这一段程序块中 将会调用主界面的脚本文件的方法;假设当前显示界面为帮助界面那么会进入帮助界面 下的程序块进行执行,并调用帮助界面的脚本文件的方法。所有界面的按钮的回调方法均在UIDisplay.cs中进行编写,这样可以对多个界 面进行集中化管理,方便进行界面之间的跳转。当玩家使用手柄选择某一个按钮并 按下OK键时,在该界面所带的脚本文件中将会调用UIDisplay. cs中的方法来进行 界面跳转以及其他属性的设置。在页面进行跳转时,会将脚本文件中的bool值的变 量置为false来说明该界面已经不出现在玩家眼前,方便InputListner. cs进行当 前出现在用户面前的界面的类型判断。在图3-3-5 VR迷宫游戏中UI界面脚本关系图中对界面脚本和 InputListner. cs以及UIDisplay. cs之间的关系进行图形化解释。由InputListner. cs来监听玩家对手柄做的操作,并判断当前出现的UI界面的 类型,根据具体UI界面的类型在不同的界面脚本中进行相应;当玩家按下0K键时, 由InputListner. cs监听并传给当前出现在玩家眼前的界面脚本,当前出现在玩家 眼前的界面脚本根据玩家的选择调用UIDisplay. cs中的响应方法,如果涉及界面切 换,将会由下一个界面脚本来接收InputListner. cs传递的玩家对手柄的操作。手柄|图3-3-5 VR迷宫游戏中UI界面脚本关系图除去以上游戏中辅助进行的UI界面,还有一个在游戏进行中成为游戏中一个环 节的UI界面:趣味问答题界面。该界面在玩家进入答题区域触发触发器时显示。动 态的从题库中提取题目并予以显示,假设玩家回答正确那么会获得星星奖励,假设玩家没 有回答正确,那么无奖励。选项以按钮的方式出现在问答题面板上,面板脚本响应由 InputListner. cs传来的玩家对手柄进行的操作。假设玩家回答正确,将会出现状态 提示面板告诉玩家回答正确,并对Attribute类内控制资源数量的变量进行改变; 假设玩家回答错误,也会出现状态提示面板告诉玩家回答错误,但并不对资源进行更 改。第4章VR迷宫游戏的测试与评价4.1 VR迷宫游戏的用户测试4.1.1 VR迷宫游戏测试的硬件条件在本次VR迷宫游戏的测试中,我们使用手机为小米的红米Note; VR头戴式设 备为暴风魔镜开发的魔镜小D,手柄为暴风魔镜所开发的安卓手柄。4.1.2 VR迷宫游戏测试结果展示本论文在本节中将展示VR迷宫游戏在安卓平台上测试的结果,按照正常的玩家 玩游戏的流程来进行测试。玩家点击app图标进入游戏,将手机横放在魔镜小D前的支架上,然后佩戴头 戴式设备。玩家将首先看到游戏主界面。由于移动端VR游戏开发的限制,屏幕被一分为二, 但玩家在佩戴头戴式设备之后所看到的为一个画面。图4-4-1 VR迷宫游戏的开始 界面显示的为手机屏幕上的开始界面。此时默认玩家关注开始按钮,玩家可以通过 左右推动手柄中的摇杆来变换关注。图4-4-1 VR迷宫游戏的开始界面玩家通过控制手柄摇杆变换关注并按下0K键选择帮助,帮助中将会对游戏规那么 进行讲解,游戏规那么的讲解共有4页,玩家通过对手柄的操控来阅读下一页,也可 选择底端按钮或者按下手柄C键返回主界面。帮助界面见图4-4-2 VR迷宫游戏的 帮助界面。图4-4-2 VR迷宫游戏的帮助界面玩家可以在进入设置界面更改音量大小,通过手柄选中按钮,并按下Ok键进入 设置界面。通过按下“ + ”键来增大音量,最大音量为10,通过按下“-”键来减小 音量,最小音量为3此时等于静音状态。图4-4-3 VR迷宫游戏的设置界面虚拟现实头盔游戏设计与开发摘要随着当前VR技术的不断成熟,VR头戴式设备开始进入普通人群的视线,但是 作为显示器的VR头戴式设备高昂的价格,如作为PC端显示器的头戴设备HTC VIVE 定价为6888人民币、作为PS4显示器的头戴式设备索尼PlayStation VR定价约合 2600人民币,却令普通人群望而却步。此时,低本钱VR头戴式设备被开发并进入 人们的视线,如Google的CardBoard、国内的暴风魔镜小D定价79人民币,成为 人们体验VR的一b不错的选择。VR技术的相关话题越来越热不仅仅引起了消费者的关注,也引起了开发者的关 注,开发以VR为载体的游戏和应用正成为开发者关注的新热点。本文即为使用Unity3D引擎开发的基于暴风魔镜自带mojingSDK的移动端VR 游戏的设计与开发。设备具体型号为暴风魔镜小D。首先,本文将简述当下VR游戏开发的现状及背景;其次,本文将简述本次游戏 开发的大体框架及设计思想并在用户交互方面详细阐述,并通过流程图给出交互流 程来辅助说明;最后,本文将简述此次游戏设计的优劣,并根据用户的回馈给出相 关改进的建议以及方案。关键字:VR头戴式设备;VR游戏开发;暴风魔镜小D;人机交互玩家在主界面选择开始游戏,进入游戏模式选择界面,有计时模式与不计时模 式两种,玩家通过手柄操作来选择自己想要的模式,图标会放大缩小来回馈玩家是 否关注该按钮。模式选择界面见图4-4-3 VR迷宫游戏的模式选择界面。在这里玩 家最终选择了练习模式,即不计时模式。图4-4-4 VR迷宫游戏的模式选择界面玩家选择模式后游戏将正式开始,由于玩家选择的为练习模式,时间将从0开 始逐渐增加。左上角可以看到玩家当前持有的资源。在图4-4-4 VR迷宫游戏的游 戏中场景中可以可以看到,该玩家当前持有小旗10枚,并没有获得星星。图4-4-5 VR迷宫游戏的游戏中场景在游戏进行场景中,玩家通过按下手柄上的0K键放置小旗对迷宫进行标记来 辅助玩家走出迷宫。图4-4-5 VR迷宫游戏中放置小旗后现实的为玩家按下0K键 后的场景。图4-4-6 VR迷宫游戏中放置小旗后玩家通过扭动头部来观察周围的环境。图4-4-6 VR迷宫游戏中回头查看标记 为玩家在放置了两个小旗后回头观察时所见的场景。图4-4-7 VR迷宫游戏中回头查看标记场景中的有趣味问答区域的标志来帮助玩家发现趣味问答区域,玩家发现标志 后如果想要进行问答环节来获取星星可以走近标志进而发现问答区域并走进问答区域进行答题。图4-4-7 VR迷宫游戏中发现答题区域显示的为玩家发现问答标志。图4-4-8 VR迷宫游戏中发现答题区域图4-4-8 VR迷宫游戏中进入答题区域显示的为玩家进入问答区域进行并进 行答题环节。图4-4-9 VR迷宫游戏中进入答题区域玩家在获得相应数量的星星并且到达迷宫出口即为通关。图4-4-9 VR迷宫游 戏通关成功界面 中该玩家获得了5颗星星,到达了任务要求并且走到了终点。工2评太修啦!成功走出7迷宫!八卜_还答对了那名、阿ST. 7今后也要继5警力哦!洋太棒啦!成功走出了迷宫! 八卜_还答对了那名,向总! . 7 今后也要继8带力哦!图4-4-10 VR迷宫游戏通关成功界面假设玩家没有获得相应数量的星星,即使玩家到达出口也会被视为通关失败。图 4-4-9 VR迷宫游戏通关失败界面中,玩家仅获得了两颗星星,没能够到达最低标 准5颗星星,所以仍然通关失败。半夜12:48很可惜忤汉处力顺利通关YA是忖间不游7?''还是星星投有收集宣? 不过科1il相惶诉会越来越惨!很可惜忤汉处力顺利通关YA是忖间不游7?''还是星星投有收集宣? 不过科1il相惶诉会越来越惨!很可惜加汉雕/顺利通关丫八丫是忖间