国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Unity的VR迷宮游戲項目技術(shù)分享

這篇具有很好參考價值的文章主要介紹了基于Unity的VR迷宮游戲項目技術(shù)分享。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、項目重述

項目重述如下:

  1. 在移動端設(shè)計一個可參與的創(chuàng)作平臺,結(jié)合計算機(jī)視覺相關(guān)技術(shù),獲取物理空間中的迷宮設(shè)計圖;
  2. 將移動端獲得的迷宮數(shù)據(jù)轉(zhuǎn)換為三維虛擬場景,并在VR端呈現(xiàn);
  3. 開發(fā)基于Unity 3D的雙人體驗系統(tǒng),并實現(xiàn)用戶在虛擬迷宮中的漫游和交互;
  4. 要求實現(xiàn)“VR + VR”形式: 兩名用戶佩戴 VR頭盔進(jìn)行漫游并協(xié)作;
  5. 要求采用的VR交互技術(shù):人體運(yùn)動跟蹤、控制用戶在虛擬場景中漫游、手勢交互等。

三、項目核心技術(shù)與亮點

  1. 系統(tǒng)完整地達(dá)到了實驗的所有要求,具有完整的用戶體驗,涉及多種技術(shù)棧,達(dá)到了多通道交互的效果,基本上達(dá)到了自然和諧的人機(jī)交互體驗
  1. 基于原生Android與OpenCV,高精度識別物理空間中的迷宮布局;手繪迷宮識別錯誤率趨近0%,實際應(yīng)用環(huán)境迷宮識別錯誤率約5%;
  2. VR端場景較為恰當(dāng),組件多樣;既可以單人體驗,也可以多人交互,動作捕捉較為靈敏準(zhǔn)確,使用方式靈活可靠。
  3. 利用Spring Boot和Vue的架構(gòu)、基于HTTP的統(tǒng)一通訊手段,建立起了強(qiáng)數(shù)據(jù)一致性的服務(wù)控制端,可以實時更改迷宮布局,增加了游玩的趣味性。

四、系統(tǒng)架構(gòu)概述

4.1 設(shè)備與開發(fā)環(huán)境

  1. 使用交互設(shè)備:Android智能手機(jī)(Android 6.0 及以上)、愛奇藝小閱s VR眼鏡盒子、Kinect、筆記本電腦(Windows 10 及以上);
  2. 開發(fā)平臺:Unity2021.3、Android studio 2021、Visual Studio 2020、IntelliJ IDEA 2021;
  3. 開發(fā)過程中使用的SDK:OpenCV for Android SDK、GoogleVRForUnity_1.200.1、 Kinect for windows SDK v2.0;

4.2 系統(tǒng)架構(gòu)

4.2.1 系統(tǒng)架構(gòu)簡述

  1. 移動端:輸入一張圖片,經(jīng)過算法的處理,輸出迷宮的結(jié)構(gòu),用簡短的數(shù)據(jù)結(jié)構(gòu)來描述迷宮數(shù)據(jù),最終完成向服務(wù)器的數(shù)據(jù)傳輸。
  2. VR端:此部分放在VR眼鏡盒子里供用戶體驗,需要根據(jù)服務(wù)器數(shù)據(jù),向用戶展示三維空間景象。
  3. 服務(wù)器端:服務(wù)器端負(fù)責(zé)連接Kinect、識別用戶動作、并且發(fā)送到VR端,控制端負(fù)責(zé)實時更新迷宮的狀態(tài),并且把最新的布局反映到VR端。

4.2.2 系統(tǒng)架構(gòu)圖

-主要功能模塊圖示:

vr游戲csdn,unity,vr,3d,android

??

五、項目需求與可行性分析

5.1 移動端需求與可行性分析

5.1.1 用戶界面設(shè)計

在界面設(shè)計中,我們希望設(shè)計的界面符合課上講述的各類 GUI 設(shè)計原則的要求:

  1. 桌面隱喻:桌面隱喻是一種用于設(shè)計圖形用戶界面的技術(shù),它將計算機(jī)界面模擬成一個現(xiàn)實生活中的辦公桌面。在這個桌面上,用戶可以看到和操作各種圖標(biāo)、文件夾和工具欄等,就像在現(xiàn)實中使用一件物品一樣。
  2. 直接操作:直接操作是一種用戶與計算機(jī)交互的方式,它允許用戶直接通過物理手勢或觸控來操作界面元素,而不是通過命令或鼠標(biāo)指針等間接的方式。這種方式可以讓用戶更快速、直接地完成任務(wù),并且更容易理解系統(tǒng)的反饋。
  3. 所見即所得:所見即所得是一種界面設(shè)計的原則,它允許用戶在編輯器中看到最終的輸出結(jié)果。

5.1.2 圖像獲取方式

在實驗中,我們需要獲取場景中已經(jīng)標(biāo)記好的迷宮,需要通過拍照實現(xiàn)。除此以外,我們還希望可以上傳圖片的方式進(jìn)行處理,從而應(yīng)對實驗環(huán)境中沒有已標(biāo)記迷宮的問題。

5.1.3 圖像處理流程

