楊娜,李杰,廖金巧
(北方工業大學信息工程學院,北京 100144)
基于Unity3D的三維生態莊園游戲設計與實現
楊娜,李杰,廖金巧
(北方工業大學信息工程學院,北京 100144)
為了實現三維生態莊園游戲系統,在學習和掌握Unity3D知識的基礎上,研究Unity3D中的碰撞檢測技術、模型加載技術、人機交互技術等,實現角色控制、場景漫游等功能模塊;為了增加游戲的真實性,研究UniSky關鍵函數的應用,實現游戲中的晴天、陰天等天氣效果。游戲具有良好的運行效果,表明Unity3D對游戲的開發是一個有力的工具。
Unity3D;碰撞檢測;角色控制;UniSky
三維游戲以計算機圖形學為基礎,通過三維技術制作而成,可以將各個游戲元素以立體方式呈現出來,其逼真的三維效果,良好的人機交互不但可以給用戶帶來愉悅的體驗,還可以促進游戲市場的發展。無論是三維的動作射擊游戲或是三維的角色扮演游戲,其設計和開發都離不開游戲引擎的支持,游戲引擎可以說是游戲的總體框架,只要熟悉和掌握某游戲引擎,就可以縮短游戲開發周期,加快游戲開發進度[1]。就目前來說,Unity3D游戲引擎本身強大的物理特性、跨平臺性等特點,受到開發人員的歡迎。為了開發出逼真三維生態莊園游戲,對Unity3D游戲引擎進行研究是非常有實際研究價值和意義的。
目前,Unity3D主要應用在二維和三維游戲的開發以及三維虛擬現實系統的制作上,國內外對于Unity3D游戲引擎的開發具有不同程度上的研究。2011年,干建松[2]在Unity3D游戲引擎的基礎上開發了室內漫游系統,以第一視角按照固定路徑實現室內家具等的展示;2012年,朱慧娟[3]通過研究Unity3D游戲引擎相關的關鍵技術,實現了虛擬校園漫游系統,在一定程度上為新生提供了方便;2013年,歐陽攀等[4]人在Unity3D的基礎上,對場景實時驅動、交互等方面進行研究,實現了網絡版虛擬校園,讓大部分人可以通過網絡來瀏覽學校的情況。本文在學習和掌握Unity3D游戲引擎的基礎上,對其碰撞檢測、人機交互等技術進行研究,從而較好地完成了三維生態莊園游戲的開發。
為了完成三維生態莊園游戲的開發,本文重點研究Unity3D游戲引擎本身的模型加載和碰撞檢測技術,為了使三維環境更加具有真實性,研究與Unity3D相關的Unisky天氣效果插件,從物理系統、碰撞檢測等方面將三維生態莊園游戲劃分成人機交互、場景加載、天氣系統等部分,其設計如圖1所示。

圖1 三維生態莊園游戲劃分
2.1 角色控制
角色控制是整個三維生態莊園游戲的核心,通過鼠標和鍵盤來控制虛擬人物的行走,完成角色的漫游以及植物的播種、澆水等操作,而角色控制與碰撞檢測緊密相連,若沒有碰撞檢測,角色可以任意行走,容易發生角色與場景穿透的現象。而合理的碰撞檢測可以增強游戲的真實性和趣味性,為了更好地完成游戲的開發,本文對Unity3D中的碰撞檢測進行研究,從組件方式、射線方式以及距離方式三方面進行描述。
組件方式是利用Unity3D游戲引擎本身含有的碰撞控件來實現的,可以依據不同的碰撞效果來選擇不同的碰撞控件,相對來說比較簡單;射線方式是借助Unity3D游戲引擎中的ScreenPointToRay關鍵方法來實現,是沿某方向發射一條無終點的直線,碰到第一個待碰撞的物體就停止發射射線,并返回碰撞的物體信息,該方法可遠距離實現碰撞,且應用靈活,適合炮彈發射等方面;因Unity3D支持JS和C#腳本,且可以調用不同的外在的函數庫,開發人員為了解決那個近距離碰撞檢測的問題,可以判斷兩個物體的距離來確定下一步的操作,該方式更加靈活,但需要更好的編碼功底??梢哉f,這三種碰撞檢測方式各有千秋,可以依據游戲的開發來選擇不同的碰撞檢測方式。
2.2 場景加載
場景加載涉及到三維生態游戲的美術資源的導入,一般來說Unity3D游戲引擎支持FBX格式的模型,為了更好地體驗效果,避免出現加載的問題,對于游戲中出現的地面、房屋等模型,尤其是需要添加動畫的模型,需要導出成FBX格式的文件,這里注意的是將FBX格式的模型導入到Unity3D中會自動生成對應的材質物件以及對應的模型文件,為了完成游戲的開發,避免模型的來回調用,一般將動態的模型生成或圖片的加載實現處理成Prefab(預制對象),方便游戲的調用,減少資源的浪費。
2.3 天氣系統
為了使游戲更加逼真,添加了晴天、陰天、雨天等天氣效果,用來影響植物的生長。因Unity3D兼容性較好,為了節約開發成本,縮短開發周期,游戲中的天氣系統是通過UniSky插件實現的。UniSky是開發人員為了使用方便,將關鍵核心方法封裝成Unity3D中支持的控件,需要依據游戲的效果來添加或刪除不同的控件或使用不同的腳本,再通過微調各個參數,從而實現晴天、陰天等天氣效果,提高了生態莊園游戲系統的體驗性和真實性,下面簡單描述下晴天天氣和雨天天氣的實現,流程如圖2和圖3所示。

