第5章 VR开发-5.7 操作实例3:三维游戏Survival Shooter的VR改造_第1页
第5章 VR开发-5.7 操作实例3:三维游戏Survival Shooter的VR改造_第2页
第5章 VR开发-5.7 操作实例3:三维游戏Survival Shooter的VR改造_第3页
第5章 VR开发-5.7 操作实例3:三维游戏Survival Shooter的VR改造_第4页
第5章 VR开发-5.7 操作实例3:三维游戏Survival Shooter的VR改造_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论