勇士之路的角色扮演游戲設(shè)計(jì)與開(kāi)發(fā)_第1頁(yè)
勇士之路的角色扮演游戲設(shè)計(jì)與開(kāi)發(fā)_第2頁(yè)
勇士之路的角色扮演游戲設(shè)計(jì)與開(kāi)發(fā)_第3頁(yè)
勇士之路的角色扮演游戲設(shè)計(jì)與開(kāi)發(fā)_第4頁(yè)
勇士之路的角色扮演游戲設(shè)計(jì)與開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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)介

本章節(jié)將會(huì)探討選題的背景和意義,綜合分析國(guó)內(nèi)外相關(guān)研究現(xiàn)狀,詳細(xì)闡述論文的主要研究?jī)?nèi)容以及論文的結(jié)構(gòu)安排。隨著經(jīng)濟(jì)的發(fā)展,人們生活質(zhì)量的不斷提高,人們已經(jīng)開(kāi)始由物質(zhì)生活向精神文明轉(zhuǎn)變,開(kāi)始追求休閑娛樂(lè),人們對(duì)游戲的需求也隨之增加,游戲成為現(xiàn)代社會(huì)不可或缺的一部分。隨著科技的不斷進(jìn)步,游戲的發(fā)展與科技密不可分,科技的進(jìn)步為游戲提供了更多的可能性和更好的體驗(yàn)。根據(jù)《2023年中國(guó)游戲產(chǎn)業(yè)報(bào)告》表示,2023年,國(guó)內(nèi)游戲市場(chǎng)實(shí)際銷售收入3029.64億元,同比增長(zhǎng)13.95%,首次突破3000億關(guān)口。用戶規(guī)模6.68億人,同比增長(zhǎng)0.61%,為歷史新高點(diǎn),這種增長(zhǎng)趨勢(shì)表明了中國(guó)游戲市場(chǎng)仍然具有巨大的潛力和發(fā)展空間,隨著市場(chǎng)的不斷擴(kuò)大和用戶需求的多樣化,游戲類型也日益豐富當(dāng)下冒險(xiǎn)游戲是非常受歡迎的游戲類型之一,它提供了一個(gè)虛擬的冒險(xiǎn)世界,讓玩家可以在游戲中扮演主角,探索未知的領(lǐng)域,解決謎題,完成任務(wù),體驗(yàn)刺激和充滿挑戰(zhàn)的冒險(xiǎn)。Unity3D引擎可以給開(kāi)發(fā)者創(chuàng)建逼真的游戲場(chǎng)景、角色和物體。引擎提供了高質(zhì)量的圖形渲染技術(shù),可以呈現(xiàn)出真實(shí)的光影效果、細(xì)節(jié)豐富的紋理和逼真的物理模擬。這不僅可以使開(kāi)發(fā)者深入了解Unity引擎的各種功能和工具,提高自己的技術(shù)水平,而且玩家可以在游戲中身臨其境,感受到真實(shí)世界的冒險(xiǎn)體驗(yàn),通過(guò)這款游戲,希望為玩家提供一個(gè)逃離現(xiàn)實(shí)、放松心情的機(jī)會(huì)。游戲中的冒險(xiǎn)和探索過(guò)程可以讓玩家暫時(shí)忘掉現(xiàn)實(shí)中的壓力和煩惱,享受游戲帶來(lái)的樂(lè)趣,讓人們?cè)诠ぷ鲗W(xué)習(xí)之余,享受游戲的快樂(lè),適當(dāng)放松心情。Unity3D作為一款被頻繁使用的游戲引擎頻繁的一款3D游戲引擎,已經(jīng)被國(guó)內(nèi)外游戲公司作為主要的開(kāi)發(fā)引擎來(lái)制作各種小型休閑類游戲,此引擎具有重多優(yōu)點(diǎn),極易上手的開(kāi)發(fā)模式,支持多種類格式的模型導(dǎo)入,并且官方與自研開(kāi)發(fā)者提供了多種方便操作的插件,并具有所有開(kāi)發(fā)平臺(tái)中最優(yōu)秀的跨平臺(tái)設(shè)計(jì)模式,使用Unity3D進(jìn)行游戲的開(kāi)發(fā)較為方便,可以完美移植到PC\Android\IOS平臺(tái)REF_Ref958\r\h[1]。隨著Unity3D的普及和功能性,在國(guó)內(nèi)小型獨(dú)立開(kāi)發(fā)者使用類似Unity、DevOps等工具和使用預(yù)制資源等策略,簡(jiǎn)化工作流程并能快速地發(fā)布游戲推向市場(chǎng)智能手機(jī)的普及和移動(dòng)網(wǎng)絡(luò)的發(fā)展,移動(dòng)游戲市場(chǎng)持續(xù)增長(zhǎng),炫酷的游戲不局限于PC上,移動(dòng)設(shè)備也可以體驗(yàn)到這些炫酷的游戲,國(guó)內(nèi)開(kāi)發(fā)者更多的是開(kāi)發(fā)僅移動(dòng)端的游戲。國(guó)外更多傾向于VR/AR、3D建模等領(lǐng)域還被應(yīng)用于智能家居、智能交通等多個(gè)領(lǐng)域,國(guó)外相關(guān)領(lǐng)域的研究包括游戲設(shè)計(jì)于開(kāi)發(fā)啊、人機(jī)交互、虛擬現(xiàn)實(shí)等多個(gè)方面。隨著科技的進(jìn)步,游戲行業(yè)正經(jīng)歷著前所未有的變革。從市場(chǎng)規(guī)模上看嗎,基于《2023年中國(guó)游戲產(chǎn)業(yè)報(bào)告》全球游戲市場(chǎng)總收入約為1840億美元,手游營(yíng)收占比最大,約占總收入的49%,表明手游在全球游戲市場(chǎng)中占據(jù)了重要的地位。隨著移動(dòng)設(shè)備的普及和移動(dòng)互聯(lián)網(wǎng)的發(fā)展,手游市場(chǎng)的規(guī)模不斷擴(kuò)大,游戲開(kāi)發(fā)者更傾向于開(kāi)移動(dòng)端游戲。2023年,收入排名前100位移動(dòng)游戲產(chǎn)品中,角色扮演類游戲在市場(chǎng)上占據(jù)主導(dǎo)地位。在全球手游市場(chǎng),2023年?duì)I收排名前五的發(fā)行商依次是騰訊、動(dòng)視暴雪、Playrix、網(wǎng)易和米哈游。三款國(guó)產(chǎn)手游《王者榮耀》、《PUBGMobile》(合并《和平精英》)、《原神》占據(jù)了2023年手游收入榜的前三名,《糖果傳奇》和《Roblox》則位列第4和第5。其中王者榮耀就是基于Unity開(kāi)發(fā)的,這也證明Unity在游戲開(kāi)發(fā)中的強(qiáng)大實(shí)力和廣泛應(yīng)用。本文在游戲中,玩家通過(guò)控制角色進(jìn)行冒險(xiǎn)、消滅敵人。在冒險(xiǎn)過(guò)程中,玩家需要運(yùn)用角色的技能和戰(zhàn)斗策略來(lái)攻擊敵人,并注意規(guī)避敵人的攻擊,消滅全部敵人并通關(guān)。首先對(duì)游戲世界設(shè)計(jì)如游戲背景和環(huán)境,添加適合游戲世界的氛圍音效和音樂(lè),創(chuàng)造出一個(gè)有吸引力的冒險(xiǎn)游戲。然后對(duì)引擎技術(shù)研究,深入研究Unity引擎的各項(xiàng)功能和技術(shù)包括動(dòng)畫(huà)系統(tǒng)、物理引擎、場(chǎng)景管理等,設(shè)置多個(gè)2D游戲關(guān)卡,玩家消滅敵人進(jìn)入下一個(gè)關(guān)卡。還有對(duì)角色設(shè)計(jì),為主角設(shè)計(jì)移動(dòng)、跳躍、攻擊等基本動(dòng)作。為了增加游戲的挑戰(zhàn)性,設(shè)計(jì)具有智能化的敵人,包括AI巡邏指定的區(qū)域,攻擊方式等,設(shè)計(jì)一些強(qiáng)大的BOSS角色,BOSS擁有獨(dú)特的攻擊方式和技能,玩家需要擊敗他們。本游戲使用Unity3D2021.3.29f1c1版本的引擎開(kāi)發(fā)的,游戲背景和環(huán)境、游戲UI界面等等一些材質(zhì)和Sprite貼圖都是由Unity資源庫(kù)提供的,腳本使用vscode編寫(xiě)。在游戲設(shè)計(jì)前期策劃游戲,制定玩法、邏輯等,制作游戲的UI元素,如菜單、界面布局、按鈕等,確保界面直觀易用,提供流暢的游戲體驗(yàn)。然后設(shè)計(jì)每一關(guān)的關(guān)卡利用資源包提供的素材,給場(chǎng)景、背景添加一些元素如花、草、云朵等。在設(shè)計(jì)每一關(guān)游戲場(chǎng)景時(shí),需要細(xì)致地規(guī)劃瓦片地圖地布局,確保在場(chǎng)景中地連貫,準(zhǔn)備好游戲所需的素材和美術(shù)資源。設(shè)計(jì)游戲角色包括主角與敵人等,為他們制作動(dòng)畫(huà)包括行走、跑步、攻擊、死亡等動(dòng)畫(huà),利用動(dòng)畫(huà)編輯器使動(dòng)作更加自然和柔和。對(duì)游戲內(nèi)容設(shè)計(jì),編寫(xiě)游戲腳本,來(lái)控制游戲中每個(gè)功能的實(shí)現(xiàn)和游戲內(nèi)容與角色的產(chǎn)生的邏輯、敵人的智能行為。通過(guò)編寫(xiě)腳本來(lái)控制游戲元素和交互設(shè)計(jì),使得游戲能夠按照預(yù)期的規(guī)則和邏輯運(yùn)行。在編寫(xiě)腳本的過(guò)程中,不斷進(jìn)行測(cè)試和調(diào)試,以確保邏輯的完整性和準(zhǔn)確性。本文通過(guò)對(duì)游戲世界設(shè)計(jì)、引擎技術(shù)研究、角色設(shè)計(jì)與動(dòng)畫(huà)制作、游戲控制與交互設(shè)計(jì)、游戲邏輯與腳本編寫(xiě)、游戲資源準(zhǔn)備與整合等方面的研究和實(shí)踐,成功地構(gòu)建了一個(gè)充滿挑戰(zhàn)和趣味的2D角色扮演的冒險(xiǎn)游戲。本文共分為6章,章節(jié)內(nèi)容安排如下:第1章為引言部分,探討選題背景和意義,國(guó)內(nèi)外研究現(xiàn)狀,主要內(nèi)容和工作。第2章介紹Unity游戲引擎概念和特點(diǎn)。第3章游戲總體設(shè)計(jì),游戲需求分析及各模塊化設(shè)計(jì)。第4章游戲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),通過(guò)分模塊的方式對(duì)游戲系統(tǒng)進(jìn)行設(shè)計(jì)與實(shí)現(xiàn)。第5章游戲測(cè)試,通過(guò)Unity編輯器,全面測(cè)試了游戲的各個(gè)模塊。第6章總結(jié)。本章主要介紹游戲引擎的概念,Unity游戲引擎的特點(diǎn)和相關(guān)技術(shù)。游戲引擎是指一些已經(jīng)編寫(xiě)好的可編輯電腦游戲系統(tǒng)或者一些交互式實(shí)時(shí)圖像應(yīng)用程序的核心組件REF_Ref2026\r\h[2]。它是用于開(kāi)發(fā)游戲的軟件框架,提供了一系列工具和功能,以支持游戲開(kāi)發(fā)者創(chuàng)建高質(zhì)量的游戲。游戲引擎負(fù)責(zé)處理游戲的渲染、物理模擬、音效、動(dòng)畫(huà)等方面,游戲開(kāi)發(fā)者可以更多地考慮游戲的內(nèi)容設(shè)計(jì)和游戲情節(jié)構(gòu)造,而不用過(guò)多的擔(dān)心底層的技術(shù)細(xì)節(jié)。游戲引擎的主要功能包括渲染引擎:就是負(fù)責(zé)將游戲中的3D或者2D圖像呈現(xiàn)給玩家們,包括光影效果就是場(chǎng)景的光源對(duì)游戲中的人和物的影響,圖形繪制、光照計(jì)算、紋理映射等功能完全是由引擎的不同編程技術(shù)實(shí)現(xiàn)的。物理引擎:負(fù)責(zé)模擬游戲中的物理現(xiàn)象如碰撞檢測(cè)、重力、彈性等。它可以讓游戲中的物體具有真實(shí)的物理屬性,提高游戲的沉浸感。動(dòng)畫(huà)引擎:負(fù)責(zé)處理游戲中的動(dòng)畫(huà),如角色的動(dòng)作、特效等。動(dòng)畫(huà)系統(tǒng)可以分為兩種,一種是骨骼動(dòng)畫(huà)、一種是模型動(dòng)畫(huà)。它可以讓游戲中的動(dòng)畫(huà)更加流暢和自然。游戲引擎的作用相當(dāng)于多功能的廚房機(jī)器,它為游戲提供了各種各樣的工具和功能,讓開(kāi)發(fā)者更專注于游戲內(nèi)容和玩法。游戲引擎通常包括一個(gè)集成的開(kāi)發(fā)環(huán)境,用于編輯游戲資源、編寫(xiě)腳本、調(diào)試和測(cè)試游戲。它還提供了跨平臺(tái)的支持,使開(kāi)發(fā)人員能夠?qū)⒂螒虬l(fā)布到多個(gè)平臺(tái),如PC、主機(jī)、移動(dòng)設(shè)備等。這種跨平臺(tái)的特性提高游戲的靈活性和可擴(kuò)展性,開(kāi)發(fā)人員可以更多的接觸到不同平臺(tái)的玩家群體,提升了游戲的影響力和商業(yè)價(jià)值?,F(xiàn)在市面上有許多知名的游戲引擎,其中最受歡迎的包括Unity、UnrealEngine、FrostbiteEngine等。這些引擎擁有強(qiáng)大的功能和社區(qū)支持,使開(kāi)發(fā)人員能夠快速高效地創(chuàng)建類型的游戲出各種作品,從獨(dú)立游戲到3A大作。Unity是一款流行的跨平臺(tái)游戲引擎,廣泛用于游戲開(kāi)發(fā)。Unity是由UnityTechnologies公司開(kāi)發(fā)的跨平臺(tái)專業(yè)游戲引擎,是一個(gè)擁有內(nèi)置集成開(kāi)發(fā)環(huán)境的跨平臺(tái)引擎REF_Ref2026\r\h[2],它支持多種平臺(tái),包括Windows、Mac、iOS、Android、WebGL等,開(kāi)發(fā)者可以輕松地將游戲發(fā)布到不同的平臺(tái)上,開(kāi)發(fā)者可以使用同一套代碼和資源來(lái)構(gòu)建游戲,不需要針對(duì)不同的平臺(tái)進(jìn)行大量的修改,減少了大量的時(shí)間和成本。在Unity中,跨平臺(tái)的實(shí)現(xiàn)主要依賴引擎通用接口和平臺(tái)特定的插件,Unity提供了平臺(tái)相關(guān)的綁定和適配層,用于訪問(wèn)底層平臺(tái)的功能和設(shè)備接口,Mono虛擬機(jī)作為中間層負(fù)責(zé)將C#編譯為中間語(yǔ)言在不同的平臺(tái)上執(zhí)行,開(kāi)發(fā)者可以使用Unity的API和組件來(lái)編寫(xiě)游戲邏輯和交互功能,使用統(tǒng)一的API和工具,以相同的代碼構(gòu)建、發(fā)布和運(yùn)行游戲在不同的操作系統(tǒng)和設(shè)備上。Unity支持多種語(yǔ)言,包括C#和JavaScript,并且提供了一個(gè)強(qiáng)大的編輯器,開(kāi)發(fā)者可以直觀地設(shè)計(jì)游戲場(chǎng)景、創(chuàng)建角色和動(dòng)畫(huà)、設(shè)置物理效果等。Unity編輯器界面布局非常直觀,如圖2-1所示,主要由菜單欄、工具欄、視圖、Inspector和Project等部分組成。菜單欄包含了文件、編輯、視圖和窗口等常用命令。菜單欄包含F(xiàn)ile,Edit,Assets,GameObject,Component,Window,Help等部分組成。工具欄提供Transform、攝像機(jī)等常用工具開(kāi)發(fā)者方便對(duì)游戲?qū)ο筮M(jìn)行操作。視圖包括Scene、Game、Hierarchy和Project等,用于顯示游戲場(chǎng)景、游戲預(yù)覽、游戲?qū)ο髮蛹?jí)和資源管理。Inspector面板則用于顯示選定游戲?qū)ο蟮脑敿?xì)信息,包括其組件、屬性和腳本等。Project面板則是資源管理中心,用于導(dǎo)入、組織和管理游戲資源。圖2-1Unity編輯器界面Unity的2D物理引擎是基于Box2D開(kāi)發(fā)的,它提供了模擬2D物體運(yùn)動(dòng)和交互的物理效果,因此它能夠模擬2D物體的運(yùn)動(dòng)、碰撞、重力和其他物理效果。通過(guò)Unity的物理引擎組件來(lái)輕松地為游戲?qū)ο筇砑游锢硇Ч热缃o物體施加力、設(shè)置碰撞體積和密度等。這樣可以讓游戲中的角色、道具和環(huán)境元素都能夠呈現(xiàn)出更加真實(shí)的物理交互效果,增強(qiáng)游戲的沉浸感和可玩性。Rigidbody2D和Collider2D是Unity的物理引擎中的兩個(gè)重要組件,如圖2-2,它們分別用于給游戲物體添加物理效果和檢測(cè)碰撞,它們通常一起使用,這樣就可以實(shí)現(xiàn)物體的運(yùn)動(dòng)和碰撞檢測(cè)的完整模擬了。Rigidbody2D組件用于給游戲物體添加剛體屬性,就能夠受到物理引擎的模擬和控制。剛體的屬性包括質(zhì)量、重力、摩擦力等物理屬性。Collider2D組件用于檢測(cè)游戲物體之間的碰撞和接觸,可以根據(jù)物體的形狀定義碰撞體的形狀,當(dāng)兩個(gè)帶有這個(gè)組件的游戲物體發(fā)生接觸時(shí),會(huì)觸發(fā)碰撞事件。Collider2D主要用于碰撞檢測(cè)和交互。碰撞檢測(cè)是游戲開(kāi)發(fā)中常用的技術(shù),用于檢測(cè)兩個(gè)或者多個(gè)物體是否發(fā)生碰撞。碰撞檢測(cè)是游戲中必不可少的一部分,其中常用的碰撞檢測(cè)技術(shù)如包圍盒碰撞檢測(cè)就是將物體包圍在一個(gè)簡(jiǎn)單的幾何形狀內(nèi),如球體、立方體。然后檢測(cè)這些幾何形狀是否相交來(lái)判斷物體是否發(fā)生碰撞,這種方法簡(jiǎn)單高效。它在游戲開(kāi)發(fā)中有著廣泛的應(yīng)用,它的簡(jiǎn)單高效使得它成為處理游戲中大量物體碰撞檢測(cè)的首選方法。游戲中的物體可以是玩家角色、敵人、道具、場(chǎng)景中的障礙物等,它們的碰撞檢測(cè)需要高效地進(jìn)行處理,以實(shí)現(xiàn)真實(shí)的物理交互和游戲體驗(yàn)。圖2-2Rigidbody2D和Collider2D組件Unity的動(dòng)畫(huà)系統(tǒng)是用于創(chuàng)建和控制角色和物體動(dòng)畫(huà)的工具。在Unity中,Animator狀態(tài)機(jī)是系統(tǒng)的核心組件,是一個(gè)可視化的狀態(tài)圖,用于控制動(dòng)畫(huà)片段的播放和切換,實(shí)現(xiàn)復(fù)雜的動(dòng)畫(huà)邏輯增強(qiáng)游戲的視覺(jué)效果和交互體驗(yàn)。在Animator狀態(tài)機(jī)中,可以定義多個(gè)狀態(tài),每個(gè)狀態(tài)可以關(guān)聯(lián)一個(gè)或多個(gè)動(dòng)畫(huà)片段。通過(guò)設(shè)置狀態(tài)之間的轉(zhuǎn)換條件和過(guò)渡效果。在本章中,探討了游戲引擎的基本概念和功能,以及Unity引擎的特性和相關(guān)技術(shù),這些知識(shí)將為我們進(jìn)一步學(xué)習(xí)游戲開(kāi)發(fā)打下扎實(shí)的基礎(chǔ)。在本章中,介紹了游戲需求分析及各模塊化設(shè)計(jì),構(gòu)建一個(gè)功能完善、體驗(yàn)流暢的游戲框架。為了讓玩家暫時(shí)忘掉現(xiàn)實(shí)中的壓力和煩惱,享受游戲帶來(lái)的樂(lè)趣,游戲設(shè)計(jì)將冒險(xiǎn)和動(dòng)作元素結(jié)合在一起,讓玩家在探索場(chǎng)景的同時(shí)需要面對(duì)怪物的挑戰(zhàn)。玩家需要在場(chǎng)景中收集鑰匙,同時(shí)需要擊敗怪物和BOSS順利通關(guān)。這種設(shè)計(jì)可以讓玩家在游戲中感受到冒險(xiǎn)的樂(lè)趣。在本游戲中,玩家將面對(duì)一系列2D場(chǎng)景,需要探索每一個(gè)關(guān)卡。在不同關(guān)卡中,玩家需要躲避不同的陷阱,如有有毒的水、毒氣、尖刺等,并且需要擊殺不同的怪物。玩家需要收集鑰匙來(lái)解鎖通往下一關(guān)的門(mén)或者解開(kāi)機(jī)關(guān)。在游戲最后的關(guān)卡,玩家將面對(duì)一個(gè)強(qiáng)大的BOSS戰(zhàn)。玩家需要利用關(guān)卡中收集的道具或者技能來(lái)打敗BOSS。整個(gè)游戲?qū)鄠€(gè)關(guān)卡,每個(gè)關(guān)卡都將提供獨(dú)特的挑戰(zhàn)和場(chǎng)景,玩家需要不斷探索、躲避陷阱與敵人,收集鑰匙,過(guò)機(jī)關(guān)并最終打敗BOSS,才能完成整個(gè)游戲的探索。在游戲中,玩家需要時(shí)刻保持警惕,觀察敵人的行動(dòng)模式和攻擊方式,玩家需要運(yùn)用角色的攻擊方式對(duì)抗敵人,同時(shí)也要避免受到敵人的攻擊,不同的敵人有不同的攻擊方式,分為近戰(zhàn)敵人和遠(yuǎn)程敵人,學(xué)會(huì)分析敵人的弱點(diǎn),并利用這些弱點(diǎn)來(lái)進(jìn)行攻擊,從而有效地削滅敵人。在與BOSS戰(zhàn)斗時(shí),玩家需要更加謹(jǐn)慎,因?yàn)锽OSS通常擁有更強(qiáng)大的攻擊能力和技能。玩家需要不斷嘗試不同的戰(zhàn)術(shù),尋找BOSS的弱點(diǎn),并在合適的時(shí)機(jī)發(fā)動(dòng)攻擊,同時(shí)要躲避BOSS的攻擊,以保護(hù)自己的角色不受傷害。游戲設(shè)計(jì)是一個(gè)綜合性的過(guò)程,涉及到多個(gè)環(huán)節(jié)和模塊,可以主要三個(gè)主要模塊:角色模塊、敵人模塊和游戲邏輯控制模塊如圖3-1,首先,角色模塊是游戲設(shè)計(jì)中至關(guān)重要的一環(huán)。角色是游戲的核心要素之一,需要確保角色具有足夠的吸引力和可玩性。通過(guò)精心設(shè)計(jì)的角色模塊,可以讓玩家更加深入地參與到游戲中來(lái),提升游戲的整體體驗(yàn)。敵人模塊是游戲中與角色相互對(duì)抗的角色。敵人的設(shè)計(jì)應(yīng)該要具備一定的智能和攻擊。游戲控制模塊是游戲設(shè)計(jì)中不可或缺的一部分,它能夠處理玩家的輸入,并將這些輸入轉(zhuǎn)化為游戲中相應(yīng)的動(dòng)作和指令,以實(shí)現(xiàn)玩家與游戲的互動(dòng)。一個(gè)高效、穩(wěn)定的游戲控制模塊能夠提供更好的游戲體驗(yàn)。圖3-1游戲模塊組件游戲場(chǎng)景設(shè)計(jì)是游戲開(kāi)發(fā)中非常重要的一部分,它能夠?yàn)橥婕姨峁┮粋€(gè)沉浸式的游戲體驗(yàn)。使用Unity資源庫(kù)下載好的資源搭建場(chǎng)景是一種快捷且實(shí)用的方法,可以幫助開(kāi)發(fā)者快速構(gòu)建出精美的游戲場(chǎng)景。選擇適合的游戲場(chǎng)景資源導(dǎo)入到Unity項(xiàng)目中,將資源拖拽到場(chǎng)景中進(jìn)行調(diào)整,添加合適的材質(zhì)和燈光,根據(jù)你的游戲需求,為場(chǎng)景添加適當(dāng)?shù)慕换ピ?,比如門(mén)、開(kāi)關(guān)等。如圖3-2這些交互元素可以通過(guò)編寫(xiě)腳本實(shí)現(xiàn)。圖3-2場(chǎng)景搭建游戲中玩家需要控制角色躲避不同的陷阱,并且需要擊殺不同的怪物。玩家需要收集鑰匙來(lái)解鎖通往下一關(guān)的門(mén)或者解開(kāi)機(jī)關(guān)。在游戲最后的關(guān)卡,玩家將面對(duì)一個(gè)強(qiáng)大的BOSS戰(zhàn),玩家的控制如表3-1表3-1玩家控制輸入控制輸入功能W向上S下蹲A向左D向右K攻擊O射擊接著就是角色的動(dòng)畫(huà),為角色創(chuàng)建一系列關(guān)鍵幀動(dòng)畫(huà)包括角色的行走、跑步、跳躍等基本動(dòng)作,加入到動(dòng)畫(huà)狀態(tài)機(jī)里,設(shè)定不同的條件,從一個(gè)狀態(tài)過(guò)度到另一個(gè)狀態(tài),如圖3-3。圖3-3角色動(dòng)畫(huà)首先為敵人添加動(dòng)畫(huà),展現(xiàn)出不同的狀態(tài),如巡邏、奔跑、攻擊,死亡等,敵人是相對(duì)主角做出的反應(yīng),所以敵人初始處于巡邏狀態(tài),當(dāng)主角進(jìn)入到監(jiān)聽(tīng)范圍時(shí),敵人就會(huì)從巡邏狀態(tài)切換至奔跑狀態(tài),并追擊主角,當(dāng)主角進(jìn)入到敵人攻擊范圍時(shí),敵人就會(huì)發(fā)起攻擊,同時(shí)主角就會(huì)受傷,根據(jù)敵人的類型,設(shè)置不同的攻擊方式,有近戰(zhàn)和遠(yuǎn)程攻擊,通過(guò)腳本控制敵人的行為,實(shí)現(xiàn)逼真的反應(yīng)和交互。游戲玩家通過(guò)控制主角探索場(chǎng)景,角色與場(chǎng)景的組件可以交互,當(dāng)玩家控制主角走到特定提示元素時(shí),如門(mén)、武器或機(jī)關(guān),彈出相應(yīng)的介紹、游戲背景或操作說(shuō)明,這些提示可以以文字或者動(dòng)畫(huà)的形式出現(xiàn)。還可以跟相機(jī)進(jìn)行交互,可以根據(jù)主角的移動(dòng)和位置自動(dòng)調(diào)整視角,為玩家提供最佳的視覺(jué)體驗(yàn)。游戲中還有場(chǎng)景、關(guān)卡的交互,關(guān)卡切換切換場(chǎng)景或關(guān)卡時(shí),可以有加載動(dòng)畫(huà)、加載界面。游戲控制模塊在實(shí)現(xiàn)玩家與場(chǎng)景的交互時(shí),需要考慮多個(gè)方面來(lái)完善交互設(shè)計(jì)。通過(guò)物理引擎、音效與動(dòng)畫(huà)、事件觸發(fā)與條件判斷、用戶界面設(shè)計(jì)等手段,可以提供更加豐富、智能和個(gè)性化的游戲交互體驗(yàn)。本章節(jié)分析了游戲的核心需求,包括場(chǎng)景探索、敵人戰(zhàn)斗以及模塊化設(shè)計(jì),為游戲開(kāi)發(fā)提供了清晰的框架和方向。各模塊的設(shè)計(jì)提供了豐富的游戲體驗(yàn),確保玩家在探索與戰(zhàn)斗中享受流暢、有趣的互動(dòng)。本章將詳細(xì)介紹如何通過(guò)分模塊的方式對(duì)游戲系統(tǒng)進(jìn)行設(shè)計(jì)與實(shí)現(xiàn)。通過(guò)編寫(xiě)控制腳本,將總體設(shè)計(jì)中提出的游戲玩法具體化,使得游戲邏輯得以實(shí)現(xiàn)。角色控制模塊是游戲系統(tǒng)中重要的組成部分,它負(fù)責(zé)管理角色的狀態(tài)、行為和移動(dòng)等等,下面是角色控制模塊的設(shè)計(jì)與實(shí)現(xiàn)。角色動(dòng)作管理模塊負(fù)責(zé)管理角色的動(dòng)作,包括角色的移動(dòng)、攻擊、死亡等。Unity中通過(guò)動(dòng)畫(huà)系統(tǒng)來(lái)實(shí)現(xiàn)角色動(dòng)作,玩家可以通過(guò)輸入對(duì)應(yīng)按鈕來(lái)讓角色執(zhí)行相應(yīng)的動(dòng)作。通過(guò)游戲邏輯和游戲引擎的協(xié)作,實(shí)現(xiàn)角色動(dòng)作的流暢性和合理性。合理的設(shè)計(jì)和實(shí)現(xiàn)可以讓角色動(dòng)作在游戲中展現(xiàn)得更加生動(dòng)。這個(gè)模塊會(huì)根據(jù)角色的狀態(tài)和當(dāng)前的動(dòng)作來(lái)更新角色的位置和動(dòng)畫(huà)狀態(tài)。首先創(chuàng)建了一列玩家動(dòng)畫(huà)如移動(dòng)、攻擊、死亡等,然后整合到Animator狀態(tài)機(jī)中,就可以輕松地控制角色的動(dòng)畫(huà)狀態(tài)并根據(jù)需要轉(zhuǎn)換它們。定義不同動(dòng)畫(huà)之間的過(guò)渡條件,滿足條件時(shí)動(dòng)畫(huà)之間的轉(zhuǎn)換會(huì)更加平滑、柔和。通過(guò)腳本編寫(xiě),獲取玩家的輸入控制角色,使用了InputAxis和InputButton的類,InputAxis用來(lái)獲取玩家輸入的方向,InputButton獲取特點(diǎn)功能的按鍵。編寫(xiě)腳本根據(jù)用戶輸入來(lái)控制角色,更新角色狀態(tài),如果玩家的x方向速度不為0,將角色的狀態(tài)設(shè)置為奔跑,如果玩家不在地面上,則將其狀態(tài)設(shè)置為跳躍。如果玩家垂直輸入值為-1(可能是按下或持有下蹲鍵)且在地面上,則將其狀態(tài)設(shè)置為下蹲。為了確保角色始終處于合理的狀態(tài),我們?cè)谀_本中設(shè)置了初始狀態(tài)為IDLE。這意味著在任何動(dòng)作開(kāi)始之前,角色都會(huì)回到IDLE狀態(tài)。這樣可以避免角色在連續(xù)動(dòng)作之間出現(xiàn)不合理的狀態(tài)。publicInputButtonJump=newInputButton(KeyCode.Space);//跳躍publicInputAxisHorizontal=newInputAxis(KeyCode.A,KeyCode.D);// A鍵向左,D鍵向右publicInputAxisVertical=newInputAxis(KeyCode.S,KeyCode.W);//S鍵向下,W鍵向上在Unity中,可以通過(guò)編寫(xiě)腳本來(lái)實(shí)現(xiàn)角色死亡模塊的功能,監(jiān)聽(tīng)玩家血量變化,當(dāng)生命值為0時(shí),角色就會(huì)死亡,角色死亡時(shí)播放相應(yīng)的死亡動(dòng)畫(huà),也可以添加角色死亡的音效,死亡之后停止角色控制,加載游戲結(jié)束或死亡動(dòng)畫(huà),顯示完動(dòng)畫(huà)后重置死亡狀態(tài),重置血量,重置角色的位置,通過(guò)合理地設(shè)計(jì)和實(shí)現(xiàn)角色死亡模塊,可以為游戲增添更多的可玩性和真實(shí)感。角色攻擊模塊的設(shè)計(jì),首先確立兩種基本的攻擊類型分別為近戰(zhàn)和遠(yuǎn)程攻擊,接下來(lái)檢測(cè)角色是否持有武器,如果角色沒(méi)有武器則無(wú)法攻擊,會(huì)直接返回,還會(huì)檢查角色攻擊有沒(méi)有冷卻好,如果沒(méi)有尚未冷卻好則同樣會(huì)直接返回。只有當(dāng)角色滿足所以攻擊條件時(shí),就會(huì)設(shè)置動(dòng)畫(huà)觸發(fā)器以觸發(fā)角色的攻擊動(dòng)畫(huà),并根據(jù)攻擊類型的不同,做出相應(yīng)的處理,比如在近戰(zhàn)攻擊中,系統(tǒng)可能會(huì)調(diào)整角色的移動(dòng)速度或者攻擊動(dòng)作,在遠(yuǎn)程攻擊中系統(tǒng)會(huì)創(chuàng)建并發(fā)射子彈。最后,完成攻擊后,將攻擊準(zhǔn)備狀態(tài)設(shè)為false,并在一定時(shí)間后重置攻擊準(zhǔn)備狀態(tài)。publicvoidAttack(AttackTypeattackType){//判斷有沒(méi)有武器if(!IsHaveWeapon())return;//沒(méi)有武器不能攻擊if(!attackIsReady){return;}//技能還沒(méi)有冷卻好//設(shè)置攻擊動(dòng)畫(huà)觸發(fā)器和攻擊類型參數(shù)animator.SetTrigger("attack");animator.SetTrigger("trigger");animator.SetInteger("attackType",(int)attackType);//判斷攻擊類型執(zhí)行對(duì)應(yīng)操作if(attackType==AttackType.Attack){//如果是近戰(zhàn)攻擊,則設(shè)置X軸速度并在0.2秒后重置速度SetSpeedXWithTime(spriteRenderer.flipX?-7:7,0.2f);}Else{//遠(yuǎn)程攻擊animator.SetFloat("shoot",1);//創(chuàng)建子彈Invoke("CreateBullet",0.02f);}//將攻擊準(zhǔn)備設(shè)置為false,在一定的時(shí)間后重置attackIsReady=false;Invoke("ResetAttackIsReady",attackTime);}敵人模塊是游戲中不可或缺的一部分,它不僅為游戲增加了挑戰(zhàn)性和樂(lè)趣,還能夠豐富游戲的內(nèi)容和體驗(yàn)。在設(shè)計(jì)游戲時(shí),需要充分考慮敵人模塊的設(shè)計(jì),以確保游夠給家?guī)?lái)最佳的游戲體驗(yàn)。首先是動(dòng)畫(huà)資源準(zhǔn)備好,為敵人添加模型,并且添加不同的動(dòng)畫(huà)片段,展現(xiàn)出不同的狀態(tài),如奔跑、攻擊,死亡等,針對(duì)不同類型的敵人,分別是近戰(zhàn)的敵人和遠(yuǎn)程攻擊的敵人,對(duì)應(yīng)的添加不同的攻擊動(dòng)畫(huà),并創(chuàng)建子彈預(yù)制體以支持遠(yuǎn)程攻擊敵人的行為。為了管理動(dòng)畫(huà),使用AnimatorController來(lái)定義敵人處于不同的動(dòng)畫(huà)狀態(tài),并通過(guò)參數(shù)控制狀態(tài)機(jī)中的狀態(tài)過(guò)渡。這樣可以確保敵人的動(dòng)畫(huà)與其實(shí)時(shí)行為和狀態(tài)相匹配。通過(guò)腳本或事件來(lái)觸發(fā)特定的動(dòng)畫(huà),例如當(dāng)敵人受到傷害或死亡時(shí)播放相應(yīng)的動(dòng)畫(huà)。通過(guò)細(xì)致的動(dòng)畫(huà)設(shè)計(jì)和管理,可以為游戲增添更多的視覺(jué)效果和游戲體驗(yàn)。圖4-1敵人動(dòng)畫(huà)狀態(tài)機(jī)敵人行為模塊的主要功能是實(shí)現(xiàn)一個(gè)智能的系統(tǒng),用來(lái)控制敵人角色在游戲中的行為,這個(gè)模塊通常包括移動(dòng)、攻擊、監(jiān)聽(tīng)等行為邏輯,并且會(huì)根據(jù)環(huán)境和主角的行為做出合理的行為,使敵人表現(xiàn)得更加智能和具有挑戰(zhàn)性。首先,在敵人初始化階段,獲取敵人的關(guān)鍵組件包括,Rigidbody2D、SpriteRenderer、Animator、Damage和Damageable。這些組件用于控制敵人的物理行為、外觀、動(dòng)畫(huà)和傷害與可受傷相關(guān)的邏輯,這些組件確保敵人能夠與主角互動(dòng)包括可以被主角攻擊、碰撞和受傷等,當(dāng)敵人未檢測(cè)檢測(cè)到主角時(shí),它會(huì)執(zhí)行AI巡邏行為。利用枚舉enum將敵人的狀態(tài)分為行走Walk、攻擊Attack、空閑IDLE、奔跑Run以及死亡Death幾種狀狀態(tài),在巡邏過(guò)程中,敵人的狀態(tài)和行為將通過(guò)UpdateStatus方法中進(jìn)行更新,如果敵人處于空閑狀態(tài),它的速度將設(shè)置為0并且啟動(dòng)定時(shí)器,超過(guò)2秒敵人將進(jìn)入行走狀態(tài),此時(shí)會(huì)設(shè)置速度并檢查是否能夠移動(dòng),為了判斷是否能夠移動(dòng),敵人向下發(fā)射一條射線檢測(cè)是否有碰撞,如果存在碰撞,敵人將繼續(xù)移動(dòng),如果沒(méi)有碰撞則不能移動(dòng),不能移動(dòng)時(shí)敵人反轉(zhuǎn)速度和反轉(zhuǎn)射線發(fā)射點(diǎn),然后繼續(xù)移動(dòng)。一旦檢測(cè)到主角的存在,敵人狀態(tài)就會(huì)切換到奔跑動(dòng)畫(huà),并根據(jù)主角位置調(diào)整自身速度和檢查點(diǎn)的位置,如果主角進(jìn)入到敵人的攻擊范圍敵人就會(huì)播放攻擊動(dòng)畫(huà)并發(fā)起攻擊,最后敵人在與主角的戰(zhàn)斗中受到傷害,它將播放死亡動(dòng)畫(huà),標(biāo)志著敵人的消滅。publicvoidUpdateStatus(){switch(enemyStatus){caseEnemyStatus.Idle:SetSpeedX(0);idleTimer+=Time.deltaTime;if(idleTimer>2){idleTimer=0;enemyStatus=EnemyStatus.Walk;}break;caseEnemyStatus.Walk:SetSpeedX(speed);if(!isCanMove){speed=-speed;startCheckPos.localPosition=newVector3(-startCheckPos.localPosition.x,startCheckPos.localPosition.y,startCheckPos.localPosition.z);}animator.SetBool("isWalk",true);break;caseEnemyStatus.Attack:animator.SetBool("isAttack",true);break;caseEnemyStatus.Run://設(shè)置奔跑動(dòng)畫(huà)animator.SetBool("isRun",true);//跑向攻擊目標(biāo)if(isCanMove){if(attackTarget.position.x-transform.position.x>0){//在右邊speed=Mathf.Abs(speed);startCheckPos.localPosition=newVector3(Mathf.Abs(startCheckPos.localPosition.x),startCheckPos.localPosition.y,startCheckPos.localPosition.z);}else{//在左邊speed=-Mathf.Abs(speed);startCheckPos.localPosition=newVector3(-Mathf.Abs(startCheckPos.localPosition.x),startCheckPos.localPosition.y,startCheckPos.localPosition.z);}SetSpeedX(speed);}else{enemyStatus=EnemyStatus.Idle;}break;caseEnemyStatus.Dead:animator.SetBool("isDead",true);break;}敵人怎樣監(jiān)聽(tīng)到主角呢,使用OnDrawGizmosSelected()方法,在Unity中,這個(gè)方法用于在Scene視圖中繪制可視化輔助工具,為選中的GameObject提供額外的可視化效果,從而方便地進(jìn)行場(chǎng)景編輯和調(diào)試,在這個(gè)方法代碼在Scene視圖中為選中的GameObject繪制了兩個(gè)半透明的圓盤(pán),一個(gè)紅色表示“攻擊范圍”,一個(gè)綠色表示“監(jiān)聽(tīng)范圍”如圖所示。圖4-2敵人監(jiān)聽(tīng)和攻擊范圍隨后使用Vector3.Distance方法計(jì)算當(dāng)前敵人(transform.position)與其攻擊目標(biāo)(attackTarget.position)主角之間的距離。如果這個(gè)距離小于或等于listenRange(監(jiān)聽(tīng)范圍),將敵人的狀態(tài)設(shè)置為