我們希望能使用OpenCV完成圖像的處理,識別圖像中的迷宮,并生成格式化的迷宮數(shù)據(jù)。OpenCV是一個用于計算機(jī)視覺和機(jī)器學(xué)習(xí)的庫,可以用來進(jìn)行文件掃描和圖像處理。下面是使用OpenCV進(jìn)行處理的主要流程:

  1. 導(dǎo)入必要的SDK并獲取文件列表;
  2. 對圖像進(jìn)行預(yù)處理;
  3. 對處理后的圖像進(jìn)行分析;
  4. 圖像透視變換與直線識別;
  5. 模糊處理;
  6. 結(jié)果輸出。

5.1.4 數(shù)據(jù)約定與數(shù)據(jù)傳輸

由于需要將迷宮識別的結(jié)果發(fā)送給服務(wù)器,我們在開發(fā)前約定了傳輸?shù)臄?shù)據(jù)格式:通過40位長的01字符串,按照行優(yōu)先的順序?qū)?yīng)到迷宮的每一條邊上,以此表示迷宮的結(jié)構(gòu)。

5.2 VR與服務(wù)器端需求與可行性分析

5.2.1 控制平臺設(shè)計及三維虛擬場景呈現(xiàn)

  1. 創(chuàng)作平臺的設(shè)計需要簡單易用,同時還要保證其能夠獲取物理空間中的設(shè)計圖,這需要使用相應(yīng)的技術(shù)實現(xiàn)圖像識別和數(shù)據(jù)采集。
  2. 將物理空間中的設(shè)計圖轉(zhuǎn)換為三維虛擬場景需要使用三維建模技術(shù),同時需要確保轉(zhuǎn)換后的虛擬場景與原圖的精度和比例一致,否則可能會影響用戶的使用體驗。
  3. 在VR端呈現(xiàn)虛擬場景需要使用VR技術(shù),包括虛擬現(xiàn)實設(shè)備、渲染引擎、交互技術(shù)等,同時需要注意性能和體驗的平衡,以確保用戶可以流暢地體驗虛擬場景。

5.2.2 雙人體驗系統(tǒng)設(shè)計及虛擬迷宮轉(zhuǎn)換

  1. 雙人體驗系統(tǒng)需要支持兩名用戶的佩戴VR頭盔進(jìn)行漫游和協(xié)作,這需要使用實時通信實現(xiàn)用戶間的數(shù)據(jù)傳輸和場景同步。
  2. 將二維迷宮轉(zhuǎn)換為三維虛擬迷宮需要使用三維建模技術(shù)和數(shù)據(jù)轉(zhuǎn)換技術(shù),同時需要注意迷宮的設(shè)計精度和用戶可操作性,以確保用戶可以順暢地進(jìn)行漫游和交互。
  3. 實現(xiàn)用戶在虛擬迷宮中的漫游和交互需要使用虛擬現(xiàn)實技術(shù),包括頭部追蹤、手部追蹤、碰撞檢測、物理模擬等,同時需要注意用戶體驗和場景性能的平衡,確保用戶可以愉悅地探索虛擬迷宮。

5.2.3 使用的開發(fā)工具和設(shè)備選擇及兼容性問題

  1. 使用愛奇藝小閱悅s VR 眼鏡盒子、Kinect、Unity、手機(jī)進(jìn)行開發(fā)需要考慮它們之間的兼容性問題,同時還需要選擇合適的開發(fā)工具和庫,以確保開發(fā)過程的高效性和可靠性。
  2. 可能還需要考慮到不同設(shè)備和平臺之間的兼容性問題,主要包括Unity和VR在不同平臺上的兼容性。這需要在開發(fā)過程中進(jìn)行充分測試和優(yōu)化。

六、系統(tǒng)工作流程概述

在進(jìn)一步介紹系統(tǒng)的具體開發(fā)方案之前,我們認(rèn)為讀者對系統(tǒng)的工作流程有進(jìn)一步的了解,可以更清晰地閱讀和理解之后的內(nèi)容。出于此,本部分將對系統(tǒng)的工作流程做進(jìn)一步的解釋。

6.1 移動端二維地圖識別

在移動端設(shè)計可以對二維地圖識別的軟件,首先可以使用手機(jī)攝像頭對物理空間中的地圖進(jìn)行拍攝采樣,通過圖像進(jìn)行預(yù)處理、圖像進(jìn)行分析、圖像透視變換與直線識別、模糊處理等一系列處理過程,準(zhǔn)確識別物理環(huán)境中迷宮的結(jié)構(gòu)。

此后,將迷宮顯示在用戶可直接操作的GUI上供用戶手動修改不完善的部分,最終按照約定組織數(shù)據(jù)并提交。

用戶界面的展示如下:

vr游戲csdn,unity,vr,3d,android ???? vr游戲csdn,unity,vr,3d,android

????

6.2 服務(wù)器端接流,設(shè)置地圖信息

服務(wù)器端首先接收來自移動端收集的迷宮布局?jǐn)?shù)據(jù),將封裝的信息解碼后獲得地圖信息,并按照該信息,在web界面上的4*4的地圖區(qū)域還原出物理空間中的二維地圖。設(shè)置完成之后首先向手機(jī)VR端發(fā)送轉(zhuǎn)發(fā)地圖信息,便于VR端在第一時間構(gòu)建出三維迷宮地圖的墻壁。接著管理員可以在服務(wù)器端的web界面上設(shè)置金幣、TNT炸彈、寶箱的位置信息,設(shè)置完成之后發(fā)送給VR端。服務(wù)器與VR端之間使用Socket通信。當(dāng)有多人進(jìn)行游戲的時候,服務(wù)器會將設(shè)置的信息平等的發(fā)送給兩個VR端,保證信息的統(tǒng)一性,同時也增加了游戲的競爭性、可玩性,多個用戶競爭同一個寶箱。

