基于unity3D的求生游戲的設計與實現_第1頁
基于unity3D的求生游戲的設計與實現_第2頁
基于unity3D的求生游戲的設計與實現_第3頁
基于unity3D的求生游戲的設計與實現_第4頁
基于unity3D的求生游戲的設計與實現_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于Unity3D的求生游戲的設計與實現DesignandimplementationofanSurvivalGamebasedonUnity3D內容摘要 隨著生活水平的不斷提高,科技發(fā)展速度迅猛,人們除了對生活品質有所追求外,對游戲娛樂等精神層面的品質也開始有所追求,有關游戲的各種信息量也成倍增長,龐大的游戲玩家群會對游戲的種類體驗要求越來越多,想要玩到更多的新穎的游戲。因此開發(fā)一款模擬求生類游戲對游戲玩家來說進行不僅是一種全新的體驗,而且還能從游戲中獲取一些求生的知識,通過求生游戲,體驗到游戲新穎刺激玩法的同時從而達到足不出戶也能學到求生生存知識。本課題使用Unity3D引擎設計了一款生存類題材的游戲。本人的主要工作有以下幾個方面。首選,分析了熱門流行的生存類題材游戲的內容和玩法,設計了一款生存類游戲的需求。然后在需求分析的基礎上,使用Unity3D引擎實現了游戲場景的搭建、導入游戲對象,設置游戲對象的動畫和實現掛載游戲對象的腳本。最終實現了需求確定的功能,并完成了游戲的測試。關鍵詞:Unity3D生存類游戲游戲交互AbstractWiththecontinuousimprovementoflivingstandards,thedevelopmentofscienceandtechnologyrapidly,inadditiontopursuitforthequalityoflife,peopleonthegameentertainmentalsobegantopursuespiritualquality,allkindsofinformationaboutthegamesalsohavemultiplied,largegroupofgamerswilldemandmoreandmorekindsofgameexperience,wanttomorenewgamestoplay.Therefore,thedevelopmentofasimulatedsurvivalgameisnotonlyanewexperienceforthegameplayers,butalsotoobtainsomeknowledgeofsurvivalfromthegame,throughthesurvivalgame,experiencethegamenovelandexcitinggameplaysothattheycannotleavehomeatthesametimetolearnsurvivalknowledge.ThissubjectusestheUnity3Denginetodesignasurvivalthemegame.ThissubjectusestheUnity3Denginetodesignasurvivalthemegame.