圖2 晴天天氣實現流程

圖3 雨天天氣的實現
陰天天氣的實現是在晴天天氣的基礎上通過LerpSunIntensity關鍵函數來更改光線的明暗;后通過LerpCloudCover函數來增加云的厚度、數量及更改其顏色,從而實現陰天天氣的效果。而暴雨天氣效果的實現是通過SetStormCloudCover和LerpStormCloudCover關鍵函數設置雨量大小,通過生成暴雨粒子數量和加強場景中的風力大小和環境音效,從而實現暴雨天氣的效果。
2.4 音樂音效
音樂音效是游戲中的重要組成部分,為了增加游戲的可玩性和趣味性,在游戲中添加人物行走音效、背景音樂等,增強游戲的真實性。Unity3D游戲引擎支持AIFF、WAV、MP3等格式,可以依據游戲的需要來選擇不同的格式,這里注意的是需要添加AudioSource控件,將相應的音樂或音效拖入到對應的控件中,后再通過腳本就可以執行音樂或音效的播放。
本文通過研究Unity3D游戲引擎中的場景加載、角色控制等技術,設計并開發了三維生態莊園游戲,從而驗證借助Unity3D的游戲引擎進行游戲開發的可行性和方便性。游戲開發所需的軟件環境是Unity3D以及Microsoft Visual Studio 2010。
圖4(a)是將制作好的FBX模型導入Unity3D中的效果,可以依據需要來調整模型的位置和大小。圖4(b)是虛擬人物在加載的場景中進行漫游,通過控制鍵盤上的A、W、S、D來控制人物的上下左右的行走。圖4(c)是虛擬人物行走到帶碰撞物的房子面前,因存在的碰撞檢測,虛擬人物無法穿越房子而過,增加了游戲的真實性。圖4(d)是虛擬人物行走到土地旁,通過鼠標點擊進行澆水動作,完成虛擬人物與植物間的操作。圖4(e),4(f)是利用UniSky插件相關的方法和函數來調整參數,從而完成晴天、雨天等天氣效果。
本文在熟悉Unity3D游戲引擎中各個組件和腳本的基礎上,按照設計的方案完整實現了三維生態莊園游戲的開發,實現了場景加載、角色控制等功能,從而體現出Unity3D游戲引擎的強大性。為了避免物體穿插現象,提高游戲的真實性,重點研究了Unity3D中的碰撞檢測技術、UniSky天氣效果以及持久化數據管理技術,為游戲的實現奠定基礎;因游戲的視覺效果與美術資源相關也較大,而在本游戲中沒有太關注模型等的美觀程度,在一定程度上降低了場景的美觀程度,可以在修改完善功能的基礎上,進一步完善和美化游戲場景資源。

圖4 碰撞檢測方法效果圖
[1] 伍傳敏,張帥,邱錦明.基于Unity3D的FPS游戲設計與開發[J].三明學院學報,2012
[2] 干建松.基于Unity3D的室內漫游的關鍵技術研究[J].鹽城工學院學報,2011
[3] 朱慧娟.基于Unity3D的虛擬漫游系統[J].計算機系統應用,2012
[4] 歐陽攀,李強,盧秀慧.基于Unity3D的虛擬校園開發研究與實現[J].現代電子技術,2013
Design and Implementation of Three-Dimensional Ecological Manor Game Based on Unity3D
YANG Na,LI Jie,LIAO Jin-qiao
(College of Information Engineering,North China University of Technology,Beijing 100144)
In order to realize the three-dimensional ecological manor game system,based on learning and mastering the knowledge of Unity3D,studies the technology of collision detection,model loading technology,human-computer interaction technology and so on,realizes the role control,scene roaming function module and so on.And in order to increase the authenticity of the game,researches on the application of UniSky's key function to realize the weather effects in the game such as sunny,cloudy and so on.The game has a good running effect, shows that Unity3D is a powerful tool in the game development.
Unity3D;Collision Detection;Role Control;UniSky
1007-1423(2015)01-0045-04
10.3969/j.issn.1007-1423.2015.01.011
楊娜(1993-),女,北京人,本科,研究方向為數字娛樂、互動媒體等
李杰(1986-),男,河南南陽人,碩士,研究方向為虛擬現實、數字娛樂等
2014-11-20
2014-12-09
北京市大學生科學研究與創業行動計劃項目(No.NCUT2014008)
廖金巧(1994-),男,安徽合肥人,本科,研究方向為數字娛樂、互動媒體等