MMORPG游戲論文 - 檢測_第1頁
MMORPG游戲論文 - 檢測_第2頁
MMORPG游戲論文 - 檢測_第3頁
MMORPG游戲論文 - 檢測_第4頁
MMORPG游戲論文 - 檢測_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE

34

緒論

選題的目的和意義

2017年我國游戲市場銷售收入2031.1億元,近年來,中國經(jīng)濟以8%的速度穩(wěn)步增長,過去2017年,中國游戲市場的實際銷售收入為2036億1000萬元,同比增長23%。這是第一次突破了600億的規(guī)模。游戲產(chǎn)業(yè)已成為經(jīng)濟市場中增長最快的熱點,也是公眾關(guān)注的焦點。游戲是文化創(chuàng)意產(chǎn)業(yè)的一部分。創(chuàng)意經(jīng)濟是知識經(jīng)濟的核心。它也是一種重要的經(jīng)濟表現(xiàn)形式。沒有創(chuàng)新就沒有新經(jīng)濟(1)。游戲設(shè)計是文化藝術(shù)創(chuàng)意與商品生產(chǎn)相結(jié)合的產(chǎn)物。游戲產(chǎn)業(yè)的發(fā)展對中國經(jīng)濟發(fā)展具有重要意義。

游戲的發(fā)展經(jīng)歷了2D游戲和3D游戲兩個階段。游戲設(shè)計,尤其是3D游戲開發(fā),結(jié)合了物理模擬、計算機圖形學(xué)和網(wǎng)絡(luò)通信,以及近年來移動平臺技術(shù)的快速發(fā)展。游戲的發(fā)展趨勢是向輕量化、微觀創(chuàng)新和時間碎片化的快速發(fā)展,如“憤怒的小鳥”、“國王的榮耀”和“絕對的”。地面上的玩家人數(shù)超過一億人

國內(nèi)外的發(fā)展?fàn)顩r

90年代初國外的3D游戲開始起步,第一個3D的第一人稱射擊游戲是回到美國KAMAK的德國總部。最早的3D游戲引擎是由它開發(fā)的末日引擎。國內(nèi)3D游戲始于2003,第一次自主研發(fā),目前對3D游戲的研究很多,但由于國內(nèi)3D技術(shù)起步較晚,與國外相比,從設(shè)計理念到技術(shù)層面,技術(shù)方面還不算小。他開發(fā)生產(chǎn),國內(nèi)可以自主研發(fā)的3D游戲引擎,只有少數(shù)幾個。網(wǎng)絡(luò)公司、大多數(shù)游戲公司和游戲開發(fā)商仍在使用由國外大型游戲公司開發(fā)的游戲引擎,如Uny3D、S幻想和FROST。雖然近年來涌現(xiàn)出了許多優(yōu)秀的游戲團隊和游戲公司,但也出現(xiàn)了幾款高質(zhì)量的3D游戲,如“古劍灘”系列、《劍與仙》系列等,但在國際游戲中還存在著不可逾越的鴻溝?!澳M人生”、“魔獸世界”、“戰(zhàn)場”系列等等。這也使得國內(nèi)玩家的財富源源不斷地流向國外。

1.3論文組織結(jié)構(gòu)

從原來的想法到實踐的分析,結(jié)合專業(yè)的3D游戲開發(fā)數(shù)據(jù),設(shè)計并制作了一個MMORPG游戲。本文介紹了游戲的制作步驟,包括一系列代碼和內(nèi)部結(jié)構(gòu)鏈接。全文共分為六個部分,主要內(nèi)容如下:

第一部分:緒論,主要介紹畢業(yè)設(shè)計的背景、國內(nèi)外相關(guān)研究的現(xiàn)狀以及設(shè)計的總體介紹。

第二部分:介紹了3D游戲的普遍結(jié)構(gòu)以及Unity3D的大致介紹;

第三部分:游戲的創(chuàng)意,游戲系統(tǒng)的功能設(shè)計;

第四部分:詳細介紹了游戲各部分的制作,明確游戲的內(nèi)在聯(lián)系,采取自下而上的步驟。

第五部分:運行游戲測試、包裝和包裝;

第六部分:結(jié)論、博弈缺陷及未來改進。