6.3 VR端接流,進(jìn)行游戲,返回游戲信息

VR端首先接收一個來自服務(wù)器端的封裝后的地圖信息,將該信息解碼后,依據(jù)該信息利用Unity3D技術(shù)構(gòu)建出三維迷宮的基本墻體,用戶此時便可以觀察到迷宮的樣貌,也可以進(jìn)行走動,體驗動作識別的靈敏度等。準(zhǔn)備完成之后VR端開始接受來自服務(wù)器端設(shè)置的地圖信息,比如:金幣、TNT、寶箱等。根據(jù)這些道具的位置信息,VR端在三維迷宮之中增加這些道具。當(dāng)用戶贏得金幣,或者觸碰到炸彈之后,獲得相應(yīng)的獎懲,VR端要取消設(shè)置在該位置上的金幣或炸彈,并將迷宮中的游戲信息:用戶位置、用戶數(shù)量、地圖上的道具信息等返回給服務(wù)器端。

6.4 服務(wù)器端接收VR端返回信息

服務(wù)器端隨時接收VR端返回的游戲的信息,包括有游戲玩家的數(shù)量、游戲玩家的位置信息、當(dāng)前游戲世界中金幣的數(shù)量以及位置信息、TNT炸彈的數(shù)量以及位置信息、最終寶箱的數(shù)量以及位置信息。服務(wù)器要將這些信息展示在服務(wù)器的web頁面上。并且服務(wù)器可以隨時添加或刪除金幣等游戲道具的信息。

七、系統(tǒng)具體實現(xiàn)與成果展示

7.1 移動端具體實現(xiàn)

7.1.1 界面設(shè)計

7.1.1.1 界面展示

為了更好的解釋界面的設(shè)計原理,先展示最終的界面,分別是初始的狀態(tài)以及工作下的狀態(tài):

vr游戲csdn,unity,vr,3d,android ???? vr游戲csdn,unity,vr,3d,android

????

7.1.1.2功能介紹

簡要介紹一下各部分:

  1. 上半部分是當(dāng)前通過點擊或者圖像識別得到的迷宮
  2. 中間的三個紫色按鈕用于對當(dāng)前的迷宮進(jìn)行一些快捷操作,分別對應(yīng):全部選擇,選擇迷宮的邊緣以及全部取消選擇
  3. 再下一行是一個輸入框,用于輸入服務(wù)器的ip地址。由于服務(wù)器的ip地址是動態(tài)ip地址,因此我們只協(xié)商了傳輸?shù)臄?shù)據(jù)格式、使用的協(xié)議以及方法api,而ip地址根據(jù)服務(wù)器動態(tài)地址手動輸入。輸入ip地址后,其后的“提交”按鈕用于發(fā)出get請求,向服務(wù)器傳遞數(shù)據(jù)。
  4. 再下面一部分的左側(cè)按鈕,下面的兩個用于打開相機(jī)拍攝圖片或者在圖庫中選擇圖片,最頂部的“處理圖片”按鈕,用于將已經(jīng)加載的圖片進(jìn)行處理,并以對應(yīng)的格式加載到上部分的二維迷宮中。
  5. 右側(cè)的圖片,在“處理圖片”之前,展示了拍照獲得的或通過上傳得到的圖像,在“處理圖片”之后,展示了處理的結(jié)果。

7.1.1.3 設(shè)計準(zhǔn)則與原理

在進(jìn)行設(shè)計的過程中,盡可能的應(yīng)用了課上所學(xué)習(xí)的GUI設(shè)計理論,具體闡述如下。

桌面隱喻:

  1. 迷宮的設(shè)計展示了桌面隱喻的原理,用不同的顏色展示了迷宮當(dāng)前位置為“墻”或者“空地”,易于使用者理解。

直接操縱:

  1. 迷宮可以通過點擊實現(xiàn)添加墻壁,再點擊即可“刪除”當(dāng)前墻壁,體現(xiàn)了“直接操縱”的原理。

所見即所得:

  1. 對迷宮的操作可以直接顯示,體現(xiàn)了“所見即所得”的技術(shù)原理。
  2. 右下角圖片在加載之后顯示上傳圖片,在處理之后顯示處理過后的圖片,體現(xiàn)了“所見即所得”的思想。

7.1.2 手動確定迷宮格式

7.1.2.1設(shè)計目的

出于一下三個目的,在進(jìn)行圖片識別處理之前,我首先設(shè)計了可以點擊處理,即手動確定迷宮組成的部分。

  1. 圖片識別不一定準(zhǔn)確,識別過后也需要手動的調(diào)整。
  2. 在沒有圖像來源的時候,我們也希望可以通過手動輸入的方式,告知系統(tǒng)迷宮的結(jié)構(gòu)。
  3. 便于項目原型的開發(fā)和測試。

7.1.2.2 構(gòu)建方式

