基于Unity3d的跨平臺3D生存游戲設(shè)計(jì)與開發(fā)_第1頁
基于Unity3d的跨平臺3D生存游戲設(shè)計(jì)與開發(fā)_第2頁
基于Unity3d的跨平臺3D生存游戲設(shè)計(jì)與開發(fā)_第3頁
基于Unity3d的跨平臺3D生存游戲設(shè)計(jì)與開發(fā)_第4頁
基于Unity3d的跨平臺3D生存游戲設(shè)計(jì)與開發(fā)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

引言1.1論文的選題背景“基于Unity3D的跨平臺3D生存游戲設(shè)計(jì)與開發(fā)”是一款以Unity3D為平臺開發(fā)的FPS類游戲,目前市面上的游戲種類最受玩家歡迎的有FPS游戲(穿越火線、CS)和競技游戲(dota、英雄聯(lián)盟)這些游戲每天都有數(shù)十萬玩家在線對戰(zhàn),因此作品選擇了FPS射擊游戲作為游戲類型,同時(shí)現(xiàn)在的生存游戲也是大熱,在steam(全球最大的在線游戲售賣平臺)熱賣的前幾名最近被生存游戲所占據(jù),dayz、H1N1、sevendaystodie這些游戲都是什么受玩家好評,游戲也在不停的進(jìn)行更新,因此本作選擇了末日主題環(huán)境。游戲設(shè)定是核戰(zhàn)爭幸存下來的士兵為了謀求生存,參與戰(zhàn)斗獲得生存物資,游戲隨者玩家游戲進(jìn)度會(huì)有不同的游戲地圖供玩家探索,同時(shí)具有攻擊性的喪尸數(shù)量和種類也會(huì)增加,增加了游戲的難度,為了使玩家更多的體驗(yàn)游戲魅力,游戲設(shè)置了5個(gè)生命值,5次生命值都失去之后游戲重新開始,每次受到攻擊之后會(huì)降低血量,主要玩法是操控游戲中的人物在末世地圖中存活盡量長的時(shí)間,通過消滅喪尸來獲取積分,直至游戲人物血量到零時(shí)游戲結(jié)束,最后在游戲的積分系統(tǒng)中進(jìn)行排名。在游戲中加入了特別的北京音樂,這種音樂使低沉的,低沉的音樂有助于渲染游戲的主題氣氛,讓玩家更加有強(qiáng)烈的代入感。根據(jù)Unity官方在8月公布的報(bào)告:Unity引擎占據(jù)全功能游戲引擎市場45%的份額。Unity全球用戶已經(jīng)超過330萬人,每月活躍用戶數(shù)高達(dá)60萬。全世界有6億的玩家在玩使用Unity引擎制作的游戲,用Unity創(chuàng)造的應(yīng)用和游戲目前的累計(jì)下載量達(dá)到了87億次。Unity中國區(qū)在3D手機(jī)游戲市場的占有率已經(jīng)達(dá)到75%,超越日本成為世界第一。也就是說在最暢銷的前100款3D手機(jī)游戲中,平均每10款就有7.5款是使用Unity引擎制作。Unity目前的開發(fā)者注冊人數(shù)已經(jīng)超過330萬,在今年的4月份,中國區(qū)的開發(fā)者數(shù)量已經(jīng)超越美國,成為全球第一。Unity的每月全球活躍用戶超過60萬。中國區(qū)每個(gè)月Unity編輯器被使用的次數(shù)總和高達(dá)180萬次,居全球首位。美國以150萬次使用居全球第二。從電影的角度,3D也延展著游戲。Unity現(xiàn)在在游戲行業(yè),通過用我們的工具創(chuàng)造出游戲的內(nèi)容,其實(shí)我們是市場的領(lǐng)導(dǎo)者。這家公司11年的歷史,讓好多款游戲變成了3D款,同時(shí)因?yàn)椤栋⒎策_(dá)》成就影視行業(yè),3D眼鏡有一個(gè)缺陷,第一不能跟電影互動(dòng),第二成本投入比較大。那么游戲是互動(dòng)性的,從端游、頁游到手游,游戲本身是非常互動(dòng)性的,但游戲還是1跟1的交互環(huán)境。怎么打通這兩個(gè)行業(yè),現(xiàn)在市場上還在觀摩,但是我們相信通過Unity的技術(shù),能有實(shí)力能把影視制作場景帶到游戲互動(dòng)的角度,把兩個(gè)因素結(jié)合在一起。我們在全球有30萬開發(fā)者,我們通過互聯(lián)網(wǎng)的方式把300萬開發(fā)者的資源正和島一起變成了線上最大的開發(fā)者商城,因?yàn)檫@些資源的分享可以讓更多的開發(fā)者降低門檻,開發(fā)他的內(nèi)容。現(xiàn)在國內(nèi)的開發(fā)者已經(jīng)是全球的四分之一,所以我們也勵(lì)志要最好的支持國內(nèi)的開發(fā)者。簡單介紹一下Unity8塊業(yè)務(wù):技術(shù)支持、開發(fā)插件、教育認(rèn)證、發(fā)行服務(wù)、基金孵化、行業(yè)解決方案。好多開發(fā)者,創(chuàng)業(yè)者,一年多前找到我說:你能在技術(shù)上幫我,但你能在實(shí)際情況下,比如說資金、物業(yè)、房子來幫助我,所以我們跟普陀區(qū)合作,希望通過園區(qū)物業(yè)支持,再加上Unity基金支持,可以支持到國內(nèi)開發(fā)者。Unity大中華區(qū)致力于為開發(fā)者提供一站式服務(wù),從學(xué)習(xí)開發(fā)技能到游戲及應(yīng)用的開發(fā)到游戲及應(yīng)用的發(fā)行,甚至對游戲?qū)?yīng)用運(yùn)營支持的全方位服務(wù),進(jìn)一步擴(kuò)大中國開發(fā)的數(shù)量和行業(yè)影響力。1.2論文所做的工作深入了解游戲設(shè)計(jì)與開發(fā)相關(guān)領(lǐng)域的知識基礎(chǔ)的3DMAX使用熟練c#、JavaScript語言場景搭建能力的掌握FPS游戲側(cè)重點(diǎn)的強(qiáng)化具備初步的閱讀和理解相關(guān)中英文文獻(xiàn)的能力游戲流程的設(shè)計(jì)游戲動(dòng)畫設(shè)計(jì)游戲關(guān)卡設(shè)計(jì)游戲內(nèi)容設(shè)計(jì)游戲走向設(shè)計(jì)游戲可玩性設(shè)計(jì)發(fā)布游戲2可行性分析2.1市場可行性目前最火的兩個(gè)引擎一個(gè)是cocos2d-x另外一個(gè)就是Unity3D。這倆個(gè)游戲引擎都各有特色。Cscso2d-x主要開發(fā)2D游戲,它的編程語言為C++,這種語言的編譯時(shí)間很長,工作量變得很大。Unity3D可以開發(fā)2D游戲也可以開發(fā)3D游戲游戲編輯器主要是5大塊分別是,Hierarchy、Project、Console、Inspector、Sence,這五大塊面板組成了開發(fā)主體,相對于Cocos2d它更加的親切,開發(fā)編程過程中代碼大兩室C#和JavaScript這倆種語言,它們的優(yōu)點(diǎn)是編譯時(shí)間短速度快,學(xué)習(xí)簡單,而且Unity3D由于他的免費(fèi)性,有大量的開發(fā)公司和個(gè)人使用這款軟件,網(wǎng)絡(luò)上有很多現(xiàn)成的教學(xué)和資源可以用來學(xué)習(xí),最后一點(diǎn)是Unity3D可以發(fā)布多個(gè)平臺,簡潔而又方便了多次開發(fā)多個(gè)版本,因此選擇Unity3D開發(fā)勢在必行。在一個(gè)末日城鎮(zhèn)的場景之中,的玩家控制的角色瑞恩通過鍵盤的WASD等鍵位控制移動(dòng),通過鼠標(biāo)控制視角,左鍵為射擊,通過射擊喪尸尸來保全自己的生命,喪尸是固定時(shí)間段刷新的,根據(jù)每次擊殺的時(shí)間來計(jì)算下次尸潮的數(shù)量,每次在擊殺完尸潮之后,在保證自己安全的前提下,可以探索城鎮(zhèn),獲取武器、彈藥等補(bǔ)給品,整體設(shè)計(jì)在之后可能會(huì)出現(xiàn)可交互的物品,理想的游戲是Minecraft或者sevendaystodie這樣的自由度特別高的游戲,不需要設(shè)計(jì)一個(gè)固定的路線來告訴玩家怎么去玩,讓玩家發(fā)現(xiàn)這個(gè)游戲的高自由度,喜歡做什么就做什么,這是本游戲的樂趣。在現(xiàn)在游戲市場中中,主要分為手機(jī)平臺游戲(ios、android)、pc客平臺游戲(客戶端游戲、網(wǎng)頁游戲)、以及專用游戲設(shè)備(xbox、ps4),大部分比較火的游戲都會(huì)分別開發(fā)幾個(gè)版本以適用于各種平臺,這種開發(fā)方式無疑是很耗費(fèi)時(shí)間和精力的,使用Unity3D開發(fā)的游戲可跨平臺的使用。現(xiàn)今市場上最為熱火的游戲是第一視角的生存游戲,比如Minecraft、星露谷物語…這些開放性世界的游戲,一面市就獲得了不凡的市場反應(yīng),玩家都對于其有很高的評價(jià)。因此決定做一款此類型的游戲。2.2技術(shù)可行性在技術(shù)可行性方面:Unity3D有詳細(xì)的開發(fā)說明書,在開發(fā)說明書中詳細(xì)的介紹了每個(gè)語句的使用方式,這樣使開發(fā)少了很多困難,不用浪費(fèi)大量的時(shí)間去嘗試語句的使用方式,便捷了開發(fā)步驟。網(wǎng)絡(luò)上也有很多Unity3D開發(fā)的著名小制作游戲可以用來借鑒學(xué)習(xí)。并且運(yùn)用了unity提供的豐富的API資源,使用JavaScript語言使編程效率提高。并使用3DMAX進(jìn)行的建模工作,完成游戲中的建筑模型,人物模型和物體模型等。本款游戲沿用了許多游戲的經(jīng)典元素。如圖1是給player添加特性。圖1player特性2.3游戲策劃其次就是總結(jié)信息著手準(zhǔn)備寫立項(xiàng)說明書,立項(xiàng)說明書中需要具備盈利方式和運(yùn)營的方案這倆個(gè)關(guān)鍵點(diǎn),把能拿出來的拿給投資人看獲取投資。最后是整個(gè)項(xiàng)目策劃的文檔一定要寫的完美,美術(shù)工作人員和程序員以及運(yùn)營工作人員可以通過文檔去了解這個(gè)項(xiàng)目,有助于項(xiàng)目的開發(fā)和人員的溝通協(xié)調(diào)。下圖2為工作環(huán)節(jié)。文檔游戲開發(fā)游戲策劃文檔游戲開發(fā)游戲策劃產(chǎn)品創(chuàng)意產(chǎn)品創(chuàng)意玩家玩家游戲運(yùn)營可行性分析游戲運(yùn)營可行性分析圖2是游戲工作環(huán)節(jié)表1人員分配開發(fā)人員主要職責(zé)游戲主策劃游戲的主要負(fù)責(zé)人,負(fù)責(zé)構(gòu)思整個(gè)游戲的走向和協(xié)調(diào)開發(fā)游戲,是這個(gè)開發(fā)工作中最中心的人物游戲系統(tǒng)策劃主要負(fù)責(zé)游戲的一些系統(tǒng)規(guī)則的編寫游戲關(guān)卡策劃。負(fù)責(zé)游戲中關(guān)卡的時(shí)間、難度、通關(guān)方式的設(shè)計(jì)游戲劇情策劃負(fù)責(zé)游戲任務(wù)情節(jié)的設(shè)計(jì)與編寫,如ARPG游戲中主線任務(wù)和支線人物,F(xiàn)PS游戲中的新手教學(xué)任務(wù),對于RPG游戲來講他就是整個(gè)游戲的靈魂游戲腳本策劃人物的攻擊方式、速度移動(dòng)、各個(gè)模組直接的耦合靠的就是腳本實(shí)現(xiàn),它充當(dāng)了游戲之中各個(gè)部分的紐帶游戲數(shù)值策劃責(zé)游戲中HP、MP、CD等屬性值的計(jì)算設(shè)計(jì)平衡對于一個(gè)游戲來說開發(fā)流程也是重中之重,一個(gè)完整的開發(fā)流程可以使游戲開發(fā)過程更加清晰明了。如圖3可行性分析可行性分析項(xiàng)目立項(xiàng)項(xiàng)目立項(xiàng)策劃文檔策劃文檔原型展示原型展示商業(yè)計(jì)劃說明書技術(shù)設(shè)計(jì)文檔游戲背景設(shè)定商業(yè)計(jì)劃說明書技術(shù)設(shè)計(jì)文檔游戲背景設(shè)定引擎編寫市場宣傳原畫設(shè)計(jì)引擎編寫市場宣傳原畫設(shè)計(jì)服務(wù)人員培訓(xùn)客戶服務(wù)游戲運(yùn)營及銷售代碼編寫音效和美術(shù)腳本編寫服務(wù)人員培訓(xùn)客戶服務(wù)游戲運(yùn)營及銷售代碼編寫音效和美術(shù)腳本編寫游戲測試游戲測試圖3開發(fā)流程3.作品架構(gòu)與人物設(shè)計(jì)3.1作品架構(gòu)系統(tǒng)的組成是游戲內(nèi)容的一部分,他的作用是明確游戲內(nèi)容,如圖4游戲游戲音效場景人物音效場景人物建筑模型,道具模型槍聲,背景音地圖,小地圖建筑模型,道具模型槍聲,背景音地圖,小地圖移動(dòng),駕駛攻擊圖4系統(tǒng)組成3.2角色移動(dòng)腳本系統(tǒng)是三維立體游戲開發(fā)的組成部分之一,相對于人體來說就是人類的大腦負(fù)責(zé)行動(dòng)和思考,腳本系統(tǒng)是游戲之中各部分之間的強(qiáng)力齒輪,它存在于整個(gè)游戲中相當(dāng)于人類的骨骼,如果人類沒有骨骼那么他將無法行走、活動(dòng),游戲沒有腳本就會(huì)使游戲無法正確的運(yùn)行。當(dāng)腳本被寫好之后,它會(huì)運(yùn)行于虛擬機(jī)之中,執(zhí)行結(jié)果是由虛擬機(jī)打包發(fā)送給資源文件進(jìn)行執(zhí)行.游戲在編寫完腳本之后,當(dāng)游戲出現(xiàn)了運(yùn)行錯(cuò)誤,只需要查看、更改游戲腳本的邏輯性,不需要整個(gè)的拆分游戲檢查錯(cuò)誤,這通過這種方式把各部分模塊化,游戲的開發(fā)更加的清晰明了高效率。每當(dāng)游戲之后更新新的武器、車輛、裝備、…這些資源的時(shí)候,只需要重新添加資源素材就可以,不需要對游戲的整體來進(jìn)行改變。本游戲代碼使用JavaScript編寫,Unity3D支持C#和JavaScript倆中,相比來說JavaScript更加的簡潔,可以提高開發(fā)效率,因此選用了JavaScript進(jìn)行開發(fā),編程之中調(diào)用了大量的Unity自帶API,這些API從unity自帶的說明書之中可以找到,由于是全英文的閱讀方面有些難,舊版本的API有些被廢棄了,也造成了很多的不便。游戲中使用了unity的自由視角,在移動(dòng)的過程中,攝像機(jī)會(huì)保持與玩家間的一定距離,然后跟隨角色進(jìn)行移動(dòng)。在自由視角中玩家可以依照自身坐標(biāo)系,向著東南西北四個(gè)方向移動(dòng),每當(dāng)玩家按鼠標(biāo)右鍵的時(shí)候,游戲世界的角色就會(huì)繞著Y軸進(jìn)行相同方向相同角度的旋轉(zhuǎn)。如圖5代碼是人物移動(dòng)代碼。using