3D游戲的技術(shù)知識

2.13D圖形庫

API(ApplicationProgrammingInterface)函數(shù)是程序員經(jīng)常調(diào)用的3D圖形庫。圖形卡與應(yīng)用程序之間的接口定義為Uny3D圖形庫。為了與之通信,硬件驅(qū)動程序在圖形卡中啟動強大的3D圖形處理功能,并產(chǎn)生3D游戲。

非??斓氖?D圖形庫的高度可移植性。在設(shè)計中嚴(yán)格遵循計算機圖形學(xué)原理。它符合普通人對3D和光線的認知。點、線、面的三維特征需要程序員使用這些API函數(shù),適當(dāng)?shù)墓庹铡⒑侠淼淖鴺?biāo)系和石膏。使用固定參考幀,可以形成更逼真的3D場景[2]。API函數(shù)被定義為獨立于任何編程語言的一組規(guī)范。具體語言的實現(xiàn)描述是由國際標(biāo)準(zhǔn)化組織制定的。許多三維演示系統(tǒng)使用3D圖形庫作為生成和控制3D圖形的編程接口。

2.2Unity3D

2.2.1Unity3D簡介

UNYT3D是由Unity技術(shù)開發(fā)的綜合性專業(yè)游戲引擎。它的功能使開發(fā)者能夠?qū)W⒂谟螒虻脑O(shè)計,而忽略了底層技術(shù)的實現(xiàn),從而實現(xiàn)了快速發(fā)展的目標(biāo)。統(tǒng)一類似于導(dǎo)演,攪拌機游戲引擎,Vioobe或扭矩游戲生成器。軟件編輯器在Windows和MacIOS下運行[3]。主要特點有:

圖形電源:DirectX和OpenGL圖形渲染庫,帶有內(nèi)部封裝,帶有一些常用的渲染組件和著色器腳本。

物理模擬:UNYDIS3D不僅集成了NVIDIAPrACX物理引擎,還集成了游戲中使用的物理組件,如碰撞體、連接等。

跨平臺:可以向Windows、Mac、iOS、Android、Xbox、Wii或PS3平臺發(fā)布游戲,還可以使用UnityWeb播放器或Flash插件發(fā)布Web游戲以支持MAC和瀏覽。

資源商城:開發(fā)者可以在資源商城購買其他人的資源(代碼、模型等)以高效地重用。

資源服務(wù)器:一個統(tǒng)一的資源服務(wù)器是一個附加版本控制的產(chǎn)品,但它更適合于不同的位置的人在游戲團隊一起工作(程序,計劃,藝術(shù))。

性能分析器:在引擎中使用分析器分析器,開發(fā)人員可以在CPU和GPU的不同階段對效率進行分析,它們由編輯器或設(shè)備連接

。

2.2.2Unity3D基本概念

完整的UNITY3D程序與許多場景(場景)相結(jié)合,每個場景包含多個游戲?qū)ο螅ㄓ螒驅(qū)ο螅?,每個游戲?qū)ο罂梢跃哂卸鄠€組件(組件),其中從MonoBehavior繼承的腳本組件被初始化、更新等;我們在現(xiàn)場看到了。內(nèi)容由照相機(照相機)呈現(xiàn)和控制。

場景(場景):場景是UnyD3D程序的基本單元,任何UnyT3D程序由幾個場景組成,程序通過腳本在場景之間跳躍。場景是以場景圖的形式組織起來的。場景圖實際上是一個樹結(jié)構(gòu),每個節(jié)點都是一個游戲?qū)ο?。對象和對象之間存在父子關(guān)系,即當(dāng)父對象移動、旋轉(zhuǎn)和縮放時,子級對象也會一起改變[5],如圖2-1所示。

圖2-1旋轉(zhuǎn)一個父節(jié)點同時它的子節(jié)點也跟著旋轉(zhuǎn)

游戲?qū)ο螅涸趫鼍爸?,場景圖是以場景圖的形式組織的。場景圖實際上是一種樹形結(jié)構(gòu),樹層次中的節(jié)點是在添加特定組件(如渲染網(wǎng)格、攝像機、光源等)之后具有實際功能的對象,并且可以將游戲?qū)ο蟠虬深A(yù)處理格式文本。重復(fù)使用方便[6]。