根據(jù)實驗的要求,如“3.2.1”中的展示的圖片,迷宮由4 * 4的正方形組成,邊緣以Button的形式組成,以行優(yōu)先的模式處理,每行有四個或者五個按鈕,即 4 + 5 + 4 + 5 + 4 + 5 + 4 + 5 + 4 = 40 個按鈕,組成了整個迷宮。每個按鈕彼此獨立,表示迷宮中的“一堵墻”是否存在。

迷宮的存儲由一個二維數(shù)組完成,以行優(yōu)先的結(jié)構(gòu)存儲,共有九行。數(shù)組中的每一位只能取0或者1,表示當(dāng)前位置的“墻壁”是否“存在”。

通過點擊按鈕,可以改變按鈕的顏色,同時更新數(shù)組中對應(yīng)位置的數(shù)值,即改變一個墻壁的狀態(tài)。

7.1.2.3 迷宮快速操作按鍵

在實際開發(fā)與測試的過程中,我們發(fā)現(xiàn)有一些手動的操作是重復(fù)的,比如,我們常常希望可以為迷宮添加四周的邊緣,以保證迷宮內(nèi)的用戶有沉浸式的體驗。而每次通過點擊輸入迷宮的四周,是一個令人感到厭倦的工作。

因此,在迷宮的下方,添加了三個按鈕,用于直接完成三個常用的操作,分別是:

  1. 全部選擇:選擇迷宮中的全部“墻體”。
  2. 選擇邊緣:選擇外圍的“墻體”,而不處理外圍之外的“墻體”。
  3. 全部取消選擇:取消選擇所有“墻體”。

開發(fā)及測試中的過程與體驗證明,這三個按鈕的設(shè)計是十分有必要的。

7.1.3 圖像獲取

作為系統(tǒng)的輸入,圖像獲取流程是十分關(guān)鍵的一部分。根據(jù)上文的需求分析,我們希望可以通過上傳圖片或拍照的兩種方式完成圖像的輸入操作。

7.1.3.1 通過拍照獲得圖片

其主要步驟如下:

  1. 在布局文件中添加一個 ImageView 控件,用于顯示選擇的圖片。
  2. 請在清單文件中添加 <uses-feature> 代碼,獲得拍照權(quán)限。
  3. Android 向相機(jī)委托操作的方法是調(diào)用一個 Intent,用于描述要執(zhí)行的操作。此過程涉及三個部分:Intent 本身,用于啟動外部 Activity 的調(diào)用,以及用于在焦點返回到 Activity 時處理圖片數(shù)據(jù)的一些代碼。
  4. Android 相機(jī)應(yīng)用會保存一張完整尺寸的照片,但是由于照片的體積較大,完整的圖像不允許直接加載到程序中,處理的方式是先將圖像保存在本地,并通過回調(diào)加載到imagview中。

7.1.3.2在相冊上傳圖片

這部分的處理流程相對較為簡單:

  1. 首先,同樣需要使用 Intent 請求相冊的工作。
  2. 通過選擇照片的回調(diào)加載圖片。

7.1.4圖像處理

圖像的處理以及在其中識別出迷宮是項目的關(guān)鍵部分,在這部分中,我們期望可以在輸入的圖片中提取出最大矩形的信息,并通過透視變換轉(zhuǎn)換為正方形,還需要一些額外的圖像處理的步驟,以便于下一部分中迷宮的識別。

7.1.4.1 處理步驟

  1. 導(dǎo)入OpenCV庫:在接下來的代碼中,需要使用OpenCV庫的相關(guān)函數(shù),需要先導(dǎo)入OpenCV庫。在安卓項目中,需要在build.gradle文件中添加OpenCV庫的依賴。
  2. 加載圖像:可以使用OpenCV的imread()函數(shù)從圖庫或相機(jī)中加載圖像。
  3. 預(yù)處理圖像:對于原始圖像,可能需要進(jìn)行一些處理來增強(qiáng)圖像特征。這個過程包括將圖像轉(zhuǎn)換為灰度圖像、應(yīng)用高斯濾波、應(yīng)用邊緣檢測等技術(shù)。
  4. 邊緣檢測:使用Canny算法進(jìn)行邊緣檢測。這將得到一幅二值化圖像,其中白色像素表示邊緣,黑色像素表示非邊緣。
  5. 輪廓檢測:使用findContours()函數(shù)查找圖像中的所有輪廓。該函數(shù)會返回一個輪廓列表,每個輪廓由一系列點組成。
  6. 矩形檢測:對于每個輪廓,使用approxPolyDP()函數(shù)對其進(jìn)行多邊形逼近。如果逼近后的多邊形是矩形,則將其保存在矩形列表中。
  7. 找到最大矩形:遍歷矩形列表,找到最大的矩形。我的處理方式是對識別到的所有矩形面積進(jìn)行排序,以便于找到最大的矩形,即對應(yīng)迷宮的外圍。
  8. 透視變換:使用Imgproc.getPerspectiveTransform()函數(shù)計算變換矩陣。該函數(shù)需要輸入源圖像中矩形的四個頂點和目標(biāo)圖像中矩形的四個頂點。然后,使用Imgproc.warpPerspective()函數(shù)將圖像進(jìn)行透視變換,變換后的圖像會被變換成一個正方形。
  9. 顯示結(jié)果:最后,使用ImageView或者SurfaceView將處理后的圖像顯示出來。

