張勝男 司占軍 李晗



摘要:密室逃脫游戲需要玩家在有限空間內不斷搜集線索與道具對其進行破譯和組合,完成解密。通過Unity引擎開發一款反映現實社會問題的密室逃脫游戲,使玩家對游戲劇情所映射出來的問題進行反思,具有重大的社會意義。該文將游戲劇情集中關注與揭露不良PUA的行為方式與危害,基于虛擬現實技術對密室逃脫類游戲進行研究,設計并制作了密室場景及相關道具線索,系統設計過程中充分集成利用三維建模技術、碰撞檢測算法、人機交互技術、圖形UI界面設計、C#腳本代碼編寫等方法,并設計合理的劇情發展及線索。
關鍵詞:虛擬現實;密室逃脫游戲;實時漫游;人機交互
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2020)21-0087-03
開放科學(資源服務)標識碼(0SID):
密室逃脫類游戲是一種冒險類的益智游戲,玩家需要進行邏輯性的破譯或組合,不斷收集與合成新的線索的道具,并最終完成密室的解密。密室逃脫類游戲具有很強的故事性,可以讓玩家在游戲的過程中對故事劇情的發展產生思考,并能夠從中有所感悟。將現實中存在的矛盾與沖突融人游戲劇情中,利用虛擬現實技術將問題以及可能產生的后果以沉浸式方式展示給玩家,能夠使玩家對現實有更深入的思考。
1 游戲開發框架與實現流程
本系統主要是針對PC端用戶,從游戲場景與劇情的構思、三維模型的制作、圖像素材的制作和處理、Unity引擎內游戲場景的搭建以及UI交互設計和邏輯實現這五部分進行設計制作。其中,前期準備中需完成三維模型設計、貼圖制作渲染、動畫設計、圖像線索設計等部分;在Unity引擎中使用UGUI系統,通過C#語法規則和Unity引擎特有的應用程序編程接口(API),完成游戲中場景的跳轉、游戲的進入和退出、物體動畫的觸發、密碼的輸入等功能的實現。
2 游戲場景模型及動畫設計
建立一個虛擬現實系統的關鍵問題是對系統的建模與仿真[1]。首先根據預想的游戲場景,確定場景的樓層數和每層房間的位置與面積;用CAD簡單制作每層的平面圖,并在3DsMax中制作三維的樓體;需要在場景中出現的三維模型,在3DsMax綜合運用擠出、連接、倒角、倒角坡面、渦輪平滑、車削等功能,制作出風格統一的模型。教學樓仿真模型的制作主要包含三大樓層多種類型教室:音樂教室、圖書室、普通教室、禮堂、儲物間等,以及多種家具模型,如垃圾簍、桌椅、書柜、風扇、黑板等多種基礎模型。
3 系統的功能設計與實現
3.1光線效果分析與手電效果
通過分析調研市面相似游戲,為營造緊張的氛圍,場景光線效果一般為昏暗或忽明忽暗的光線,本游戲采用手電筒光進行照明,場景中未添加光源,同時手電筒應跟隨玩家視角進行移動。開關效果通過if條件判斷語句判斷布爾值真假以此來調用Light。具體的手電筒開關效果如圖1所示,選用FirstPer-sonCharacter以及spot light聚光燈源,可調節光源的照射范圍、光線角度、照射強度、光照顏色、反射強度等選項,使手電筒的效果更加逼真。
3.2 動畫播放控制與背景音樂切換
游戲中的模型需要制作動畫控制器控制動畫的播放。如圖2所示,在Project面板中新建一個動畫控制器,將模型及動同文件拖動到控制器面板,創建空狀態empty;將空狀態和動畫之間建立過度make transition,此時會從empty上延伸出一段線條,把線條的另一端點放在動畫上。為了能使模型再回到原始狀態,需要在導人相同的動畫,把動畫的播放速度改為負值,實現了動畫的倒放,按照圖2中的方法實現連接,并在過渡線段上分別添加控制動畫播放的布爾。
播放動畫的關鍵代碼如下:
public void OpenDoorTiaojian0//聲明播放第一段動畫的條件
( animator.SetBooI("OpenDoor", true);
animator.SetBooI("CloseDoor", false);
music.Play0;
】
private void OnMouseDown0//聲明一個鼠標點擊事件
{
isAn= !isAn;
if (isAnV/判斷當前模型的狀態
(
CloseDoorTianjian0;
}
else
(
OpenDoorTiaojian0;
)
print(isAn);
)
public void CloseDoorTianjian0//聲明播放第二段動畫的條件
{
animator.SetBooI(”CloseDoor”, true);
animator.SetBooI(”OpenDoor”, false);
)
3.3 高亮狀態顯示與線索查看
在密室逃脫游戲中,線索不能夠輕易被發現,只有執行了指定的動作或者進入了指定的區域內,才有被觸發的可能。本游戲中發現線索的邏輯是這樣的:玩家進入指定區域后,游戲道具會以高亮的輪廓線框提示玩家,玩家處于可觸發的范圍內點擊道具,就能查看道具的詳細信息,按Z鍵可以關閉詳情頁。功能實現通過添加觸發器與碰撞器并利用bool值進行條件判斷,具體實現代碼如下:
using cakeslice;//調用OutlineEffect的命名空間
public GameObject tupianl;
public GameObj ect tupian2;
public Outline m_outline;
private bool isTrigger= false;//聲明游戲組件、高亮組件和布爾
private void OnTriggerStay(Collider other)
{
if (other.tag. Equals(“Player”))//判斷玩家是否進入觸發器中
{
if (lnput.GetKeyDown(KeyCode.Z》
{
tupianI.SetActive(false);
tupian2.SetActive(false);
1//輸入Z鍵圖片消失
)}
public void openPaper0//建立鼠標的點擊事件
{
if (isTrigger)//判斷布爾值是否為真
(
tupianl. SetActive(true);//為真時點擊模型可以示圖片
}}
4 結果
利用虛擬現實軟件開發了基于社會問題不良PUA的三維密室逃脫游戲,可通過游戲初始界面進入游戲完成線索搜集及解謎通關。密室環境首先利用AutoCAD對教學樓場景進行平面設計與合理安排,運用3D Studio Max對整體環境以及各種物品進行建模,通過PhotoShop制作相關貼圖,實現物品與相關線索的聯系。其次,將模型導出為.fbx格式導人Unity 3D中,通過對場景內光源選擇營造緊迫氣氛、音效調控跳轉、碰撞檢測技術、高亮效果的改進實現用戶在游戲場景中的高仿真實時漫游模擬,漫游過程中可通過劇情線索的搜索不斷了解不良PUA的搭訕技巧及其危害性,避免個人落人相關陷阱中,充分地將社會問題與游戲相結合,更大程度地反映劇情及社會問題。
參考文獻:
[1]劉賢梅,石楊,趙婭,等.基于虛擬現實的室內仿真操作系統研究與應用[J].計算機技術與發展,2020(1):149-154.
【通聯編輯:謝媛媛】
作者簡介:張勝男(1995-),女,山東禹城人,碩士在讀,研究方向為虛擬現實技術;司占軍(1971-),男,河北人,教授,碩士,研究方向為數字出版媒體;李晗(1997-),女,學士,研究方向為數字出版。