UnityEngine;

using

System.Collections;

[AddComponentMenu("Game/Player")]

public

class

Player

:

Player

{

//

組件

public

Transform

m_transform;

CharacterController

m_ch;

//

角色的移動(dòng)速度

float

P_movSpeed

=

5.0f;

//

重力

float

P_gravity

=

2.0f;圖5游戲開發(fā)主面板3.3人物視角人物的視角切換在2D游戲之中是不存在的,在3D游戲之中一般采用歐拉角的原理進(jìn)行視角的轉(zhuǎn)換。游戲中歐拉角的值指的是Vector3類型的值,3個(gè)坐標(biāo)值是指分別繞著他們自身的軸去繞x,y,z度。圖3這段代碼的意思是根據(jù)鼠標(biāo)的位置來旋轉(zhuǎn)物體來實(shí)現(xiàn)玩家對物體的觀察,通過自動(dòng)獲取輸入軸的辦法,可以快速獲得鼠標(biāo)移動(dòng)的方向,然后實(shí)現(xiàn)對于物體的旋轉(zhuǎn)控制。在Unity3D中可以通過Edit->ProjectSetting->Input這樣的步驟來查看程序中的坐標(biāo)軸名稱.所以,這個(gè)值最直觀的展現(xiàn)形式是可以允許直接用一個(gè)三維向量的形式來修改一個(gè)物體的角度.在unity中可以用maincamera來表示玩家控制的角色,通過對歐拉角的運(yùn)用,結(jié)合腳本來實(shí)現(xiàn)場景內(nèi)人物的視角轉(zhuǎn)換。在游戲中可以通過鼠標(biāo)的移動(dòng)來觀察周圍的環(huán)境。圖6人物視角原理。圖7是人物視角物體空間坐標(biāo)物體空間坐標(biāo) Model矩陣裁剪空間坐標(biāo)世界坐標(biāo)裁剪空間坐標(biāo)世界坐標(biāo)照相機(jī)坐標(biāo)照相機(jī)坐標(biāo)View矩陣projection矩陣

圖6視角原理

Transform

m_camTransform;

//

攝像機(jī)旋轉(zhuǎn)的角度

Vector3

m_camRot;

//

攝像機(jī)的高度

float

m_camHeight

=

1.7f;

//

生命值

public

int

m_life

=

5;

void

Control()

{

//獲取鼠標(biāo)移動(dòng)的距離

float

rh

=

Input.GetAxis("Mouse

X");

float

rv

=

Input.GetAxis("Mouse

Y");

//

旋轉(zhuǎn)攝像機(jī)

m_camRot.x

-=

rv;

m_camRot.y

+=

rh;

m_camTransform.eulerAngles

=

m_camRot;

//

使玩家控制的角色的面向方向與攝像機(jī)保持一致

Vector3

camrot

=

m_camTransform.eulerAngles;

camrot.x

=

0;

camrot.z

=

0;

m_transform.eulerAngles

=

camrot;

float

xm

=

0,

ym

=

0,

zm

=

0;

//

重力運(yùn)動(dòng)

ym

-=

m_gravity*Time.deltaTime;

//

上下左右運(yùn)動(dòng)圖7人物視角3.4人物攻擊人物的射擊對于FPS游戲是重中之重,所有著名的FPS游戲都是擁有完美的射擊判定的,Unity3D建立射擊系統(tǒng)比較方便,編寫腳本完成射擊的基本腳本之后,可以調(diào)節(jié)射擊的聲音,彈道,特效…這些效果將使游戲更加豐滿。游戲通過WASD四個(gè)按鍵進(jìn)行移動(dòng),空格鍵是跳躍,鼠標(biāo)左鍵射擊,R鍵換子彈,這些便捷的操作方式是搬用了現(xiàn)在大多FPS游戲的射擊套路,以求讓玩家更快的投入游戲之中,而不是糾結(jié)在操作教學(xué)上,人物的攻擊采用探針方式,每次射擊之后會(huì)判定是否攻擊到喪尸,若攻擊到,喪尸的血量會(huì)減少,子彈減少。若沒有攻擊到,喪尸血量不減少,子彈減少。這是射擊腳本的一部分:if(Input.GetButtonDown(“Fire1”))首先然后要檢測玩家是否按了開火鍵,“左鍵”映射的是鼠標(biāo)左鍵和當(dāng)前配置的鍵盤上的按鍵(可以通過主菜單欄的Editor>ProjectSettings>Input設(shè)定){varinstantiatedProjectile:Rigidbody=Instantiate(projectile,transform.position,transform.rotation);子彈是在現(xiàn)實(shí)中是有物理性質(zhì)的,因此在游戲中賦予它Rigibody特性,若果要用Unity3D產(chǎn)生一個(gè)新的物體,需要用到一個(gè)函數(shù)Instantiate,它具有一些特殊的參數(shù)支持。其中的具體運(yùn)用方法可以參考開發(fā)手冊,我們把這幾個(gè)參數(shù)設(shè)置好,那么就可以測試游戲的射擊情況了,這幾個(gè)參數(shù)是物體本身、物體的空間位置還有物體的旋轉(zhuǎn)特性,發(fā)射的物體可以自己選擇,也可通過腳本去選擇,開發(fā)的過程中,選擇了最普通的槍擊效果,因此在實(shí)現(xiàn)的時(shí)候,只能看到很簡單的槍擊效果,如果想要更好的效果可以通過參數(shù)的設(shè)計(jì)來更新新的效果,這是極其方便的,腳本需要關(guān)聯(lián)到槍械上,這樣可以使槍被賦予游戲數(shù)值,實(shí)現(xiàn)了武器的發(fā)射情況。instantiatedProjectile.Vellocity=transform.TransformDirection(Vector3(0,0,speed));//槍口transform

Transform

m_muzzlepoint;

//

射擊

public

LayerMask

m_layer;

//

粒子效果

public

Transform

m_fx;

//

射擊音效

public

AudioClip

m_audio;

//

射擊間隔時(shí)間

float

m_shootTimer

=

0;

//

Use

this

for

initialization

void

Start

()

{

//

獲取組件

m_transform

=

this.transform;

m_ch

=

this.GetComponent<CharacterController>();

//

獲取攝像機(jī)

m_camTransform

=

Camera.main.transform;

//

設(shè)置攝像機(jī)初始

Vector3

pos

=

m_transform.position;

pos.y

+=

m_camHeight;

m_camTransform.position

=

pos;

m_camTransform.rotation

=

m_transform.rotation;

m_camRot

=

m_camTransform.eulerAngles;

Screen.lockCursor

=

true;

//

查找muzzlepoint3.5AI設(shè)計(jì)游戲之中的AI(非玩家之外的景觀、喪尸…)對于游戲很重要游戲的AI設(shè)計(jì)有倆種,第一種是在固定的位置循環(huán)走動(dòng)如果主角在喪尸為半徑的2的范圍內(nèi)或者被攻擊會(huì)主動(dòng)攻擊主角,第二種是每隔5分鐘會(huì)有一定量的喪尸刷新在主角的附近,對主角進(jìn)行攻擊,攻擊量的大小會(huì)隨著游戲的進(jìn)度進(jìn)行加強(qiáng)。為了更好地完成游戲的開發(fā)。針對游戲本身需求,和市場需求,面向動(dòng)作的人工智能是必不可少的,設(shè)計(jì)的AI人物有倆種控制方式,第一種是被動(dòng)控制,當(dāng)他在沒有遇到觸發(fā)條件之前保持的固定游走或靜止站立。第二種是面對觸發(fā)條件之后才去的措施,一般情況下,作為喪尸在檢測到附近的玩家,或者遭受玩家攻擊的時(shí)候,攻擊玩家這種主動(dòng)方式就會(huì)代替被動(dòng)控制這種邏輯方式。如圖圖8AI站位設(shè)計(jì)。圖8AI站位設(shè)計(jì)

public

void

OnDeath()

{

//更新喪尸數(shù)量

m_spawn.m_enemyCount--;

//

加100分

GameManager.Instance.SetScore(100);

//

銷毀

Destroy(this.gameObject);

}

//

Update

is

called

once

per

frame

void

Update

()

{

//

的角色生命為0停止

if

(m_player.m_life

<=

0)

return;

//

獲取當(dāng)前動(dòng)畫狀態(tài)

AnimatorStateInfo

stateInfo

=

m_ani.GetCurrentAnimatorStateInfo(0);

//

如果處于待機(jī)狀態(tài)

if

(stateIHash

==

Animator.StringToHash("Base

Layer.idle")

&&

!m_ani.IsInTransition(0))

{

m_ani.SetBool("idle",

false);

//

待機(jī)一定時(shí)間

m_timer

-=

Time.deltaTime;

if

(m_timer

>

0)

return;表3AI設(shè)定參數(shù)可輸入的條件種類備注怪物智能被動(dòng)攻擊主動(dòng)攻擊有條件的主動(dòng)攻擊可重復(fù)選擇種類普通喪尸BOSS無技能暫無暫無逃跑與否不逃跑不逃跑怪物生成每隔5分鐘會(huì)有怪物群刷新隨著時(shí)間的流逝喪尸數(shù)量和質(zhì)量都會(huì)增加。喪尸生成using

UnityEngine;

using

System.Collections;

[AddComponentMenu("Game/EnemySpawn")]

public

class

EnemySpawn

:

MonoBehaviour

{

//

喪尸的Prefab

public

Transform

m_enemy;

//生成的喪尸數(shù)量

public

int

m_enemyCount

=

0;

//

喪尸的最大生成數(shù)量

public

int

m_maxEnemy

=

3;

//

生成喪尸的時(shí)間間隔圖10喪尸模型4模型的設(shè)計(jì)4.1材質(zhì)的選擇游戲之中運(yùn)用了大量的材質(zhì)包和道具包,擁有種類繁多的道具材料,這些道具可以給它加上特性,如物理特性剛體,碰撞等特性,這些特性可以使物體受到重力影響,實(shí)現(xiàn)擬真的效果。Unity3D引入了一種叫材質(zhì)球的功能組件,材質(zhì)包的創(chuàng)建是在一個(gè)球形的材質(zhì)球中加各種的顏色,,在模型上把模型球拖入模型位置上,它會(huì)自動(dòng)給模型添加上材質(zhì),材質(zhì)顏色的選擇是一項(xiàng)巨大的工作,根據(jù)選擇的游戲主題,選擇了暗色系的材質(zhì),模型上都是破敗的建筑、車輛…這樣更加的真實(shí),有助有游戲的整體效果涂材質(zhì)球的使用,材質(zhì)球的使用大大方便了建模的工序,建模的工作大大減少,就像Photoshop中的油漆桶工具一樣,只要一點(diǎn)擊,整個(gè)圖都是該種顏色。市面上大部分的游戲開發(fā)都用到了該種功能,它對于開發(fā)團(tuán)隊(duì)和公司的重要意義是,減少了美工團(tuán)隊(duì)的工作量,并且還節(jié)省了游戲制作的周期長度、公司的開發(fā)費(fèi)用也減少了。如圖11是材質(zhì)包。圖11物體材質(zhì)4.2游戲場景建造建模軟件的選擇是需要建模的開發(fā)中特別重要的,3DMAX功能特別強(qiáng)大,它的全稱是3DStudioMax,它在這以前是在DOS系統(tǒng)下的3DSTUdio這個(gè)系列的軟件,DISCREET公司開發(fā)了這款軟件,它是一款如MAYA般強(qiáng)大三維渲染制作軟件,被游戲公司大量的使用,同時(shí)它在影視制作中也大放異彩,它通過它的動(dòng)畫制作能力,被各大影業(yè)公司使用,如環(huán)球影業(yè)、索尼影業(yè)等,這些公司中有點(diǎn)使用它做動(dòng)畫CG,有的是給電影加特效,如絕地武士、星球大戰(zhàn)…這些大作中都運(yùn)用了3DMAX這款軟件。它的圖像分割技術(shù)及其的優(yōu)秀,本作游戲的建模大量的使用3DMAX來進(jìn)行建模,開發(fā)過程中學(xué)習(xí)了大量的知識,最后制作出一些粗糙的建筑模型。使用該軟件把需求的人物制作為素材,以供游戲使用,其中每個(gè)部位的骨骼都要精準(zhǔn),才能使最后的人物行動(dòng)自如不會(huì)產(chǎn)生問題。游戲的地形也需要進(jìn)行精心的設(shè)計(jì)才能使游戲更加的豐滿。制作一個(gè)基本的地形場景,需要構(gòu)造一個(gè)地形圖,再給地形圖上貼上材質(zhì),再次之后烘焙會(huì)使畫面質(zhì)量更加好看。3DMX建模完成后可導(dǎo)出3ds格式的文件,導(dǎo)出的文件可被unity3d識別,游戲場景對于一個(gè)游戲來說至關(guān)重要,F(xiàn)PS生存游戲強(qiáng)調(diào)的生存,因此營造了一個(gè)陰沉、昏暗的游戲世界,在這個(gè)游戲中玩家控制的角色在軍事基地中,周圍圍繞了一圈的鐵皮圍欄,在角落里是一些瞭望塔,玩家控制的角色周圍是一圈的建筑模型,被貼上了破敗的材質(zhì),還有一些家具,充分營造了一個(gè)末日環(huán)境,在軍營之外是更加廣闊的世界。如圖12所示。圖12全局地圖4.3特殊音效游戲聲音會(huì)使玩家更有沉浸感,。在游戲中背景音樂是一定要有的,一方面可以增加游戲可玩性,讓用戶可以持續(xù)玩下去;另一方面增加游戲真實(shí)感,本作中游戲全局擁有背景音樂,在進(jìn)入特殊房間內(nèi)的時(shí)候,會(huì)有特殊房間音效,營造一個(gè)恐怖、壓抑的環(huán)境,游戲角色也擁有獨(dú)立的槍聲和腳步聲音。本作中添加了大量的音效元素,在不同的天氣狀況下,會(huì)有不同背景的聲音,比如在下雨天,會(huì)有下雨的音效。Unity3D支持多種格式的音效,比如mp3格式和wma格式,這些格式在網(wǎng)絡(luò)上有很多素材,但是很多并不符合我們的需求,需要下載下來之后進(jìn)行一定的剪輯制作,最后形成需要的音效。添加音效有倆個(gè)組件,一個(gè)是AudioListener它的作用是聽取聲音。通過這個(gè)組件可以監(jiān)聽,就像監(jiān)視器一樣,另外一個(gè)就是就相當(dāng)于人的嘴巴AudioSource,這個(gè)組件是用來添加到創(chuàng)建的物體上的,可以是建筑場景,也可以是一個(gè)人物角色。Unity可以支持任何物體添加音樂效果。首先在hier面板上prefab預(yù)制中添加一段音頻,把需要的音效作為外部變量添加到預(yù)制件中,然后添加GUI,它的作用是作為一個(gè)準(zhǔn)心。準(zhǔn)心的作用對于一個(gè)FPS來講是必不可少的。創(chuàng)建一個(gè)相關(guān)的腳本,控制音量的出現(xiàn)方式,這樣可以實(shí)現(xiàn)我們的設(shè)計(jì)預(yù)期,比如在外部環(huán)境下是音效1,進(jìn)入了房價(jià)是音效2.這樣的切換就是腳本實(shí)現(xiàn)的。Audiosource可以添加到任何物體上,這個(gè)組件可以調(diào)節(jié)聲音的大小范圍…效果,熟練的使用這個(gè)組件是游戲開發(fā)必備的基本素養(yǎng)。如圖13是音效設(shè)置面板。圖13音效設(shè)置varcrosshairTexture:Texture2D;varposition:Rect;functionStart(){position=Rect((Screen.with-crosshairTexture.with)/2,(Screen.height-crosshairTexture.height)/2,crosshairTexture,crosshairTexture.height);}functionOnGUI(){Gui.DrawTexture(position,crosshairTexture);}剪切好的音效素材放在游戲工程中的一個(gè)單獨(dú)文件夾下,多準(zhǔn)備幾段音效以備不時(shí)之需,音效素材的好壞直接關(guān)系到游戲的整體質(zhì)量,因此在游戲開發(fā)過程中把關(guān)音效是要花時(shí)間去做的,音效的素材是可以自己制作,也可從網(wǎng)上搜集的,但是由于可能和預(yù)期不符,后期加工是要做的,可以用Adobe的音頻制作軟件來制作,這款軟件的功能也是特別的強(qiáng)大,操作方面也比較簡單,本作的音效制作正是用的這款軟件。如圖12是音效素材。圖12音效素材4.4道具模型根據(jù)游戲開發(fā)的規(guī)模、特點(diǎn)以及開發(fā)人員的工具、條件,本文主要利用網(wǎng)絡(luò)貼圖,釆用3DMax作為三維建模工具,利用Photoshop對采集素材進(jìn)行紋理處理,將模型導(dǎo)入U(xiǎn)nity中作為開發(fā)引擎,并將模型導(dǎo)入引擎。游戲開發(fā)構(gòu)建過程中,包括使用3DMax,對下層數(shù)據(jù)進(jìn)行耦合,讓得原始數(shù)據(jù)和圖像數(shù)據(jù)之間具有一定的關(guān)聯(lián)性。物體模型使用3DMAX進(jìn)行基礎(chǔ)建模,通過對物體的雕琢、組成形成了房屋等物體,這些物體加上一些unity3d之中的特性就可以讓他擁有在游戲中的特性,比如剛體,音樂等信息。圖10是物體模型。游戲開發(fā)構(gòu)建過程中,包括使用3DMax,對下層數(shù)據(jù)進(jìn)行耦合,使得原始數(shù)據(jù)和圖像數(shù)據(jù)具有一定的關(guān)聯(lián)性。圖13物體模型游戲采用開源三維地圖作為源數(shù)據(jù)地圖,游戲建筑的大小、位置、面積都是基于這張三維地圖。而在地形層,區(qū)別于其他游戲場景,具有唯一性元件層基本依賴3DMax的建模方式,對各種儀器和設(shè)備進(jìn)行手繪以及功能賦予,同時(shí)部分元件能夠使用3DMax模型組件,在一定程度上減少了工作量。而附近區(qū)域的平面圖能夠完整反應(yīng)其名稱、關(guān)聯(lián)關(guān)系而建設(shè)層主要依賴地形層的地理信息,能夠比較好地模擬建筑層。如圖14是房屋模型,圖15是樹模型。圖14房屋模型圖15樹模型Fbx這種格式的模型廣泛存在游戲制作中,Unty3D支持使用Fbx的模型,F(xiàn)Bx導(dǎo)入到Unity3D中會(huì)生成相對應(yīng)的材料,這些材料是做成Unity3D中各種模型的基本素材,fbx的正確使用將使工作效率得以提升,反復(fù)的學(xué)習(xí)模型的制作與布置會(huì)提高游戲背景的質(zhì)量,進(jìn)而提高了整個(gè)游戲的質(zhì)量。游戲中的模型制作布置是基于普通FPS游戲進(jìn)行設(shè)計(jì)布置的,對于功能性建筑和普通建筑都有加入,生活中的一些物體也有加入,這些物體的加入豐富了游戲生活,在以后的開發(fā)中還可以加入主角與物體的互動(dòng),比如游戲主角可以拿起杯子喝水,舉起酒桶攻擊喪尸…這些互動(dòng)方式將豐富游戲的玩法。如圖16為游戲中的輪胎。圖16輪胎4.5天空盒天空盒就是unity游戲之中的天空,Unity自帶了許多的天空盒,有星空、白天、夜晚、黃昏…Unity3D官方網(wǎng)站上發(fā)布了一些免費(fèi)的天空盒子,天空盒子可以讓游戲的天空變得豐富多彩,首先導(dǎo)入Skyboxes這個(gè)素材包,在導(dǎo)入之后在相對應(yīng)的資源面板下可以看到相應(yīng)的天空盒子素材,添加天空盒子到游戲中有倆種方式可以實(shí)現(xiàn),其中一種是在編輯的渲染設(shè)定中選擇添加天空盒子。另外一種是在Skyboxes材質(zhì)中點(diǎn)選一個(gè)材質(zhì)球去添加到游戲場景中,也可以實(shí)現(xiàn)這樣的天空盒子效果。如圖17是天空盒。Fog(是否啟用迷霧效果)FogColor(迷霧的顏色)FogMode(迷霧模式FogDensity(迷霧濃度)LinearFogStart(線性迷霧起始距離)LinearFogEnd(線性迷霧終止距離)。SkyboxMaterial(天空盒材質(zhì))HaloStrength(光環(huán)強(qiáng)度)FlareStrength(光暈強(qiáng)度)HaloTextrue(光環(huán)貼圖)SpotCookie(光斑)AmbientLight(環(huán)境光)圖17天空盒5作品的實(shí)現(xiàn)5.1射擊FPS游戲是槍戰(zhàn)游戲,所以本作游戲中運(yùn)用了大量的時(shí)間去設(shè)計(jì),調(diào)整游戲的射擊操作感游戲中所持槍械為美軍制式武器M16,在游戲的其他地方也有其他的武器可以供切換選擇,玩家控制的角色擁有5次生命,在被喪尸攻擊后會(huì)掉血,當(dāng)血量為0時(shí),就是游戲結(jié)束時(shí)。射擊僵尸將會(huì)得到分?jǐn)?shù),同時(shí)隨著時(shí)間的推移,喪尸的數(shù)量和質(zhì)量都會(huì)提升,每隔一個(gè)關(guān)卡的結(jié)束,會(huì)有BOSS登場,BOSS擁有更多的血量,更強(qiáng)的攻擊,更大的攻擊范圍,只有挑戰(zhàn)BOSS成功才能通過本個(gè)場景,拿到獎(jiǎng)勵(lì)。如圖18所示。圖18射擊武器是游戲主角的必備裝備,游戲中自帶的是M16步槍,其他的武器會(huì)在以后的開發(fā)中逐步發(fā)布,如圖19為M16。圖19M16步槍5.2游戲功能建筑建筑是日常生活中很重要的一件東西,人類利用建筑抵御天氣,在現(xiàn)實(shí)生活中建筑不僅僅是一個(gè)物體,更是一種美好生活的寄托,比如你沒有房子,會(huì)有一些女孩不會(huì)考慮和你結(jié)婚。在現(xiàn)實(shí)中也存在著大量的功能性建筑,如東方明珠、天安門、世貿(mào)大廈…,他有的是經(jīng)濟(jì)功能,有的是文化功能,也有軍事功能,這些功能建筑讓的世界更加的豐富多彩,這某些方面也方便了生活,提高了效率。在游戲中,為了游戲的=豐富性也加入這個(gè)元素。功能性建筑是建筑的一種,它具備了建筑得特性同時(shí)也有一些特別的特殊效果,它的出現(xiàn)使游戲更加的多樣化。本作中擁有多種功能建筑,如瞭望塔(如圖20)這些功能性建筑有不同的功能,瞭望塔可以阻擋喪尸的攀爬攻擊,提前預(yù)警。還有多層的居民樓也可以在里面建立自己的防御工事,獲取更長時(shí)間的生存.圖20瞭望塔5.3小地圖小地圖是指游戲右上角或者其他角落,標(biāo)示著人物位置坐標(biāo)的元素,小地圖這種元素在游戲中被廣泛的應(yīng)用,無論是80后的傳奇還有90后的穿越火線、魔獸、英雄聯(lián)盟、極品飛車…很多的知名游戲,都具有一個(gè)龐大的世界觀,在這個(gè)世界中由于他的龐大,那么它一定會(huì)有一個(gè)小地圖,它的出現(xiàn)挽救了很多路癡,很多人因?yàn)橛螒蚴澜绲凝嫶螅詈笳也坏交丶一蛘咦鋈蝿?wù)的路了,那么這個(gè)時(shí)候就需要小地圖了。在Unity3D中,相機(jī)是一個(gè)能夠?yàn)橥婕也东@信息并且顯示游戲世界的組件。只有通過操縱相機(jī),可以使得的游戲場景以更加真實(shí)和獨(dú)特的方式顯示出來。Unity3D中默認(rèn)有一個(gè)主相機(jī)MainCamera,他是用來顯示設(shè)計(jì)的游戲場景的,同時(shí)也可以在一個(gè)游戲場景中設(shè)置多個(gè)相機(jī)對象,他的位置可以不固定,可以放在任何位置,他就像的眼睛觀察這個(gè)世界。通過一個(gè)相機(jī)檢測另一個(gè)相機(jī)的方式實(shí)現(xiàn)了小地圖。如圖21右上角是實(shí)現(xiàn)的小地圖。圖21小地圖5.4測試載具交通工具充斥在的日常生活中,他不僅使的效率更高,更使的出行方式發(fā)生了改變。現(xiàn)今的各種游戲也增加了一些載具功能,H1Z1、GTA5…這些大牌游戲,各種類型的游戲都加入了載具功能,游戲中可以開著飛機(jī)從天上感受這個(gè)世界,也可以開著裝甲車享受碾壓喪尸的快感,或者開著跑車感受風(fēng)馳電掣的速度。游戲載具的加入是本作的一大亮點(diǎn),本作游戲中擁有超過10種載具。如圖22是一輛廢棄的卡車。圖22廢棄的卡車5.5測試房屋游戲的精細(xì)程度要從小的細(xì)節(jié)來看,每個(gè)細(xì)節(jié)物體的每一張貼圖都是游戲的用心體現(xiàn)。本作建筑室內(nèi)也是經(jīng)過大量精細(xì)的布置,擁有龐大的家具體系,游戲角色可以在屋子觀看屬于游戲世界的裝修風(fēng)格。圖23室內(nèi)布局5.6跨平臺發(fā)布大量的游戲存在多個(gè)版本PC版本、安卓版本、XBOX、PS3…多個(gè)版本的開發(fā)對于游戲公司非常的耗時(shí)耗力,往往同樣的一個(gè)游戲PC版本和其他版本之間的發(fā)布時(shí)間都大大不同,這樣一方面使可能的客源流失,另外一方面增大了公司的財(cái)政支出。然而Unity3D游戲的發(fā)布很便捷,以5.3版本為例,點(diǎn)擊file,選擇buildandset,選擇發(fā)布的平臺,網(wǎng)頁、PC、Android、ios…發(fā)布出來之后是可執(zhí)行文件,非常的方便。這樣就省去了為了在其他平臺發(fā)布再去開發(fā)的時(shí)間和精力。對于個(gè)人和公司來講都是很有用的功能。圖24跨平臺發(fā)布結(jié)論通過對unity3d游戲引擎的應(yīng)用開發(fā),熟悉了Unity3D開發(fā),在游戲引擎中各個(gè)組件和腳本的基礎(chǔ)上,按照設(shè)計(jì)的方案實(shí)現(xiàn)了游戲的開發(fā),實(shí)現(xiàn)了場景加載和角色控制等功能。對目前游戲開發(fā)現(xiàn)狀的開發(fā)架構(gòu)和管理方式的研究,實(shí)現(xiàn)了一個(gè)FPS生存游戲,實(shí)現(xiàn)了游戲玩家控制的角色的移動(dòng)、射擊、物品的拾取、以及音效、場景的切換、管理。在這之中一方面體現(xiàn)了unity3d游戲開發(fā)平臺的強(qiáng)大之處,另一方面也體現(xiàn)了活學(xué)活用的重要性。本文的游戲在世界開放性上還有所欠缺,可以創(chuàng)造更大的世界,更恢弘的游戲場景,游戲可玩性有待提高,豐富游戲的內(nèi)容,還可以做成一個(gè)沙盒游戲,這將是一個(gè)重大的工程。參考文獻(xiàn)1于瀟翔,彭月橙,黃心淵.基于Unity3D的道具系統(tǒng)研究與開發(fā).計(jì)算機(jī)科學(xué)與技術(shù)(2014年04期)2成偉,薛林福,張偉.基于Unity3D的三維地質(zhì)模型網(wǎng)絡(luò)共享實(shí)現(xiàn).計(jì)算機(jī)科學(xué)與技術(shù)(2014年06期)3梁成.基于Unity3D在基本游戲框架下客戶端研究與實(shí)現(xiàn).開發(fā)案例(2015年25期)4張敏.基于Unity3D的游戲的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)光盤軟件與應(yīng)用.2014

溫馨提示

  • 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)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論