Mymainworkhasthefollowingaspects.First,analyzethecontentandgameplayofthepopularsurvivalgames,anddesigntheneedsofasurvivalgame.Thenbasedontherequirementsanalysis,theUnity3Denginewasusedtobuildthegamescene,importthegameobjects,settheanimationofthegameobjects,andimplementthescripttomountthegameobjects.Finally,thefunctionofdeterminingtherequirementswasrealized,andthetestofthegamewascompleted.Keywords:Unity3Dsurvivalgamegameinteraction廣東東軟學院本科生畢業(yè)設計(論文)目錄TOC\o"1-3"\h\u27786基于Unity3D的求生游戲的設計與實現 17700第一章緒論 354981.1課題的研究背景 316401.2課題的研究意義 4319151.3國內外發(fā)展現狀 549701.4論文的組織結構 69350第二章Unity3D引擎技術 6274802.1Unity3D編輯器介紹 6312002.2Unity3D引擎的功能 7289232.2.1Unity地形編輯器功能 71302.2.2Unity3D引擎中的物理引擎系統(tǒng) 873172.2.3Unity3D引擎中的腳本系統(tǒng) 8114802.2.4Unity3D引擎中的動畫系統(tǒng) 8167122.3Unity3D游戲開發(fā)流程 1072292.4Unity游戲開發(fā)中的常見設計模式 11191372.4.1單例模式 12103632.4.2事件模式 1274662.4.3MVC模式 12308392.5本章小結 1320908第三章游戲需求分析與設計 13325543.1游戲需求分析 1371803.1.1游戲故事背景介紹 1390313.1.2游戲場景需求分析 13189823.1.3主角技能需求分析 14238803.1.4游戲背包系統(tǒng) 1452063.2游戲開發(fā)過程 14181063.3游戲的架構設計 14281773.4本章小結 1511513第四章游戲系統(tǒng)的實現 15164284.1游戲控制模塊 1527494.2玩家角色控制模塊實現 156984.3攝像機模塊的實現 16100254.4怪物AI模塊的實現 1667454.5背包模塊的實現 18200294.6其它功能的實現 20157214.6.1游戲小地圖實現 20301614.6.2游戲場景中日夜交替 2119264.6.3游戲場景中機關 2231628第五章游戲測試 23220705.1測試計劃 23193175.2測試用例 2381125.3測試結果 2531751第六章結論 2815647參考文獻 295106致謝 30緒論1.1課題的研究背景隨著生活水平的不斷提高,科技發(fā)展速度迅猛,人們除了對生活品質有所追求外,對游戲娛樂等精神層面的品質也開始有所追求,有關游戲的各種信息量也成倍增長,龐大的游戲玩家群會對游戲的種類體驗要求越來越多,想要玩到更多的新穎的游戲。游戲與計算機硬件平臺和互聯網的發(fā)展,從最開始的簡陋游戲,慢慢發(fā)展出各種各樣精美的游戲產品,有游戲主機平臺和臺式機平臺上接近電影畫面的游戲大作,有即點擊即玩的網頁游戲,有移動平臺上各種種類豐富的游戲,還有玩家佩戴特定設備玩虛擬現實游戲。中國游戲產業(yè)規(guī)??傮w收入達到3102.3億元,玩家用戶約為5.54億人。游戲產品越來越豐富,人們對游戲產品的要求、審美、娛樂性等各方面的要求越來越高。如果游戲畫面粗糙、游戲玩法單調或者游戲人物動作呆板,游戲趣味性少,這樣的游戲產品很容易被流失玩家,甚至被市場淘汰。2012年,Unity3D游戲引擎開始進入中國,因為Unity3D引擎對移動平臺游戲的廣泛支持,對新興的虛擬現實設備的支持,開發(fā)者的學習成本較低,引擎使用的授權費低廉,受到資金實力薄弱的中小游戲公司的普遍歡迎,他們開始廣泛地使用Unity3D引擎來開發(fā)游戲。國內大型游戲公司看到第三方的游戲引擎Unity3D開發(fā)出來的游戲效果后也開始紛紛采用Unity3D引擎來開發(fā)游戲。Unity3D引擎的廣泛使用,加速了這項技術在中國國內的普及,中國游戲開發(fā)者成為全世界使用Unity3D引擎最多的國家。Unity3D引擎中國游戲開發(fā)者注冊量、游戲引擎使用活躍度、手機游戲引擎開發(fā)市場占有率等多項數據全球第一。而Unity3D引擎公司總部所在地美國,在使用率等各項數據上反而處于第二。游戲按照內容來分類,可以分為角色扮演、動作角色扮演,模擬角色扮演、第一人稱射擊、即時戰(zhàn)略、冒險類、賽車競速類、模擬經營類、體育類等。生存游戲,屬于游戲設計的一種元素題材,根據游戲設計者的核心玩法不同,可以歸類到不同的分類中去。游戲《絕地求生》,游戲玩法是每一局游戲有100位玩家參與,玩家被飛機空投到游戲地圖的各個位置。玩家需要在地圖上尋找武器、物品,與其他位玩家展開搏斗,最終活下來的玩家才能獲得最后的勝利。這款游戲在核心玩法上強調使用武器射擊,可歸類為第一人稱射擊游戲。游戲《綠色地獄》只將“生存”這一要素設計為核心玩法,玩家被扔進廣袤又神秘的亞馬遜叢林中,在這個綠色的地獄里求得生機。玩家需要通過合作來獲取物品,需要打獵、采集獲得食物,根據游戲天氣變化適應環(huán)境,其中的一些生物可能會攻擊玩家,玩家需要狩獵鳥,魚,蛇等動物活下來。這款游戲的核心玩法是體驗不同的環(huán)境,攻擊遇到的威脅,生存下來。1.2課題的研究意義求生類游戲如今也越來越多,也是受到了很多人的喜愛,不同類型的求生生存游戲都有共同之處:游戲的模擬性,如果說游戲世界是玩家另一個世界的話,那么求生生存類游戲就是能最大限度實現人類活在另一個世界的愿望,饑餓度等一切都很貼近現實,能更好的從娛樂中獲取知識。不僅如此,求生生存游戲的發(fā)展性、探索性、隨機性都極大的吸引著玩家,玩家在游戲中可以不斷的獲得成就,就能更有興趣的去探索去研究一些生存的技巧,實現邊娛樂邊學習,這樣比普通的生存教學要有趣也有用很多。此外,使用Unity3D引擎是因為Unity3D引擎在游戲開發(fā)市場上第三方授權的游戲引擎中市場占有率第一名,是很多游戲開發(fā)者首選的游戲引擎。Unity3D引擎特性豐富,功能眾多,開發(fā)出的游戲畫面優(yōu)美,是非常值得學習研究使用的游戲引擎。每個游戲開發(fā)團隊使用Unity3D引擎都有不同的方法。本文研究使用Unity3D引擎開發(fā)生存類游戲,探索游戲開發(fā)的方法,縮短游戲開發(fā)的周期,解決游戲開發(fā)過程中遇到的常見問題,總結解決問題的方法,對使用Unity3D引擎來開發(fā)游戲有一定的意義。1.3國內外發(fā)展現狀國外游戲產業(yè)起步較早,積累的游戲開發(fā)技術經驗豐富,游戲產業(yè)十分成熟。國外游戲公司開發(fā)生存題材的游戲時,在游戲引擎的選擇上,使用公司自研的游戲引擎,或者第三方授權的Unreal引擎、Unity3D引擎,這個選擇主要取決國外游戲公司實力和項目要求。Unreal引擎也是國外游戲公司的重要選擇之一,是很多3A級游戲大作的開發(fā)采用的引擎。Unreal引擎畫面效果逼真,程序運行效率高,使用它開發(fā)出來的游戲受到很多玩家的贊譽。但Unreal引擎的授權費十分昂貴,這使得使用的都是屬于大型游戲公司的行為。后來出現的Unity3D引擎打破了這一局面,Unity3D引擎授權費低廉,在保持低授權費的同時,功能和畫面不斷發(fā)展和完善,畫面效果慢慢接近了Unreal引擎,得到了國外中小游戲公司和個人游戲開發(fā)者的青睞。而一些大型國外游戲公司的部分游戲產品也采用了Unity3D引擎來開發(fā)。生存題材游戲是受到眾多玩家喜愛的游戲,也是眾多游戲公司設計游戲時考慮的重要元素。最初的生存游戲,生存概念設計概念不太明確。2009年,瑞典Mojang工作室推出了《我的世界》,這款游戲強調游戲的趣味性,玩家在三維空間中創(chuàng)造和破壞游戲里的方塊,從而用方塊來創(chuàng)造自己設計的建筑物。該游戲沒有華麗的畫面,體現建筑生存的互動性。2015年,澳大利亞BeamTeamGames游戲公司發(fā)行了《荒島求生》,游戲的內容是玩家扮演一名飛機失靈流落到荒島的乘客。玩家要在荒島上利用島上的收集到的物品使自己活下去。2017年,韓國藍洞公司發(fā)行了《絕地求生:大逃殺》,該游戲結合了第一人稱射擊的玩法,讓眾多玩家在一個游戲地圖里撿拾物品、武器,互相搏斗,最終活下來的贏得勝利。這又給生存題材游戲帶來了不同的設計理念。中國游戲產業(yè)與國外相比,出現時間比較晚,但是發(fā)展迅速。最開始的游戲題材以古裝、武俠、修仙、戰(zhàn)斗為主。生存題材的游戲重視程度沒有那么高。在國外生存題材的游戲火爆之后,中國的游戲開發(fā)者也加入了生存題材的元素。2017年網易公司推出了游戲《荒野行動》。2018年騰訊公司推出了游戲《絕地求生:刺激戰(zhàn)場》和《絕地求生:全民出擊》。1.4論文的組織結構第1章:緒論部分,主要介紹了本論文的研究背景和意義、國內外研究現狀和發(fā)展趨勢和主要研究內容。第2章:Unity3D游戲引擎及相關技術概述,介紹了Unity3D的開發(fā)過程和常見Unity3D的編程模式。第3章:游戲總體設計,分析研究了游戲的需求,在此基礎上進行了游戲模塊的劃分。第4章:生存游戲的設計與實現,在游戲需求分析的基礎上,對各個模塊的具體設計做出了實現,并且運行測試了游戲的功能。第5章:論文的總結。Unity3D引擎技術2.1Unity3D編輯器介紹Unity3D是由UnityTechnologies開發(fā)游戲引擎。開發(fā)者使用Unity3D引擎,可以快速地制作2D、3D游戲。Unity3D具有強大的跨平臺特性,玩家從最開始的在臺式機電腦上玩游戲發(fā)展到專門的游戲主機玩游戲,再到目前的移動平臺上玩游戲、用虛擬現實設備玩游戲,游戲平臺發(fā)展速度很快,Unity3D引擎可以到達一次編寫,多種平臺上發(fā)布運行。目前Unity3D已經支持發(fā)布Windows、MacOS、Linux平臺的單機游戲,iOS、Android等移動設備的游戲,HTCVive等虛擬現實設備平臺上的游戲。在游戲引擎開發(fā)市場上,還有很多著名的游戲引擎,例如Unreal虛幻引擎、cocos2D等。這些游戲引擎中有些出現的時間比Unity3D誕生時間要早很多,也是大型游戲公司制作多款游戲作品知識和經驗的積累,但是卻被Unity3D后來居上,使得Unity3D引擎成為游戲引擎技術普及度最高的引擎,原因有很多,例如上手困難高,又或者是本身自帶的游戲引擎腳本系統(tǒng)不完善,要求使用者使用C++編寫游戲程序,編寫程序難度相對較大,又或者是引擎本身的第三方授權使用費非常昂貴,讓大部分的使用者望而卻步。而前者這些引擎的缺點正是Unity3D引擎所避免的。Unity3D推出了資源商店,在資源商店中,Unity3D開發(fā)者可以購買3D或2D人物、動物、怪物模型,游戲場景環(huán)境、游戲道具、游戲交通工具、游戲音頻、游戲腳本、游戲插件等各種游戲開發(fā)中用到的素材,而且價格相對低廉,另外有一些素材資源是免費提供的,特別適合中小團隊和獨立游戲開發(fā)者。Unity3D有豐富的文檔和官方視頻教程,為初學者提供了快速上手使用的捷徑。同時開發(fā)者可以把Unity3D使用中的遇到的難題發(fā)布到社區(qū)中,會有資深的Unity3D使用者解答問題。Unity3D不僅僅可以制作游戲,在其它行業(yè)也有廣泛的應用。在電影行業(yè)中,電影從業(yè)者用Unity3D制作動畫電影,成功的電影短片有《BookoftheDead》。該電影短片的成功,預示著使用Unity3D可以制作出自然真實的現實環(huán)境、逼真的光影效果、角色人物動作流暢自然。在建筑行業(yè),建筑工程師可以使用Unity3D制作建筑仿真和交互系統(tǒng)。在機械行業(yè),機械工程師用Unity3D制作機械系統(tǒng)的模擬和仿真系統(tǒng)。此外在其它行業(yè),如汽車、教育培訓、醫(yī)療等,Unity3D也有使用。 優(yōu)勢:Unity3D操作簡單易上手[5]。并且通用性強,支持多平臺開發(fā),可開發(fā)電腦端、手機端和主機端等。擁有自己的商店平臺,大部分插件與效果都可買到,大大提升了開發(fā)效率??梢詾槲覀兲峁┝嗽S多高性能的系統(tǒng),例如燈光照明、自動尋路、粒子系統(tǒng)等。劣勢:在國內起步晚,2012年才進入國內[5],較好的程序還是比較少。程序的占用內存比較高,渲染性能比較低。2.2Unity3D引擎的功能2.2.1Unity地形編輯器功能 Unity3D引擎有一個功能強大的地形編輯器,使用者可以筆刷的方式雕刻各種山脈、峽谷、平原等地形效果。另外,Unity3D地形編輯器還可以實現平鋪地面材質紋理、通過筆刷大小的不同實現局部面積的種植樹木、實現2D廣告牌式的種草功能。Unity3D地形編輯器支持設置地形的LOD功能,LOD是指攝像機與顯示物體的距離越近,顯示物體的網格模型效果越好。遠處的地形塊使用稀疏的網格模型展示,近處的地形塊使用密集的網格模型顯示。Unity3D引擎地形編輯器可以為游戲場景提供十分真實的、接近電影效果的地形展示游戲畫面。