組件(組件):組件可以是網(wǎng)格(網(wǎng)格)、光源(照相機)、照相機(照相機)、粒子系統(tǒng)(粒子)、物理碰撞體(Collider)、布(布)、連接器(關(guān)節(jié))、聲音(音頻)、動畫(動畫)和最重要的腳本(腳本)。UnyD3D的設(shè)計是基于面向?qū)ο蟮睦碚?,UnyT3D支持三種腳本語言C、JavaScript和BOO。如果對象是從單行為腳本對象繼承的,則生命周期將移交給UnyTy3D進行管理,如圖2-2所示。

圖2-2MonoBehavior的生命周期

3.游戲設(shè)計

3.1游戲創(chuàng)意

游戲也遵循以上三個特點,下面是簡單的游戲策劃:

游戲名稱:《醉仙》

游戲類型:MMORPG類游戲

游戲平臺:Android

游戲模式:闖關(guān)模式

游戲玩法:玩家有初始裝備,可以在開始進行基礎(chǔ)攻擊。玩家首先進入的是新手村,進行操作的熟練,以及熟悉游戲環(huán)境。然后以任務(wù)驅(qū)動式的方式進行游戲。正式的游戲在戰(zhàn)斗場景進行,按照任務(wù)目標(biāo)完成要擊殺的怪物的數(shù)量,然后打敗最后boss,完成任務(wù),并獲得相應(yīng)的獎勵,以用來裝備的升級和購買。

游戲操作:界面左下角有操作人物移動的搖桿,控制可控制人物任意方向移動。右下角有技能釋放鍵,分為一個主技能,三個副技能。

3.2游戲框架結(jié)構(gòu)設(shè)計

如前文所述,一個游戲包含多個場景,游戲模塊為游戲提供了一些必要的功能。這些功能是完全獨立的和所有的場景。他們不知道卡片到底有多少等級,卡片的內(nèi)容是什么。他們的主要任務(wù)是與游戲的控制單元交換信息以支持游戲。

核心模塊是圖形渲染和物理仿真。

3.3游戲?qū)哟谓Y(jié)構(gòu)設(shè)計

如前所述,UnyD3D中的每個場景根據(jù)樹層次結(jié)構(gòu)來組織,并且每個游戲?qū)ο罂梢跃哂卸鄠€組件。因此,整個游戲系統(tǒng)的實施必須符合本規(guī)范。在本規(guī)范中,為了滿足軟件設(shè)計中高內(nèi)聚和低耦合的原則,采用MVC模型設(shè)計了一個層次結(jié)構(gòu)的游戲。其優(yōu)點是游戲的結(jié)構(gòu)簡單明了,三層相互隔離,不相互影響。擴展方便。

如圖3-1所示。

圖3-1游戲?qū)哟谓Y(jié)構(gòu)圖

游戲系統(tǒng)分為三層:

視圖層:游戲?qū)ο笾饕砑拥綀鼍皩哟沃小_@些對象通常是渲染對象或相機。

控制層:添加到主相機或空對象的管理腳本組件。這些腳本主要控制相應(yīng)的功能模塊,并與接口管理類和網(wǎng)絡(luò)在線管理類等其他功能模塊進行通信。

模型層:添加到渲染對象的邏輯腳本組件,這些組件應(yīng)用于游戲?qū)ο蟆?/p>

行邏輯處理。

4.游戲?qū)崿F(xiàn)

4.1場景渲染實現(xiàn)

考慮到游戲的需要,整個場景主要包括天空渲染盒、水面、地形、三維模型、投影、粒子系統(tǒng)等幾種渲染對象。,如圖4-1所示。

圖4-1游戲場景中的渲染對象

下面主要介紹一些重要渲染模塊的具體實現(xiàn)。

4.2地形

在UnyD3D中,地形是通過高度圖實現(xiàn)的。高度圖實際上是一個矩形灰度。在灰色圖案中,顏色以0~255表示。0代表黑色,255代表白色。像素越亮,地形越高,255個像素代表最高頂點,而相對的是像素灰度值和頂點。高度可以用公式(1)來表示。其中L是像素的灰度值、分別為Unity3D中定義的地形高度和地形最低點,求得網(wǎng)格頂點的高度y.