7.1.4.2 結(jié)果展示

原始圖像:

vr游戲csdn,unity,vr,3d,android

處理結(jié)果:

vr游戲csdn,unity,vr,3d,android

7.1.5 迷宮識別

完成了上述的圖像處理之后,我們得到了一個正方向的迷宮,其中黑色的部分標(biāo)識了迷宮的“墻體”,接下來的工作是識別出迷宮中的直線,并對應(yīng)地映射到迷宮的每個墻壁上,最終更改設(shè)置好的迷宮。

7.1.5.1 具體步驟

識別過程主要分為以下幾個步驟:

  1. 識別圖像中的直線:再次使用HoughLinesP進(jìn)行直線檢測,識別出正方形迷宮中的所有直線。
  2. 模糊處理:根據(jù)迷宮的實際結(jié)構(gòu),直線只應(yīng)當(dāng)出現(xiàn)在固定的位置,識別出的直線位置往往有所偏差,為了接下來的處理,我們將一個固定位置附近的所有直線,投影到其固定的位置上。如:修正直線,遍歷所有的直線節(jié)點,(0, 20)區(qū)間內(nèi)的修正為 0、(80, 120)區(qū)間內(nèi)的修正為100、(180, 220)區(qū)間的修正為 200、(280, 320)區(qū)間的修正為 300。
  3. 檢測直線:對于映射后的固定位置進(jìn)行檢測,如果當(dāng)前直線的兩端能映射到一個“墻體”的兩端上,則認(rèn)定為當(dāng)前墻體“存在”。
  4. 修改迷宮:根據(jù)識別出的信息,對迷宮墻體數(shù)組以及按鈕狀態(tài)進(jìn)行修改。

7.1.5.2 結(jié)果展示

輸入迷宮圖像:

vr游戲csdn,unity,vr,3d,android

處理結(jié)果:

vr游戲csdn,unity,vr,3d,android

7.1.6 數(shù)據(jù)提交

經(jīng)過組內(nèi)協(xié)商,我們使用HTTP協(xié)議中的 GET 請求進(jìn)行數(shù)據(jù)的發(fā)送,數(shù)組組織在URL中,以一個40位的字符串發(fā)送。

7.2 VR端開發(fā)具體實現(xiàn)

7.2.1 總體預(yù)覽圖

vr游戲csdn,unity,vr,3d,android

7.2.2 動捕數(shù)據(jù)處理

首先,我們設(shè)定了一個計數(shù)器,每接收到10次數(shù)據(jù)執(zhí)行一次更新,這么做的目的是為了更新玩家坐標(biāo)的操作不能太頻繁,實驗證明能夠稍微提高一些VR的性能,尤其是在設(shè)備硬件條件不是很好的情況下。

然后我們寫了一個統(tǒng)一分割函數(shù):parseOneComponentPosition()。這個函數(shù)是項目的早期階段寫的,里面是對于各個部位做了一下字符串到index的映射,以后調(diào)用的時候就比較方便。

實際上在之后的開發(fā)過程中,對我們有用的數(shù)據(jù)也就是頭部和手部數(shù)據(jù)。分割之后,我們把這個頭部數(shù)據(jù)作為人體坐標(biāo)的依據(jù)(頭部一般不會抖動,比較穩(wěn)定),并且存到一個public static的變量中。

7.2.3 實體組件的邏輯

實體組件主要有地板、墻壁、寶箱、金幣、TNT炸藥桶這四個部分。其中,地板作為整個地圖的托舉部分,上面承擔(dān)了一些額外的通訊功能(把一些C# Scripts 綁定在了上面)。例如TCPClient,還有movement腳本。這些腳本是作為全局狀態(tài)存儲器或者行動控制器運(yùn)行的,主要作用是控制全局狀態(tài)。

墻壁,TNT炸藥桶,金幣,寶箱都是作為prefab事先存到項目里面。

墻壁是不具有rigidbody的剛體組件,不受重力影響,但碰撞時會妨礙玩家移動。

vr游戲csdn,unity,vr,3d,android

金幣是不受重力影響的剛體組件,會每秒旋轉(zhuǎn),以吸引玩家過來拾取。當(dāng)玩家離金幣距離為 3 以內(nèi),并且右手舉過頭頂?shù)臅r候,金幣就會被拾取。金幣被撿到之后+10分。

vr游戲csdn,unity,vr,3d,android

TNT如果距離玩家為2以內(nèi)就會爆炸,并且-20分??梢钥吹?,它有一個爆炸效果的成員變量。如果靠近,就會爆炸并且消失。

vr游戲csdn,unity,vr,3d,android

7.2.4 人物行走

對于一條數(shù)據(jù),由工具集系統(tǒng)可知:一條信息可能包含多個玩家的位置信息。所以如果是單人游戲,我們直接舍棄其他人物的信息,保留第一個玩家的動作捕捉數(shù)據(jù)。如果是雙人游戲,則需要明確自己究竟是第幾個玩家,并且根據(jù)玩家號對應(yīng)的數(shù)據(jù)來更新自己或者他人的位置。

那么,如何才能確定一個唯一的玩家號呢?我們在服務(wù)端設(shè)定了一個這樣的服務(wù):

vr游戲csdn,unity,vr,3d,android