圖2-1

Unity3D引擎的地形編輯器2.2.2Unity3D引擎中的物理引擎系統(tǒng)Unity3D引擎使用NVIDIA公司的PhysX物理引擎作為自己的物理系統(tǒng)。使用物理引擎可以使得游戲中的對象模擬現實中的物理效果。在Unity3D引擎中的物理引擎,提供了剛體、碰撞器、物理材質等設置。給一個游戲對象加入了剛體組件之后,Unity3D引擎就會對它進行物理效果模擬,游戲開發(fā)者可以通過屬性面板設置各種參數,也可以通過腳本來控制游戲對象的物理運動。2.2.3Unity3D引擎中的腳本系統(tǒng)Unity3D引擎中使用腳本系統(tǒng)來控制游戲對象的運行,原先腳本系統(tǒng)的開發(fā)語言有C#、Javascript,在后來的版本中,放棄了對Javascript的支持,只支持C#,這個是為了提高游戲編譯運行的效率。Unity3D引擎本身是使用C++開發(fā)的,如果直接要求引擎的使用者使用C++編寫具體的游戲,會因為C++本身復雜難學難以使用,使得游戲開發(fā)者開發(fā)進度緩慢。Unity3D引擎使用C#作為腳本系統(tǒng)之后,給游戲開發(fā)者帶來快速開發(fā),游戲接口良好,自動化管理內存等開發(fā)優(yōu)點。2.2.4Unity3D引擎中的動畫系統(tǒng)Unity3D引擎提供了一個功能強大的動畫系統(tǒng),可以為Unity3D游戲中的對象(包括人物、動物、怪物、游戲道具等)提供動畫設置。Unity3D引擎提供了人形動畫重定向,把人物動作動畫抽象成一個Avatar,導入一個做好動畫的人物模型,可以把這個人物模型帶的動畫賦予另外一個沒有動作動畫的人物模型,這特別適合移動平臺游戲的開發(fā),因為這將極大的減少游戲發(fā)布的文件大小。動畫系統(tǒng)帶有有限狀態(tài)機功能,可以使用這個功能為模型的動畫設置條件。例如,一個人物有閑時動畫、走路動畫、攻擊動畫、跳躍動畫,可以使用動畫系統(tǒng)的有限狀態(tài)機功能為這個人物模型分配何時觸發(fā)各種動畫的條件,并結合腳本代碼實現。Unity3D動畫系統(tǒng)還提供了動畫樹功能,可以把模型帶有幾個動畫融合,做出復制的動畫效果。另外Unity3D還提供了人物骨骼動畫的調整和設置,利于動畫師調整人物的動作,使得人物模型動畫更加自然。圖2-2