(1)

該程序在繪制地形時讀取圖片,并生成具有不同高度的矩形網(wǎng)格。這大大減少了游戲模型的尺寸[9]。

UnyD3D中的地形模塊不僅可以導(dǎo)入高度圖,而且可以使用畫筆繪制地形紋理、樹、草和巖石,這可以大大減少開發(fā)者的工作量[9]。

在一個新的項目之后,創(chuàng)建幾個文件夾來存儲游戲所需的所有材料,如小部件、材料、場景、腳本等,其中使用GIZOS來存儲標(biāo)簽,材料被用來存儲材料,

場景用于存儲場景,腳本用于存儲腳本。

保存第一個場景并將其放置在場景中,命名為演示,在場景中是空的。在GameObject,3D對象是地形地形。如圖4-2所示。

圖4-2創(chuàng)建地形

在旁邊的組建面板就可看到如下工具,如圖4-3所示。

圖4-3組建面板

通過設(shè)置面板的地形,我們可以用諸如表面提升、表面模糊和地圖刷等工具來編輯地圖。經(jīng)過一系列修改后,原始地圖的空白將有一個基本的地圖風(fēng)格游戲。如圖4-4所示。

圖4-4地圖

4.3光照和場景元素

當(dāng)?shù)貓D被創(chuàng)建時,地圖被發(fā)現(xiàn)是黑暗的。當(dāng)點擊運行時,地圖區(qū)域被顯示為黑色,因為場景中沒有光源,并且通過添加地形將并行光源添加到場景中。,如圖4-5所示。

圖4-5平行光源

你也可以通過調(diào)整光源的強度來調(diào)整面板的強度。從圖4-5可以看出,在添加光源之后,地圖顯然是明亮的。

然后添加場景中的元素,如樹、建筑物、裝飾等,并通過資產(chǎn)中的導(dǎo)入包選項導(dǎo)入所需的材料。所有的材料將被放置在預(yù)設(shè)的預(yù)置文件夾中,使得它可以很容易地重復(fù)使用,節(jié)省了硬件資源,減少了大量的勞動重復(fù)。如圖4-6所示。在元素等放置完畢后,地圖就做好了。

圖4-6預(yù)置元素

4.4導(dǎo)入模型

現(xiàn)在開始導(dǎo)入各類模型。Project面板下任意位置右擊,選中ImportPacket下的customePacket,如下圖4-7所示。并按著模型的存放位置,選擇導(dǎo)入即可。

圖4-7導(dǎo)入模型

這里的模型導(dǎo)入不光有任務(wù)以及場景的3D模型,還有2D的貼圖,圖片等模型,以完成游戲登錄界面的搭建。

4.5攝像機

因為游戲的場景比較大,我們需要攝像機把角色移動到場景的每一部分。接下來,您需要向相機添加腳本,當(dāng)您處于角色時可以移動相機。

在為攝像機創(chuàng)建腳本之前,我們需要創(chuàng)建一個空的游戲體作為觀察對象的目標(biāo)點,在導(dǎo)入字符模型時很容易替換。我們要創(chuàng)建它只有很少的代碼。如圖4-8所示。

圖4-8腳本

4.6游戲UI界面

接下來,需要創(chuàng)建一個游戲管理器,它有幾個作用,包括UI顯示,用戶名,賽區(qū)選擇,以及游戲開始。創(chuàng)建Sprite作為背景,3個Button為三個按鍵,分別表示用戶名,賽區(qū)選擇,游戲開始。如圖4-9所示。頁面上的三個按鍵,按鍵的背景為sprite,文字為UIText。兩者放在同一個空物體下做統(tǒng)一管理,為這個空物體添加UIButton組件,使其具有點擊功能。

圖4-9游戲管理器

點擊用戶名會自動彈出Tips如圖4-10所示,為用戶的登錄及注冊。

圖4-10用戶名

此tips為滑動進入,從一個坐標(biāo)位置在規(guī)定時間內(nèi)移動到指定坐標(biāo)位置,此為Unity自帶的Tween功能實現(xiàn),如圖4-11所示。

圖4-11Tween

