《基于VRTK的虚拟仿真乒乓球运动项目的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于VRTK的虚拟仿真乒乓球运动项目的设计与实现.docx(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本科毕业设计(论文) 基于VRTK的虚拟仿真乒乓球运动项目的设计与实现Design and implementation of virtual table tennis based on vrtk院 (系)计算机学院专 业软件工程班 级10班学 号16210121018学生姓名莫志平指导教师魏菊霞提交日期2020年4月11日毕业设计(论文)原创性声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行的设计(研究)工作及取得的成果,论文中引用他人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人已经发表或撰写的作品及成果。对本文的研究作出
2、贡献的个人和集体,均已在论文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。毕业论文作者(签字): 签字日期: 年 月 日成绩评定成绩项论文成绩(百分制)折合比例实得成绩(折合分)指导教师成绩30%评阅教师成绩20%答辩成绩50%总评成绩注:毕业设计(论文)成绩按百分制评定。答辩成绩不及格的(评分低于60分的),则该毕业设计(论文)总评成绩为答辩成绩。内容摘要随着5G的到来和VR技术的改革,各类的VR产品涌入人们的视野当中,其中包括众多的体育类虚拟仿真项目,在人们因为天气的问题而不能出外运动或者周边没有运动设施的时候就会感到懊恼。因此如果有一套虚拟仿真的体育运动项目是一件非常好的事
3、情,所以就此类问题提出了一款基于VRTK的虚拟仿真乒乓球运动项目,通过这样的系统,只需要有一套VR设备,就可以不用出门就可以享受到运动的体验感,并且还不用担心天气和场地的问题。虚拟仿真乒乓球运动项目是一款基于Unity引擎VRTK插件的虚拟仿真运动项目,主要是模拟真实的乒乓球运动项目,实现基本的乒乓球玩法功能,并且在此的基础上进行优化和新的玩法。玩家选择相应的对战难度与AI人物进行对战,并且还选择对战的场景,每场对战12分制,游戏结束之后可以看到历史最高分数以及对战的总次数,赢的次数等。玩家在自行选择场景中进行乒乓球对战,每个对战难度都有非常融洽环境的音乐,体验乒乓球的闲余还可以观赏不一样的风
4、景美色,给玩家一种很闲逸的感觉。这与日常的乒乓球对比,环境拥有很大的提升和运动体验,拥有接近真实的物理系统,在硬件与软件结合下,将一些例如需要捡球等繁杂操作解决掉,相信这对人们以后的体育运动方式有很大的改变。关键词:虚拟仿真 运动项目 乒乓球 VRTK插件AbstractWith the arrival of 5g and the reform of VR technology, all kinds of VR products have come into peoples vision, including many sports virtual simulation projects. W
5、hen people cant go out for sports because of the weather problem or there is no sports facilities around, they will be upset. Therefore, if there is a set of virtual simulation sports is a very good thing, so this paper puts forward a virtual simulation table tennis sports based on vrtk for this kin
6、d of problems. Through such a system, only a set of VR equipment is needed, you can enjoy the experience of sports without going out, and you dont need to worry about the weather and venue.Virtual simulation table tennis is a virtual simulation sport based on the vrtk plug-in of unity engine. It mai
7、nly simulates the real table tennis sport, realizes the basic table tennis play function, and optimizes and new play method on this basis. The player chooses the corresponding difficulty of the match and the AI character to fight, and also chooses the scene of the match. Each match has a 12 point sy
8、stem. After the game is over, you can see the highest score in history, the total number of matches, the number of wins, etc.The game player plays the table tennis match in the self selected scene. Each battle difficulty has a very harmonious environment music. After experiencing the leisure time of
9、 table tennis, you can also appreciate the different scenery and beauty, giving the game player a very leisurely feeling.Compared with the daily table tennis, the environment has a great improvement and sports experience, with a physical system close to the reality. Under the combination of hardware
10、 and software, some complicated operations, such as the need to pick up the ball, are solved. It is believed that this will greatly change peoples sports mode in the future.Key words:Virtual simulation sports table tennis vrtk plug-in目录第一章绪论11.1本课题的研究背景和意义11.2 VR在国内外研究现状21.2.1 VR在国内的研究现状21.2.2 VR在国外
11、的研究现状31.3 VRTK插件3第二章项目的需求分析及总体方案设计52.1 虚拟仿真类运动项目的需求分析52.1.1 使用者需求分析52.1.2 功能需求分析52.1.3 性能需求分析62.2 项目的总体方案设计72.2.1 项目结构方案设计72.2.2 总体结构方案设计8第三章项目详细设计及实现113.1人机交互模块113.1.1 开始界面113.1.2 难度、场景选择界面123.1.3 项目交互133.1.4 音效和音乐143.1.5 交互反馈143.2场景模块153.2.1乒乓球桌模型153.2.2第一场景153.2.3 第二场景163.2.4 第三场景173.3 AI和乒乓球模块18
12、3.3.1 AI智能移动183.3.2 AI智能发球183.3.3 AI智能接球193.3.4 乒乓球逻辑19第四章项目测试214.1功能测试214.2性能测试234.3项目测试结果与讨论23第五章总结与展望245.1 总结245.2 展望24参考文献25致谢26附录27广东东软学院本科毕业设计(论文)第一章 绪论1.1本课题的研究背景和意义VR(虚拟现实)在前几年全球的热度突然飙升,在中国更是达到火热的地步,2016年甚至被称为VR元年,腾讯百度和阿里这些互联网巨头们,都看准时机纷纷的投入资金和人力开发研究VR虚拟现实项目。因为虚拟现实项目能体验到如同身临其境的感受,比如失重、打击、以及射击
13、等,所以很多人为了尝鲜都愿意花上几百块钱体验一下,所以当时,一个拥有虚拟现实的商场中常常会排很长的队伍。然后VR项目在当时非常的赚钱,很多人投身VR行业。但是好景不长,因为当时的软件内容和开发环境都不是很好,产品的出产速度和质量也不好。在软件方面手机和电脑的性能不足,在网络方面数据的传输速度更是硬伤,续航发热方面也是非常的担心,所以玩久了之后会让人头晕。还有一个原因是因为有很多经验不足的人,没有什么制作经验,制作出来的画面都不是很精美,而且在当时,VR行业的产业链也还没有形成,更是没有一个标准,所以大部分人在前几次的新鲜感和热度过了之后,就很少再去体验VR项目了。就这样VR的热度慢慢消退,导致
14、了很多投资人撤资或者全力投入开发虚拟游戏等项目的公司破产,一众裁员的现象出现,最后只有一些大厂商在持续的开发和研究VR技术。随着后面几年的沉淀,硬件和网络速度的发展,虚拟现实这个行业慢慢的形成了初步的产业链,涉及的行业更是广了很多,之前大部分VR项目都是游戏类,但是现在涉及到其中的项目有影视娱乐、教育、设计领域、医学方面以及体育运动等行业的应用,随着5G的到来,更是推动了VR的发展进度,各类的VR产品涌入人们的视野当中,其中包括众多的体育类虚拟仿真项目。虽然VR在体育运动领域中的发展中仍在起步阶段,但是仍然有一些成熟的VR训练系统可以解决一些问题。比如运动员们每次都要穿着他们厚重的装备,以及因
15、为天气的问题不能去场地训练问题,还有一些初期容易受伤的体育项目,让运动员先在VR训练系统熟悉,就会很容易的上手。这样有助于保护运动员的身体,因此如果有一套虚拟仿真的体育运动项目是一件非常好的事情。还有一些体育项目,通过AI更是可以仿真出对手的出招套路,在VR训练中可以提前熟悉对手的套路,针对训练。所以本课题提出了一款基于VRTK的虚拟仿真乒乓球运动项目,通过这样的虚拟仿真系统,只需要有一套VR设备,就可以不用出门享受到运动的体验感,而且还不用担心天气和场地等问题。本次课题主要是利用了微软公司发布的面向对象编程语言C#,还有游戏开发引擎Unity、以及虚拟现实项目开发插件VRTK,开发本课题项目
16、虚拟仿真乒乓球。本项目的特色也是很多的,大概概况可以如下:首先实现的了基本的乒乓球玩法功能,并且在此的基础上进行优化和增加新的玩法。使用者进入开始界面选择,选择相应的对战难度。进入场景之前还有一个场景选择,玩家可以选择在给定的场景中选择心仪的场景进行者对战,每个对战难度都有非常适合融洽环境的音乐,在体验乒乓球的闲余还可以观赏不一样的风景美色,每次挑战不同的难度都有不一样的感受。这相比真实的乒乓球的环境拥有很大的提升以及非常好的运动体验,本次项目尽可能的让对战拥有真实的物理系统碰撞,硬件与软件相互结合,并且将现实的一些需要捡球等繁杂操作简化或者解决,进行新的创新玩法。虚拟现实在体育行业应用的不断
17、发展,相信这对人们以后的体育运动方式有很大的改变和对运动的热情也会逐步上升。1.2 VR在国内外研究现状VR起源于上个世纪80年代,由美国VRL公司创始人拉尼尔提出。在2016年广泛传播和发展,被认为是21世纪的重要发展学科和影响人们生活的重要技术。本节会对虚拟现实在国内外的研究现状进行的大致概述。1.2.1 VR在国内的研究现状在近年来国内的VR技术和行业已经慢慢的发展了起来,并且已经有了相应的产业链规模,但是这个市场仍然是属于初级阶段的,市场规模也是属于比较小,但是比较这两年的增长速度,比之前几年快了许多。根据本课题收集的多资料综合得出,在三年间,VR的市场规模从15.8亿上升到了52.8
18、亿元,这是一个非常可观的数据,现在在中国的虚拟现实市场也处于持续火热的状态,产品逐渐进入了大众的消费市场,比如,在B站等类似的网站上也有很多人已经在推送和发布制作虚拟现实的产品的视频,并且每日都有人持续带来最新的产品和技术的资讯。参与到虚拟现实的企业也是越来越多了,但是在硬件方面还没有出现明确的领跑者,所以在这个硬件的领域势,必会成为各大企业竞争VR的主战场,并且虚拟现实的产业形态越来越丰富了,这个产业的潜力是非常巨大的,社会效益非常的强势,相信在不久的未来,人们的生产和生活方式会发生巨大的改变。VR是在国外开始起源并且发展起步的,研究现状还比不上国外,但是发展规模有非常大的潜力,而且以后的使
19、用用户增量相信在全世界也是排行第一,VR在国内的研究的发展越来越大,未来可期。1.2.2 VR在国外的研究现状虚拟现实在国外的研究现状比中国要好一些,在技术层面来讲,在美国,美国已经研发出了在外空的虚拟仿真训练基地,并且还有可供全国使用的虚拟仿真教育系统,在人工智能方面的研究也是比较强悍。美国的研究在感知以及硬件等方面研究的比较集中,在游戏方面的研究力度比较小,但是作为虚拟现实的起源地,它们的游戏质量是国内无法比拟的。虚拟仿真游戏的是日本比较先进而且规模比较大,日本的虚拟现实方面基本上都是游戏产品,可以说日本的虚拟仿真项目基本上主打游戏方面,在日本已经在研究刀剑神域动画的VR系统游戏,并且也推
20、出了大量的VR产品游戏。VR在国外的发展现状都是很不错的,每个国家都有自己的发展重点以及研究,都在寻找虚拟现实对自己本国比较有优势的发展方向。1.3 VRTK插件VRTK是一套专门的虚拟仿真交互方案,目前的版本是3.30,国内的VR或者说国际上的VR产品大部分都有用到这个交互方案。它涵盖了许多常见的解决方案,比如虚拟空间内的运动、触摸、抓取以及使用对象等交互、通过指针或者触摸与Unity3D的UI元素进行交互。VRTK的官方也是制作了44个官方案例来让新手快速的熟练这个交互方案,并且每个交互方案的功能都是特别的详细,还拥有专门的教程视频让新手学习,下面列举两个常用的功能。抛物线以及位置定位,这
21、个需要使用到LeftController控制并且附带上VRTK_ConTroller Events、VRTK_BezierPointerRenderer(抛物线)、VRTK_Pointer这三个脚本搭配使用,可以控制抛物线的类型,射线球以及光标,以及光标处的显示位置。手柄发射射线,这个需要使用到RightController进行控制并且附带上VRTK_ConTroller Events、 VRTK_StraighPointerRenderer(直线渲染)等脚本进行搭配使用,用手柄发射射线可以对UI进行交互或者进行移动。除了上面两个VRTK的事件处理还有处理UI交互、物体拖动以及射线处理物品拖动
22、等基本事件,这些封装代码可以让开发者们减少很多开发的工作。并且VRTK还在不断的更新内容,为虚拟现实项目的开发的发展进行推动。4第二章 项目的需求分析及总体方案设计2.1 虚拟仿真类运动项目的需求分析2.1.1 使用者需求分析一款合格的虚拟现实项目的在针对使用者的角度分析。第一个就应该是如何让玩家快速的熟悉和上手,在使用者的角度来说,这个虚拟项目应该是应该步步提示到位的。虚拟现实现现在虽然发展比较成熟了,但是还没有达到普遍大众的程度。所以项目的使用上的提示是非常重要的,在操作上的提示图文并茂,并且让使用者通俗易懂。让使用者很快的熟悉并且能体验到乒乓球虚拟仿真项目,观赏性和手感上非常的重要,对使
23、用者每次的体验和感觉都应该有所新奇。2.1.2 功能需求分析本项目的首要功能是实现VRTK与VR设备的正确交互,再实现设备与虚拟项目中的某些功能进行交互,本课题的开始游戏界面,设备与项目进行的交互大致有:带上VR头盔能正确的显示虚拟项目中的场景,使用手柄对游戏的界面进行交互、界面主要有开始界面、对战选择界面、场景界面进行点击选择,进入游戏后,手柄上初始化一个乒乓球拍进行对战。第二就是项目中的提示功能,提示功能主要是对使用者进行提示,帮助使用者能顺利的进入游戏并且熟悉乒乓球对战的操作,使用到提示功能的有:开始界面的有进行对战选择和场景选择的界面,在此界面的要对使用者进行提示,帮助使用者清楚明了的
24、知道,如何更好的体验到项目的多种玩法,在开始之前要跟玩家介绍清楚,乒乓球对战中是如何进行操作的提示,以及游戏的分数规则,还有每次得分之后都要对使用者进行得分或者失分提示。本项目的核心的逻辑的是乒乓球以及使用者击打乒乓球后的效果能尽可能的接近现实的乒乓球运动,还有乒乓球的评分规则,正确的判分是非常重要的。最后乒乓球虚拟仿真中的场景应该也是多元化的,每次的乒乓球对战可以选择不一样的场景对战,并且相应的音效也是非常重要,这个音效的效果影响使用者在进行乒乓球对战的时候的体验效果。良好搭配的音效还有音乐对一个体育运动来说能起到非常好的催化效果,比如,人们在跑步的时候如果能有音乐的情况下,本身身体的肌肉也
25、会跟着音乐的节奏运动起来,音乐的选择也是一个要参考的重要点。总结以上概述,游戏的大体功能概述如下图2-1所示。图2-1 游戏的大体功能2.1.3 性能需求分析在性能的优化主要有:第一个是美术方面的优化,这个完全是可以控制的,创建的模型尽量减少模型的精细度,减少模型的面片数和顶点数,这样CPU在进行渲染的时候需要准备的工作也会变少。这样在游戏进行的时候就可以顺利的进行每一帧的渲染,若模型的面片数和定点数、材质数等方面过多的话,每一帧的渲染电脑都需要把这些面片数信息收集起来进行相关的准备工作,如果准备工作过多CPU就会进行堵塞并且来不及发送渲染信息到GPU进行渲染,这样就会导致GPU来不及渲染,刀
26、子在进行游戏的时候就会很卡,非常影响使用者的体验,所以搭建项目模型的时候要尽量做好这些准备工作。举个例子,在一个房子模型,最好就是一个整体,不允许在unity里面由多个对象搭建出来。还有就是引擎的渲染的工作,在某个场景里面如果有很多个物体可以利用的LOD优化技术来对游戏进行优化。LOD的渲染可以将一个游戏的场景的物体隐藏,摄像机的视角看不到的东西,就会自动将模型隐藏起来,系统就不会将模型给渲染出来了,会大大提高项目运行的流畅度。项目中灯光和特效等因素过多也会影响项目的流畅度,本课题的虚拟仿真乒乓球主要是实现乒乓球的功能,所以不会需要太多的灯光和特效,只需要适当的点缀即可,灯光的可以尽量使用光照
27、贴图烘培,这样就不用太多的光照效果。总体结合来说,本项目虚拟仿真乒乓球的重点是乒乓球和AI逻辑,并不需要太多的特效以及灯光,还有重点在于模型方面的选择。2.2 项目的总体方案设计2.2.1 项目结构方案设计基于VRTK的虚拟仿真乒乓球运动项目的设计与实现对战难度选择场景选择开始对战游戏界面退出游戏退出游戏因为本课题项目虚拟仿真VR乒乓球的主要核心就是实现乒乓球的功能,也考虑到虚拟现实项目并没有普遍大众,所以为了使用者比较容易上手,也更能容易熟悉VR设备的操作,本项目算是相对简单的结构设计,重点在于项目内部的代码优化,对使用者的需要的操作比较简单,结构详情如下图2-2所示。图2-2 项目结构方案
28、设计2.2.2 总体结构方案设计基于VRTK的虚拟仿真乒乓球运动项目的设计与实现游戏场景模块人机交互模块乒乓球逻辑模块AI智能接球模块AI智能发球模块AI智能移动模块乒乓球桌模块第一场景模块第三场景模块第二场景模块交互反馈模块项目交模块对战难度模块开始游戏界面模块音效音乐模块人机交互模块结合前文的研究讨论,可以得出本虚拟现实项目总体模块的构架如下图 2-3 所示。图2-3 总体结构方案设计结合VR设备以及VRTK插件在Unity开发引擎开发的虚拟仿真项目,研讨各个模块的实现方法,所得具体分析如下。人机交互模块:开始项目界面、选择对战难度界面、选择对战场景界面这三大界面将使用Unity开发引擎里
29、面的UGUI设计系统和C#编程引擎结合,还有VRTK插件辅助代码进行研发。开始界面为了方便使用用户的操作,可以有两种开始的形式,使用者让别人使用按键进行操作,也可以自己使用VR设备中的手柄发射射线进行操作。使用C#代码对键盘的输入进行监听,或者使用VRTK插件的辅助代码将手柄中发射出来的射线与界面的UI进行交互选择,在UI中需要对使用者进行提示,按下哪个键位或者对手柄进行什么操作来开始游戏,使用手柄或者按键选择对战难度以及要进行对战的地图。在进入乒乓球对战场景后,手柄上将会实例化出一个乒乓球拍,在使用C#代码编程以及碰撞体组件的结合下,可以使用手柄的扳机实例化出一个乒乓球,用乒乓球拍击打乒乓球
30、开始对战。VRTK插件中有一个辅助代码可以给对战者反馈出击打乒乓球的震动效果,让使用者体验到真实的击打效果,搭配上击打乒乓球的音效,还有相应对战难度的配乐,让使用者拥有比较好的人机交互体验。(2)游戏场景模块:首先是我们的开始游戏界面的场景,这个场景就是一个在交互UI界面后面现实一个转动的地球,整体使用者的虚拟位置是在外太空上,让使用者有一种身临在外太空的感觉。在对战场景的有主要的乒乓球桌模型以及AI角色模型,在乒乓球桌的模型上都会设置好碰撞体,以便产生对应逻辑的碰撞效果,以及C#代码的附加让乒乓球桌上碰撞拥有乒乓球的规则逻辑。第一个场景是一个在太空舱里面对战的场景,这个太空舱有一种分裂的效果
31、,会让使用者感觉到自己在一个科技感极高的场景中进行对战,场景搭配附加上的天空材质也是一个科技城市的背景。第二个地图的话就是在一个武道场景,使用者会跟AI角色在一个武道场的中进行对战,场景搭配的天空盒是一个山崖材质,让使用者感觉自己好像在一个与世隔绝的山崖当中的武道场与别人进行乒乓球对战,奇幻十足,有一种江湖气息。第三个场景是在一个十字圆形平台上进行对战,搭配的天空盒是在云端夕阳效果,让玩家感受到在自己身临在云端上与AI对战的感觉,有一种夕阳末日的感觉。AI和乒乓球模块:AI模块的智能移动模块,在对战中使用Unity中相应的动画系统,以及C#代码来控制AI的呼吸形态。还有AI根据C#代码对乒乓球
32、的位置进行计算,AI人物会跟着乒乓球的水平X的相应位置进行对应移动。AI的智能接球模式,AI根据C#代码算法检测乒乓球的距离和位置,然后进行接球,并且根据AI的接球检测在动画系统播放AI角色的接球动作,并且接完球之后恢复呼吸状态动作.AI的智能发球模式,当判定AI是发球的时候,在AI的上方实例化一个乒乓球,然后AI根据C#代码的算法检测到是发球模式,在AI的动画系统中播放发球的动作,然后根据碰撞体的碰撞将乒乓球发射出去.在乒乓球的逻辑,乒乓球的C#代码逻辑需要判断自己此刻阶段碰到了乒乓球还是乒乓球桌,掌控着判分的逻辑,以及碰撞到了地板或者碰撞到乒乓球桌的挡板的时候,会判定是使用者还是AI输球,
33、并且将数据在代码内部传送,判定发球的一方,做完这些数据传输之后就会将自身进行销毁。32第三章 项目详细设计及实现3.1人机交互模块3.1.1 开始界面开始界面的主要设计就是使用Unity游戏开发引擎里面的自带UI系统UGUI进行制作的,设计理念是在我们的动态地球上,让使用者身在太空形成一种虚幻的感觉,然后进入我们的地球开始我们的游戏。需要一个Canvas对象,这个对象添加上VRTK_UI Canvas代码,来表示这个画布是可以跟VR设备进行交互的UI对象,这个相对于是一个系统的画布,在画布上添加两个Text对象,Text对象只有放在Canvas对象下面才能正确的运行和使用,就好比字写在画布上面
34、才能正确的现实出来一样。在给Table Tennis标题选择texture_front字体,并且设置居中现实,设置好字体大小100,为了让标题更加立体添加一个Shadow组件,这个组件可以让字体显示的更加立体。然后选择地图和选择难度对战的字体提示也是如上一样设置好。在Canvas对象上我们的需要添加一个button按钮,然后设置好开始游戏字体提示,并且在按钮组件On Click()上关联上C#代码,并且调好按钮的相应响应事件,这个相应响应事件调用到了场景加载代码。使用场景加载代码需要调用命名空间using UnityEngine.SceneManagement,在VRTK插件的辅助上设置好手柄
35、硬件操作就可以进行手柄射线点击按钮的操作。大致如图3-1所示。图3-1 开始界面3.1.2 难度、场景选择界面选择难度和选择地图界面上,选择对战难度的设计理念是在Canvas画布上面平放三个按钮,然后让玩家进行选择,分别是初级对战、中级对战、以及高级对战。大致如图3-2所示。图3-2 对战难度选择然后在每个按钮上门的Text上面都设置好Text字体,然后在三个按钮上的组件OnClick()方法上都设置好对应的方法,如果使用者使用了手柄发射射线进行选择或者使用了按键进行选择的话,就会在C#代码里面传送相应的数据,相关的伪代码如下所示。 1. if (StartGamesSelect.Diffic
36、ulty = 0)2. 3. StartGamesSelect.selectMap();4. StartGamesSelect.Difficu lty = 1;5. 6. else7. 8. StartGamesSelect.SelectImage.SetActive (false);9. StartGamesSelect.Map = 1;10. StartGamesSelect.ActivationStartBtn();11. 在选择了对战难度后,在C#代码中会调用显示地图选择界面,地图选择界面的设计理念也是在Canvas画布上平放三个按钮然后进行场景选择,然后每个地图都会有图片进行显示,然
37、后使用者可以选择相对应喜欢的地图,进行对战。这个界面需要在Canvas画布上面新添加三个Image对象,这个对象用来显示Image图片,然后给三个对象命名好对应的数据名称,然后在Iamge上添加上精灵图片,一般的图片在调用到unity里面的时候是不可以直接使用的,要转换成我们的精灵图片进行使用。在使用者选择好对战难度的时候,C#代码内部就会实例化三个图片出来。使用者根据VR设备手柄发射射线选择场景或者按键就可以开始虚拟仿真乒乓球进行对战了。大致如图3-3所示。图3-3地图选择界面3.1.3 项目交互在项目交互的主要就是右手手柄的乒乓球拍,和乒乓球的击打交互,首先要将乒乓球拍安置在右手手柄当中,
38、如下图3-4所示。图3-4乒乓球拍 这个时候就要使用到VRTK上的VRTK_SDKManager对象上面的Controller (right)对象。在这个对象上面放置一个乒乓球拍的模型,然后设定好乒乓球拍的位置,在乒乓球拍上需要加上碰撞体然后还有刚体,以便跟乒乓球进行打击交互,在左手对象上面,按住左边的手柄的扳机可以实例化出一个乒乓球,这个功能的需要附上C#代码,然后贴到Controller (left)对象上,大致伪代码如下。12. /时刻判断乒乓球的数量是多少13. PpqiuShuliang = GameObject.FindGameObjectsWithTag(Ppqiu);14. /
39、当左手柄按下扳机的时候,生成一个乒乓球15. /在乒乓球的数量小于1的情况下16. if (ZPding.GameStay = false & ZPding.kai= 1)17. 18. if (device.GetHairTriggerDown()19. 20. /实例化乒乓球21. 3.1.4 音效和音乐在音乐和音效模块的话,设计理念是在开始界面以及每个对战难度都搭配上相对适应的音乐,在开始界面的音乐设置的比较和谐和休闲,也要比较设置的相对适合外太空的场景,然后对战难度上的音乐搭配要根据使用者选择的难度进行搭配,根据对战难度,初级,中级,高级难度设置相对应的音乐,初级的音乐比较动感,但是节
40、奏没有这么快,比较适合初学者或者平缓的运动,中级的话就稍微提升一下节奏的音乐,在高级的音乐就可能比较急促,而且听起来比较紧张的音乐,因为高级的AI对战难度比较高,节奏也比较快。3.1.5 交互反馈在一个VR项目中,使用者不但可以在头盔的虚拟眼镜中看到真实的效果,还能在手柄中产生震动的效果,以便为使用者产生更加真实的感受,反馈模块的话主要是手柄乒乓球拍在击打饭乒乓球的时候,需要进行对通过vr设备手柄产生震动进行反馈,这样的震动会让使用者拥有比较真实的击打效果和手感。这个震动效果的持续时间和力度也可以修改。3.2场景模块3.2.1乒乓球桌模型乒乓球桌的模型是按照现实中标准的模型来创建的,在项目设计
41、里面乒乓球桌担当了非常重要的作用,如果使用者或者AI的击球失误,碰撞到了乒乓球桌的挡板的话,就会进行相应的判分数据传输,然后碰撞的效果作用就是乒乓球销毁,在乒乓球桌的两边平面都是有设置碰撞体的,如图3-5所示。图3-5乒乓球桌模型 3.2.2第一场景第一个场景如上图所示,这是一个充满了科技感的太空舱,当玩家选择了第一个场景,就会动态加载这个场景,这个太空舱是一个分裂式的架构。里面充盈着光线,并且加多了几个特效在场景里面进行点缀,背景是一个充满高楼大夏的天空和,与太空舱刚好搭配起来,太空舱就像悬浮在天空上一样。给喜欢科技感的使用者们提供了一种非常良好的感受。大致如图3-6和图3-7所示。图3-6
42、第一场景 图3-7第一场景3.2.3 第二场景第二个场景如上图所示,这个的设计理念充满了古风擂台的感觉。使用者会跟AI在一个擂台上进行乒乓球对战,旁边点缀了几个打鼓,以及后面茂盛的树,让这个场景看起来非常的惬意。背景的天空和是一个耸立的大山,天气看起来非常的好,并且加上一些太阳光效射下来,为场景增加一点阳光的效果并且丝毫不影响项目的流畅度,这对喜欢古风的使用者来说非常的舒服,大致如图3-8所示。图3-8第二场景3.2.4 第三场景第三个场景是在一个十字架平台中的场景,这个就像在一个祭祀平台一样,下面的建筑从下到上旋转上来。使用者和AI在平台的上进行对战,而且搭配上夕阳红色的天空盒,有一种玄幻奇
43、妙的效果,有一种非常神秘的感觉。这个气氛让人感觉如果对战结束之后会有什么事情发生一样,非常适合高级难度的对战,这个场景非常适合喜欢玄幻气氛的使用者,大致如图3-9所示。图3-9第三场景3.3 AI和乒乓球模块3.3.1 AI智能移动AI的动画由Unity3D系统里面的动画系统中的动画状态机来控制,为AI制作特定的状态机,使用C#代码根据数据的不同条件来控制AI的时刻状态,一般的状态情况就是呼吸状态了,AI保持呼吸状态然后根据C#的代码计算乒乓球的平行相对位置,然后AI会根据位置进行左右智能移动,大致伪代码如下。22. Debug.Log(Boss找寻乒乓球 + Ppqiu);23. Ppqiu
44、 = GameObject.FindGameObjectWithTag(Ppqiu).transform;24. /两个if根据左右判断乒乓球的坐标点移动25. if (this.transform.position.x Ppqiu.position.x)29. 30. 31. /当BossBox找不到乒乓球的时候32. else 33. 34. /回归原点35. 3.3.2 AI智能发球AI的智能发球,是当系统判断了AI发球的时候,AI就会进入发球模式,当AI进入了发球模式,在AI的状态机当中发送特定的条件,控制AI的击球模式,并且播放相对应的击球动画。这个主要也是根据C#内部的数据传输来控
45、制的,并且发球的动画播放完成后,AI角色就会继续发送已经完成击球的动画,在发送特定的条件来控制AI角色恢复呼吸状态,继而进行接下来的对战,大致伪代码如下。36. /自己开球播放动画37. if (ZPding.kai = 2 & ZPding.GameStay = false)38. 39. BossAnimator.SetBool(Player2Attack, true);40. 3.3.3 AI智能接球AI的智能接球状态,在智能移动的前提之下,AI会时刻判断乒乓球和自己的直线距离。当乒乓球与自己的距离达到相对应的距离之下,就会在C#代码传送相对应的数据,然后控制角色的状态机播放接球动画,并且将乒乓球击打出去,在成功接球之后,就会发送相应的数据控制状态机恢复呼吸状态,继而进行接下来的对战,大致伪代码如下。41. /在开球阶段的接球播放动画42. /判断步骤条件43. 44. BossAnimator.SetBool(Player2Att