畢業(yè)論文(設(shè)計(jì)):游戲引擎研究與應(yīng)用-手機(jī)游戲引擎Unity 3D研究與應(yīng)用_第1頁
畢業(yè)論文(設(shè)計(jì)):游戲引擎研究與應(yīng)用-手機(jī)游戲引擎Unity 3D研究與應(yīng)用_第2頁
畢業(yè)論文(設(shè)計(jì)):游戲引擎研究與應(yīng)用-手機(jī)游戲引擎Unity 3D研究與應(yīng)用_第3頁
畢業(yè)論文(設(shè)計(jì)):游戲引擎研究與應(yīng)用-手機(jī)游戲引擎Unity 3D研究與應(yīng)用_第4頁
畢業(yè)論文(設(shè)計(jì)):游戲引擎研究與應(yīng)用-手機(jī)游戲引擎Unity 3D研究與應(yīng)用_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

畢業(yè)論文(設(shè)計(jì))設(shè)計(jì)(論文)題目游戲引擎研究與應(yīng)用-手機(jī)游戲引擎Unity 3D研究與應(yīng)用姓 名:陳松松學(xué) 號(hào):201000610047學(xué) 院:機(jī)電與信息工程學(xué)院專 業(yè):數(shù)字媒體技術(shù)年 級(jí)2011級(jí)指導(dǎo)教師:黃文高 2015年 05月 07日目 錄摘要:3關(guān)鍵詞3英文摘要:3英文關(guān)鍵詞:3研究背景3引擎概念介紹3Unity3D引擎基礎(chǔ)內(nèi)容4Unity的粒子特效5簡單角色扮演游戲?qū)崿F(xiàn)7摘 要自古以來,游戲便伴隨著人們的生活而存在,中國古代就有蹴鞠、斗雞、象棋、圍棋等,國外有原始足球、國際象棋等等。游戲早已成為人們休閑消遣的主要方式,游戲不僅豐富了人們的生活,增添了人們的樂趣,而且有利于智力的發(fā)展和人際關(guān)系的融洽。隨著科技的發(fā)展,特別是計(jì)算機(jī)科學(xué)的進(jìn)步,電子游戲已經(jīng)成為游戲行業(yè)的中堅(jiān)力量,電子游戲擁有廣泛的受眾基礎(chǔ),近幾年伴隨著智能手機(jī)的快速發(fā)展,手機(jī)游戲在電子游戲中已占據(jù)半壁江山。雖然手機(jī)游戲市場廣闊,需求激增,但是用戶對單個(gè)手機(jī)游戲的熱情度保持時(shí)間較短,對單個(gè)游戲保持三個(gè)月以上熱情的用戶占手機(jī)用戶的極少數(shù),手機(jī)游戲有待精品推出,據(jù)此可以看出,手機(jī)游戲廣闊的市場需求和精品手機(jī)游戲的供應(yīng)之間的矛盾突出,加強(qiáng)對手機(jī)游戲引擎的研究,促進(jìn)優(yōu)秀游戲引擎的應(yīng)用,開發(fā)出更多精品手機(jī)游戲有其重要現(xiàn)實(shí)意義。Unity以其獨(dú)特簡介易操作的界面風(fēng)格,以及不斷的更新完善,現(xiàn)在已經(jīng)支持市面上所有的平臺(tái)。Unity作為一款優(yōu)秀的游戲引擎,其系統(tǒng)包含了游戲引擎所有的子系統(tǒng):渲染引擎、物理引擎、碰撞檢測系統(tǒng)、音效、腳本引擎、電腦動(dòng)畫、人工智能、網(wǎng)絡(luò)引擎以及場景管理。此次研究在熟悉Unity的基礎(chǔ)操作的基礎(chǔ)上,深入分析了Unity的粒子系統(tǒng),并建立了一個(gè)簡單的角色扮演游戲,實(shí)現(xiàn)了基本操作、簡單AI和幾個(gè)比較炫的粒子技能特效。關(guān) 鍵 詞Unity 游戲引擎 建模 游戲腳本 人工智能 粒子特效 粒子發(fā)射器 粒子動(dòng)畫 AI 角色扮演游戲 SummaryA long time ago, the game was accompanied through the life of people.For example,the cuju of Chinese, Cockfighting, Chess, Go, etc., The original soccer of foreign, chess and so on.The game has already become the main way of Peoples leisure, game not only enriched the life of people, added the fun of people, but also is beneficial to the development of intelligence and interpersonal harmony.With the development of science and technology, especially the progress of computer science, electronic games have become the backbone of the gaming industry, electronic games have wide audience base.In recent years, along with the rapid development of smart phones, mobile phone games occupy half already in electronic games.Although mobile game a vast market and a surge in demand, but the enthusiasm of the user for a single mobile games holding time is shorter, more than three months for a single game keep enthusiastic users of mobile phone users in a small number, mobile phone games to high-quality goods, thus it can be seen that mobile phone game, broad market demand and the high-quality goods the contradiction between the supply of mobile phone games, to strengthen the research of mobile game engine, promote the application of excellent game engine, developed the more high-quality goods mobile game has its important practical significance.Unity with its unique profile interface style of easy operation, and constantly update perfect, support all of the platform on the market now.Unity as a good game engine, the system includes all game engine subsystems: rendering engine, physics engine, collision detection system, sound, script engine, computer animation, artificial intelligence and the scene management, network engine.The study on the basis of familiar with the Unity on the basis of the operation, the Unity of the particle system were analyzed, and has set up a simple role-playing game, has realized the basic operation, compared with a few simple AI dazzle particle effects.Key WordsUnity The Game Engine Modeling The Game Script Artificial Intelligence Particle Effects The Particle Emitter Particle Animations RPG一、 研究背景自古以來,游戲便伴隨著人們的生活而存在,中國古代就有蹴鞠、斗雞、象棋、圍棋等,國外有原始足球、國際象棋等等。游戲早已成為人們休閑消遣的主要方式,游戲不僅豐富了人們的生活,增添了人們的樂趣,而且有利于智力的發(fā)展和人際關(guān)系的融洽。隨著科技的發(fā)展,特別是計(jì)算機(jī)科學(xué)的進(jìn)步,電子游戲已經(jīng)成為游戲行業(yè)的中堅(jiān)力量,電子游戲擁有廣泛的受眾基礎(chǔ),近幾年伴隨著智能手機(jī)的快速發(fā)展,手機(jī)游戲在電子游戲中已占據(jù)半壁江山。首先,據(jù)艾瑞市場咨詢有限公司的最新調(diào)查數(shù)據(jù)顯示,調(diào)查對象中有99.4%玩過手機(jī)游戲,且其中約有1/3手機(jī)游戲用戶使用手機(jī)進(jìn)行網(wǎng)游,用戶玩手機(jī)游戲的頻率較高,有時(shí)間就玩和一天幾次的用戶超過八成。其次,根據(jù)2013年中國游戲行業(yè)產(chǎn)業(yè)報(bào)告數(shù)據(jù)顯示,中國游戲市場實(shí)際銷售收入中移動(dòng)游戲收入為32.4億元,增長率達(dá)到32.4%。因?yàn)槭謾C(jī)的輕巧便攜,并隨著手機(jī)智能化的深入與優(yōu)化,使得手機(jī)游戲發(fā)展如日中天,未來前景無限。最后,在手機(jī)游戲引擎市場中,根據(jù)Unity 官方在8月公布的報(bào)告顯示,Unity占據(jù)全功能游戲引擎市場45%的份額,居全球首位,據(jù)此可以看出Unity的市場認(rèn)可度最高。雖然手機(jī)游戲市場廣闊,需求激增,但是用戶對單個(gè)手機(jī)游戲的熱情度保持時(shí)間較短,對單個(gè)游戲保持三個(gè)月以上熱情的用戶占手機(jī)用戶的極少數(shù),手機(jī)游戲有待精品推出,據(jù)此可以看出,手機(jī)游戲廣闊的市場需求和精品手機(jī)游戲的供應(yīng)之間的矛盾突出,加強(qiáng)對手機(jī)游戲引擎的研究,促進(jìn)優(yōu)秀游戲引擎的應(yīng)用,開發(fā)出更多精品手機(jī)游戲有其重要現(xiàn)實(shí)意義。二、 引擎概念介紹根據(jù)維基百科的闡述,游戲引擎是指一些已編寫好的可編輯電腦游戲系統(tǒng)或者一些互交式實(shí)時(shí)圖像應(yīng)用程序的核心組件。游戲引擎為游戲設(shè)計(jì)者提供各種編寫游戲所需的各種工具,其目的在于讓游戲設(shè)計(jì)和制作者能夠容易、快速的做出游戲程序。游戲引擎一般包含以下系統(tǒng):渲染引擎、物理引擎、碰撞檢測系統(tǒng)、音效、腳本引擎、電腦動(dòng)畫、人工智能、網(wǎng)絡(luò)引擎以及場景管理。有人把游戲引擎比作賽車的引起,引擎是賽車的心臟,決定了賽車的穩(wěn)定性和基本性能,同樣手機(jī)引擎也是這樣,玩家所體驗(yàn)到的界面美工、劇情關(guān)卡、背景音樂音效、操作等都是由游戲引擎直接控制。手機(jī)游戲引擎特指為手機(jī)端游戲制作、運(yùn)行而開發(fā)編寫的游戲系統(tǒng)核心組件。目前市場上主流的手機(jī)游戲引擎有:Unity、Cocos2d、虛幻引擎、Construct 2、木瓜游戲引擎、WiEngine、X-Canvas等。其中Cocos2D是全球知名的開源跨平臺(tái)手機(jī)游戲引擎,在全球手機(jī)游戲引擎市場占有很大比重,也是一個(gè)不錯(cuò)的游戲引擎。WiEngine由微云科技開發(fā)的一款2D移動(dòng)游戲引擎,目前只支持2D游戲制作。在畫面質(zhì)量上Unity雖不敵虛幻3,但是相對來說,Unity3d比較容易上手,方便使用,可以減少游戲設(shè)計(jì)制作者在引擎上花費(fèi)的時(shí)間,從而更專注與游戲本身的制作。并且Unity的可視化開發(fā)界面做的非常人性化,Unity的用戶界面擁有較好的場景編輯器、游戲預(yù)覽界面、項(xiàng)目展示形式、屬性查看器、體系展示窗口,使游戲開發(fā)得心應(yīng)手。三、 Unity3D引擎基礎(chǔ)內(nèi)容Unity的開發(fā)學(xué)習(xí)過程一般包括:Unity可視化界面的基礎(chǔ)操作學(xué)習(xí)、C#/javascript/Boo語言基礎(chǔ)學(xué)習(xí)、腳本開發(fā)基礎(chǔ)學(xué)習(xí)、各主要系統(tǒng)模塊專題學(xué)習(xí)??梢暬缑婊A(chǔ)操作又分為:界面的認(rèn)知、工程新建與管理、創(chuàng)建物體、物理特效??梢暬缑娌僮髦饕脕韺?shí)現(xiàn)對游戲項(xiàng)目的管理、場景的繪制、基本物體創(chuàng)建、燈光陰影效果的實(shí)現(xiàn)、攝像機(jī)的創(chuàng)建與管理以及簡單物理特效的實(shí)現(xiàn)。Unity3D的界面和其他三維建模軟件(例如Maya、3DMAX)很相似,主要包含了標(biāo)題欄、菜單欄、工具欄及工作區(qū)。標(biāo)題欄用來顯示Unity的標(biāo)志、名字、版本、當(dāng)前打開場景名字、當(dāng)前項(xiàng)目名字等,還可以進(jìn)行最小化、還原、關(guān)閉、移動(dòng)等操作,工具欄四個(gè)常用工具依次為選擇工具、移動(dòng)工具、旋轉(zhuǎn)工具和縮放工具。菜單欄主要包含F(xiàn)ile菜單、Edit菜單、Assets菜單、GameObject菜單、Componet菜單、Windows菜單和Help菜單。File菜單用來新建、打開或保存場景文件,新建、打開或保存項(xiàng)目文件,以及關(guān)閉軟件。Edit菜單則是用來實(shí)現(xiàn)撤銷、重做、剪切、復(fù)制、粘貼、將鏡頭移到所選元素前(快捷鍵是F)、全部選擇、播放、暫停/中斷、逐幀播放、載入與存儲(chǔ)、對齊設(shè)置操作。Assets菜單中包含了基本資源文件及文件夾的創(chuàng)建,資源文件包括JavaScript、C#等腳本文件,也包括動(dòng)畫、材質(zhì)、自定義字體文件等等,除此之外還包括了資源包的導(dǎo)入導(dǎo)出菜單。GameObject菜單則包含了創(chuàng)建空對象以及創(chuàng)建游戲基本對象等子菜單。Component菜單包含了游戲其他組件的創(chuàng)建子菜單。Window菜單包含了對Unity窗口的管理,通過Window菜單功能可以管理Unity中各個(gè)界面的顯示與否,其中Asset Store菜單用來打開聯(lián)網(wǎng)購買或直接下載免費(fèi)的游戲資源的窗口。Help菜單包含了Unity版本信息及相關(guān)幫助鏈接。Unity的工作區(qū)主要包含Scene窗口、Game窗口、Project窗口、Hierarchy窗口和Inspector窗口,Scene窗口主要用來編輯游戲中的場景及物體,Game窗口主要用來顯示游戲運(yùn)行時(shí)預(yù)覽效果,Project窗口主要用來管理游戲資源的,Hierarchy窗口主要用來顯示游戲中的物體清單,Inspector窗口則是用來顯示及編輯選中物體或文件的屬性的。Unity的建模和貼圖功能并不是很強(qiáng)大,需要借助其他三維軟件來完成這部分工作,常用的三維建模軟件有Maya、3DMax等。Unity引擎支持的模型文件格式有:Maya的MB、MA文件,Cinema 4D的C4D文件,以及FBX文件。這里簡單介紹一下使用Maya導(dǎo)出模型文件的方法,首先在Maya中選擇“Window”“Raise Application Windows”“Plugins Manager”選項(xiàng),然后在彈出的對話框中找到并勾選fbxmaya.dll后面的“Loaded”和“Auto load”復(fù)選框,然后關(guān)閉彈窗。第二步,選擇“File”“Export All”,單擊“Export All”打開屬性對話框,將File type設(shè)置為FBX export,然后點(diǎn)擊“Export All”,再在“Fille name”中輸入導(dǎo)出文件的名稱,點(diǎn)擊“Export”。最后一步就是將FBX文件導(dǎo)入U(xiǎn)nity中,將FBX導(dǎo)入U(xiǎn)nity很簡單,只需要將FBX文件直接拖入Project下Assets任意文件目錄下即可。四、 Unity的粒子特效(一) 基本概念:1. 粒子特效的原理是將若干粒子無規(guī)則的組合在一起,來模擬水、霧、火焰,爆炸,煙花、雪花、風(fēng)、雨、技能等等效果。2. 粒子發(fā)射器:用于設(shè)定粒子的發(fā)射屬性,比如說粒子的大小,數(shù)量和速度等的原件。3. 粒子渲染器:主要用于粒子的渲染,如:渲染模式,粒子的縮放,粒子的尺寸等。4. 粒子動(dòng)畫:用于設(shè)定粒子渲染中的動(dòng)畫效果。(二) 基本屬性:emit:是否是使用粒子發(fā)射器min size:粒子最小尺寸max size:粒子最大尺寸min energy:粒子的最小生命周期,單位秒,表示N秒后粒子消失max energy:粒子的最大生命周期,單位秒,表示N秒后粒子消失min emission:粒子每秒生成的最小數(shù)量max emission:粒子每秒生成的最大數(shù)量world velocity:粒子在3D世界中各軸的速度local velocity:粒子自身坐標(biāo)系中各個(gè)軸的移動(dòng)速度rnd velocity:各個(gè)軸粒子的隨機(jī)速度emitter velocity scale:粒子繼承發(fā)射的速度tangent velocity:粒子發(fā)射切線的速度angular velocity:粒子發(fā)射的角速度rnd angular velocity:粒子的隨機(jī)角速度rnd rotation:粒子是否隨機(jī)旋轉(zhuǎn)simulate in worldspace:是否在世界坐標(biāo)中模擬粒子one shot:選擇后,粒子只發(fā)送一次,否則粒子將連續(xù)發(fā)送ellipsoid:粒子產(chǎn)生的所有軸的位置min emitter range:設(shè)定粒子之間的間隙(三) 動(dòng)畫屬性:does animate color:是否開啟粒子動(dòng)畫的顏色,顏色將根據(jù)自身的生命周期改變color animation n :設(shè)置動(dòng)畫漸變數(shù)組中的顏色,這個(gè)數(shù)組長5,也就是說粒子的顏色發(fā)生改變時(shí),循環(huán)這5個(gè)顏色world rotation axis:粒子圍繞世界坐標(biāo)軸旋轉(zhuǎn)local rotation axis:粒子圍繞著本地空間軸旋轉(zhuǎn)size grow:粒子成長的生命周期rnd force:粒子運(yùn)行時(shí),每經(jīng)過一幀就在粒子上加一個(gè)隨機(jī)的力force:粒子運(yùn)行是,每經(jīng)過一幀就在粒子上加一個(gè)固定的力damping:阻力,用于減慢粒子autodestruct:自動(dòng)銷毀粒子動(dòng)畫對象五、 簡單角色扮演游戲?qū)崿F(xiàn)(一) 引擎信息Unity版本:Personal Edition 5.0 64位版下載地址:/get-unity(二) 新建游戲項(xiàng)目1. 點(diǎn)擊unity圖標(biāo)打開軟件2. 點(diǎn)擊New project 新建項(xiàng)目3. 填寫游戲項(xiàng)目基本信息圖中1表示項(xiàng)目名稱,2為項(xiàng)目存儲(chǔ)路徑,3為項(xiàng)目屬性二維或三維,4為項(xiàng)目所需資源包選擇按鈕,5為確定創(chuàng)建按鈕在這一步我選擇了事先在Unity官網(wǎng)下好的資源包,主要包括一些貼圖和一些基礎(chǔ)粒子特效包。(三) 二、管理項(xiàng)目資源并導(dǎo)入模型1. 新建資源文件夾方便管理各類資源,這里新建的有_GUI,_Scene,_PlayerModels,為了區(qū)分第三方資源和系統(tǒng)資源,在命名上使用前綴下劃線2. 導(dǎo)入第三方GUI包,這里使用NGUI3. 導(dǎo)入事先用Maya等其他三維軟件制作好或者上網(wǎng)下載好的模型包(四) 繪制場景1. 新建一個(gè)500 X 500的Terrain2. 編輯地形選中地形后在Inspector中會(huì)顯示上面的工具,工具欄依次為抬高或壓低工具(直接使用是抬高、按住shift使用時(shí)為壓低地形)、繪制高度工具、平滑高度工具、貼圖工具、樹木貼圖工具、花草貼圖工具、地形基本參數(shù)設(shè)置工具。這里使用抬高或壓低工具將地形編輯如下:3. 為地形添加貼圖使用地形貼圖工具給地形添加適當(dāng)?shù)馁N圖,如下:4. 為地形添加樹木和花草(五) 添加主角模型并為主角添加控制腳本1. 添加人物模型將人物模型拖入場景中,并調(diào)整人物大小,使得人物與場景相符合2. 創(chuàng)建虛擬搖桿創(chuàng)建虛擬搖桿方便在移動(dòng)設(shè)備上進(jìn)行游戲。首先導(dǎo)入U(xiǎn)nity虛擬搖桿插件EasyTouch,然后添加后在Game界面會(huì)出現(xiàn)虛擬搖桿接著用同樣的方法添加兩個(gè)按鈕3. 新建控制腳本創(chuàng)建一個(gè)新文件夾,并將名字重命名為_Script,這里將存放接下來游戲中所用到的所有腳本注意:在Unity中,新建腳本都會(huì)自動(dòng)生成兩個(gè)函數(shù),一個(gè)Start函數(shù),在這個(gè)函數(shù)中用來初始化各個(gè)部件和元素,另一個(gè)就是Update函數(shù),在這個(gè)函數(shù)中用來寫游戲每一幀刷新時(shí)需要執(zhí)行的代碼,也是游戲主要腳本放置的地方。新建腳本,命名為ControlPlayer,繼承MonoBehaviour類。Unity自帶角色控制器,在腳本中需要將unity的角色控制器添加進(jìn)來作為角色的成員對象。腳本文件內(nèi)容:using UnityEngine;using System.Collections;namespace PeterChenpublic class ControlPlayer : MonoBehaviour #region 人物屬性public string m_name = PeterChen;public int m_level=1;/等級(jí)public int m_experience=0;/經(jīng)驗(yàn)值public int m_maxExperience=2;/最大經(jīng)驗(yàn)public int m_maxLife=100;/生命public int m_currentLife=100;/當(dāng)前生命public int m_maxMagic=50;/魔法值public int m_currentMagic=50;/當(dāng)前魔法值public int m_defense=10;/防御力public int m_attack=20;/攻擊力public float m_speed=3;/速度public int m_rotateSpeed=180;/旋轉(zhuǎn)速度public Animation m_animation;/人物行動(dòng)時(shí)的動(dòng)畫public float m_jump=45;/跳躍力public float m_gravity = 17;/重力public float m_bigAttack=0.02f;/暴擊幾率#endregion#region 對象public Transform m_transform;/定義一個(gè)自己的位置、大小和旋轉(zhuǎn)控制對象private CharacterController m_controller;/定義角色控制器private BattleChange m_changeState;/戰(zhàn)斗時(shí)改變生命等屬性腳本對象public Transform m_attackParticle; /普通攻擊粒子public AudioClip m_attackAudio; /普通攻擊音效private BattleChange m_nowAttackTarget;private RaycastHit hit;private Vector3 m_forward;/向前的方向private LayerMask m_layerMask;/射線檢測層private float m_attackDelay = 0;/攻擊延時(shí)/粒子效果public Transform m_bigAttackParticle;/暴擊粒子public Transform m_upLevelParticle;/升級(jí)粒子效果/聲音public AudioClip m_bigAttackAudio;/暴擊音效public AudioClip m_upLevel;/升級(jí)音效private MovingJoystick m_move;#endregion#region 變量private int m_moveDirection=-1;/這個(gè)是屬于臨時(shí)變量,用于判斷移動(dòng)方向的private float m_moveSpeed=0;/這個(gè)是臨時(shí)的速度變量,用于判斷移動(dòng)速度具體方向public int m_LifeBar=100;/定義當(dāng)前血條長度public int m_MagicBar=50;/定義當(dāng)前魔法條的長度private Vector3 m_nowPosition;/這個(gè)用與盛放玩家當(dāng)前位置信息,用于跳#endregion#region 判斷private bool m_jumpTmp=true;/判斷是否可以跳躍private bool m_isDead=false;/是否死亡#endregion#region 對技能的定義/火球術(shù)public bool m_skillFireBall=true;/是否學(xué)會(huì)了該技能public int m_skillFireBallRank=1;/技能等級(jí)public float m_skillFireBallSkilled=0;/技能熟練度public Transform m_skillFireBallParticle;/技能粒子效果public Transform m_skillFireBallParticle2;/火球術(shù)爆炸效果public AudioClip m_skillFireBallAudio;/技能聲音效果/連環(huán)閃電public bool m_skillLightling=true;public int m_skilllLightlingRank=1;public float m_skillLightlingSkilled=0;public Transform m_skillLightlingParticle;public Transform m_skillLightlingParticle2;public AudioClip m_skillLightlingAudio;#endregion/ Use this for initializationvoid Start () m_transform = this.transform;m_controller = GetComponent();m_animation = GetComponent();m_changeState= GetComponent();m_changeState.m_defense=this.m_defense;/防御m_changeState.m_life=this.m_currentLife;/生命m_changeState.m_magic=this.m_currentMagic;/魔法值m_changeState.m_name=this.m_name;m_layerMask=LayerMask.NameToLayer(Human);/ Update is called once per framevoid Update () GetState();m_LifeBar=(int)(float)m_currentLife/m_maxLife)*100);m_MagicBar=(int)(float)m_currentMagic/m_maxMagic)*100);UpLevel();if(!m_isDead)Move ();void Move()Vector3 m_forward = m_transform.TransformDirection(Vector3.forward);if(Input.GetKey(KeyCode.A)/以鍵盤上的A鍵控制角色向左旋轉(zhuǎn),注意向左旋轉(zhuǎn)的話,rotateSpeed是為負(fù)的。m_transform.Rotate(m_transform.up*-m_rotateSpeed*Time.deltaTime);m_animation.CrossFade(Run);else if(Input.GetKey(KeyCode.D)/以鍵盤上的D鍵控制人物向右旋轉(zhuǎn)m_transform.Rotate(m_transform.up*m_rotateSpeed*Time.deltaTime);m_animation.CrossFade(Run);else if(Input.GetKey(KeyCode.W)/向前移動(dòng)m_moveDirection = 1;m_moveSpeed = m_moveDirection*m_speed;m_animation.CrossFade(Run);else if(Input.GetKey(KeyCode.S)/向后移動(dòng)m_moveDirection = -1;m_moveSpeed = m_moveDirection*m_speed;m_animation.CrossFade(Run);else if(m_animation.IsPlaying(Run)/如果沒有移動(dòng),就讓角色閑著m_moveSpeed=0;m_animation.CrossFade(Idle);if(m_controller.isGrounded)/只有在地面才可以跳if(Input.GetKey(KeyCode.Space)Vector3 m_direction=m_transform.TransformDirection(Vector3.down);/方向向下的臨時(shí)變量if(m_controller.isGrounded)m_jumpTmp=true;else if(!Physics.Raycast(m_transform.position,m_direction,1.5f)/判斷跳躍高度m_jumpTmp=false;if(m_jumpTmp)m_animation.CrossFade(Jump2);m_transform.Translate(Vector3.up*m_jump*Time.deltaTime); m_controller.SimpleMove(m_forward*m_moveSpeed);/移動(dòng)void GetState()this.m_currentLife=m_changeState.m_life;this.m_currentMagic=m_changeState.m_magic;if(m_currentLife=0)m_animationDeath.wrapMode=WrapMode.ClampForever;m_animation.CrossFade(Death);m_isDead=true;void Attack()if(m_currentLife0)if(Random.valuem_bigAttack)m_animation.Play(Attack3-1);m_forward=m_transform.TransformDirection(Vector3.forward);/Debug.DrawLine(m_transform.position+Vector3.up,new Vector3(10,0,0),Color.cyan);if(Physics.Raycast(m_transform.position+Vector3.up,m_forward,out hit,2,m_layerMask)m_nowAttackTarget=hit.collider.gameObject.GetComponent();StartCoroutine(WaitForAttack(Attack3-1,0.65f,m_attackParticle,m_attackAudio,m_attack);elsem_animation.Play(Attack3-1);m_forward=m_transform.TransformDirection(Vector3.forward);if(Physics.Raycast(m_transform.position+Vector3.up,m_forward,out hit,2,m_layerMask)m_nowAttackTarget=hit.collider.gameObject.GetComponent();StartCoroutine(WaitForAttack(Attack3-1,1.8f,m_bigAttackParticle,m_bigAttackAudio,m_attack*3);#region 技能public void SkillFireBall()if(!m_animation.IsPlaying(Run)/跑動(dòng)的時(shí)候不允許施法int tempMagic=m_currentMagic-10-m_skillFireBallRank;/計(jì)算消耗的法力if(tempMagic=0)/如果法力足夠,就可以發(fā)動(dòng)魔法m_currentMagic=tempMagic;m_animation.Play(Magic);/這里法術(shù)的動(dòng)畫就用這個(gè)動(dòng)作了Instantiate(m_skillFireBallParticle,m_transform.position,Quaternion.identity);GetComponent().clip=m_skillFireBallAudio;GetComponent().PlayOneShot(m_skillFireBallAudio);m_skillFireBallSkilled+=(1f/m_skillFireBallRank);/增加技能熟練度if(m_skillFireBallSkilled=100)/如果技能熟練度達(dá)到100,則升級(jí)技能等級(jí)m_skillFireBallRank+;m_skillFireBallSkilled=0;m_forward=m_transform.TransformDirection(Vector3.forward);if(Physics.Raycast(m_transform.position+Vector3.up,m_forward,out hit,10,m_layerMask)/計(jì)算前方是否打中了別人,火球術(shù)最多可以打中十米遠(yuǎn)的敵人m_nowAttackTarget=hit.collider.gameObject.GetComponent();StartCoroutine(WaitForAttack(Magic,0.5f,m_skillFireBallParticle2,m_bigAttackAudio,(int)(m_skillFireBallRank*m_attack*1f);/一級(jí)火球術(shù)只有人物一半的攻擊,攻擊隨技能等級(jí)遞增else/m_dfTxet.Text+=(你感覺身體一陣空虛,法力不足了.);public void SkillLightling()if (!m_animation.IsPlaying(Run)/跑動(dòng)的時(shí)候不允許施法int tempMagic = m_currentMagic - 15 - m_skilllLightlingRank;/計(jì)算消耗的法力if (tempMagic = 0)/如果法力足夠,就可以發(fā)動(dòng)魔法m_currentMagic = tempMagic;m_animation.Play(Magic);/這里法術(shù)的動(dòng)畫就用這個(gè)動(dòng)作了Instantiate(m_skillLightlingParticle, m_transform.position , Quaternion.identity);GetComponent().clip = m_skillLightlingAudio;GetComponent().PlayOneShot(m_skillLightlingAudio);m_skillLightlingSkilled += (1f / m_skilllLightlingRank);/增加技能熟練度if (m_skillLightlingSkilled = 100)/如果技能熟練度達(dá)到100,則升級(jí)技能等級(jí)m_skilllLightlingRank+;m_skillLightlingSkilled = 0;GameObject EnemyGa = GameObject.FindGameObjectsWithTag(Enemy);for (int i = 0; i EnemyGa.Length; i+)float dis = Vector3.Distance(EnemyGai.transform.position, m_transform.position);if (dis 7)Instantiate(m_skillLightlingParticle2, m_nowAttackTarget.transform.position , Quaternion.identity);m_nowAttackTarget = EnemyGai.GetComponent();m_nowAttackTarget.Damage(int)(m_skilllLightlingRank * m_attack * 1f);m_nowAttackTarget.m_changeMeTarget = m_transform;/StartCoroutine(WaitForAttack(m_animationMagic, 0.5f, m_skillLightlingParticle2, m_skillLightlingAudio, (int)(m_skilllLightlingRank * m_attack * 1f);else/m_dfTxet.Text += (你感覺身體一陣空虛,法力不足了.);#endregionIEnumerator WaitForAttack(string name,float timer,Transform particle,AudioClip m_audio,int attack)yield return new WaitForSeconds(timer);/print (ok!);if(m_animation.IsPlaying(name)Instantiate(particle,m_nowAttackTarget.transform.position+Vector3.up,Quaternion.identity);GetComponent().PlayOneShot(m_audio);m_nowAttackTarget.Damage(attack);m_nowAttackTarget.m_changeMeTarget=m_transform;#region UpLevelvoid UpLevel()if(m_experience=m_maxExperience)Instantiate(m_upLevelParticle,m_transform.position,Quaternion.identity);GetComponent().clip=m_upLevel;GetComponent().PlayOneShot(m_upLevel);m_maxLife+=Random.Range(2,10);m_maxMagic+=Random.Range(2,8);m_attack+=Random.Range(1,5);m_defense+=Random.Range(1,3);m_speed+=Random.Range(0.01f,0.08f);m_bigAttack+=Random.Range(0.0001f,0.002f);m_maxExperience*=2;m_level+;#endregionvoid On_ButtonUp(string buttonName) void On_ButtonDown(string buttonName)

溫馨提示

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

最新文檔

評論

0/150

提交評論