輸入框秩序在需要輸入文字的部分添加UIText組件,并為添加UIInput組件即可實現(xiàn)輸入功能。如圖4-12所示。

圖4-12輸入框組件

上方的關(guān)閉按鈕與開始按鈕,點擊后均為彈出另外一個Tips,均使用相同的方法,只是將運動的坐標(biāo)反向設(shè)置,即可。這里的注冊按鈕為玩家為沒有注冊信息的玩家注冊信息,在本地有小型數(shù)據(jù)庫,用于保存玩家的注冊信息,在“設(shè)置密碼”與“確認密碼”兩個信息進行比較,若不一致,方便提醒用戶。如圖4-13所示。

圖4-13密碼不一致

賽區(qū)選擇是為了防止服務(wù)器壓力過大導(dǎo)致崩潰而采取的分流措施,本質(zhì)上是與后端服務(wù)器進行交互,而租賃服務(wù)器會有很高的代價,本論文不做過多的設(shè)計只說明設(shè)計思路。選擇不同的賽區(qū)時,點擊不同的按鈕會將相應(yīng)的信息發(fā)送到服務(wù)器,服務(wù)器做出分配[10]。如圖4-14所示。

圖4-14賽區(qū)選擇

多個賽區(qū)在窗口不能一次顯示完全,這里用的ScrollView,可以實現(xiàn)滑動效果。這里上方顯示的“已選”賽區(qū)文字用腳本控制,獲取按鈕上文字,并顯示在“已選”位置,腳本如圖4-15所示。

圖4-15賽區(qū)選擇腳本

開始游戲時可以選定人物角色,并為人物定義名字,這與上述玩家創(chuàng)建自己的賬號方法相似。

4.7新手村界面

圖4-16異步加載腳本

圖4-17異步加載效果圖

圖4-18新手村場景

新手村實現(xiàn)的功能主要是玩家購買裝備,裝備的升級以及任務(wù)的領(lǐng)取,體力及歷練值的恢復(fù),這里的兩個值恢復(fù)為根據(jù)時間自動恢復(fù)。每分鐘恢復(fù)一個體力值和歷練值,這樣可以防止玩家過于沉迷游戲,有充足的休息時間。每次進行游戲會消耗一定的體力值。體力值回復(fù)的腳本文件及效果圖如圖4-19和4-20所示。

圖4-19體力恢復(fù)腳本

圖4-20體力恢復(fù)Tips

這里的金幣及鉆石是在完成任務(wù)以后自動獲取的,更名功能與前面設(shè)置人物名稱的功能相同不作過多解釋。