Unity3D引擎的人形骨骼動畫系統(tǒng)2.3Unity3D游戲開發(fā)流程游戲軟件開發(fā)和其它軟件開發(fā)過程類似,大致可以分為需求分析、代碼開發(fā)、功能測試等幾個階段。每個游戲開發(fā)團隊使用Unity3D引擎開發(fā)游戲產品的開發(fā)過程都不相同,但是大致的過程類似。在一個大型的游戲開發(fā)團隊中,開發(fā)成員一般分為游戲策劃、游戲美工、游戲程序員、游戲測試員等。游戲策劃首先分析目前游戲市場的行情,分析當下熱門的電影、電視劇、小說、漫畫、游戲的偏好和熱點,確定將要制作的游戲類型,鎖定該游戲的大致受眾。游戲策劃向將來這款游戲的潛在玩家通過網絡問卷、電話訪談、玩家聯誼會、第三方市場調查公司等形式調研潛在玩家的需求。游戲策劃會根據上述分析手段和資料收集,在游戲公司開展頭腦風暴會議,確定游戲內容和核心玩法,編寫游戲策劃書。游戲美工根據游戲策劃書,設計制作游戲人物、游戲場景。游戲美工會細分為游戲主美、游戲原畫師、游戲模型師、游戲地形編輯、游戲動畫師等。游戲主美會結合游戲策劃書與游戲策劃游戲主程序商量,確定這款游戲的美術風格。游戲美術人物是偏向寫實,還是趨向Q版,游戲場景風格是懷舊、科幻、朋克、現代、古代、卡通?在游戲主美設計確定好游戲的總體美術風格之后,游戲原畫師會根據設計風格要求,使用手繪或者電子繪圖在Photoshop等平面繪圖軟件中設計好游戲的人物平面模型圖、游戲場景模型圖、游戲道具圖等。接下來,游戲模型師根據游戲原畫師的人物場景設計稿,在3dsmax或者Maya等建模軟件中進行游戲人物場景高模的建模工作,把游戲高模拓撲成適合游戲引擎用的游戲低模,游戲低模展開UV,繪制游戲模型貼畫材質紋理等。在游戲模型師制作好游戲模型之后,需要動作的模型,將會交給游戲動作師。游戲中需要動畫的模型一般是游戲人物、游戲怪物、游戲動物等。游戲動畫師會根據游戲策劃書的需要和游戲程序員的要求,設計好游戲模型所需的動作動畫,游戲動畫的一般在建模軟件3dsmax或者Maya中制作,有些游戲動畫還會用到動作捕捉設備,力求獲得更好的動作效果。游戲模型制作好之后,會在建模軟件中導出成適合Unity3D引擎所需要的FBX格式。游戲地形編輯使用導出好的FBX文件在Unity3D引擎編輯器中,根據游戲策劃書需求中關卡場景設計要求,結合游戲場景原畫稿等,搭建各個游戲關卡的游戲場景。游戲特效師會在游戲地形編輯創(chuàng)建好的游戲場景中,按照策劃書的要求設計各種游戲特效。游戲程序員根據游戲策劃書,完成游戲所需要的功能。游戲程序員一般可以分為游戲客戶端主程序員、游戲客戶端程序員、游戲服務端主程序員、游戲服務端程序員。游戲客戶端主程序員和游戲服務端主程序員根據游戲策劃書,分析完成整體游戲所需要的功能,確定游戲客戶端和游戲服務端的通信協(xié)議、通信接口。在確定好整體游戲所需的功能之后,游戲客戶端主程序員確定游戲客戶端需要具體實現哪些功能,確定Unity腳本的架構,細分各個功能模塊,列出實現各個模塊的編碼難易程度。游戲客戶端主程序員按照各個模塊的編碼難易程度,根據游戲客戶端程序員的編碼水平,分配給他們實現。在確定好整體游戲所需的功能之后,游戲服務端主程序員確定服務端開發(fā)語言和游戲數據庫的選型,確定游戲服務端需要具體實現哪些功能,細分功能模塊,列出實現各個模塊的編碼難易程度,設計游戲服務端架構,確定游戲服務器上線部署架構。游戲服務端主程序員按照各個模塊的編碼難易程度,根據游戲服務端程序員的編碼水平,分配給他們實現。游戲客戶端服務端程序員在完成某一功能實現之后,還要進行代碼的白盒測試。游戲中所需要的聲音,例如場景音樂、場景音效、人物對話配音等,一般游戲團隊都外發(fā)給獨立的音樂工作室完成制作。游戲測試,一般是在游戲程序員在實現某一個功能完成白盒測試的基礎上進行的黑盒測試。游戲測試員會按照游戲策劃書的要求測試游戲某一功能看看是否達到策劃書所要求的效果,把游戲測試的結果反饋給程序員。游戲策劃書所確定的開發(fā)需求會在游戲的開發(fā)階段不斷更新變化,所以游戲需求分析、游戲美術制作、游戲代碼實現、游戲測試幾個階段是不斷迭代進行下去的,循環(huán)往復最終完成游戲所有功能。圖2-3Unity3D游戲開發(fā)流程圖2.4Unity游戲開發(fā)中的常見設計模式在Unity3D腳本編程中,有幾種的設計模式常常用于開發(fā)中。2.4.1單例模式在Unity3D項目中,有些游戲對象只能實例化一次,如果實例化了多個游戲對象,會導致游戲程序運行不正確。只能實例化一次的游戲對象有,控制全局游戲對象的控制器類、場景切換管理類、游戲進度保存類等。此時對只能實例化一次的游戲對象,采用單例模式。在Unity3D項目中,掛載在某一個游戲對象上的游戲腳本類,都必需繼承MonoBehaviour,不能自己用new實例化,實例化的過程是交給Unity3D引擎來完成,所以采用單例模式的游戲對象,生成單例引用時,不能用new實例化自己,可以使用FindObjectOfType來生成,這個生成的過程也是交給了Unity3D引擎來完成。2.4.2事件模式在一個相對簡單的Unity3D項目中,游戲對象數量有限,游戲對象之間的交互之間采用調用對方的接口函數。而在一個復雜的Unity3D項目中,游戲對象眾多,游戲對象之間的交互采用互相調用對方的接口函數,會引起極大的耦合性,代碼的復雜度增加,后期的維護困難,這種情況下一般使用事件模式解耦。在Unity3D項目中,使用事件模式,要定義一個事件隊列對象。事件隊列對象可以注冊或者取消某一游戲對象對某個事件的關注,當某一事件發(fā)生時,事件隊列對象會把這個事件發(fā)送給關注該事件的游戲對象。例如游戲對象玩家和游戲對象敵人都關注了傷害事件。當游戲對象玩家和游戲對象敵人發(fā)生打斗時,游戲對象敵人攻擊了游戲對象玩家,此時游戲對象敵人發(fā)送給傷害事件給事件隊列對象,事件隊列對象把傷害事件發(fā)送給游戲對象玩家,游戲對象玩家接收到了傷害事件,并對傷害事件做出反應。2.4.3MVC模式MVC模式是指把軟件系統(tǒng)分為模型(Model)、視圖(View)、控制器(Controller)。在Unity3D項目中,有些子系統(tǒng)是玩家用戶與游戲UI交互較多的子系統(tǒng),比如游戲裝備子系統(tǒng)、游戲商店子系統(tǒng),有些游戲項目,玩家用戶主要與游戲的UI進行交互,例如《斗地主》等棋牌類游戲、《爐石傳說》等卡牌類游戲。這些子系統(tǒng)和這類游戲項目非常適合用MVC模式進行項目架構。例如在游戲商店子系統(tǒng)中,把游戲道具劃分為模型、把游戲道具購買、展示、交易等界面劃分為視圖、控制游戲道具的購買展示的游戲對象劃分為控制器??刂破髟诮缑嬉晥D中展示游戲道具模型的具體信息和數量,控制游戲玩家購買游戲道具的過程。按照MVC模式組織代碼架構,代碼的結構清晰,有良好的可維護性。2.5本章小結本章主要介紹了Unity3D的功能特性和使用Unity3D的開發(fā)過程??偨Y了Unity3D幾種常見設計模式。Unity3D是一款優(yōu)秀的開發(fā)工具,使得開發(fā)使用者可以高效完成游戲項目。游戲需求分析與設計3.1游戲需求分析3.1.1游戲故事背景介紹本課題制作的游戲發(fā)生在一個森林中,玩家流落到了一個森林中,森林里有各種未知的風險、有野獸、有怪物,玩家需要面對各種挑戰(zhàn)從而生存下來。3.1.2游戲場景需求分析在游戲場景中,玩家在森林中行走,森林中設置有一些障礙物和機關,如果玩家無意中接觸,會促使玩家的血量降低。森林中有一些有用的物品,可以給玩家拾取使用。森林中會出現野獸或者怪物,當野獸或者怪物在一定范圍內看到玩家,會引發(fā)對玩家的攻擊。3.1.3主角技能需求分析在游戲中,玩家能夠通過按下WSAD行走、按shift鍵奔跑、空格鍵跳躍,遇到威脅可以逃跑也可以能夠發(fā)動攻擊保護自己。3.1.4游戲背包系統(tǒng)游戲中,玩家能夠在森林中撿拾物品,撿拾物品可以放在游戲背包中,供以后使用。點擊游戲界面的背包圖標按鈕,顯示背包系統(tǒng)展示窗口,任意點擊窗口中展示的物品,顯示物品詳情,在物品詳情窗口中,點擊使用按鈕,可以使用該物品。3.2游戲開發(fā)過程在設計了一款生存類題材游戲需求上,根據需求分析,首選按照游戲需求劃分功能。在Unity3D編輯器中進行游戲場景的建模設置,在游戲場景中引入各種游戲對象,例如角色對象、怪物對象等,對游戲對象掛載相應的功能代碼腳本。當每一項功能實現好之后,進行游戲功能測試,看看游戲運行的效果是否正常運行,是否達到設計的要求。3.3游戲的架構設計為了使游戲程序架構適應游戲策劃需求不斷變化,需要設計一個游戲代碼易于擴展和可維護性強的架構。對游戲代碼的功能進行模塊劃分,降低了代碼之間的耦合度。根據游戲策劃需求分析,把本課題的游戲模塊劃分為角色控制模塊、攝像機模塊、怪物AI模塊、背包模塊、游戲控制模塊。圖3-1模塊劃分圖3.4本章小結本章對設計的游戲進行了需求與流程的策劃,并根據需求確定引擎與開發(fā)流程,并設計了所需要實現的各個模塊。游戲系統(tǒng)的實現4.1游戲控制模塊游戲控制模塊是控制整個游戲運行的。游戲開始時,游戲控制模塊會初始化游戲場景中必要的組件。4.2玩家角色控制模塊實現玩家角色控制模塊是為玩家用戶控制角色在游戲過程中的行為的。在游戲中,玩家角色要閑時、行走、奔跑、跳躍、攻擊怪物、拾取物品等動作,這些動作動畫在Animator動畫系統(tǒng)中設置角色的有限狀態(tài)機動畫,觸發(fā)動作動畫的條件,增加觸發(fā)的參數和設置數值。玩家角色行走,首選要獲取玩家角色對象上必須的組件,動畫組件、Rigidbody組件。然后獲取用戶輸入的數據,判斷玩家是否按下了移動角色的按鍵,如果按下了移動按鍵,通過移動按鍵設置角色移動的數值,在移動玩家角色之前,需要檢查判斷玩家角色是否在地面,如果不在地面,首選要用重力影響玩家角色Y坐標值,使玩家角色落在地面上,然后使用Rigidbody組件按照數值移動玩家角色的位置,并播放角色行走動畫。玩家角色的血量、能量。玩家角色被攻擊時會減少血量,玩家角色在攻擊怪物時,會消耗能量值。當血量數值為0時,玩家會死亡。當能量數值小于50時,玩家無法施展攻擊技能。圖4-1玩家狀態(tài)欄4.3攝像機模塊的實現在游戲中,玩家角色對象的各種游戲操作行為需要一個攝像機進行拍攝,把游戲的的進行呈現給玩家。攝像機模塊的設計實現,首選要獲取玩家角色對象的位置,根據玩家角色對象的位置,設置攝像機自己本身的初始位置。在游戲進行過程中,玩家角色對象的位置會不停地變化,攝像機的位置更加不斷變化的玩家角色對象位置改變。攝像機模塊使用了第三方的攝像機插件。4.4怪物AI模塊的實現怪物AI模塊是在游戲場景中,怪物對象與玩家角色對象的行為交互模塊。在游戲加載過程中,怪物AI模塊首選會實例化出怪物模型,然后把生成的怪物對象隨機分布到游戲場景中的某個位置怪物的行為有三種方式巡邏、追擊、攻擊。怪物對象和玩家角色對象一樣,有血量生命值,當被玩家對象攻擊之后,血量會降低,如果數次受到玩家對象的攻擊,血量值降為0,即表示怪物死亡。怪物對象的巡邏使用Unity3D引擎中帶有NavMesh導航網格功能來實現巡邏。導航網格的生成,首先需要選取游戲場景中的地形對象,然后使用Unity3D引擎中的NavMeshBake生成,在生成之前可以設置各種生成的參數,一般情況下使用默認的參數,也可以手動設置對某些網格對象的過濾。生成好導航網格之后,游戲地形中會出現青藍色的網格地形塊,這些顏色代表怪物對象可以巡邏行走的區(qū)域。怪物對象巡邏位置定義是隨機生成的隨機數,怪物對象會在這些定義好的范圍內開始巡邏。怪物對象在巡邏時會調用FindGameObjectWithTag("Player")方式獲得玩家角色對象的位置,然后計算玩家角色對象和怪物對象自身的距離,如果這個距離的小于一定的數值范圍,就開始對玩家角色對象進行追擊和攻擊,如果在追擊過程中,玩家角色對象逃跑了,并且跑出了追擊的范圍,怪物對象就會從追擊變?yōu)檠策墶.斖婕医巧珜ο笤诠治飳ο笞窊舴秶鷥葧r,并且達到攻擊距離時,怪物對象會對玩家角色對象發(fā)起攻擊,每次發(fā)起攻擊時間會加一定的時間間隔,讓玩家角色對象有所反應,玩家角色對象也會發(fā)起對怪物對象發(fā)起攻擊,如果怪物對象數次受到玩家角色對象攻擊后死亡,怪物對象會消失,怪物AI模塊會在游戲場景的任意位置重新生成怪物對象。圖4-2怪物模塊定時在任意地點生成一定數量的怪物4.3圖為怪物的導航網格在4-3圖中,青藍色代表導航網格覆蓋的區(qū)域,即圖中標注為1的大片區(qū)域,這表示游戲中的怪物可以行走的區(qū)域。沒有被青藍色覆蓋的區(qū)域,即圖中標注為2的零星小區(qū)塊,都是怪物無法行走的區(qū)域。怪物對象巡邏位置定義是隨機生成的隨機數,怪物對象會在這些定義好的范圍內開始巡邏。4.5背包模塊的實現游戲背包模塊是控制游戲中玩家角色對象攜帶使用的物品系統(tǒng)。當玩家用戶按下游戲界面中的背包圖標按鍵之后,游戲系統(tǒng)會展示玩家角色對象可用的物品,物品展示窗口使用Unity3D引擎中的UGUIGrid生成。游戲中的物品對象定義了物品ID屬性、數量、使用物品之后給玩家角色對象帶來的血量和能量等各種屬性。玩家角色對象可以使用物品對象。圖4-4背包系統(tǒng)圖圖4-5背包系統(tǒng)部分代碼圖4-5為背包系統(tǒng)部分代碼中的使用背包系統(tǒng)中的物品代碼,當玩家角色對象使用完物品之后,物品給玩家角色對象帶來血量和能量,然后,更新物品在背包系統(tǒng)界面的數量,如果物品剛好用完,背包系統(tǒng)界面就不再顯示該物品。玩家角色對象在游戲過程中,需要面對怪物的攻擊和游戲場景中的各種機關,血量和能量會不斷減少和消耗,需要不斷地使用背包系統(tǒng)的物品來補充玩家角色對象自身的血量和能量,使得游戲可以進行下去。當背包中的物品不斷減少的時候,玩家需要在游戲場景中撿拾物品放入背包中。背包模塊在游戲場景中會定時某個時間段內在任意地點生成一定數量的物品供玩家角色對象撿拾物品放入背包中。圖4-6背包系統(tǒng)生成的物品4.6其它功能的實現4.6.1游戲小地圖實現游戲小地圖是為了玩家用戶玩游戲時,觀察玩家角色對象在游戲場景中的所處的位置,周圍怪物的距離,更好地提供對戰(zhàn)體驗。在游戲場景中,對玩家角色對象添加一個大型的藍色圓球子對象,藍色圓球作為標記物在小地圖的顯示效果,然后在玩家角色對象中再增加一個攝像機子對象,攝像機子對象90度對著玩家角色對象頭頂,攝像機子對象所獲取的內容設置映射到游戲界面UI的小地圖UI的RawImage顯示。怪物對象增加一個大型紅色圓球子對象,便于在小地圖中顯示的效果。游戲場景中的主攝像機模塊剔除掉玩家角色對象和怪物對象的圓球子物體,這樣在游戲場景中正常顯示游戲的內容。圖4-7小地圖藍色表示玩家,紅色表示怪物4.6.2游戲場景中日夜交替為了模擬真實的現實場景,提升玩家的用戶體驗,游戲實現了,隨著時間的流逝,游戲場景中日夜交替的效果。游戲界面中,玩家用戶也可以自行調節(jié)日夜交替的效果。時間控制類從游戲界面的時間設置窗口獲得設置數據,加入Unity3D的計時器數據,通過數據的不斷變化,把游戲場景中的主燈光旋轉起來,配合設置好的天空盒,達到日夜交替的效果。玩家用戶也可以在時間設置界面中選擇關閉,停止日夜交替的效果。圖4-8游戲場景中的日夜交替效果圖4-9游戲場景中的日夜交替效果4.6.3游戲場景中機關游戲場景中有機關,當玩家角色對象觸碰到機關時,玩家角色對象會掉血量。游戲場景中,有些類似石頭的物體,設置為游戲的機關,機關物體對象加入了圓球碰撞器,一旦玩家角色對象觸碰機關物體對象,就會發(fā)生碰撞函數調用,玩家角色對象會掉血量。游戲機關類定義了機關的血量數值。圖4-10游戲場景中的機關游戲測試5.1測試計劃運行Unity3D,測試主界面開始按鈕是否正常跳轉。模型、音效是否顯示/播放正常,主角按WSAD是否可以前后左右對應移動奔跑,奔跑時間是否受持久力影響背包系統(tǒng),能否使用背包系統(tǒng)的物品時間是否持續(xù)流逝,測試按下JKL三鍵能否使用攻擊技能物品碰撞是否正常,敵人巡邏,死亡等UI是否正常人物施展攻擊技能時,是否消耗能量,血量為零時是否正常死亡5.2測試用例功能性系統(tǒng)實現的主要功能,包括角色是否正常移動、死亡,人物動畫是否正常,怪物UI是否正常。系統(tǒng)實現的次要功能,包括UI界面是否正常顯示,模型是否正常。測試用例:用例標識GDDR1005項目名稱基于unity3D的求生游戲的設計與實現開發(fā)人員陸永祥版本號用例作者陸永祥測試方法場景分析法、等價類劃分法、邊界值分析法測試類型功能測試、黑盒測試、手工測試測試人員陸永祥用例描述該用例用來測試游戲中的角色、怪物UI、人物動畫是否正常前置條件Unity2019.2版本及以上編號測試項操作步驟預期結果1角色移動、死亡按下WSAD鍵碰撞游戲機關是否會發(fā)生碰撞事件讓主角被怪物攻擊讓血量變?yōu)榱闳宋镎R苿颖寂芘龅轿矬w停下或不能繼續(xù)往該方向走主角死亡2怪物UI觀察場景中的怪物是否正常巡邏走進怪物是否會被攻擊怪物正常巡邏怪物攻擊進入范圍的主角3人物動畫按下JKL三鍵施

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論