![MMORPG游戲論文 - 檢測_第1頁](http://file4.renrendoc.com/view/bbe373d9debd5c1a209f57d3b9f5b760/bbe373d9debd5c1a209f57d3b9f5b7601.gif)
![MMORPG游戲論文 - 檢測_第2頁](http://file4.renrendoc.com/view/bbe373d9debd5c1a209f57d3b9f5b760/bbe373d9debd5c1a209f57d3b9f5b7602.gif)
![MMORPG游戲論文 - 檢測_第3頁](http://file4.renrendoc.com/view/bbe373d9debd5c1a209f57d3b9f5b760/bbe373d9debd5c1a209f57d3b9f5b7603.gif)
![MMORPG游戲論文 - 檢測_第4頁](http://file4.renrendoc.com/view/bbe373d9debd5c1a209f57d3b9f5b760/bbe373d9debd5c1a209f57d3b9f5b7604.gif)
![MMORPG游戲論文 - 檢測_第5頁](http://file4.renrendoc.com/view/bbe373d9debd5c1a209f57d3b9f5b760/bbe373d9debd5c1a209f57d3b9f5b7605.gif)
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 30105-2:2024 EN Information technology - IT Enabled Services-Business Process Outsourcing (ITES-BPO) lifecycle processes - Part 2: Process assessment model (PAM)
- 【正版授權(quán)】 ISO 13315-2:2025 EN Environmental management for concrete and concrete structures - Part 2: System boundary and inventory data
- 2025年度公共設(shè)施裝修工期延誤賠償及質(zhì)量保證協(xié)議
- 2025年度電子商務(wù)交易安全保障合同
- 2025高考作文預(yù)測:正確“出圈”才能出彩
- 個人職業(yè)能力提升計劃
- 未來年的市場拓展計劃
- 提升職業(yè)道德與素養(yǎng)的工作計劃
- 班級網(wǎng)絡(luò)學(xué)習(xí)平臺的搭建與維護計劃
- 2025年休閑專用車及其零附件項目建議書
- 4地球-我們的家園《我們共同的責(zé)任》說課稿 -2023-2024學(xué)年道德與法治六年級下冊統(tǒng)編版
- 護理交接班改進
- 2024年湖北省武漢市中考語文試卷
- 二零二五年度高品質(zhì)小區(qū)瀝青路面翻新施工與道路綠化合同2篇
- 2022年北京市初三一模語文試題匯編:基礎(chǔ)知識綜合
- 2025年廣東食品藥品職業(yè)學(xué)院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 詩經(jīng)楚辭文學(xué)常識單選題100道及答案
- 2 爆破工試題及答案
- AI輔助的慢性病監(jiān)測與管理系統(tǒng)
- 電路基礎(chǔ)知到智慧樹章節(jié)測試課后答案2024年秋江西職業(yè)技術(shù)大學(xué)
- 2025年小學(xué)蛇年寒假特色作業(yè)
評論
0/150
提交評論