新手村的核心功能是背包系統(tǒng)的搭建,UI界面秩序?qū)⒛P退夭陌粗胍姆绞綌[放即可,對于N多游戲裝備不能完全保存在本地,這樣會加重本地內(nèi)存的負擔(dān),導(dǎo)致移動端產(chǎn)生卡頓等現(xiàn)象,影響游戲的體驗感。避免這種情況的方式就是將模型保存在服務(wù)器,本地只要預(yù)加載一定數(shù)量即可。裝備又有不同的屬性,裝備的模型也不一樣,但是要實現(xiàn)一一對應(yīng),將裝備的屬性信息上再加一條ID屬性,模型也對應(yīng)的加上ID,只要匹配兩者的ID一直,其他屬性信息就一定是對應(yīng)的。裝備的屬性信息存在配置表中為Text文件,用腳本代碼控制讀取轉(zhuǎn)化為引擎可用的信息。配置表信息如圖4-21所示,文件轉(zhuǎn)化腳本見附錄1。

圖4-21裝備配置表

技能系統(tǒng)的實現(xiàn)與背包系統(tǒng)的實現(xiàn)大體相似,從配置表中讀取技能信息,在與模型一一對應(yīng)。配置表信息如圖4-22所示,技能界面效果圖如4-23所示,代碼與背包相似不作過多闡述。

圖4-22技能配置表

圖4-23技能效果圖

這里技能涉及到升級,技能具有基礎(chǔ)等級,點擊升級按鈕時,技能的等級會升高,這里采用MVC模式。腳本見附錄2。

任務(wù)系統(tǒng)中讀取配置表以及配置表的中的信息已按鈕一一對應(yīng)的方式與背包中的方法時相似的。任務(wù)系統(tǒng)的核心功能是在玩家領(lǐng)取任務(wù)以后,游戲主角回自動跑向NPC完成對話,即任務(wù)的交接。這里使用的是自動尋路功能[11]。這里只要為主角添加尋路組件,如圖4-24所示。

圖4-24尋路組件

此組件可以設(shè)置人物尋路的速度,轉(zhuǎn)彎時的角速度,以及尋路停止時與目標(biāo)點的距離。尋路的前提是將要尋路的地面烘焙成靜態(tài)的,相當(dāng)于為尋路劃定尋路路線。烘焙的

圖4-25烘焙組件

方式及效果圖如圖4-25和4-26所示。

圖4-26烘焙效果圖

游戲的基本功能就是玩家可以操縱游戲主角不同方向的移動,這里需要第三方插件EasyTouch[12],插件的導(dǎo)入方式與模型的導(dǎo)入方式相同,導(dǎo)入后在Hierarchy面板會有如4-27所示的組件。

圖4-27EasyTouch插件

添加插件以后為主角添加一個腳本,EasyTouch默認的名稱為Newjoystick,在為主角添加的腳本中讓腳本找到這個名字,就可將第三方插件與游戲主角聯(lián)系起來,腳本文件如下:

usingSystem.Collections;

usingSystem.Collections.Generic;

usingUnityEngine;

publicclassMove:MonoBehaviour

{

Animatoranim;

publicfloatMoveSpeed;

voidOnEnable()

{

anim=this.GetComponent<Animator>();

EasyJoystick.On_JoystickMove+=OnJoystickMove;

EasyJoystick.On_JoystickMoveEnd+=OnJoystickMoveEnd;

}

voidOnJoystickMove(MovingJoystickmove)

{

floatPositionX=-move.joystickAxis.x;//獲取搖桿偏移搖桿中心的x坐標(biāo)

floatPositionY=-move.joystickAxis.y;//獲取搖桿偏移搖桿中心的y坐標(biāo)

if(move.joystickName=="Newjoystick1")

{

if(PositionX!=0||PositionY!=0)

{

transform.LookAt(newVector3(transform.position.x+PositionX,transform.position.y,transform.position.z+PositionY));

transform.Translate(Vector3.forward*Time.deltaTime*MoveSpeed);

anim.SetBool("walk",true);

}

}

}

voidOnJoystickMoveEnd(MovingJoystickmove)

{

anim.SetBool("walk",false);

}

voidOnDestroy()

{

EasyJoystick.On_JoystickMove-=OnJoystickMove;

EasyJoystick.On_JoystickMoveEnd-=OnJoystickMoveEnd;

}

這里在移動時與移動后,要執(zhí)行的是動畫的播放和停止。需要為主角添加Animator組件[13],在Inspector面板下的AddComponent中選中即可,如圖4-28所示。

圖4-28添加組件

同時也要在添加Animator是創(chuàng)建狀態(tài)基,方便切換任務(wù)的狀態(tài),這里添加狀態(tài)基在戰(zhàn)斗場景做詳細介紹。

4.8戰(zhàn)斗場景

領(lǐng)取完任務(wù)后地圖界面上選取要進的地圖位置,開始進入戰(zhàn)斗場景,這里又涉及到場景的跳轉(zhuǎn),使用的仍然是異步加載功能進行頁面的過度。

戰(zhàn)斗場景中,主角將要進行的是擊殺怪物,首先擊殺小怪物,當(dāng)小怪物全部擊殺完成的時候,Boss會自動出現(xiàn),并主動向主角移動,當(dāng)接近主角一定范圍內(nèi)的時候,將進行主動攻擊。戰(zhàn)斗場景的效果圖如圖4-29所示。

圖4-29戰(zhàn)斗場景效果圖

戰(zhàn)斗場景中的技能釋放按鈕與前面Tips中的按鈕實現(xiàn)效果相同,將導(dǎo)入的模型擺放在相應(yīng)的位置后,為按鈕添加點擊事件,及點擊按鈕時執(zhí)行某種事件。添加點擊事件腳本見附錄3。

當(dāng)點擊按鈕時開始播放攻擊動畫以及動畫的特效[14]。這是戰(zhàn)斗場景的主要內(nèi)容。因為不同的攻擊動畫以及行走的動畫之間要不停的不定時的切換,因此這里主要運用的是動畫狀態(tài)基。戰(zhàn)斗場景中的動畫狀態(tài)基如圖4-30所示。

圖4-30動畫狀態(tài)基

這里不同格子是不同動畫,左側(cè)的Parameters控制不同的線路是否為開啟狀態(tài),如屬于開啟,動畫就會從當(dāng)前的狀態(tài)沿線路進入另一個狀態(tài),如全部處于關(guān)閉狀態(tài),就回播放默認動畫,這樣就可以很方便的實現(xiàn)在行走與攻擊狀態(tài)下的動畫之間的切換[15]。

進入戰(zhàn)斗場景后,小怪物會自動向主角移動,當(dāng)?shù)竭_一定距離時就會發(fā)起攻擊。引擎會實時監(jiān)測怪物與主角距離,這里使用監(jiān)本文件就行距離的檢測腳本如下:

voidStart()

{

navm=GetComponent<NavMeshAgent>();

anim=GetComponent<Animator>();

}

voidUpdate()

{

dis=Vector3.Distance(this.transform.position,player.position);

if(dis>=3)

{

anim.SetBool("Walk",true);

navm.SetDestination(player.position);

anim.SetBool("attack",false);

}

else

{

anim.SetBool("Walk",false);

player.LookAt(this.transform);

anim.SetBool("attack",true);

}

if(isDie)

{

anim.SetBool("die",true);

}

}

怪物向主角移動采用的是自動尋路,當(dāng)兩者之間距離大于3的時,怪物播放行走的動畫,小于3時,開始播放攻擊的動畫。

4.9生命條

敵人在受到攻擊的時候,找們并不知道它受到了多少傷害,為了表示它的剩余生命值,我們需要為它創(chuàng)建一個生命條。本文用簡單的黃色和紅色的地圖制作了一個平面模型。我們將使用來改變平面模型UV,使得黃色代表剩余生命值,而紅色代表丟失的生命。如圖4-31所示。

圖4-31生命條

創(chuàng)建腳本如下:

publicclassplanBlood:MonoBehaviour

{

publicGameObjectMounster;

publicSliderbloodSlider;

voidStart()

{

bloodSlider.value=bloodSlider.maxValue;

}

voidOnTriggerEnter(Colliderother)

{

//主技能掉血

if(other.gameObject.tag=="Blood")

{

print("主技能生效");

bloodSlider.value-=0.01f;

}

//一技能掉血

if(other.gameObject.tag=="Ice")

{

print("一技能生效");

bloodSlider.value-=0.02f;

}

//二技能掉血

if(other.gameObject.tag=="boss")

{

print("二技能生效");

bloodSlider.value-=0.03f;

}

//三技能掉血

if(other.gameObject.tag=="Crow")

{

print("三技能生效");

bloodSlider.value-=0.04f;

}

//怪物死亡

if(bloodSlider.value<=0)

{

planGoPlayer.isDie=true;

Destroy(Mounster,5);

MonGoPlayer.isGo=true;

}

}

這個腳本中不同的技能產(chǎn)生的傷害程度不一樣,當(dāng)怪物受到攻擊時,血條會減少,方便玩家看到怪物的受傷程度。每次攻擊時,當(dāng)任務(wù)的武器碰到怪物時才會產(chǎn)生傷害,這里使用的事碰撞檢測,為怪物和武器添加碰撞組件[17]如圖4-32所示。

圖4-32碰撞檢測組件

勾選IsTrigger是組件才是碰撞檢測組件[18]。這樣就可以檢測到怪物是否受到攻擊。

5.游戲測試

5.1在Unity3D中運行測試

點擊軟件中的運行按鈕,如圖5-1所示。

圖5-1測試按鈕

游戲在軟件中測試運行,如圖5-2,5-3,5-4所示。

圖5-2軟件中測試

圖5-3軟件中測試

5-4軟件中測試

游戲能夠正常運行,沒有報錯,測試成功。

5.2Android平臺測試

點擊BuildSettings,出現(xiàn)如圖5-5窗

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論