基于unity3D的求生游戲的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于unity3D的求生游戲的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于unity3D的求生游戲的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于unity3D的求生游戲的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于unity3D的求生游戲的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

圖2-1

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論