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