版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
摘要□□隨著生產(chǎn)力的高速發(fā)展,人們的經(jīng)濟(jì)能力和消費(fèi)水平日益增長,伴隨的是人對自我情感和自我滿足的需要增大,在工作學(xué)習(xí)之余通過游戲來滿足自己變得習(xí)以為常。游戲產(chǎn)業(yè)在一個擁有著以前從未有過的黃金時期,借助高度功能集成的游戲引擎便捷的進(jìn)行游戲開發(fā),使得游戲開發(fā)也變得不再神秘。其中,Unity引擎的可擴(kuò)展性以及社區(qū)資源數(shù)量上有著很大的優(yōu)勢,在本課題中也將使用Unity引擎并且借助于高度擴(kuò)展性插件fungus進(jìn)行3D的迷宮解謎類的劇情游戲開發(fā)。如今市面上的劇情類游戲大多是將玩家往一個劇情做引導(dǎo),本課題將劇情以迷宮為載體進(jìn)行開展,本游戲是讓玩家通過自己去發(fā)現(xiàn)疑點(diǎn)。在主線上埋伏另外的劇情,以隱晦的方式將第二劇情的線索藏在迷宮的角落,以此刺激對劇情敏感度高的玩家。并嘗試把游戲做成一個劇情的閉環(huán),引發(fā)玩家思考,通過探索游戲最終提煉出——關(guān)愛抑郁癥患者的主題?!酢蹶P(guān)鍵詞:Unity3D迷宮解謎劇情游戲fungus插件抑郁癥第二劇情Abstract□Withtherapiddevelopmentofproductivity,people'seconomicabilityandconsumptionlevelareincreasing.Alongwiththeincreaseofpeople'sneedsforselfemotionandselfsatisfaction,itbecomescommonforpeopletosatisfythemselvesthroughgamesafterworkandstudy.Thegameindustryinagoldenagehasneverbeenbefore,withthehelpofhighlyfunctionalintegratedgameengineforconvenientgamedevelopment,makinggamedevelopmentnolongermysterious.Amongthem,unityenginehasgreatadvantagesinscalabilityandcommunityresources.Inthisproject,unityenginewillalsobeusedand3Dmazepuzzlegamedevelopmentwillbecarriedoutwiththehelpofthehighlyextensibleplug-infengus.Nowadays,mostoftheplotgamesonthemarketaretoguidetheplayerstoaplot.Thistopicwillcarryouttheplotwithmazeasthecarrier.Thisgameistolettheplayersfinddoubtsbythemselves.Ambushanotherplotonthemainline,hidetheclueofthesecondplotinthecornerofthemazeinanobscureway,soastostimulatetheplayerswithhighsensitivitytotheplot.Andtrytomakethegameintoaclosed-loopplot,arousetheplayers'thinking,andfinallyextractthethemeofcaringforpatientswithdepressionthroughexploringthegame.Keywords:Unity3DLabyrinthpuzzleFungusplugin depressionHidetheplot廣東東軟學(xué)院本科畢業(yè)設(shè)計(jì)(論文)緒論1.1課題背景隨著時代的發(fā)展計(jì)算機(jī)技術(shù)的發(fā)展和互聯(lián)網(wǎng)的普及,游戲的趨勢從單機(jī)逐漸衍生出多人在線游戲,游戲的互動越來越顯得真實(shí),游戲的藝術(shù)性對玩家而言越發(fā)重要。游戲的發(fā)展很好的填補(bǔ)了現(xiàn)代人空余出來的時間,互聯(lián)網(wǎng)和游戲載體即游戲硬件高速發(fā)展為游戲產(chǎn)業(yè)營造了一個良好的需求市場。12月17日,在2019年度中國游戲產(chǎn)業(yè)年會上,中宣部出版局副局長馮士新在致辭中透露,今年以來,國家新聞出版署已批準(zhǔn)出版運(yùn)營游戲1468款,基本滿足了企業(yè)正常發(fā)展需求[11]。根據(jù)會議發(fā)布的2019年度中國游戲產(chǎn)業(yè)報(bào)告,中國游戲產(chǎn)業(yè)實(shí)際銷售收入達(dá)到230.8十億人民幣,同比增長7.7%。7.7%的增速相比去年的5.3%有所作為提升,在總量調(diào)控等多重政策環(huán)境影響下,中國傳統(tǒng)游戲文化產(chǎn)業(yè)結(jié)構(gòu)正在經(jīng)歷這樣一個大浪淘沙的階段[12]。市場對游戲的深度和思想力量要求也越來越高,游戲市場對優(yōu)秀的劇情游戲如久旱逢甘霖一般饑渴。益智游戲既屬于商業(yè)策略游戲,又屬于休閑益智游戲,是一種以游戲中設(shè)置的線索為主題,以解決游戲中最終的益智游戲?yàn)橹黝}的游戲,情節(jié)一般比較華麗,劇情引人入勝,在現(xiàn)代人對游戲的高要求下,解謎游戲的市場需求也空前旺盛。由此,基于Unity3d的迷宮解謎游戲本身有著巨大的優(yōu)勢,在當(dāng)前游戲市場的要求下一款主打劇情解謎的3D迷宮游戲也將在在游戲市場大放異彩,同樣的,未來一段時間內(nèi)游戲市場對解謎游戲的需求依舊強(qiáng)烈。1.2選題目的及意義隨著游戲行業(yè)的高速發(fā)展,近些年的游戲也從以前單一的開發(fā)模式逐漸多樣化,開發(fā)的游戲類型還是以mobo為主流,但其他類型的游戲同樣的也得到了很好的發(fā)展機(jī)會。游戲的深度和玩法更能捕獲玩家的游玩性,一些淺顯的游戲生存力也難以持久,而劇情類游戲很好的彌補(bǔ)了對游戲深度的補(bǔ)充。一個好的劇情游戲應(yīng)該是開發(fā)者與玩家的一場對話,是開發(fā)者引領(lǐng)玩家思想的路程。一個好的劇情電影像是講故事一樣的告訴觀看者,從而使觀看者跟隨劇情發(fā)展去思考,觀看者只能去猜測劇情,進(jìn)行思考,最后通過觀測決定答案的正確與否,這對觀看的人的體驗(yàn)來說是不夠充分的,甚至很難代入其中去設(shè)身處地地思考。而劇情游戲則很好的解決了劇情電影的絕對性和片面性,電影是絕對線性的劇情游戲,游戲是可以選擇的立體電影。這是劇情類作品的進(jìn)化,可以使玩家更加切身處地地體會劇情的變化,游戲提供了一個劇情的世界,玩家可以進(jìn)入當(dāng)中作為主角去感受每一處變化。從這看,劇情游戲已經(jīng)不是一種劇情類作品所需要的技術(shù)了,它是劇情類作品呈現(xiàn)在現(xiàn)實(shí)生活的一種藝術(shù)。本課題論文將開發(fā)構(gòu)建一個萬象叢生的3D迷宮場景,其中玩家將以第一人稱視角體驗(yàn)劇情游戲的魅力,為訓(xùn)練空間思維能力,提出進(jìn)行迷宮游戲通過沉浸式的視角,且迷宮模型本身是可旋轉(zhuǎn)的,可以最高的效率和效果來鍛煉空間思維能力[13]。并根據(jù)故事殘留的線索去找尋真相,找到每一個故事中的重要片段并同時根據(jù)各種線索的結(jié)合進(jìn)行解密。讓玩家切身處地地感受解謎游戲的樂趣,在最后結(jié)合每一個片段串聯(lián)起故事的真相,理解游戲人物的心路變化和感情起伏,引發(fā)玩家共感人物,并引發(fā)玩家對游戲所引申出來的意義思考。1.3研究方向?yàn)榱耸雇婕腋哟氲剡M(jìn)入游戲的世界并獲得深層次的游戲體驗(yàn),搭建一個能引發(fā)玩家思考的迷宮。本次游戲進(jìn)行開發(fā)的研究發(fā)展方向主要為以下幾點(diǎn)::1.加強(qiáng)角色背景設(shè)計(jì),使玩家心理貼近角色內(nèi)心活動,創(chuàng)作符合邏輯卻又在玩家意料之外的劇情走向。通過迷宮這一題材讓玩家在做探索場景的同時探索自身推動劇情發(fā)展,將迷宮探索和劇情推動更自然地結(jié)合。2.利用Unity引擎的開發(fā)功能結(jié)合故事劇情發(fā)展制作支持劇情發(fā)展的迷宮,并從中探索如何提升游戲開發(fā)的簡潔性。3.對游戲模式在劇情方面進(jìn)行創(chuàng)新的研究,在主線劇情下面隱藏暗線劇情,根據(jù)玩家獲取線索的不同決定劇情發(fā)展的走向,隱藏暗線劇情的關(guān)鍵線索但又在主線劇情中埋下相關(guān)的伏筆,刺激玩家的劇情敏感,引導(dǎo)玩家走向暗線劇情做更深層次的劇情展開,以此獲得更加深刻的游玩體驗(yàn)。1.4章節(jié)簡介第一章主要介紹了本課題背景以及研究的目的、意義,并且對研究的方向做了簡要闡述。針對目前該類型的游戲做了調(diào)查和分析,確定了游戲的核心是與玩家的交流,借游戲這個形式輸出內(nèi)容引發(fā)玩家思考。第二章主要介紹了unity3d是什么,以及為什么選擇使用Unity3d來開發(fā)本游戲。在項(xiàng)目當(dāng)中還使用了一些其他軟件進(jìn)行輔助開發(fā),本章也針對這些軟件進(jìn)行了介紹,第三章是對游戲的玩法和操作進(jìn)行了說明,并詳細(xì)的介紹了故事發(fā)生的背景,各個人物的信息,從玩家游玩的角度闡述劇情發(fā)展。在解謎游戲的基礎(chǔ)上結(jié)合劇情對游戲的結(jié)尾方式進(jìn)行了創(chuàng)新,根據(jù)玩家的游玩方式推動故事往不同方向發(fā)展,開展出兩條世界線,一條浮在明面上的世界線,另一條藏在明線下的暗線。第四章將具體講解我們進(jìn)行本次游戲的開發(fā)的過程,其中包括迷宮的設(shè)計(jì)、場景的搭建、人物的導(dǎo)入、UI系統(tǒng)的運(yùn)用、對話框功能的實(shí)現(xiàn)、迷宮與劇情的結(jié)合和其他具體功能的實(shí)現(xiàn)。第五章則將測試整個游戲在開發(fā)完成之后的功能實(shí)現(xiàn)正常與否、BUG檢驗(yàn)、資源占用情況。第六章會對整個課題研究進(jìn)行總結(jié),對此次課題研究所遇到難點(diǎn)的解決方案進(jìn)行分析,制作過程中發(fā)現(xiàn)的問題以及本人對未來游戲開發(fā)行業(yè)的期望。
第二章Unity游戲引擎與使用軟件介紹2.1Unity游戲引擎在本章節(jié)中將會簡單的介紹Unity引擎,描述Unity的操作界面,并簡略地介紹本次游戲開發(fā)過程中常用到的函數(shù),以及介紹Unity引擎開發(fā)游戲的優(yōu)勢。2.1.1Unity引擎簡介Unity(也稱Unity3D)是一套包括圖形、聲音、物理等功能的游戲引擎,由丹麥的UnityTechnologies公司開發(fā)的一個讓玩家便攜創(chuàng)建諸如實(shí)時三維動畫、建筑可視化、三維視頻游戲等類型互動內(nèi)容的多平臺的游戲開發(fā)工具[10]。提供了一個強(qiáng)大的關(guān)卡編輯器,支持大部分主流3D軟件格式,使用C#JavaScript等高級語言實(shí)現(xiàn)腳本功能,使開發(fā)者無需了解底層復(fù)雜的技術(shù),快速地開發(fā)出具有高性能、高品質(zhì)的游戲產(chǎn)品[14]。Unity是目前主流的游戲開發(fā)引擎,是一個全面整合的專業(yè)游戲引擎。Unity類似于TorqueGameBuilder,Virtools或Director,Blendergameengine等利用交互的圖型化開發(fā)環(huán)境為首要方式的軟件。Unity是跨平臺3D游戲引擎,支持的平臺包括PCMacLinuxWebiOS、Adroid、Xbox360、PlayStation3等大部分主流游戲平臺,還可以將游戲直接導(dǎo)出為Flash格式放到網(wǎng)頁上[15]。2.1.2Unity的使用界面Scene(場景)視圖:該面板是統(tǒng)一編輯器面板,顯示所有在模型場景中使用的東西,照相機(jī),材料等,在這里可以進(jìn)行觀察和調(diào)整,搭建和構(gòu)造游戲所需呈現(xiàn)的畫面。Game(游戲)視圖:該面板數(shù)據(jù)顯示的是游戲運(yùn)行時的畫面,是游戲公司發(fā)布后玩家所能看到的內(nèi)容,可以通過根據(jù)網(wǎng)絡(luò)游戲面板的效果在場景面板模型進(jìn)行分析相應(yīng)的調(diào)整。Hierarchy(層次)視圖:該面板用于研究顯示我國當(dāng)前發(fā)展放在場景面板中的所有的物體對象,以及對象之間的關(guān)系。該視圖可用來管理當(dāng)前場景對象的層級,設(shè)置父子關(guān)系和分立關(guān)系。Project(項(xiàng)目)視圖:此面板用于顯示游戲項(xiàng)目中游戲資源的管理,如材料、模型、字體等。Inspector(檢視)視圖檢測視圖:用于顯示在場景中當(dāng)前對象的各種組件參數(shù),該面板數(shù)據(jù)用于呈現(xiàn)各個研究對象的固有屬性,而游戲的整體性能,如對象,標(biāo)簽,位置坐標(biāo)的名稱。2.1.2Unity引擎的優(yōu)勢跨平臺:Unity是跨平臺3D游戲引擎,包括目前主流的PCMacLinuxWebiOS、Adroid、Xbox360、PlayStation3等大部分游戲平臺都支持在Unity上進(jìn)行開發(fā)。開發(fā)一次,可導(dǎo)出到多個平臺,大量節(jié)省了游戲開發(fā)的成本和投向市場的時間。易于上手:視圖功能對開發(fā)者友好,擁有可視化的界面,能在運(yùn)行過程中時實(shí)編輯,編輯過程中也可運(yùn)行游戲調(diào)試,實(shí)時查看游戲效果。運(yùn)行過程中也可對編輯對象進(jìn)行調(diào)整,運(yùn)行時的調(diào)整會在運(yùn)行停止后失效。對新手Unity也有相應(yīng)的學(xué)習(xí)資料提供,自帶的例子簡單易懂。在官方有詳細(xì)的文檔說明,更在2018年之后更新了帶有中文語言的版本,大大的降低了部分學(xué)習(xí)者的上手難度。開發(fā)模式清晰:Unity的開發(fā)模式是一個基于Component(組件)的GameObject(對象)系統(tǒng)。在Unity中,幾乎所有功能的實(shí)現(xiàn)都是依靠Component(組件)完成的,但又不脫離GameObject(對象),GameObject(對象)成為一個空殼,通過Component(組件)的附著使其變得豐富。這種開發(fā)模式對開發(fā)者進(jìn)行游戲開發(fā)過程來說思路非常清晰。社區(qū)資源豐富:AssetStore的出現(xiàn),這是之前其它引擎不具備的,Unity的社區(qū)商店帶有豐富的資源,并且在網(wǎng)絡(luò)上也能夠輕易的獲取到Unity支持的資源格式,這為制作游戲帶來了極大的便利。功能齊全:Unity可實(shí)現(xiàn)動畫、精靈、音效,簡單的模型搭建和模型調(diào)整,腳本實(shí)現(xiàn)等,功能及其齊全,縮短開發(fā)時間,Unity引擎簡單易用,幾乎集成了游戲開發(fā)的所有功能。2.2使用的軟件介紹2.2.1Maya軟件AutodeskMaya是美國Autodesk公司推出的世界頂級的三維動畫制作軟件,應(yīng)用方向包括專業(yè)的角色動畫,電影特技,影視廣告等。Maya工作靈活,功能完善,制作效率極高,渲染真實(shí)感極強(qiáng),是電影級別的高端制作軟件[16]。Maya最多見于動畫公司,還有影視企業(yè)。Maya在windows系統(tǒng),linux系統(tǒng)和oxs系統(tǒng)都高度適用。各項(xiàng)目之間的配合和運(yùn)作銜接有度,Maya非常受用于動漫、影視企業(yè)的工作輔助。Maya集成了Alias、Wavefront最先進(jìn)的動畫及數(shù)字效果技術(shù)。它不僅包括一般三維和視覺效果制作的功能,而且還與最先進(jìn)的建模、數(shù)字化布料模擬、毛發(fā)渲染、運(yùn)動匹配技術(shù)相結(jié)合[17]。Maya也是Unity游戲開發(fā)中必要的輔助軟件。在一些大型游戲的制作上,Maya強(qiáng)大的圖像渲染能力和動畫制作都很好的彌補(bǔ)了Unity開發(fā)游戲中精美度的不足。在我們的項(xiàng)目中,Maya也充當(dāng)著必不可少的重要作用。2.2.23dMax軟件3DStudioMax,也被叫做3dsMAX或3dMax,是Discreet公司開發(fā)的(之后Autodesk公司將其合并)基于PC系統(tǒng)的三維動畫渲染和制作軟件[18]。作為資深的CG軟件,3dMax擁有完整的商業(yè)產(chǎn)業(yè)鏈,在影視后期、CG廣告、環(huán)境藝術(shù)、汽車展示、工業(yè)效果、城市規(guī)劃、游戲制作、VR游戲、影視動畫等方面有廣泛應(yīng)用3dMax也是Unity游戲開發(fā)中必要的輔助軟件。在一些大型游戲的制作上,3dMax強(qiáng)大的建模精細(xì)能力很適合用來搭建游戲中的場景。在我們的項(xiàng)目中,3dMax也充當(dāng)著必不可少的重要作用。3dMax和Maya為我們游戲開發(fā)中的起到了極大地輔助作用,在模式搭建,動畫制作以及格式轉(zhuǎn)換上有不可或缺的作用。由于場景的模型制作仍然需要耗費(fèi)大量的時間,所以在本次的游戲開發(fā)過程中將會使用部分Unity資源商店的內(nèi)容以及其他來源的模型。2.2.3VisualStudio軟件簡稱VS,全稱MicrosoftVisualStudio。是美國微軟公司的開發(fā)工具包系列產(chǎn)品。VS是一個基本完整的開發(fā)工具集,它包括了整個軟件生命周期中所需要的大部分工具,如集成開發(fā)環(huán)境(IDE)、UML工具、代碼管控工具等等[9]。VS為我們的游戲開發(fā)中的腳本編寫提供了莫大的幫助,VS的預(yù)編寫功能使我們游戲開發(fā)便攜了許多,以及VS的代碼報(bào)錯功能也減輕了我們游戲開發(fā)中找尋BUG所消費(fèi)的精力,是Unity游戲開發(fā)中不可或缺的一個工具。2.3游戲平臺選擇本次開發(fā)的游戲平臺為Windows,考慮到性能的限制以及平臺的使用量,本次的游戲開發(fā)將會在Windows上進(jìn)行,并且游戲支持的平臺也為Windows。并且由于Unity的高兼容性,可以在后期針對不同的平臺進(jìn)行優(yōu)化之后,再單獨(dú)上線其他的版本。
第三章游戲設(shè)計(jì)介紹在開始使用Unity3D方面的構(gòu)思。在本章節(jié)中將會介紹游戲設(shè)計(jì)背景、游戲基本規(guī)則、游戲世界的介紹,玩家的劇情視角、游戲的設(shè)計(jì)意義等。3.1游戲設(shè)計(jì)背景傳統(tǒng)解謎游戲在往往更多的是偏向于以文字游戲的方法去展開劇情,這樣的解謎游戲會使玩家在游玩時的樂趣和探索性的趣味減少,從而中間勸退很多玩家。以此為啟發(fā),我將劇情的開展放在了每一個謎題當(dāng)中,并不是以一個講故事的方式去向玩家介紹劇情,而是讓玩家以第一視角親身經(jīng)歷其中解開每一個謎題的同時對劇情的了解也更加清晰。減少旁白的介紹方式,而是去引導(dǎo)玩家走主線劇情,這樣既增加了這款游戲的趣味性,也使玩家更加的聲臨其中。3.2游戲基本規(guī)則3.2.1游戲規(guī)則玩家通過搜尋迷宮中的線索來找到走出迷宮的路徑,在搜尋路徑的過程中找尋每一道門的鑰匙,其中玩家的進(jìn)度將推動劇情的發(fā)展,劇情也能給到玩家走出迷宮的提示。3.2.2操作說明在本次開發(fā)的游戲中,玩家可以通過鍵盤進(jìn)行操控角色。鍵盤可進(jìn)行的操作為:W往前移動,A向左移動,D向右移動,S向后移動鼠標(biāo)可用來觸發(fā)事件及移動視角。鼠標(biāo)可進(jìn)行的操作為:鼠標(biāo)右鍵可對游戲內(nèi)的道具進(jìn)行點(diǎn)擊及拖拽到物品欄,鼠標(biāo)右鍵也能對NPC點(diǎn)擊觸發(fā)事件,繼續(xù)對話,可對GUI進(jìn)行點(diǎn)擊實(shí)現(xiàn)各個功能的設(shè)置。3.3游戲世界介紹3.3.1人物介紹486:玩家在本次中的名字,486突然降臨到這個世界,降臨的過程中讓他失去了對自己的記憶,同樣的對這個迷宮世界一樣感到迷茫,在尋找迷宮的出口的路上486找到了自己來到這個迷宮的意義和真相??煽桑好允г诿詫m的小女孩,寫了一封求救信在等待一個人的來臨,是486要進(jìn)行拯救的對象,也是486來到迷宮世界的原因,是游戲的第一個劇情的核心人物。老頭:可可的父親,一個面向?qū)ο蟮某绦騿T,年輕時的夢想是開發(fā)出一款夢幻游戲,在游戲領(lǐng)域取得不扉成績。但也因此放在家庭的時間減少,對可可的狀況并不知情。之后可可不在之后,一直在找尋可可,從家里找不到之后就跑進(jìn)了迷宮,同樣迷失在迷宮里。486問你在這里找多久了,老頭抬手發(fā)現(xiàn)了自己的表不見了,說了句,不知道啊,身上什么都沒有,可能是掉落在迷宮的某處。到這里老頭突然對486說:你一定不能在迷宮迷失自己,你要記得你存在的意義。486想起了小女孩的信,跟老頭道了別就繼續(xù)去找了。486不知道的是,老頭本身的秘密是486第二個結(jié)局的故事線解密的答案。Papa: 在可可很小的時候,那時可可的爸爸媽媽都還在一起,在游樂園玩了一天之后爸爸為可可贏取的玩具。之后可可的爸爸媽媽經(jīng)常吵架直到離異,爸爸又經(jīng)常不在家,apa成為了可可的心理支柱。papa是一只可愛的恐龍,在可可因病離世之前一直陪伴著可可。3.3.2場景介紹游戲以一個迷宮為背景,迷宮的主色調(diào)是低沉的灰色,凸顯出現(xiàn)代的設(shè)計(jì)風(fēng)格。在迷宮中放置一個房子、許多大樹、門及各種小道具。設(shè)計(jì)的模式是為了體現(xiàn)出向往外面的美好世界中卻被現(xiàn)代建筑包圍的一個氛圍,當(dāng)中的一個房子搭建成的“家”也同樣被放置在迷宮中間。3.3.3道具介紹一封泛黃的信:看到這封信的時候486開始想起了他是個偵探,是來拯救信中的女孩子的,這位小女孩子名叫可可,而他的名字叫做486。從此開始了拯救小女孩的劇情。小樹:在這道長長的圍墻盡頭的一顆小樹相框:小女孩跟一個一個年輕人的合影照片:小女孩躲在樹的后面的照片3.4玩家劇情視角3.4.1可可主線劇情:486突然降臨到了這個迷宮世界,他對自己的出現(xiàn)感到迷茫,甚至他不知道自己是誰,不明所以的486開始向前邁開腳步,來面對這個世界。486順著這條路走著,在一個拐角486發(fā)現(xiàn)了一張泛黃的紙,好奇的486撿起了這張紙。在撿起這張紙的時候,486想起來了他的身份,知道了他的名字叫做486,他是來拯救這個小女孩的,而這也是一張小女孩的求救信。紙上的內(nèi)容也映入眼簾,小女孩透露出的無助更加讓486堅(jiān)定了他的任務(wù)。486繼續(xù)往前走著,他在路上遇到了一只叫Papa的熊貓,Papa告訴他,“可可走之前,一個人在家里等著啊、等著啊”。486繼續(xù)往迷宮深處走,接著486遇到了一個老頭,他說他一直在找可可,可是一直找不到,并且老頭堅(jiān)信可可一直在這里,請求486幫他一起找,486答應(yīng)了老頭的要求。486在迷宮的一個角落發(fā)現(xiàn)了一顆小樹,圍墻上看到了外面的樹和天空,他對此感到疑惑,是誰在這個地方搭建的迷宮,486結(jié)束了猜想繼續(xù)踏上尋找小女孩的道路。486從圍墻上面看到了這座迷宮的某個地方有座房子,486開始猜想那會不會就是Papa所提到的可可之前一直待著的地方,那會不會可可還在里面呢。486找到了通往房子的門,但卻打不開,486想應(yīng)該是老頭出門前鎖上了。486回去找老頭要鑰匙,但老頭的東西都不見了。486在迷宮的其他地方繼續(xù)走著,在某個角落里發(fā)現(xiàn)了一把銀色的鑰匙。486拿到鑰匙開了門進(jìn)去了院子,在房子里發(fā)現(xiàn)了一個相框,一張是小女孩和一個男人的合照,小女孩笑的很開心照片卻是裂開的。另外一翻過來時卻還有另一張照片,486小女孩躲在樹的后面的照片。486想起了路上的那顆孤獨(dú)的小樹,小樹明明在路的盡頭,可這里的位置似乎不對。486在樹的后面發(fā)現(xiàn)了另外的一段路,小女孩在路的盡頭寫著什么。486過去安慰可可并把她帶回了家說可可的爸爸在找可可,讓可可回家等待??煽蓪?86戀戀不舍,486把可可安置好了之后也完成了任務(wù)從而結(jié)束了游戲。至此第一劇情結(jié)束,486和可可都獲得了一個美滿的結(jié)局。3.4.1486身份劇情:486在院子里發(fā)現(xiàn)了老頭的表,從而知道了現(xiàn)在的時間是2020年4月18日下午3點(diǎn),486覺得有些不對勁,突然486一陣驚醒,想起來了可可信是在50年前的時候?qū)懙摹0l(fā)現(xiàn)了可可的求救信息距離現(xiàn)在50年的時間了。486感到一陣揪心的疼。冷靜下來之后486回憶起來了之前的種種不對勁的感覺,想起來了老人說的話,小女孩之前的在寫的東西,486不愿相信這一切,但486想起來了可可之前寫的東西沒有帶走。486去小女孩在的大樹那里,他要知道真相??煽稍诩埳蠈懼翰灰^去草叢那邊。486不聽勸告,來到了草叢那邊的世界。在這里486發(fā)現(xiàn)了那張相框照片的另一半,知道了可可的雙親離異的情況,可可在那時爸媽的爭吵中變得不再哭泣。486發(fā)現(xiàn)了Papa也在這里,這里的Papa告訴486,可可之前患上了抑郁癥,只對Papa說話,后來的某一天,可可寫了一封信之后便離開了人世。Papa告訴486,Papa這個名字是可可把它當(dāng)成了可可的爸爸,而可可的爸爸卻時常不在家,對可可也少了很多的關(guān)心。486繼續(xù)往前走著,盡頭是一封信,是可可的爸爸寫的,老頭在信里對自己忽略可可的感受做著懺悔。486開始對老頭感到氣憤。一陣指責(zé)之后,老頭對486說,486就是可可的爸爸也就是老頭,486不愿相信。老頭讓486去迷宮的盡頭看一看,486發(fā)現(xiàn)了盡頭就是486剛開始背后的那道不一樣的墻的背面。上面寫滿了的是485劃正,486說我還要繼續(xù)去里面找可可,可可還在房子等我。老頭跟486說,你再進(jìn)去會迷失自己的,486沒有聽老頭的話,拿筆寫上了第486道筆畫,486回頭重新進(jìn)入了迷宮。至此第二劇情結(jié)束。本次游戲?qū)⒅铝τ谠诓挥绊懙谝粍∏榈那闆r下開發(fā)第二劇情的世界線,通過玩家獲取的線索不同劇情展開也不同,走向的結(jié)局也會不同。
第四章游戲設(shè)計(jì)與實(shí)現(xiàn)在本章節(jié)中將會介紹整個游戲的設(shè)計(jì)與實(shí)現(xiàn)。從基本的角色移動、第一視角的實(shí)現(xiàn)、迷宮世界的搭建、游戲交互的實(shí)現(xiàn)都有進(jìn)行一個較為詳細(xì)的講解。本章也將從我開發(fā)游戲的視角進(jìn)行介紹,其中包括我對一些游戲開發(fā)遇到的困難的處理,也代表了我開發(fā)本次游戲的心路歷程。在我思考畢設(shè)做什么的時候,我出乎意料的很快就下了決心——做一個迷宮解謎劇情游戲。在所有游戲中,我認(rèn)為解謎游戲是最能讓我一想起可以獨(dú)立開發(fā)便熱血澎湃的。我相信做游戲開發(fā)的人都有一個自己可以獨(dú)立開發(fā)自己一個游戲的夢想,可以將自己的想法全部付諸其中,我始終相信游戲是開發(fā)者與游戲交流自己思想的一種語言,而這次機(jī)會也讓我有了全面學(xué)習(xí)Unity的想法和熱情。我個人偏愛劇情類的電影,這也讓我對游戲開發(fā)中的劇情設(shè)計(jì)抱有熱情。本次游戲開發(fā)更多的是對本游戲劇情的設(shè)計(jì),劇情設(shè)計(jì)上也始終貫徹著“意料之外,情理之中”的劇情設(shè)計(jì)理念,力求給玩家留下一個印象深刻的作品,并在游戲的過程中引發(fā)玩家的思考。4.1迷宮路線的設(shè)計(jì)迷宮的搭建最開始我找了一些相關(guān)的資料說明,我發(fā)現(xiàn)可以用算法進(jìn)行隨機(jī)迷宮的搭建,我找了一些隨機(jī)迷宮的算法進(jìn)行學(xué)習(xí),比如:遞歸分割算法、深度優(yōu)先算法和隨機(jī)Prim算法,但最終實(shí)現(xiàn)的模式跟我預(yù)想的不是特別合適。于是我回歸了最原始的方法,先照著我大概的劇情需求去繪制迷宮,初步繪制的迷宮及路線如圖4-1所示。圖4-1,迷宮路線初稿根據(jù)我設(shè)想劇情設(shè)置,還需要再迷宮里面添加房子,其中還有第二劇情的路線需要設(shè)置,這幅迷宮就很好的滿足了我對劇情的初期設(shè)想。之后我再從里面延伸出了新的地圖路線,具體思路圖如圖4-2所示。因?yàn)樵谧霎厴I(yè)設(shè)計(jì)的制作時我已經(jīng)在實(shí)習(xí)期,新版的地圖也是午休時突發(fā)靈感繪制而成的草圖,所以為了體現(xiàn)設(shè)計(jì)最開始的樣子,我在這里直接放置了我的設(shè)計(jì)草圖。圖4-2,迷宮路線終稿4.2迷宮環(huán)境的搭建4.2.1迷宮Floor和Walls的搭建至此我們開始使用Unity進(jìn)行我們的迷宮游戲的開發(fā),首先我們新建項(xiàng)目,并將其命名為route,新建一個平面命名為Floor,調(diào)整Transform數(shù)據(jù)如圖4-3。圖4-3,F(xiàn)loor的Transform組件為其添加材質(zhì),使平面看起來有草地的效果,呈現(xiàn)效果如圖4-4所示。圖4-4,floor的效果圖創(chuàng)建一個墻取名為Wall,調(diào)整Transform數(shù)據(jù)與Floor相匹配,并為其添加材質(zhì)使其看起來有磚墻的感覺,效果下圖所示:圖4-5,Wall的效果圖到這里我們開始搭建迷宮的墻壁,我以這塊Wall為模板,將磚墻通過復(fù)制,移動,調(diào)整大小的方式搭建出了迷宮的墻壁,并將這些Wall整合為一個父類,命名為Walls。創(chuàng)建過程中為了使磚墻的位置和我們的迷宮保持一致,我將迷宮的初稿也就是圖4-1作為貼圖附加到Floor上,F(xiàn)loor的長寬比例也是照著初稿的迷宮格式進(jìn)行設(shè)置好的。這樣照著Floor的貼圖進(jìn)行搭建的迷宮可以在搭建的過程中實(shí)習(xí)糾錯,能保證Wall的位置不會出現(xiàn)偏差。搭建出來的過程如下圖所示。圖4-6,迷宮搭建過程圖4.2.2院子的搭建院子在我的劇情設(shè)計(jì)中需要有一個房子和一個室內(nèi)的家居環(huán)境,在這里我將資源文件從Maya中導(dǎo)入到Unity中進(jìn)行搭建,卻發(fā)現(xiàn)資源文件在這里顯示不出來。之后我了解到Unity支持的文件格式與Maya的文件格式不一致,Unity支持的文件格式主要為fbx,而Maya的文件默認(rèn)為mb的格式。將資源文件用Maya進(jìn)行格式轉(zhuǎn)換,導(dǎo)出為fbx,導(dǎo)出界面如下圖,重新導(dǎo)入U(xiǎn)nity進(jìn)行搭建。圖4-7,F(xiàn)BX格式轉(zhuǎn)換樹和草叢的資源模型也同樣按上面的方法導(dǎo)入我們的項(xiàng)目文件,不過需要將max的格式文件另外導(dǎo)入3dsMax中進(jìn)行格式轉(zhuǎn)換。以四顆,不同的樹為模板,搭建起在院子內(nèi)的樹,使其圍繞在房子周圍稍微高于迷宮的墻,也讓房子稍微高于迷宮的墻,讓玩家在接近院子的時候就能看到院子的房子和樹,給到玩家一定的視覺線索。在迷宮的圍墻外我們也放置一圈的樹,給玩家營造出身處自然的感覺,經(jīng)過調(diào)試使玩家在迷宮中的很多位置都看得到圍墻外的樹。草叢將其先放置在第二劇情的路線開始的入口,具體設(shè)計(jì)在后面第二劇情的地方重點(diǎn)介紹。迷宮世界的基本環(huán)境搭建完成,如下圖所示。圖4-8,迷宮環(huán)境其中,房子的內(nèi)部構(gòu)造如圖4-9所示。圖4-9,室內(nèi)家居圖4.2.3天空盒子的制作選擇“MainCamera”,添加“Skybox”,添加路徑為“Component”-“Rendering”-“Skybox”。將6張?zhí)崆皩?dǎo)入的圖片按方向添加到Skybox,效果如下圖。圖4-10,天空盒子效果4.3角色的第一人稱視角實(shí)現(xiàn)和基本移動的實(shí)現(xiàn)4.3.1角色的第一人稱視角實(shí)現(xiàn)創(chuàng)建一個Capsule以代替玩家,命名為Player,將其Transform調(diào)整到如圖4-11所示,使其模擬角色高度并放置在游戲開始位置。將其調(diào)整到游戲開始位置。圖4-11,Player的Transform組件信息創(chuàng)建一個Camera將其綁定在玩家Capsule上,高度調(diào)節(jié)大概在玩家頭部的位置,后期可進(jìn)行微調(diào)。這時候運(yùn)行游戲就已經(jīng)能看到玩家的視角了,注意玩家Camera的層級要比項(xiàng)目中其他的Camera層級高才能在游戲運(yùn)行的時候顯示出來。然后我們新建一個腳本,命名為MouseLook,在其中我們創(chuàng)建一個根據(jù)鼠標(biāo)方向移動來進(jìn)行旋轉(zhuǎn)的動作,主要功能代碼如下:定義枚舉數(shù)據(jù)類型,有利于在組件處選擇設(shè)置publicenumRotationAxes{MouseXANDY=0,MouseX=1,MouseY=2}聲明公有變量:publicRotationAxesaxes=RotationAxes.MouseXANDY;publicfloatsensitivityHor=9.0f;publicfloatsensitivityVert=9.0f;//垂直方向的鏡頭轉(zhuǎn)向(這里給個限度最大仰角為45°)publicfloatminimumVert=-45f;publicfloatmaximumVert=45f;//垂直角度的私有變量privatefloat_rotationX=0;響應(yīng)鼠標(biāo)的旋轉(zhuǎn)命令,使用GetAxis()獲取鼠標(biāo)的輸入信息,使用if函數(shù)判斷Axes下拉菜單選擇了哪個選項(xiàng),并根據(jù)不同選項(xiàng)情況實(shí)行不同的代碼voidUpdate(){ if(axes==RotationAxes.MouseX){//鼠標(biāo)水平旋轉(zhuǎn)transform.Rotate(0,Input.GetAxis("MouseX")*sensitivityHor,0);}elseif(axes==RotationAxes.MouseY){//鼠標(biāo)垂直旋轉(zhuǎn)//基于鼠標(biāo)增加垂直角度_rotationX-=Input.GetAxis("MouseY")*sensitivityVert;//限制垂直角度的最大最小值_rotationX=Mathf.Clamp(_rotationX,minimumVert,maximumVert);//Y的角度一致floatrotationY=transform.localEulerAngles.y;//使用存的旋轉(zhuǎn)值創(chuàng)建新的Vectortransform.localEulerAngles=newVector3(_rotationX,rotationY,0);}else{//鼠標(biāo)水平垂直旋轉(zhuǎn)_rotationX-=Input.GetAxis("MouseY")*sensitivityVert;_rotationX=Mathf.Clamp(_rotationX,minimumVert,maximumVert);floatdelta=Input.GetAxis("MouseX")*sensitivityHor;floatrotationY=transform.localEulerAngles.y+delta;transform.localEulerAngles=newVector3(_rotationX,rotationY,0);} }其中加入禁止對玩家進(jìn)行物理選擇的代碼:voidStart(){Rigidbodybody=GetComponent<Rigidbody>();if(body!=null)body.freezeRotation=true;}將腳本MouseLook掛靠在Player上并設(shè)置Axes為MouseX,并將腳本MouseLook掛靠在綁定Player的Camera的上并設(shè)置Axes為MouseY,這樣就可以實(shí)現(xiàn)玩家的第一人稱視角。注意不能將MouseLook直接綁定在Player設(shè)置Axes為MouseXANDY,這樣會在加上移動腳本之后,導(dǎo)致作為Player的Capsule在進(jìn)行上下視角移動時Player的重心發(fā)生偏移導(dǎo)致玩家移動的bug。并且bug是在之后進(jìn)行玩家移動腳本實(shí)現(xiàn)后才出現(xiàn)的bug,導(dǎo)致我前期找不到bug出現(xiàn)的原因并進(jìn)行多次的調(diào)試才找到了解決的方案,影響了游戲開發(fā)的整體進(jìn)度。這個bug也警示了我游戲開發(fā)任何一個模塊都要認(rèn)真對待不能以人的角度使用對我們而言最簡單的實(shí)現(xiàn)方式,而是要作為一個機(jī)器去思考功能的實(shí)現(xiàn),不能存在“想當(dāng)然”的想法。4.3.2角色的基本移動的實(shí)現(xiàn)將系統(tǒng)默認(rèn)賦予玩家Capsule的CapsuleCollider碰撞器移除,用更符合角色的CharacterCollider代替,它可以允許玩家對象表現(xiàn)的更像一名玩家角色。創(chuàng)建腳本FPSInput,將其附加到Player聲明公有變量,定義速度和重力 publicfloatspeed=6.0f;publicfloatgravity=-9.8f;響應(yīng)按鍵的位移并將重力添加給移動代碼 voidUpdate(){floatdeltaX=Input.GetAxis("Horizontal")*speed;floatdeltaZ=Input.GetAxis("Vertical")*speed;Vector3movement=newVector3(deltaX,0,deltaZ);movement=Vector3.ClampMagnitude(movement,speed);movement.y=gravity;movement*=Time.deltaTime;movement=transform.TransformDirection(movement);_charController.Move(movement);}至此角色已經(jīng)搭建好了第一人稱視角和基本的移動,在3dsMax中完成主角模型的格式轉(zhuǎn)化并將該模型附加到Player上,該模型后面也將作為可可父親的形象出現(xiàn)在游戲中,玩家角色正式配置完成??稍诿詫m中進(jìn)行移動和初步探索,玩家對象也可跟隨視角的移動改變方向,使玩家對象及模型始終面朝運(yùn)行Player的Camera方向,運(yùn)行時Scene視圖和Game視圖的截圖如下。圖4-12,Scene視圖圖4-13,Game視圖4.4游戲UI系統(tǒng)4.4.1玩家主界面UI的設(shè)計(jì) 在追求極致簡約的理念下,為了讓玩家把更多精力放在游戲本身的內(nèi)容上,我把主界面的UI系統(tǒng)簡化成一個放在主界面右邊的物品欄,如下圖所示。通過錨點(diǎn)將物品欄相對屏幕放置在右邊,不會因?yàn)槠聊坏姆直媛矢淖兌鴮?dǎo)致物品欄脫離主界面右邊界。具體功能實(shí)現(xiàn)將在章節(jié)4.5進(jìn)行介紹。圖4-14,主界面UI4.5門、鑰匙和物品欄系統(tǒng)的實(shí)現(xiàn) 將準(zhǔn)備好的門的模型導(dǎo)入游戲項(xiàng)目中,并在院子門口放置好門的模型,為門添加材質(zhì)使其看起來達(dá)到門的視覺效果。將門的主板和門把命名為door,整體模型命名為men。效果如下圖所示。圖4-15,門的效果圖創(chuàng)建兩個動畫OpenDoorAnim、CloseDoorAnim,分別為開門、關(guān)門的動畫,在Animator窗口中設(shè)置動畫的狀態(tài),其中圖4-16下半部分為OpenDoorAnim、CloseDoorAnim的關(guān)鍵幀位置,上半部分為動畫的狀態(tài)的切換關(guān)系。圖4-16,Animator窗口完成上邊所有設(shè)置之后,就可以通過編寫代碼進(jìn)行控制OpenDoorAnim、CloseDoorAnim動畫狀態(tài)的切換。 現(xiàn)在我們開始制作鑰匙,將準(zhǔn)備好的鑰匙資源導(dǎo)入游戲項(xiàng)目中,調(diào)整大小適宜,將其命名為ys。創(chuàng)建一個腳本ysCtr附加到y(tǒng)s,編寫腳本ysCtr使ys真的實(shí)現(xiàn)鑰匙的功能。ysCtr代碼如下:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassysCtr:MonoBehaviour{ //定義一個私有變量,判斷是否可以獲取鑰匙privateboolIsCanGet;//聲明一個公有變量,區(qū)別是哪把鑰匙publicintIndex;//聲明一個公有變量,為了鏈接到我們獲取鑰匙時可收到的提示信息publicGameObjectDescripeUI; //Usethisforinitialization voidStart(){IsCanGet=false;DescripeUI.SetActive(false);DescripeUI.GetComponent<ShuoMingJieMian>().SetYS(this); } //Updateiscalledonceperframe voidUpdate(){ if(IsCanGet&&Input.GetButtonDown("Fire1")){Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHithit;if(Physics.Raycast(ray,outhit)){Debug.Log("hit"+);if(hit.collider.isTrigger==false&&hit.collider.gameObject.tag=="WuPing")DescripeUI.SetActive(true);}} }publicvoidOnTriggerEnter(Colliderc){Debug.Log("enter:"+gameO);if(c.gameObject.tag=="Player"){Debug.Log("Coll-2");IsCanGet=true;}}publicvoidOnTriggerExit(Colliderc){Debug.Log("Coll-exit-1");if(c.gameObject.tag=="Player"){IsCanGet=false;}}} 為鑰匙添加兩個碰撞器,一個是玩家是否進(jìn)入允許對鑰匙進(jìn)行的點(diǎn)擊范圍的碰撞器,一個是獲取鑰匙點(diǎn)擊的碰撞器。第一個碰撞器調(diào)整到直徑剛好是走廊寬的范圍,第二個碰撞器調(diào)整到鑰匙實(shí)體大小。點(diǎn)擊鑰匙之后需要出現(xiàn)一個提示窗口,于是我打算創(chuàng)建一個可以在點(diǎn)擊鑰匙之后彈出的說明窗口,我在Canvas上創(chuàng)建一個Image命名為DescriptUI,以Image為父級創(chuàng)建一個Bottom和Text,Bottom做點(diǎn)擊關(guān)閉說明界面的效果,而Text做說明界面的說明文本支持。還可以在DescriptUI上選擇我們想要的說明界面的背景圖片。新建說明界面的腳本命名為ShuoMingJieMian。在ys的ysCtr組件上將DescriptUI拖進(jìn)來,ys的所需的功能組件界面如下圖。圖4-17,鑰匙碰撞器點(diǎn)擊之后跳出的說明界面的對象DescriptUI,需要顯示提示信息并在接受點(diǎn)擊之后關(guān)閉界面,所支持的代碼如下:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;//說明界面//publicclassShuoMingJieMian:MonoBehaviour{privateButtonbtn;publicysCtrys; //Usethisforinitialization voidStart(){btn=GetComponentInChildren<Button>();btn.onClick.AddListener(()=>{GameObject.FindWithTag("WuPingLang").GetComponent<wupinglang>().SetImageActive(ys,true);ys.gameObject.SetActive(false);GameObject.Destroy(gameObject);}); } //Updateiscalledonceperframe voidUpdate(){ }publicvoidSetYS(ysCtrysCtr){ys=ysCtr;}}院子的鑰匙附帶著兩條線索,一條是主線的線索提醒玩家前往院子探索,另一條是引導(dǎo)玩家去了解可可父親的第二劇情的線索。說明界面的樣式調(diào)整如圖4-18,其中我們利用錨點(diǎn)將每一個UI對象都固定在了相對鏡頭屏幕大小的位置,在變換不同的顯示設(shè)備時不會因?yàn)榉直媛实牟煌鴮?dǎo)致UI對象位置發(fā)生改變設(shè)置錨點(diǎn)可以使UI對象自適應(yīng)屏幕分辨率從而保持相對位置不變。圖4-18,獲取物品提示界面在鑰匙物體被點(diǎn)擊之后會彈出說明界面,同時3D鑰匙物品會銷毀,而玩家需要感知到以及獲取了鑰匙則需要物品欄的2D鑰匙圖片顯示出來,這里編寫wupinglang以獲取物品欄的鑰匙顯示與否的信息,代碼如下。usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;publicclasswupinglang:MonoBehaviour{publicList<Image>images;privateList<ysCtr>yss;//Usethisforinitialization//初始化鑰匙列表,隱藏鑰匙圖片voidStart(){yss=newList<ysCtr>();if(null!=images){foreach(variteminimages){item.gameObject.SetActive(false);}} } //Updateiscalledonceperframe voidUpdate(){ }//設(shè)置哪吧鑰匙圖片是否可見publicvoidSetImageActive(ysCtrys,boolactive){images[ys.Index].gameObject.SetActive(active);yss.Add(ys);}//檢查是否有鑰匙publicboolCheckYS(intindex){foreach(variteminyss){if(item.Index==index){returntrue;}}returnfalse;}}需要注意的是,游戲的設(shè)計(jì)中涉及到了幾個門與鑰匙的系統(tǒng),即我們需要獲取幾把“鑰匙”,我們需要在附加在物品欄的wupinglang腳本組件上Size的位置設(shè)置好“鑰匙”的數(shù)量,并將對應(yīng)的“鑰匙”圖片放置到物品欄的位置上。目前只做一個門與鑰匙的系統(tǒng),所以我們將Size設(shè)置為1,并為其附加上相應(yīng)的鑰匙圖片。效果如下圖,之后其他的“門與鑰匙”的系統(tǒng)都可將這個作為模板直接引用。圖4-19,wupinglang腳本組件鑰匙物品與說明界面的鏈接做好了,與物品欄的鏈接也做好了,接下來需要確保門能在識別到物品欄有鑰匙的時候打開,而在識別到物品欄沒有鑰匙的情況選擇不打開門。創(chuàng)建一個腳本DoorCtl附加到men上,需要聲明哪個門對應(yīng)哪個鑰匙,為了方便在游戲開發(fā)時選擇鑰匙,這里選擇聲明一個共有變量來鏈接到對應(yīng)鑰匙的位置。調(diào)用Animator中的函數(shù),通過設(shè)置bool值,即可改變游戲?qū)ο蟮膭赢嫚顟B(tài)。主要代碼如下。usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassDoorCtl:MonoBehaviour{publicysCtrys;privatewupinglangwpl;privateAnimatoranim; //Usethisforinitialization voidStart(){wpl=GameObject.FindWithTag("WuPingLang").GetComponent<wupinglang>();anim=GetComponent<Animator>(); } //Updateiscalledonceperframe voidUpdate(){ }publicvoidOnTriggerEnter(Colliderc){if(c.gameObject.tag=="Player"){if(wpl.CheckYS(ys.Index)){anim.SetBool("open",true);}}}publicvoidOnTriggerExit(Colliderc){if(c.gameObject.tag=="Player"){anim.SetBool("open",false);}}}需要注意的是需要給門創(chuàng)建碰撞器,不然的話只要玩家角色經(jīng)過門就會自動打開,這顯然不是這游戲想要的效果。創(chuàng)建SphereCollider組件并勾選上IsTrigger。將對應(yīng)鑰匙物品拖進(jìn)Ys中,door的Inspector界面如下圖所示。圖4-20,門的Inspector至此一個簡單的“門與鑰匙”系統(tǒng)建造完成,其中還完成了一個由物品欄構(gòu)成的簡介UI主界面的實(shí)現(xiàn)。實(shí)現(xiàn)了在撿到鑰匙之時提示界面(說明界面)的成功彈出,玩家將在迷宮中探索,并能通過進(jìn)入鑰匙的獲取范圍的時候去對鑰匙進(jìn)行獲取,物品欄識別對應(yīng)該鑰匙的拾取信息之后顯示出本來就放在物品欄界面的該物品的UI,最后能依靠對應(yīng)“鑰匙”進(jìn)入對應(yīng)的“房間”,后面也將以這個“門與鑰匙”的系統(tǒng)進(jìn)行我們游戲不同劇情的開展。4.6游戲角色對話 在做游戲的角色對話這一塊,本游戲的開發(fā)采用fungus對話系統(tǒng)插件實(shí)現(xiàn)。使用fungus對話系統(tǒng)的時候以為只能做一些簡單的玩家與NPC對話,卻發(fā)現(xiàn)fungus插件能實(shí)現(xiàn)的功能還有游戲?qū)υ挼捻樞颍ㄟ^加入條件判斷使得對話與游戲的進(jìn)度相匹配,還能做選擇性對話,這里為了不做劇情的透露本游戲?qū)⒉徊扇∵@個功能。除此之后,fungus插件甚至還能用提前準(zhǔn)備好的聲音、動畫、UI等進(jìn)行游戲的交互,fungus功能強(qiáng)大,為游戲開發(fā)者提供了不一樣的方法實(shí)現(xiàn)游戲運(yùn)行的眾多功能。4.6.1建立玩家與NPC的簡單對話功能 Fungus插件在Unity的AssetStore中就可以直接下載進(jìn)行導(dǎo)入,在Tools列表找到Flowchart并創(chuàng)建。打開Flowchart的編輯窗口,新建一個對話框模塊命名為NPCPapa,為其編寫對話,并將NPC和玩家的名字區(qū)別開。對話框內(nèi)容如下圖所示。圖4-21,NPCPapa對話編寫 這里添加了一個條件是為了NPC適應(yīng)不同劇情發(fā)展而出現(xiàn)不一樣的對話內(nèi)容。之后需要為每個NPC附加上BoxCollider和SphereCollider,并將SphereCollider調(diào)整到走廊大小,將SphereCollider的IsTrigger勾上為了不阻礙玩家的移動。接下來為NPC編寫代碼,主要代碼如下。usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingFungus;publicclassNPC1:MonoBehaviour{publicstringChatName;//當(dāng)前是否可以對話privateboolCanChat=false; //Usethisforinitialization voidStart(){ } privatevoidOnTriggerEnter(Colliderother){CanChat=true;}privatevoidOnTriggerExit(Colliderother){CanChat=false;}//UpdateiscalledonceperframevoidUpdate(){ }privatevoidOnMouseDown(){Say();}voidSay(){if(CanChat){//開始對話FlowchartflowChart=GameObject.Find("Flowchart").GetComponent<Flowchart>();//對話是否存在if(flowChart.HasBlock(ChatName))//執(zhí)行對話flowChart.ExecuteBlock(ChatName);}}}將該腳本NPC1附加到各個NPC的組件中,并將屬于每個NPC的對話內(nèi)容綁定在該腳本組件上,為玩家角色及各個NPC設(shè)置名字及名字顏色以區(qū)別發(fā)言對象,其中也暗示了老頭的名字顏色與486的名字顏色一致,這里作為一個后面劇情小提示藏在對話框中。圖4-22,F(xiàn)lowchart的編輯窗口 為了使NPC對話內(nèi)容與劇情發(fā)展保持一致,這里加入了一個bool變量Cantalk,初始值為false,當(dāng)一個NPC對話結(jié)束后,另一個NPC的特定對話內(nèi)容才為true。這支持了我們各個NPC同時在場又不影響游戲劇情進(jìn)度,使得我們劇情發(fā)展合理,玩家獲取的線索不出現(xiàn)無用線索。圖6-23,條件對話的設(shè)計(jì)對話框效果如下圖所示。圖6-24,對話框效果4.7迷宮劇情的開展 在本游戲中,最大的創(chuàng)新就是在劇情的開展方式上做了創(chuàng)新,與傳統(tǒng)解謎游戲不同的是,一般解謎劇情類游戲都是將玩家往一個劇情方向去帶,而本游戲也將玩家往一個劇情去帶,這里主要考慮了不同玩家對劇情的敏感度不同。針對劇情敏感度較高的玩家,本游戲設(shè)置了在主線劇情下的主劇情衍生,是與第一劇情不同的劇情但又不是獨(dú)立存在的一個劇情,可以理解為第一劇情的衍生劇情,但在這里更像是對第一劇情的解謎劇情。 具體實(shí)現(xiàn)提供前面提到的“門與鑰匙”的系統(tǒng)實(shí)現(xiàn)。4.6.1第一劇情 關(guān)鍵人物:可可 主要任務(wù):離開迷宮、找到可可 主要事件:事件集事件與可可的聯(lián)系獎勵事件A1撿到可可的求救信可可的求救信想起了自己的名字事件A2遇見老頭可可的父親確認(rèn)了可可就在迷宮,接到把可可接回家的任務(wù)事件A3與Papa對話可可心愛的玩具提示最后見到可可的地方在家里事件A4發(fā)現(xiàn)長廊盡頭的小樹可可的所在(可可的位置在樹的后面,但被玩家視野里并不可見)事件A5找到鑰匙可可家的鑰匙可進(jìn)入可可的家事件A6進(jìn)入院子可可的家發(fā)現(xiàn)了可可位置的線索事件A7發(fā)現(xiàn)房子里的相框可可長廊盡頭與樹的合照發(fā)現(xiàn)了照片長廊的比看到的長廊還要長,得出了長廊盡頭還有空間的設(shè)想事件A8找到可可可可本人第一劇情結(jié)束,玩家可結(jié)束游戲離開迷宮事件A9發(fā)現(xiàn)房子后面的表無開啟第二劇情的“鑰匙” 功能實(shí)現(xiàn): 事件A1、A2、A3、A4、A6、A7通過NPC對話模塊的功能實(shí)現(xiàn),事件A5、A6、A9通過“門與鑰匙”模塊的功能進(jìn)行實(shí)現(xiàn)。4.6.1第二劇情 關(guān)鍵人物:老頭/可可的父親/486(玩家角色),可可 主要任務(wù):找尋486存在的意義,迷宮的真相主要事件:事件集事件道具發(fā)現(xiàn)事件0發(fā)現(xiàn)房子后面的表表(老頭遺落的時間)可可的求救信距今50年事件B1進(jìn)入迷宮的新路線探索迷宮真相新路線是老頭人生介紹事件B2發(fā)現(xiàn)老頭的日記老頭的日記老頭年輕時在虛擬現(xiàn)實(shí)行業(yè)的大放異彩事件B3看到現(xiàn)實(shí)裂開的照片裂開的家庭照片老頭家庭不和,離異事件B4再次遇見PapaPapa得知了可可離世原因是抑郁癥(引申第二劇情主題——關(guān)愛抑郁癥患者)事件B5進(jìn)入可可內(nèi)心世界Papa感受可可的無助和等待事件B6發(fā)現(xiàn)抑郁癥報(bào)道關(guān)于抑郁癥的報(bào)紙科普抑郁癥,并以現(xiàn)實(shí)看到抑郁癥的危害事件B7看到一個畫滿圖案的黑板黑板發(fā)現(xiàn)了黑板上的圖案是487筆“正”字事件B8遇見找回時間的老頭表告訴了486真相,迷宮是老頭建的,目的是為了拯救之前沒能見到最后一面的可可事件B9與老頭爭執(zhí)發(fā)現(xiàn)了自己的真實(shí)身份就是老頭(可可父親)。老頭勸告486不要進(jìn)去,否則會迷失自我事件B10486不聽勸告回頭進(jìn)入迷宮;老頭寫下第486筆“正”字虛擬門486新的目的是去尋找在家等著486的可可穿過虛擬的門,回到起點(diǎn),老頭獲得了新的名字489,完成循環(huán)。 功能實(shí)現(xiàn): 事件0、事件B4利用了前面提到的“門和鑰匙”功能實(shí)現(xiàn),把Papa作為“鑰匙”獲取,并成為進(jìn)入可可內(nèi)心世界的鑰匙。其余事件以對話的形式呈現(xiàn)愛你,但限定了對話進(jìn)行的順序以保證劇情的發(fā)展貼合玩家的心理變化和現(xiàn)實(shí)邏輯。其中事件B3作為當(dāng)中的抑郁癥報(bào)道也將作為事件B7之后的“鑰匙”,玩家之有在獲取了“鑰匙”,才能進(jìn)入對應(yīng)的“門”里。 劇情設(shè)計(jì)意義: 本篇章中對第一劇情的解謎,通過劇情發(fā)展引發(fā)玩家思考,通過玩家角色的與老頭一體的情感使玩家共感對可可的感情。而通過劇情的發(fā)展一步步的回到原點(diǎn),也解釋了玩家進(jìn)入游戲的意思以及迷宮存在的意思,最終形成一個劇情閉環(huán),使迷宮成為一個連通的閉環(huán)迷宮。也通過劇情的一步步進(jìn)行逐級提煉出本游戲的主題是——拯救抑郁癥,最后升華成486(老頭)的自我拯救。
第五章游戲測試一個游戲策劃到發(fā)布,游戲測試環(huán)節(jié)必不可少。如果游戲沒有經(jīng)過測試便給玩家游玩,可能出現(xiàn)的bug將極大地影響玩家的游戲體驗(yàn)。游戲測試可以將游戲開發(fā)中未發(fā)現(xiàn)的bug或可能出錯的bug進(jìn)行檢驗(yàn),也可以通過游戲?qū)嵸|(zhì)游玩效果來檢驗(yàn)游戲開發(fā)的完成度。游戲測試環(huán)節(jié)也是游戲正常運(yùn)作及玩家游戲體驗(yàn)的保障。5.1功能測試本次測試主要以人工試玩測試為主。由于開發(fā)過程中有可能出現(xiàn)未預(yù)測出現(xiàn)的BUG,所以以下數(shù)據(jù)都是人工直接測試的結(jié)果。功能測試項(xiàng)目是否通過測試角色第一人稱視角移動正常角色基礎(chǔ)移動正常點(diǎn)擊道具時提示界面彈出正常提示窗口的關(guān)閉正常點(diǎn)擊道具,道具消失正常點(diǎn)擊道具,物品欄出現(xiàn)道具UI正常點(diǎn)擊NPC進(jìn)行對話正常NPC對話內(nèi)容隨劇情變化正常物品欄沒有“鑰匙”無法進(jìn)入“門”正常界面跳轉(zhuǎn)正常動畫的播放正常5.2資源占用測試測試環(huán)境:處理器:Intel(R)Core(M)15-6300hqCPU@2.30GHZ內(nèi)存:12.0GB(11.9GB可用)顯卡:NVIDIAGeForceGTX960M系統(tǒng):Windows10家庭中文版測試的情況如下:處理器占用率:最高48%,平均30%內(nèi)存占用:400.1MB顯卡使用率:最高33%,平均25%以上結(jié)果來自軟件測試,各方面數(shù)值屬于正常情況,測試通過。
第六章總結(jié)與期望本課題研究的基于Unity3d的迷宮解謎游戲設(shè)計(jì)與實(shí)現(xiàn)至此已經(jīng)完成,回想起最初選擇畢業(yè)設(shè)計(jì)項(xiàng)目的時候,我對于畢設(shè)做什么比較迷茫,然后開始思考著做什么可以體現(xiàn)出我大學(xué)所學(xué)的知識,但最后我出于對解謎類游戲和對劇情類電影的興趣,選擇了本身并不是特別擅長基于Unity3d游戲開發(fā)類型。在完成項(xiàng)目的過程中,我給自己制定了對應(yīng)的學(xué)習(xí)計(jì)劃和對項(xiàng)目定下了分段的目標(biāo)。學(xué)習(xí)Unity開發(fā)的路上,我利用實(shí)習(xí)之余的時間在互聯(lián)網(wǎng)上觀看教程、查閱相關(guān)學(xué)科的教材和回顧教授Unity課程的老師之前的PPT、學(xué)習(xí)資料進(jìn)行學(xué)習(xí),學(xué)習(xí)的過程是枯燥且長期的,但是中間每次功能的實(shí)現(xiàn)都能讓我感到充實(shí)且欣悅。即便枯燥也要堅(jiān)持去學(xué)習(xí),這樣才能在干渴的土地上汲取到所缺失的水分。在項(xiàng)目制作期間,對于每個Bug的出現(xiàn)從恐懼到習(xí)以為常到可以從Bug中找到解決方案,大概這就是以Bug治Bug吧。而對于這個項(xiàng)目由于時間的限制和個人能力有限,其實(shí)并沒有像我最開始抱著滿腔熱情所期待那么的好,不過對于劇情的設(shè)計(jì)卻是我在上、下班,洗澡睡覺時都會思考的一個環(huán)節(jié),閉環(huán)劇情結(jié)合游戲的創(chuàng)新是我比較滿意的點(diǎn)。我始終認(rèn)為游戲是開發(fā)者的思想與玩家思維的一種交匯的方式,游戲也必將成為一種新的藝術(shù)呈現(xiàn)在世界面前。在之后我也將不斷學(xué)習(xí),不斷思考,我相信今后我將掌握更多的技能支持我去開發(fā)更加好的游戲。
參考文獻(xiàn)褚治廣,李萬杰,張興,等.基于Unity的“平行空間”冒險(xiǎn)解謎游戲的開發(fā)設(shè)計(jì)[J].遼寧工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2018,38(06):27-30.盧文靜.分鏡解謎游戲《致命框架2》[J].計(jì)算機(jī)與網(wǎng)絡(luò),2017(14).黃志輝.基于心流理論的游戲交互研究[D].佚名.解密佳作《未上鎖的房間3》[J].電腦迷,2015,000(024):91-91.余夢君.飛往“彼岸世界”的擬態(tài)蝴蝶[D].胡睿鑫.劇情動畫短片劇本中的戲劇沖突設(shè)計(jì)研究[D].2019.張雁捷.游戲劇情與操作的時長配比和難度界定[D].耿英華,朱姝.劇情動畫在電子游戲中的作用[J].廣東技術(shù)師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2010,031(004):38-41.MicrosoftVisualC6.0_搜索_互動百科.薄星晨,林佳奇,莊鴻昌.基于unity3d的紀(jì)念碑谷手機(jī)游戲中出現(xiàn)的視覺欺騙[J].通訊世界,2017(2):265-266.2018中國游戲業(yè):挺過“煎熬時刻”迎來版號重開-博客科技的專欄-博客中國游戲市場今年銷售收入832億元4G將帶來新動力.吳浩煒,黃昊,朱嘉侖,陳圓,謝修娟.基于Unity3D的訓(xùn)練空間思維的迷宮手游的設(shè)計(jì)與實(shí)現(xiàn).
《電子技術(shù)與軟件工程》2019.11.Unity簡介-AiCoding-博客園.Unity3D介紹、安裝、展示-qq_31971935的博客-CSDN博客.Maya基礎(chǔ)與應(yīng)用實(shí)用教程txt免費(fèi)下載_讀后感_在線閱讀_讀書人圖書資料庫.《立體構(gòu)成及應(yīng)用》第七章:立體構(gòu)成的造型組合訓(xùn)練.游戲特效設(shè)計(jì)用哪些軟件?-土地公文庫.
致謝本論文在撰寫與本項(xiàng)目在開發(fā)中,我得到了我的導(dǎo)師陳偉淦老師熱心幫助,感謝我就讀專業(yè)的吳志達(dá)老師的教授的Unity相關(guān)知識。令我可以獨(dú)立的開發(fā)自己想像出來的游戲并實(shí)現(xiàn)它。大學(xué)四年即將結(jié)束,說到致謝,我想借助這里感謝自己,在大學(xué)遇到的諸多困難當(dāng)中感謝自己并沒有放棄自己,感謝自己讓我成為一個更好的人。感謝廣東東軟學(xué)院這個平臺給我學(xué)習(xí)和展現(xiàn)自己的機(jī)會,也感謝大學(xué)期間所遇到的形形色色的人或事,在這個充滿個性的平臺并沒有迷失自己,能保持住自己的個性也能做到包容理解。 在論文完成過程中,當(dāng)我遇到難點(diǎn)時,感謝我的朋友為我提供學(xué)習(xí)材料并解疑答惑。也謝謝一直關(guān)心著、支持著我的人,在此向你們表示深深的感謝。
電腦故障檢測卡代碼表
1、特殊代碼"00"和"ff"及其它起始碼有三種情況出現(xiàn):
①已由一系列其它代碼之后再出現(xiàn):"00"或"ff",則主板ok。
②如果將cmos中設(shè)置無錯誤,則不嚴(yán)重的故障不會影響bios自檢的繼續(xù),而最終出現(xiàn)"00"或"ff"。
③一開機(jī)就出現(xiàn)"00"或"ff"或其它起始代碼并且不變化則為主板沒有運(yùn)行起來。
2、本表是按代碼值從小到大排序,卡中出碼順序不定。
3、未定義的代碼表中未列出。
4、對于不同bios(常用ami、award、phoenix)用同一代碼代表的意義不同,因此應(yīng)弄清您所檢測的電腦是屬于哪一種類型的bios,您可查閱您的電腦使用手冊,或從主板上的bios芯片上直接查看,也可以在啟動屏幕時直接看到。
5、有少數(shù)主板的pci槽只有一部分代碼出現(xiàn),但isa槽有完整自檢代碼輸出。且目前已發(fā)現(xiàn)有極個別原裝機(jī)主板的isa槽無代碼輸出,而pci槽則有完整代碼輸出,故建議您在查看代碼不成功時,將本雙槽卡換到另一種插槽試一下。另外,同一塊主板的不同pci槽,有的槽有完整代碼送出,如dell810主板只有靠近c(diǎn)pu的一個pci槽有完整代碼顯示,一直變化到"00"或"ff",而其它pci槽走到"38"后則不繼續(xù)變化。
6、復(fù)位信號所需時間isa與pci不一定同步,故有可能isa開始出代碼,但pci的復(fù)位燈還不熄,故pci代碼停要起始代碼上。
代碼對照表
00.已顯示系統(tǒng)的配置;即將控制INI19引導(dǎo)裝入。
01處理器測試1,處理器狀態(tài)核實(shí),如果測試失敗,循環(huán)是無限的。處理器寄存器的測試即將開始,不可屏蔽中斷即將停用。CPU寄存器測試正在進(jìn)行或者失敗。
02確定診斷的類型(正常或者制造)。如果鍵盤緩沖器含有數(shù)據(jù)就會失效。停用不可屏蔽中斷;通過延遲開始。CMOS寫入/讀出正在進(jìn)行或者失靈。
03清除8042鍵盤控制器,發(fā)出TESTKBRD命令(AAH)通電延遲已完成。ROMBIOS檢查部件正在進(jìn)行或失靈。
04使8042鍵盤控制器復(fù)位,核實(shí)TESTKBRD。鍵盤控制器軟復(fù)位/通電測試。可編程間隔計(jì)時器的測試正在進(jìn)行或失靈。
05如果不斷重復(fù)制造測試1至5,可獲得8042控制狀態(tài)。已確定軟復(fù)位/通電;即將啟動ROM。DMA初如準(zhǔn)備正在進(jìn)行或者失靈。
06使電路片
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人房屋抵押民間借貸借款協(xié)議文本3篇
- 2025年度平板車租賃運(yùn)輸合同風(fēng)險(xiǎn)評估與控制
- 個人租房合同標(biāo)準(zhǔn)版可打印
- 二零二五年度處理男子外遇妻子懷孕離婚撫養(yǎng)權(quán)糾紛調(diào)解合同
- 二零二五年度智慧家居項(xiàng)目報(bào)建代理與智能家居合同2篇
- 2025年度鐵礦石進(jìn)出口關(guān)稅及稅費(fèi)繳納合同規(guī)范
- 二零二五版礦產(chǎn)資源租賃居間代理合同3篇
- 二零二五年度企事業(yè)單位廉潔從業(yè)監(jiān)督員聘任合同
- 2025阿里巴巴智能物流機(jī)器人研發(fā)及銷售合同3篇
- 2025年度供應(yīng)鏈金融投資擔(dān)保協(xié)議
- 《大學(xué)生職業(yè)發(fā)展與就業(yè)指導(dǎo)》課程標(biāo)準(zhǔn)
- 第23課《出師表》課件(共56張)
- GB/T 3953-2024電工圓銅線
- 發(fā)電機(jī)停電故障應(yīng)急預(yù)案
- 接電的施工方案
- 常用藥物作用及副作用課件
- 幼兒阿拉伯?dāng)?shù)字描紅(0-100)打印版
- 社會組織等級評估報(bào)告模板
- GB/T 12173-2008礦用一般型電氣設(shè)備
- 新媒體研究方法教學(xué)ppt課件(完整版)
- 2020新版?zhèn)€人征信報(bào)告模板
評論
0/150
提交評論