




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章VR開(kāi)發(fā)
5.7操作實(shí)例3:三維游戲SurvivalShooter的VR改造
三維游戲SurvivalShooter是Unity官方提供的一個(gè)教程實(shí)例,采用“上帝視角”,游戲畫(huà)面精致,操作方便,可玩性強(qiáng),畫(huà)面如圖所示。相信很多讀者在學(xué)習(xí)Unity的時(shí)候都接觸過(guò)它。在本例中,我們使用HTCVIVE平臺(tái),將這款游戲改造成VR的形式。通過(guò)這樣的方式,介紹虛擬現(xiàn)實(shí)在游戲中的應(yīng)用特點(diǎn)。實(shí)現(xiàn)步驟如下。(1)新建一個(gè)Unity工程項(xiàng)目,在其中導(dǎo)入SurvivalShooter、VRTK和SteamVR的UnityPackage素材包。(2)在PlayerSettings里的“XRSettings”里勾選“VirtualRealitySupported”,然后單擊“+”按鈕,添加“OpenVR”選項(xiàng),設(shè)置項(xiàng)目對(duì)VR的支持如圖所示。(3)打開(kāi)SurvivalShooter包中的Complete-Game場(chǎng)景。這是Unity官方已經(jīng)做好的具有完整功能的場(chǎng)景,我們就在此基礎(chǔ)之上修改。(4)刪除場(chǎng)景中原有的主攝像機(jī)MainCamera。因?yàn)閂R中需要使用VR攝像機(jī)。(5)刪除Player物體上所掛載的PlayerMovement和動(dòng)畫(huà)組件。因?yàn)樵瓉?lái)的游戲中是使用第三人稱視角,玩家可以看到主角本身的形象和動(dòng)作,而VR中玩家本身就是主角,游戲使用第一人稱視角,所以就不需要Player物體的移動(dòng)和動(dòng)畫(huà)功能。(6)新建空物體并命名為sdkmanager,在其上添加VRTK_SDKManager組件,開(kāi)始HTCVIVE的VRTK配置。(7)新建空物體并命名為sdksetup,為其添加VRTK_SDKSetup組件。并將SteamVR中的CameraRig和SteamVR預(yù)設(shè)體從Project面板拖入場(chǎng)景,作為sdksetup的子物體。在VRTK_SDKSetup組件中的“QuickSelect”中,選擇SteamVR平臺(tái),如圖所示。(8)回到sdkmanager物體,在其VRTK_SDKManager組件中單擊“AutoPopulate”按鈕,將SteamVR的SDK加入VRTK_SDKManager組件。在VRTK_SDKManager組件中添加SteamVR的SDK,如圖所示。(9)試運(yùn)行場(chǎng)景,可以看到HTCVIVE頭顯正常運(yùn)作。但是,游戲中的敵人會(huì)直接走到玩家的位置,感覺(jué)像走到玩家身體里去了,在視角上有點(diǎn)不太對(duì)。應(yīng)該是敵人走到玩家的面前就停下來(lái),不能再靠近。(10)解決上面的問(wèn)題可以新建一個(gè)VRTKScripts空物體,命名為headsetalias,作為頭顯替代物。其上放置VRTK_SDKObjectAlias腳本,設(shè)置“SDKObject”屬性的值為“Headset”,這樣場(chǎng)景中的其他物體就會(huì)感知到用戶的頭顯,產(chǎn)生碰撞阻擋效果。同時(shí),找到場(chǎng)景中的Player物體,為其加上一個(gè)VRTK_TransformFollow組件,設(shè)置“GameObjectToFollow”為“headsetalias”,設(shè)置頭顯替代物追隨Player物體而移動(dòng)如圖所示。這樣,頭顯替代物就會(huì)跟著Player物體的移動(dòng)而移動(dòng),從而保證不會(huì)再出現(xiàn)敵人走到玩家身體里的現(xiàn)象。(11)現(xiàn)在運(yùn)行場(chǎng)景,玩家可以在一定范圍內(nèi)走動(dòng)。但是由于游戲中場(chǎng)景比較大,超出了HTCVIVE的可移動(dòng)范圍,所以需要設(shè)置Teleport跳轉(zhuǎn)。
在VRTKScripts物體下,新建兩個(gè)子物體LeftHandController和RightHandController作為左、右手柄控制器,在它們上面添加ControllerEvents、VRTKPointer、StraightPointerRenderer組件,并將StraightPointerRenderer組件拖動(dòng)到VRTKPointer組件的“PointerRenderer”屬性框中。然后,將左、右手柄控制器物體拖入SDKManager組件的相應(yīng)屬性框,完成手柄控制器的設(shè)定,左、右手柄控制器屬性設(shè)置如圖所示。
最后,再建立一個(gè)空物體,命名為PlayArea,其上放置BasicTeleport腳本,保持默認(rèn)屬性設(shè)置不修改。這樣就完成了Teleport跳轉(zhuǎn)功能。(12)這時(shí)玩家還只能走動(dòng)和跳轉(zhuǎn)位置,不能攻擊敵人。下面將原來(lái)游戲中玩家的槍綁定到手柄控制器上。在RightHandController右手柄控制器物體上,添加VRTK_InteractTouch、VRTK_InteractGrab、VRTK_ObjectAutoGrab這3個(gè)組件,使右手柄控制器具備一直自動(dòng)抓取物體的能力。
然后新建一個(gè)物體,命名為GunHolder。將Player物體下的Gun槍物體拖過(guò)來(lái),作為GunHolder的子物體。單擊“Window”→“VRTK”→“SetupInteractableObject”,將GunHolder物體轉(zhuǎn)變?yōu)榭山换ノ矬w,并修改其VRTK_InteractableObject組件的“ValidDrop”為“NoDrop”,也就是抓到之后不丟棄如圖所示。再將Gun物體拖入右手柄控制器的VRTK_ObjectAutoGrab組件的“ObjectToGrab”中。自動(dòng)抓取物體設(shè)置如圖所示。這樣,Gun物體就將一直跟隨右手手柄移動(dòng),就像玩家拿著它一樣。(13)把Gun物體原來(lái)的SkinnedMeshRenderer組件刪掉,因?yàn)檫@個(gè)組件不支持VR渲染。改為添加MeshFilter和MeshRenderer組件,并將原來(lái)Gun物體的Mesh和Material拖入相應(yīng)的屬性框,使用MeshFilter和MeshRenderer組件如圖所示。(14)修改Gun物體的位置屬性和旋轉(zhuǎn)屬性,將它們都?xì)w零。并添加一個(gè)BoxCollider在GunHolder物體上,從而使槍物體形成物理碰撞的阻擋效果。(15)在GunHolder物體下再創(chuàng)建一個(gè)子物體,命名為snaphandle,將其放置在合適的位置。此物體作為一個(gè)標(biāo)識(shí),標(biāo)識(shí)出右手柄控制器抓在GunHolder的哪個(gè)位置上。在GunHolder物體的VRTK_ChildofControllerGrabAttach組件中,設(shè)置“RightSnapHandle”屬性為剛剛創(chuàng)建的snaphandle物體,設(shè)置snaphandle作為抓手位置如圖所示。(16)現(xiàn)在Gun物體會(huì)隨著玩家拿著的右手柄控制器移動(dòng),好像玩家將它拿在手里一樣。下面繼續(xù)修改,實(shí)現(xiàn)按手柄控制器按鍵就射擊的功能。找到PlayerShooting腳本,添加一個(gè)VRTK的控制器事件類型的公共變量:
VRTK.VRTK_ControllerEventsvrtkCtrlEvents在Update()函數(shù)中,找到判斷用戶輸入實(shí)現(xiàn)射擊的if語(yǔ)句,添加“或”條件,具體腳本如下:
PlayerShooting腳本經(jīng)過(guò)這樣的修改,就能夠獲取玩家按下手柄控制器上的Trigger鍵的事件,并調(diào)用Shoot()
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 業(yè)務(wù)合作進(jìn)展與合同執(zhí)行情況統(tǒng)計(jì)表
- 各行業(yè)用戶畫(huà)像展示表
- 軟件開(kāi)發(fā)集成測(cè)試服務(wù)合同
- 小學(xué)生課堂語(yǔ)言的規(guī)范與應(yīng)用
- 農(nóng)村合作社果樹(shù)種植與管理合作協(xié)議
- 低空經(jīng)濟(jì)與5G技術(shù)的結(jié)合與發(fā)展
- 文件快遞辦理流程表格
- 電子商務(wù)法律法規(guī)及合規(guī)性研究報(bào)告
- 一個(gè)難忘的時(shí)刻敘事類文章7篇
- 商品分類標(biāo)準(zhǔn)列表
- 文員職業(yè)發(fā)展規(guī)劃
- 地鐵站保潔方案
- 干部履歷表(中共中央組織部2015年制)
- 數(shù)學(xué)思想與方法-國(guó)家開(kāi)放大學(xué)電大機(jī)考網(wǎng)考題目答案
- 病媒生物防制投標(biāo)方案(技術(shù)標(biāo))
- 廣東省廣州市2023年中考物理試卷
- 新版機(jī)動(dòng)車檢測(cè)全部記錄表格
- 數(shù)學(xué)教育概論 第3版
- 北師大版二年級(jí)數(shù)學(xué)下冊(cè)《最喜歡的水果》教案及教學(xué)反思
- 飼料生產(chǎn)企業(yè)安全現(xiàn)場(chǎng)檢查表
- 北京西城南區(qū)小學(xué)四年級(jí)下學(xué)期英語(yǔ)期末口試試卷
評(píng)論
0/150
提交評(píng)論