EnemyStatus.Run,并且跑向主角,同樣地使用Vector3.Distance方法計(jì)算當(dāng)前敵人(transform.position)與其攻擊目標(biāo)(attackTarget.position)之間的距離。如果這個(gè)距離小于或等于

attackRange(攻擊范圍),將敵人的狀態(tài)設(shè)置為

EnemyStatus.Attack(可以攻擊)。publicvoidUpdateListener(){if(attackTarget==null){Debug.LogWarning("要攻擊的目標(biāo)為空!");return;}if(Vector3.Distance(transform.position,attackTarget.position)<=attackRange){Debug.Log("可以進(jìn)行攻擊敵人");enemyStatus=EnemyStatus.Attack;return;}if(Vector3.Distance(transform.position,attackTarget.position)<=listenRange){//播放run動(dòng)畫(huà)enemyStatus=EnemyStatus.Run;}}為了讓攝像機(jī)能夠平滑的跟隨主角的移動(dòng),為攝像機(jī)添加CameraFollowTarget的腳本,這個(gè)腳本是控制攝像機(jī)跟隨一個(gè)指定的游戲物體,并可以在一定的時(shí)間內(nèi)使用Lerp函數(shù)平滑過(guò)渡到目標(biāo)位置,同時(shí)也可以修改攝像機(jī)的視野。攝像機(jī)的位置還被限制在一個(gè)設(shè)定的范圍內(nèi),以防止攝像機(jī)移動(dòng)到不應(yīng)該出現(xiàn)的位置。publicvoidFollow(){//目標(biāo)為空,發(fā)出警告并返回if(target==null){Debug.LogWarning(+"要跟隨的目標(biāo)為空");return;}Vector3targetPos;//目標(biāo)位置if(isFollowWithTime){//更新計(jì)時(shí)器timer+=Time.deltaTime;//使用Lerp函數(shù)平滑過(guò)渡位置targetPos=Vector3.Lerp(startPos,target.position,timer/delayTime);//保持?jǐn)z像機(jī)在z軸上的位置不變targetPos.z=transform.position.z;//如果設(shè)置了修改攝像機(jī)的視野if(isChangeView){//使用Lerp函數(shù)平滑過(guò)渡視野camera.fieldOfView=Mathf.Lerp(currentView,targetView,timer/delayTime);//如果過(guò)渡完成,則重置相關(guān)標(biāo)志if(timer/delayTime>1){isChangeView=false;isFollowWithTime=false;}}}else{//否則,直接設(shè)置目標(biāo)位置(只在x和y上跟隨)targetPos=newVector3(target.position.x,target.position.y,transform.position.z);}//限制攝像機(jī)位置在設(shè)定的范圍內(nèi)transform.position=LimitPos(targetPos);}在Unity中,場(chǎng)景交互是實(shí)現(xiàn)游戲的核心機(jī)制的重要部分,其中包括基于碰撞檢測(cè)的場(chǎng)景交互。玩家與游戲場(chǎng)景中的各種元素進(jìn)行交互,從簡(jiǎn)單的障礙物碰撞到與敵人戰(zhàn)斗的復(fù)雜系統(tǒng),都需要依賴碰撞檢測(cè)技術(shù)。通過(guò)合理運(yùn)用Unity的物理引擎和腳本編程,創(chuàng)建出生動(dòng)而真實(shí)的游戲體驗(yàn),讓玩家沉浸在豐富的交互和挑戰(zhàn)中。在實(shí)現(xiàn)基于碰撞檢測(cè)的場(chǎng)景交互時(shí),首先要考慮游戲?qū)ο笾g的碰撞關(guān)系。玩家需要與敵人、障礙物等其他游戲?qū)ο筮M(jìn)行交互,就要為相關(guān)對(duì)象添加碰撞器組件。常見(jiàn)的碰撞器類型包括BoxCollider、CapsuleCollider等,它們能夠檢測(cè)與其他碰撞器或剛體的接觸。玩家可能需要與場(chǎng)景中的機(jī)關(guān)或一些物體交互時(shí),為觸發(fā)某些事件或效果,這些交互可以通過(guò)添加帶有Trigger屬性的碰撞器來(lái)實(shí)現(xiàn)。表4-3場(chǎng)景交互部分腳本腳本設(shè)計(jì)功能InfoSign當(dāng)玩家與某個(gè)觸發(fā)器碰撞時(shí),觸發(fā)器會(huì)變?yōu)楦吡翣顟B(tài),并顯示一個(gè)提示信息;當(dāng)玩家離開(kāi)觸發(fā)器時(shí),觸發(fā)器會(huì)變回正常狀態(tài),并隱藏提示信息。PassPlatformMovingPlatform當(dāng)調(diào)用Fall方法并傳入目標(biāo)游戲?qū)ο髸r(shí),游戲?qū)ο罂梢园踩卮┻^(guò)目標(biāo)層,不會(huì)與該層發(fā)生碰撞。在穿過(guò)后,通過(guò)調(diào)用ResetLayer方法,可以恢復(fù)與目標(biāo)層的碰撞檢測(cè)。控制一個(gè)游戲?qū)ο螅赡苁且粋€(gè)平臺(tái))的水平或垂直移動(dòng),并讓其接觸的游戲?qū)ο蟾S其移動(dòng)。ChangeSceneKey在玩家與某個(gè)游戲?qū)ο蟀l(fā)生碰撞時(shí),切換到另一個(gè)場(chǎng)景。當(dāng)玩家與標(biāo)記為"鑰匙"的游戲?qū)ο蟀l(fā)生碰撞時(shí),腳本會(huì)執(zhí)行一系列動(dòng)作,包括增加鑰匙計(jì)數(shù)、獲取門(mén)組件、更新UI、禁用玩家輸入、聚焦相機(jī)到門(mén)、改變門(mén)的狀態(tài)以及最后恢復(fù)正常狀態(tài)。WeaponPickup當(dāng)玩家與武器道具發(fā)生碰撞時(shí),腳本會(huì)檢查玩家是否已經(jīng)持有武器。如果玩家尚未持有武器,腳本會(huì)更新數(shù)據(jù)表示玩家已持有武器,顯示一個(gè)提示消息,并禁用觸發(fā)器以防止重復(fù)觸發(fā)。在本章中,通過(guò)三個(gè)模塊的設(shè)計(jì)與實(shí)現(xiàn),一個(gè)游戲的基本框架得以建立。角色模塊提供了游戲的主體和玩家的操作對(duì)象;敵人模塊提供了挑戰(zhàn)和動(dòng)態(tài)的游戲環(huán)境;而游戲控制模塊則確保了玩家能夠與游戲進(jìn)行有效的互動(dòng)。這三個(gè)模塊的有機(jī)結(jié)合,為玩家提供了一個(gè)完整而富有挑戰(zhàn)性的游戲體驗(yàn)。本章通過(guò)Unity編輯器,全面測(cè)試了游戲的各個(gè)模塊,觀察屬性變化,確保游戲正常運(yùn)行。Unity中游戲模塊測(cè)試是確保游戲質(zhì)量和性能的重要步驟。通過(guò)模塊測(cè)試,可以驗(yàn)證游戲各個(gè)部分的功能是否正常,是否存在性能瓶頸,以及是否存在游戲邏輯或交互上的問(wèn)題。Unity游戲引擎中在運(yùn)行時(shí),可以直觀地觀察、測(cè)試游戲模塊,實(shí)時(shí)查看游戲場(chǎng)景中各個(gè)選中元素的所有組件及其屬性,這些屬性的參數(shù)會(huì)隨著游戲的狀態(tài)的改變而實(shí)時(shí)更新,有助于發(fā)現(xiàn)潛在的問(wèn)題和邏輯錯(cuò)誤,并及時(shí)進(jìn)行修復(fù)和優(yōu)化,觀察每個(gè)模塊是否達(dá)到預(yù)期效果。表5-1游戲測(cè)試測(cè)試情況運(yùn)行情況玩家在場(chǎng)景加載后能夠正常在場(chǎng)景中移動(dòng),人物動(dòng)畫(huà)狀態(tài)機(jī)過(guò)渡正常玩家在受傷時(shí)會(huì)正常播放死亡動(dòng)畫(huà),血條也會(huì)正常更新當(dāng)主角處在敵人的監(jiān)聽(tīng)范圍時(shí),敵人會(huì)正常的跑向主角吧,并發(fā)起攻擊。游戲運(yùn)行時(shí),玩家撿起武器并攻擊石柱,石柱能夠正常被破壞。游行運(yùn)行時(shí)菜單界面如圖5-1所示:圖5-1游戲菜單界面游戲角色在處碰到機(jī)關(guān)時(shí),會(huì)彈出提示。如圖5-2所示:圖5-2游戲彈出提示當(dāng)角色撿到鑰匙時(shí),門(mén)會(huì)變成高亮狀態(tài),如圖5-3所示圖5-3游戲交互游戲人物進(jìn)行遠(yuǎn)程攻擊時(shí),正常發(fā)射子彈。如圖5-4所示圖5-4人物遠(yuǎn)程攻擊在游戲測(cè)試中,發(fā)現(xiàn)敵人巡邏時(shí)會(huì)掉出邊緣,對(duì)于這個(gè)問(wèn)題的原因在于射線探測(cè)的位置。起初,敵人走到邊緣時(shí),射線是在敵人下方探測(cè)是否有碰撞,這導(dǎo)致了敵人繼續(xù)前行并掉下去。在調(diào)試過(guò)程中,嘗試調(diào)整敵人的碰撞體規(guī)則與地圖規(guī)則,但效果不佳。最終,意識(shí)到應(yīng)該將敵人的射線調(diào)整到前方一點(diǎn)的位置進(jìn)行向下探測(cè)。這樣,當(dāng)射線探測(cè)到?jīng)]有碰撞時(shí),敵人就會(huì)及時(shí)改變方向,繼續(xù)按照預(yù)設(shè)的巡邏路線行動(dòng)。因此,為了解決這個(gè)問(wèn)題,需要對(duì)敵人的射線探測(cè)位置進(jìn)行適當(dāng)?shù)恼{(diào)整。在游戲測(cè)試過(guò)程中,當(dāng)敵人攻擊主角時(shí),如果主角受到傷害并重置其可受傷的狀態(tài),會(huì)出現(xiàn)掉出場(chǎng)景的問(wèn)題。經(jīng)過(guò)分析,發(fā)現(xiàn)這可能是由于主角控制腳本存在一些問(wèn)題。經(jīng)過(guò)測(cè)試,發(fā)現(xiàn)該腳本只能讓主角與敵人發(fā)生碰撞,而不能與其他場(chǎng)景元素發(fā)生碰撞,導(dǎo)致主角從游戲畫(huà)面中掉落,代碼如下。Physics2D.SetLayerCollisionMask(LayerMask.NameToLayer("player"),LayerMask.GetMask("enemy","player"));為了解決這個(gè)問(wèn)題,對(duì)代碼進(jìn)行了修改,使玩家除了與IgnorePlayer層不發(fā)生碰撞外,與其他所有層都能發(fā)生碰撞。這樣,玩家將能夠保持在游戲畫(huà)面內(nèi),而不會(huì)掉出場(chǎng)景。Physics2D.SetLayerCollisionMask(LayerMask.NameToLaye

溫馨提示

  • 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)論