基于Unity3D的第三人稱射擊游戲_第1頁
基于Unity3D的第三人稱射擊游戲_第2頁
基于Unity3D的第三人稱射擊游戲_第3頁
基于Unity3D的第三人稱射擊游戲_第4頁
基于Unity3D的第三人稱射擊游戲_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1.1選題的背景與意義1.1.1選題的背景市場中速度增長最快的成長點(diǎn),是大眾和媒體所關(guān)注的一個焦點(diǎn)。2019年,中國的電子游戲行業(yè)同比2018年營業(yè)經(jīng)濟(jì)同比增長了27.1%。其中王者榮耀、荒括了大部分年齡段的人們。目前市場上的3D游戲多數(shù)以提供團(tuán)隊作戰(zhàn),加入聊Unity3D是可以應(yīng)用于虛擬游戲制作、虛擬實(shí)驗、建筑可視化、虛擬軍事這些具有綜合型性能的可以實(shí)現(xiàn)互動的創(chuàng)作工具。利用Unity3D引擎來開發(fā)的第三人稱3d游戲有著下面三個好處:1)可以一次開發(fā),用于多平臺發(fā)布:Unity是一個交互式游戲引擎,可以PC、IOS等23個平臺進(jìn)行發(fā)布,在開發(fā)成本和時間上有了很大程度節(jié)省,又可3)軟件功能十分齊全,可以大大縮短開發(fā)時間:優(yōu)于Unity3d引擎簡單易使用,更有AssetStore免費(fèi)提供開發(fā)所需的一些資源。能滿足人們的很多需方面也有舉足輕重的占有率。但盡管Unity3D引擎進(jìn)入中國已經(jīng)接近10年而且鮮事物,但本文研究基于Unity3D的3D射擊游戲開發(fā)由于能增加質(zhì)乏的研究資1.3國內(nèi)外發(fā)展現(xiàn)狀Unity3D是可以應(yīng)用于虛擬游戲制作、虛擬實(shí)驗、建筑可視化、虛擬軍事這目前,盡管國內(nèi)有了很多知名的3D游戲,但是,由于國內(nèi)3D技術(shù)起步較晚,在計師們對游戲的設(shè)計理念和游戲開發(fā)制作,國內(nèi)能夠運(yùn)用自主研發(fā)做大型3D游定的發(fā)展前途的??傮w來說,Unity3D在國內(nèi)已經(jīng)起步。Unity3d引擎于2009年支持window版本。在2010年,它開始支持android來擴(kuò)大其優(yōu)勢。它擁有十引擎在國內(nèi)外額使用十分廣泛。隨著3d虛擬現(xiàn)實(shí)技術(shù)的飛速發(fā)展,在很多的領(lǐng)域都得到了完美的應(yīng)用,虛擬現(xiàn)實(shí)是21世紀(jì)非常重要的科學(xué)發(fā)展技術(shù)。我們從直在奮起直追,3D虛擬現(xiàn)實(shí)場景模型的制作也正在前進(jìn)的道路上飛速發(fā)于可以成功做出一款運(yùn)行在PC客戶端的第三人稱射擊游戲,在這個游戲中,游2.1開發(fā)工具在這里詳細(xì)介紹一下Unity3D,它是由丹麥Unity公司開發(fā)的一個游戲開發(fā)工具,不僅具有十分強(qiáng)大的跨平臺發(fā)布能力,可以在23個平臺上進(jìn)行發(fā)布而且率。Unity3D是利用交互的圖型化開發(fā)環(huán)境為首要方式的游僅支持各種格式、多種腳本,還能進(jìn)行一鍵部署與渲染重寫。這就是Unity3D引擎與其他游戲編輯軟件的不同之處。因為它的游戲編輯器能夠運(yùn)行在IOS和2.2開發(fā)環(huán)境Unity3D(以下簡稱U3D)作為-款3D游戲引擎。1)擁有著異常優(yōu)秀的跨平臺系統(tǒng)。產(chǎn)品的開發(fā)速度和進(jìn)度因為各個平臺之間的差別而常常會受到影響,但unity引擎可以讓開發(fā)者所寫的程序在23中平2)unity3D以前提供三種語言來寫腳本,分別是C#、javascripts、boo腳本語言來書寫,但是從17年之后就只支持C#、boo腳本啦,所以現(xiàn)在市場上MicrosoftVisualC#(讀作Csharp)是一種常用的編程語言。C#語法很簡單、MicrosoftSQLSever,它還支持IBM,Oracle數(shù)據(jù)庫等。表2-1相應(yīng)配置表Table2-1Configura名稱軟件或硬件版本或配置的要求軟件DirectX驅(qū)動軟件3.0及以上個人電腦顯卡2G以上內(nèi)存3.系統(tǒng)的需求分析設(shè)計和可行性研究2)技術(shù)可行性3)經(jīng)濟(jì)可行性4)操作可行性5)法律可行性6)可行性研究結(jié)論合你的那一種。視圖分布選項在工具欄中的windows->Layouts里進(jìn)行選擇。Game圖4-1視圖選擇單的一種方法,只需要在工具欄中選擇File->NewScene就可以創(chuàng)建一個新的場景。之后點(diǎn)擊Gameobject->3DObject->Terrain從而得到一個地面,我們可圖4-2創(chuàng)建地面我們可以通過選擇不同的工具在地圖中進(jìn)行山體與丘陵的繪制,可以Height設(shè)置山體的高度值,通過BrushSize進(jìn)行筆刷的尺寸選擇方便我們進(jìn)行更細(xì)節(jié)的繪制。并且可以通過點(diǎn)擊Flatten進(jìn)行反向高度的選擇,我們可以通過它來進(jìn)行河流與湖泊的繪制圖4-3繪制工具圖建好一個平面之后我們需要的是將平面中間的部位運(yùn)用高度工具進(jìn)行凸出,因為我們制作的是小島地圖,所以我們要在場景面板中選擇地面對象,選擇完地具(PaintTexture)導(dǎo)入地形紋理資源并將紋理資源添加到紋理工具的紋理列圖4-4初步地形繪制Figure4-4PreliminarytopographicrFlag_1AirshipCargo_Pac.Cargo_Pac.Control_Flag_1圖4-5物體資源列表Figure4-5ObjectResource圖4-6局部地圖圖4-7整體地圖圖4-8人物模型11圖4-9添加剛體組件AirSpeedoO圖4-10添加組件Figure4-10AddingComp們首先要建立一個腳本叫做CameraFollow,保持默認(rèn)。接下來我們要建立三個1)被跟蹤對象(TransForm組件)。2)相機(jī)跟隨的平滑速度(數(shù)值越大相機(jī)反應(yīng)越快。3)相機(jī)與被跟蹤對象的相對位置,也叫偏移量。完后在Start函數(shù)里面,計算初始時刻,相機(jī)與被跟蹤對象的相對位置。在EusingSystem.UolleusingSystem.Collections.Generic:offset=transform.positiontransform.position=Vector3.Lerp(transform.position,pos,speed*Time.deltaTime圖4-11相機(jī)跟隨部分源碼Camera的FieldOfView讓其漸大漸小來實(shí)現(xiàn)。當(dāng)玩家瞄準(zhǔn)的時候,只需要將FieldOfView變小,停止瞄準(zhǔn)的時候,再將FieldOfView恢復(fù)成原來的大小圖4-12瞄準(zhǔn)鏡縮放效果CharacterController(角色控制器)是Unity3D中角色移動系統(tǒng)的基層組件,利用它可以獲取角色移動時碰撞面的法向量(groundNormal),與設(shè)置角色能夠行在上述基礎(chǔ)上可以看出1)人物的移動可以分為兩中角度進(jìn)行計算一種是水平方向的移動,也就是是實(shí)現(xiàn)人物角色的跳躍。2)對象旋轉(zhuǎn):對象旋轉(zhuǎn)的方式可以分為三種,沿水平面旋轉(zhuǎn)、沿豎直軸旋轉(zhuǎn)和自由旋轉(zhuǎn)。之所以將旋飾方式分類是為了適應(yīng)游戲中的不同情況。例如,玩家轉(zhuǎn)向后方然后將槍支指向天空這-動作中,玩家的轉(zhuǎn)向是沿水平面旋轉(zhuǎn),槍支的轉(zhuǎn)向是沿豎直軸旋轉(zhuǎn)。自由旋轉(zhuǎn)由于設(shè)計中不存在適合自由旋轉(zhuǎn)的物體,沒有得到體現(xiàn)。本游戲是通過Input.GetAxis來得到人物位置的橫縱坐標(biāo),并編寫新的函數(shù),設(shè)置一個移動速度,乘以時間間隔來獲取新的坐標(biāo)位置,并將人物移動到該位置。floath=Input.GetAxis(voidMove(floath,floatv){rb.MovePosition(transform.position+targetPos);voidTurning(){Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);if(Physics.Raycast(ray,outhit,camRayL,floorMask)){Vector3playerToMouse=hit.point-transform.position;QuaternionnewRot=Quaternion.LookRotation(playerToMouse):rb.MoveRotation(new圖4-13人物移動旋轉(zhuǎn)方法完后我們要進(jìn)行對人物主角添加動畫效果,在Inspector面板中找到圖4-14人物動畫效果添加Manager(Script5oO55◎0這樣就可以系統(tǒng)自動生成敵人并出現(xiàn)在地圖中,我們可以在敵人腳本中寫上曰曰白u(yù)singUnityEngine;publicfloatspaInstantiate(enemy,spawnPoint.positi圖4-16生成敵人Figure4-16GeneratiusingsysLem.CUileUusingUnityEngine.AI;privateTransformplayer;曰//Usethisforinitiaagent.destination圖4-17給敵人添加導(dǎo)航敵人設(shè)計的最后我們要給敵人添加生命值和攻擊力并設(shè)置其攻擊范圍和各種狀態(tài)下的動畫首先,建立一個EnemyController腳本,設(shè)置怪物的攻擊力,初始生命值,并設(shè)置其攻擊范圍,當(dāng)人物角色進(jìn)入其攻擊范圍時將對人物進(jìn)行攻if(timer>=attackSpeedif(player.GetComponent<PlayerController>().voidOnTriggerEnter(Colliderotherif(other.tag==“PlayvoidOnTriggerExit(Colliderother){if(other.tag==“Play我們在導(dǎo)入怪物模型的時候模型帶有特定動作的動畫,例如行走、攻擊、死亡、原地不動時的不同狀態(tài)的動畫,我們需要在unity里面找到圖4-19尋找動畫邏輯Figure4-19FindingAnimati在Inspector面板中找到Animator選項中的Controller點(diǎn)擊進(jìn)去,導(dǎo)入模型EnemyController腳本里編寫當(dāng)怪物出現(xiàn)不同怪物生命值低于0時就執(zhí)行死亡動畫的播放,并且在里面添加敵人收到攻擊傷害圖4-20給敵人添加動畫效果Figure4-20Addinganimationeffectsto圖4-21武器模型到以下幾個組件:核心代碼如下圖:曰曰//Usethisforinitializaline=GetComponent<LineRenderer>():timer+=Time.deltaTime;if(Input.GetButton("Fire1")&&timer>=timeBetweenBullet){圖4-22給武器添加組件Figure4-22AddingComponentstoWeapons}publicvoidDisableEf}line.SetPosition(0,transform.position)://從槍口開始shootRay=newRay(transform.position,transform.forward)://射線EnemyControllerenemyCtrl=shootHit.collider.GetComenemyCtrl.BeAttack(damageShoot,sh}line.SetPosition(1,shootR}圖4-23添加粒子特效圖4-24手雷模型Figure4-24GrenadeFreeAspectFreeAspect圖4-25手雷技能1)檢測兩個圓有沒有相交。2)檢測Y軸的距離是否小于球半徑+圓柱體高度的一半。這里是把球體也當(dāng)3)立方體跟圓柱體的碰撞圖4-26立方體和圓柱體的碰撞Figure4-26CollisionofCubesandCylinders計算方法是先找到舉行上里圓形最短距離u,然后比較u是否小于圓形的半圖4-27碰撞計算過程2.然后,把v減去h,負(fù)數(shù)的分量設(shè)置為0,就得到圓圖4-28碰撞計算結(jié)果Figure4-28CollisionCalcUnity3d中進(jìn)行碰撞檢測需要為物體先添加上膠囊體,在Unity3D引擎中其實(shí)都封裝好了一些Collider組件去進(jìn)行完物體的碰撞檢測之后我們還要在update函數(shù)里要對鼠標(biāo)進(jìn)行位置監(jiān)方法{}{//獲取服標(biāo)在相機(jī)中(世界中)的位置,轉(zhuǎn)煥為屏幕坐標(biāo)screenPosition=Camera.main.WorldToScreenPoint(transform.positiomousePositionOnScreenmousePositionOnScreen.z=screenPositionmousePositionInWorld=Camera.main.ScreenToWorldPoint(mousePosi//transform.position=mousePositionInWorld;//物體跟隨原標(biāo)軸移動transform.position=newVector3(mousePositionInWorld.x,transform.position.y,transform.position}圖4-29獲取鼠標(biāo)位置圖4-30添加技能特效圖4-31怪物攻擊人物Figure4-31MonsterAt表4-1制作血條步驟操作步驟一我們在Canvas下面創(chuàng)建一個Slider對象,右鍵點(diǎn)擊UI-Slider, 選中Slider,調(diào)整Slider的Scale大小X:0.02、Y:0Slider的位置以適應(yīng)角色對象。這里,我們注意到S個子物體,這里我們先去掉HandleSlideArea。步驟二接下來BackGround是我們Slider的背景,可以控制色,F(xiàn)illArea是我們血條的覆蓋色,在這個對象下面還有個Fill對 該對象有個Image組件,修改Imgae的Colo了,這里我們可以選擇自己的項目所適應(yīng)的顏色來選擇不同的顏我們回到Slider組件,我們再Inspector面這里,我們看到有個Directon來控制血條的方向,MinValue表示最小值,MaxValue表示

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論