它返回的報文格式如下:

vr游戲csdn,unity,vr,3d,android

也就是說,我們所有的數(shù)據(jù)最終都在服務(wù)端,并且VR在開機(jī)的時候就向服務(wù)端發(fā)送一個HTTP報文,以請求自己的玩家號和初始迷宮布局信息。

關(guān)于地圖的墻壁編號和地塊編號,我們是這樣規(guī)約解釋的:

vr游戲csdn,unity,vr,3d,androidvr游戲csdn,unity,vr,3d,android

這樣就能用一個字符來唯一描述一個組件的位置。

7.2.5 墻壁和物品的實時更新

我們使用springboot+vue搭建了服務(wù)端的平臺。這里僅僅展示一下效果。如圖,可以直接修改并且實時反映到所有的VR端。這一效果達(dá)成的方法是:VR端每1秒發(fā)送一個HTTP請求到服務(wù)端,然后根據(jù)其回復(fù)來更新VR地圖。在服務(wù)端前端熱更新地圖之后,會傳到后端并且更改相應(yīng)的文件。這個文件就是一切數(shù)據(jù)的最終依據(jù)來源。

vr游戲csdn,unity,vr,3d,android

vr游戲csdn,unity,vr,3d,android

7.2.6 計分系統(tǒng)

我們在游戲中引入了積分系統(tǒng),金幣+10分,TNT-20分,最終寶箱+100分,規(guī)定時間內(nèi)贏得分?jǐn)?shù)較高的玩家界定為勝利。

游戲結(jié)束界面如下:

vr游戲csdn,unity,vr,3d,android

7.3 服務(wù)端開發(fā)具體實現(xiàn)

7.3.1 接收移動端地圖識別端的信息并處理

服務(wù)器端與前端使用socket進(jìn)行通信,接收到數(shù)據(jù)轉(zhuǎn)化為JSON的格式,讀取之后儲存到walls的文件當(dāng)中,后續(xù)所有關(guān)于迷宮墻壁的操作都是根據(jù)對walls文件的操作。

7.3.2 web界面展示地圖信息

vr游戲csdn,unity,vr,3d,android

前端使用Get方法從后端調(diào)用walls的信息,讀取之后對應(yīng)到web界面的地圖中,對應(yīng)的墻壁塊變?yōu)楹谏?,從而實現(xiàn)了物理空間地圖信息到web界面平面信息的轉(zhuǎn)化。

7.3.3 web界面上更改地圖信息,設(shè)置游戲道具等操作

7.3.3.1 更改地圖墻壁信息

通過點擊對應(yīng)的墻壁的位置,實現(xiàn)對墻壁的增加或刪除。

vr游戲csdn,unity,vr,3d,android

此時我將全部的內(nèi)部墻壁都取消了。

7.3.3.2 增加金幣、TNT炸彈、最終寶箱等道具

管理員操作:先點擊右側(cè)的增加各種類型道具的按鈕,然后再點擊左邊地圖中每個方格中間的位置,從而實現(xiàn)出對道具的增加,設(shè)置完成之后對應(yīng)位置會出現(xiàn)有相應(yīng)的圖標(biāo),所有道具設(shè)置完成之后,點擊提交便可以提交到兩個VR端。

? ? ? ? {

設(shè)置完成之后點擊右側(cè)提交按鈕,若提交成功則會出現(xiàn)相應(yīng)提示

vr游戲csdn,unity,vr,3d,android

7.3.3.3 自動刷新/暫停刷新

點擊自動刷新之后,前端web界面每隔5s接收一次后端發(fā)過來的數(shù)據(jù),并將其顯示在對應(yīng)的位置上,其目的是為了實現(xiàn)實時更新VR端用戶的位置,是否獲取了金幣等游戲信息。便于管理員進(jìn)行上帝視角的查看。暫停刷新之后,管理員可以實時對游戲內(nèi)道具的信息進(jìn)行修改。

vr游戲csdn,unity,vr,3d,android

7.3.4 向VR端發(fā)送管理員設(shè)置好的地圖信息以及游戲道具

服務(wù)器與VR端使用Socket進(jìn)行通信,當(dāng)建立好連接之后,服務(wù)器立即發(fā)送一個json數(shù)據(jù)包,該數(shù)據(jù)包中只包含walls墻壁信息與player_id用戶id兩個信息,便于VR端在第一時間構(gòu)建出三維迷宮地圖的墻壁。之后每隔5s管理員每點擊一次提交便會向VR端發(fā)送一個完整的json數(shù)據(jù)包,包含有道具數(shù)量以及位置信息,墻壁信息,用戶id等數(shù)據(jù)。使得VR端能夠在虛擬三維迷宮中構(gòu)建出各種各樣的道具。

vr游戲csdn,unity,vr,3d,android

??????

7.3.5 接收VR端發(fā)送的游戲進(jìn)行中的各種游戲信息并展示

VR端會實時發(fā)送游戲中的信息,包括用戶位置、用戶數(shù)量、地圖上的道具信息等,服務(wù)器接收之后展示在web界面,便于管理員了解游戲的情況。并作出對應(yīng)的操作以增加游戲的趣味性。

vr游戲csdn,unity,vr,3d,android

八、總結(jié)

本實驗?zāi)康氖峭ㄟ^對物理空間的二維地圖識別,依據(jù)此信息構(gòu)建出虛擬三維迷宮,并通過設(shè)置一系列的獎懲道具,使用戶在VR眼鏡的幫助下,實現(xiàn)用戶在虛擬迷宮中的漫游和交互。

