版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章VR开发
5.7操作实例3:三维游戏SurvivalShooter的VR改造
三维游戏SurvivalShooter是Unity官方提供的一个教程实例,采用“上帝视角”,游戏画面精致,操作方便,可玩性强,画面如图所示。相信很多读者在学习Unity的时候都接触过它。在本例中,我们使用HTCVIVE平台,将这款游戏改造成VR的形式。通过这样的方式,介绍虚拟现实在游戏中的应用特点。实现步骤如下。(1)新建一个Unity工程项目,在其中导入SurvivalShooter、VRTK和SteamVR的UnityPackage素材包。(2)在PlayerSettings里的“XRSettings”里勾选“VirtualRealitySupported”,然后单击“+”按钮,添加“OpenVR”选项,设置项目对VR的支持如图所示。(3)打开SurvivalShooter包中的Complete-Game场景。这是Unity官方已经做好的具有完整功能的场景,我们就在此基础之上修改。(4)删除场景中原有的主摄像机MainCamera。因为VR中需要使用VR摄像机。(5)删除Player物体上所挂载的PlayerMovement和动画组件。因为原来的游戏中是使用第三人称视角,玩家可以看到主角本身的形象和动作,而VR中玩家本身就是主角,游戏使用第一人称视角,所以就不需要Player物体的移动和动画功能。(6)新建空物体并命名为sdkmanager,在其上添加VRTK_SDKManager组件,开始HTCVIVE的VRTK配置。(7)新建空物体并命名为sdksetup,为其添加VRTK_SDKSetup组件。并将SteamVR中的CameraRig和SteamVR预设体从Project面板拖入场景,作为sdksetup的子物体。在VRTK_SDKSetup组件中的“QuickSelect”中,选择SteamVR平台,如图所示。(8)回到sdkmanager物体,在其VRTK_SDKManager组件中单击“AutoPopulate”按钮,将SteamVR的SDK加入VRTK_SDKManager组件。在VRTK_SDKManager组件中添加SteamVR的SDK,如图所示。(9)试运行场景,可以看到HTCVIVE头显正常运作。但是,游戏中的敌人会直接走到玩家的位置,感觉像走到玩家身体里去了,在视角上有点不太对。应该是敌人走到玩家的面前就停下来,不能再靠近。(10)解决上面的问题可以新建一个VRTKScripts空物体,命名为headsetalias,作为头显替代物。其上放置VRTK_SDKObjectAlias脚本,设置“SDKObject”属性的值为“Headset”,这样场景中的其他物体就会感知到用户的头显,产生碰撞阻挡效果。同时,找到场景中的Player物体,为其加上一个VRTK_TransformFollow组件,设置“GameObjectToFollow”为“headsetalias”,设置头显替代物追随Player物体而移动如图所示。这样,头显替代物就会跟着Player物体的移动而移动,从而保证不会再出现敌人走到玩家身体里的现象。(11)现在运行场景,玩家可以在一定范围内走动。但是由于游戏中场景比较大,超出了HTCVIVE的可移动范围,所以需要设置Teleport跳转。
在VRTKScripts物体下,新建两个子物体LeftHandController和RightHandController作为左、右手柄控制器,在它们上面添加ControllerEvents、VRTKPointer、StraightPointerRenderer组件,并将StraightPointerRenderer组件拖动到VRTKPointer组件的“PointerRenderer”属性框中。然后,将左、右手柄控制器物体拖入SDKManager组件的相应属性框,完成手柄控制器的设定,左、右手柄控制器属性设置如图所示。
最后,再建立一个空物体,命名为PlayArea,其上放置BasicTeleport脚本,保持默认属性设置不修改。这样就完成了Teleport跳转功能。(12)这时玩家还只能走动和跳转位置,不能攻击敌人。下面将原来游戏中玩家的枪绑定到手柄控制器上。在RightHandController右手柄控制器物体上,添加VRTK_InteractTouch、VRTK_InteractGrab、VRTK_ObjectAutoGrab这3个组件,使右手柄控制器具备一直自动抓取物体的能力。
然后新建一个物体,命名为GunHolder。将Player物体下的Gun枪物体拖过来,作为GunHolder的子物体。单击“Window”→“VRTK”→“SetupInteractableObject”,将GunHolder物体转变为可交互物体,并修改其VRTK_InteractableObject组件的“ValidDrop”为“NoDrop”,也就是抓到之后不丢弃如图所示。再将Gun物体拖入右手柄控制器的VRTK_ObjectAutoGrab组件的“ObjectToGrab”中。自动抓取物体设置如图所示。这样,Gun物体就将一直跟随右手手柄移动,就像玩家拿着它一样。(13)把Gun物体原来的SkinnedMeshRenderer组件删掉,因为这个组件不支持VR渲染。改为添加MeshFilter和MeshRenderer组件,并将原来Gun物体的Mesh和Material拖入相应的属性框,使用MeshFilter和MeshRenderer组件如图所示。(14)修改Gun物体的位置属性和旋转属性,将它们都归零。并添加一个BoxCollider在GunHolder物体上,从而使枪物体形成物理碰撞的阻挡效果。(15)在GunHolder物体下再创建一个子物体,命名为snaphandle,将其放置在合适的位置。此物体作为一个标识,标识出右手柄控制器抓在GunHolder的哪个位置上。在GunHolder物体的VRTK_ChildofControllerGrabAttach组件中,设置“RightSnapHandle”属性为刚刚创建的snaphandle物体,设置snaphandle作为抓手位置如图所示。(16)现在Gun物体会随着玩家拿着的右手柄控制器移动,好像玩家将它拿在手里一样。下面继续修改,实现按手柄控制器按键就射击的功能。找到PlayerShooting脚本,添加一个VRTK的控制器事件类型的公共变量:
VRTK.VRTK_ControllerEventsvrtkCtrlEvents在Update()函数中,找到判断用户输入实现射击的if语句,添加“或”条件,具体脚本如下:
PlayerShooting脚本经过这样的修改,就能够获取玩家按下手柄控制器上的Trigger键的事件,并调用Shoot()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山西鲁晋特种设备检验检测有限公司招聘备考题库及1套参考答案详解
- 2026年吉林省路桥工程(集团)有限公司西南地区项目部劳务派遣人员招聘13人备考题库有答案详解
- 2026年南昌市昌南学校招聘派遣制教师备考题库完整答案详解
- 2026年中信国安实业集团有限公司招聘备考题库及答案详解1套
- 2026年南京大学事业编制岗位公开招聘15人备考题库带答案详解
- 2026年北京世源希达工程技术有限公司招聘备考题库及答案详解参考
- 2026年广州发展集团股份有限公司招聘备考题库完整参考答案详解
- 2026年哈尔滨市道里区爱建社区卫生服务中心招聘备考题库完整答案详解
- 2026年北部战区空军医院社会招聘44人备考题库及1套参考答案详解
- 2026年恒丰银行深圳分行社会招聘5人备考题库及参考答案详解1套
- 2025至2030中国细胞存储行业调研及市场前景预测评估报告
- 《中华人民共和国危险化学品安全法》解读
- 水暖施工员考试及答案
- 2025年省级行业企业职业技能竞赛(老人能力评估师)历年参考题库含答案
- 2025年淮北市相山区公开招考村(社区)后备干部66人备考题库及一套完整答案详解
- 道路桥梁全寿命周期管理技术研究与成本优化研究毕业答辩汇报
- 2024司法考试卷一《法律职业道德》真题及答案
- 2026年江西冶金职业技术学院单招职业适应性测试题库及参考答案详解1套
- 黑龙江省哈尔滨市第九中学校2024-2025学年高二上学期期末考试生物试题 含解析
- 国家开放大学电大《国际私法》形考任务1-5题库及答案
- 茶艺师培训教材ppt课件
评论
0/150
提交评论