主要完成以下五個方面:

  1. 移動端識別物理空間迷宮布局,并推流到服務(wù)器端;
  2. 服務(wù)器端接流,并在網(wǎng)頁上設(shè)置地圖信息;
  3. VR端的移動從服務(wù)器拉流,并向服務(wù)器端發(fā)送游戲進(jìn)行中的一系列信息;
  4. 服務(wù)器端接流,并顯示在網(wǎng)頁上;

8.1 系統(tǒng)設(shè)計亮點

8.1.1 高精度的物理迷宮識別

我們所開發(fā)的系統(tǒng)在物理環(huán)境迷宮識別的任務(wù)中表現(xiàn)相當(dāng)出色。通過圖像進(jìn)行預(yù)處理、圖像進(jìn)行分析、圖像透視變換與直線識別、模糊處理等一系列嚴(yán)謹(jǐn)?shù)乃惴ㄔO(shè)計,實現(xiàn)了“手繪迷宮識別錯誤率趨近0%,實際應(yīng)用環(huán)境迷宮識別錯誤率約5%”的出色識別結(jié)果。

8.1.2 實時控制,實時更改地圖信息

在服務(wù)器端,管理員可以在上帝視角隨時更改游戲世界中的道具數(shù)量或位置,當(dāng)用戶很長一段時間找不到金幣時,可以在用戶的周圍設(shè)置一枚金幣,讓用戶有種柳暗花明的感覺,增加對游戲的興趣,同時引導(dǎo)用戶前往最終寶箱。或者在用戶前往最終寶箱的必經(jīng)之路上放置一枚TNT,用戶需要及時進(jìn)行躲避,才能不被懲罰,大大增加了游戲的可玩性,刺激性。

8.1.3 多人游玩,良好的競爭體驗

該游戲系統(tǒng)支持多人同時進(jìn)行游玩,用戶可以選擇協(xié)作去找最終寶箱,也可以去競爭同一個寶箱,不管怎樣都給了用戶可選擇的權(quán)利。多人游玩也給了用戶與其他用戶交互的機(jī)會,,增加了游戲的可玩性。

8.1.4 豐富的道具以及獎懲機(jī)制

該游戲系統(tǒng)設(shè)置了豐富的道具體系,具體的道具類型有:金幣、TNT炸彈、最終寶箱。其中道具的規(guī)則:用戶走到金幣位置之后,Kinect檢測到用戶觸摸金幣的信息之后,該用戶將獲得獎勵分。TNT炸彈同理,當(dāng)用戶觸碰到TNT炸彈之后,將獲得懲罰,積分減少。最終寶箱,設(shè)置數(shù)量只有一個,當(dāng)某個用戶找到最終的寶箱之后,該用戶取得勝利,游戲結(jié)束。VR端還需要將游戲世界中的信息發(fā)送給服務(wù)器端,比如當(dāng)用戶找到一枚金幣之后,該位置上便不會再有金幣了,金幣的數(shù)量減一。

8.1.5 道具位置的隨機(jī)性,游戲局勢隨機(jī)改變的趣味性

服務(wù)器端在設(shè)置好金幣、TNT炸彈等道具的位置信息之后,只會返回給VR大體的位置,并不會返回具體的位置。VR端在接收了服務(wù)器的信息之后,根據(jù)在大體位置的范圍內(nèi),隨機(jī)選擇一個具體位置進(jìn)行道具的放置,極大的增加了游戲的隨機(jī)性,游戲局勢可能隨機(jī)發(fā)生變化,增加了游戲的刺激感、提高了游戲的可玩性。

8.2 系統(tǒng)測試

除了出色地完成整個系統(tǒng)的設(shè)計與開發(fā)工作,為了驗證系統(tǒng)在“人機(jī)交互”等方面的合理與完善,我們還對系統(tǒng)進(jìn)行了一系列單元測試、集成測試、系統(tǒng)測試以及用戶測試等,測試的具體執(zhí)行方案以及測試結(jié)果請見《用戶評估報告》。文章來源地址http://www.zghlxwxcb.cn/news/detail-519528.html

到了這里,關(guān)于基于Unity的VR迷宮游戲項目技術(shù)分享的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Unity】【VR開發(fā)】針對VR項目的優(yōu)化版Unity Build Settings

    【Unity】【VR開發(fā)】針對VR項目的優(yōu)化版Unity Build Settings

    編輯器中做了功能后,打包后卻總會畫面不滿意,所以到處學(xué)習(xí),總結(jié)成本篇,希望有用。 本篇總結(jié)基于Unity 2021 LTS。 模板選擇3D(URP) 如果URP不支持所用的部分Assets,那么也可以選擇Built-in管線,不過URP肯定畫面效果上要勝過Built-in。 HDRP不適用于移動端,所以不能作為VR一

    2024年02月19日
    瀏覽(23)
  • 【Unity】VR基礎(chǔ)開發(fā)2項目準(zhǔn)備-VR基本場景構(gòu)建(OpenXR方向)

    稍等一會兒,編輯器界面就出現(xiàn)了。有可能你的界面布局會有所不同,可以在右上角點擊布局,選擇Tall,布局切換后在來到左邊窗口的左上角,將Game選項卡拖放到下方Dock,這樣就可以得到和我一樣的布局了。 簡單介紹一下。 場景面板是對游戲進(jìn)行可視化編輯的地方。 Hie

    2024年02月07日
    瀏覽(21)
  • python項目分享 - python走迷宮小游戲

    python項目分享 - python走迷宮小游戲

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 走迷宮小游戲設(shè)計與實現(xiàn) (源碼) ?? 學(xué)長根據(jù)實現(xiàn)的難度和等級對項目進(jìn)行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 項目獲?。?htt

    2024年02月02日
    瀏覽(18)
  • python項目分享 python走迷宮小游戲

    python項目分享 python走迷宮小游戲

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 走迷宮小游戲設(shè)計與實現(xiàn) (源碼) ?? 學(xué)長根據(jù)實現(xiàn)的難度和等級對項目進(jìn)行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 項目獲?。?htt

    2024年01月16日
    瀏覽(21)
  • Unity游戲項目_3D迷宮(游戲源碼免費(fèi))

    Unity游戲項目_3D迷宮(游戲源碼免費(fèi))

    目錄 一、效果圖 二、講解 三、資源分享 總結(jié) 游戲開始界面: 游戲畫面: 游戲結(jié)束界面: 主要代碼如下: 1.鏈接代碼 2.小球移動代碼 3、結(jié)束與打包代碼 ? Unity游戲項目_3D迷宮(游戲源碼免費(fèi))。包括游戲項目和打包后PC端游戲, 下載鏈接:https://download.csdn.net/download/weixin_

    2024年02月12日
    瀏覽(19)
  • unity開發(fā)VR的項目01——環(huán)境配置(unity2020.3)

    unity開發(fā)VR的項目01——環(huán)境配置(unity2020.3)

    使用unity創(chuàng)建一個steam VR項目,首先要進(jìn)行環(huán)境的配置。 一、Steam VR插件導(dǎo)入 創(chuàng)建一個unity 3D項目,在unity 商店(window->asset store)中搜索SteamVR Plugin,找到并導(dǎo)入到unity資源,也可以“添加進(jìn)我的資源”后進(jìn)入unity項目中,在window->package manager中找到后下載和導(dǎo)入

    2024年02月15日
    瀏覽(22)
  • 基于VR技術(shù)的新型實驗室教學(xué)模式——VR線上生物實驗室

    基于VR技術(shù)的新型實驗室教學(xué)模式——VR線上生物實驗室

    隨著科技的發(fā)展,虛擬現(xiàn)實技術(shù)已經(jīng)逐漸走進(jìn)了我們的生活。在教育領(lǐng)域中,虛擬現(xiàn)實技術(shù)也被廣泛應(yīng)用于各種學(xué)科的教學(xué)中。其中,VR線上生物實驗室是廣州華銳互動開發(fā)的,一種基于VR技術(shù)的新型教學(xué)模式,它能夠為學(xué)生提供更加真實、生動的實驗體驗,同時也能夠更好地

    2024年02月14日
    瀏覽(29)
  • 【PICO】【Unity】【VR】如何對打包后的PICO項目有效Debug

    【PICO】【Unity】【VR】如何對打包后的PICO項目有效Debug

    PICO項目打包后再運(yùn)行就看不到Console了。當(dāng)然,會有各類專業(yè)的Debug工具。 有一類Debug的工具是Preview形式下展示Debug信息,但是發(fā)現(xiàn)Preview成功不見得打包也成功。 打包后也會有一些Debug工具,不過這里我給出自己的簡單解決辦法。 Unity Console的Debug是展示信息,所以我們也在游

    2024年01月21日
    瀏覽(26)
  • (七)Unity VR項目升級至Vision Pro需要做的工作

    Vision Pro 概述 定位為混合現(xiàn)實眼鏡,對AR支持更友好 無手柄,支持手(手勢)、眼(注視)、語音交互 支持空間音頻,相比立體聲、環(huán)繞聲更有沉浸感和空間感 支持VR/AR應(yīng)用,支持多種應(yīng)用模式。 Vision Pro技術(shù)特性 支持Metal 3圖形API及材質(zhì),不支持Unity引擎手寫Shader,支持Un

    2024年02月12日
    瀏覽(25)
  • 基于VR元宇宙技術(shù)搭建林業(yè)生態(tài)模擬仿真教學(xué)系統(tǒng)

    基于VR元宇宙技術(shù)搭建林業(yè)生態(tài)模擬仿真教學(xué)系統(tǒng)

    隨著科技的飛速發(fā)展,教學(xué)方式也正在經(jīng)歷著巨大的變革。林業(yè)經(jīng)濟(jì)學(xué)元宇宙虛擬教學(xué)系統(tǒng)作為一種新興的教學(xué)方式,為學(xué)生和教師提供了一個全新的、沉浸式的學(xué)習(xí)和教學(xué)環(huán)境。 森林管理和監(jiān)測 元宇宙技術(shù)可以用于森林管理和監(jiān)測。通過無人機(jī)、傳感器和虛擬現(xiàn)實技術(shù),

    2024年02月05日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包