版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
引言1.1論文的選題背景“基于Unity3D的跨平臺3D生存游戲設(shè)計與開發(fā)”是一款以Unity3D為平臺開發(fā)的FPS類游戲,目前市面上的游戲種類最受玩家歡迎的有FPS游戲(穿越火線、CS)和競技游戲(dota、英雄聯(lián)盟)這些游戲每天都有數(shù)十萬玩家在線對戰(zhàn),因此作品選擇了FPS射擊游戲作為游戲類型,同時現(xiàn)在的生存游戲也是大熱,在steam(全球最大的在線游戲售賣平臺)熱賣的前幾名最近被生存游戲所占據(jù),dayz、H1N1、sevendaystodie這些游戲都是什么受玩家好評,游戲也在不停的進行更新,因此本作選擇了末日主題環(huán)境。游戲設(shè)定是核戰(zhàn)爭幸存下來的士兵為了謀求生存,參與戰(zhàn)斗獲得生存物資,游戲隨者玩家游戲進度會有不同的游戲地圖供玩家探索,同時具有攻擊性的喪尸數(shù)量和種類也會增加,增加了游戲的難度,為了使玩家更多的體驗游戲魅力,游戲設(shè)置了5個生命值,5次生命值都失去之后游戲重新開始,每次受到攻擊之后會降低血量,主要玩法是操控游戲中的人物在末世地圖中存活盡量長的時間,通過消滅喪尸來獲取積分,直至游戲人物血量到零時游戲結(jié)束,最后在游戲的積分系統(tǒng)中進行排名。在游戲中加入了特別的北京音樂,這種音樂使低沉的,低沉的音樂有助于渲染游戲的主題氣氛,讓玩家更加有強烈的代入感。根據(jù)Unity官方在8月公布的報告:Unity引擎占據(jù)全功能游戲引擎市場45%的份額。Unity全球用戶已經(jīng)超過330萬人,每月活躍用戶數(shù)高達60萬。全世界有6億的玩家在玩使用Unity引擎制作的游戲,用Unity創(chuàng)造的應(yīng)用和游戲目前的累計下載量達到了87億次。Unity中國區(qū)在3D手機游戲市場的占有率已經(jīng)達到75%,超越日本成為世界第一。也就是說在最暢銷的前100款3D手機游戲中,平均每10款就有7.5款是使用Unity引擎制作。Unity目前的開發(fā)者注冊人數(shù)已經(jīng)超過330萬,在今年的4月份,中國區(qū)的開發(fā)者數(shù)量已經(jīng)超越美國,成為全球第一。Unity的每月全球活躍用戶超過60萬。中國區(qū)每個月Unity編輯器被使用的次數(shù)總和高達180萬次,居全球首位。美國以150萬次使用居全球第二。從電影的角度,3D也延展著游戲。Unity現(xiàn)在在游戲行業(yè),通過用我們的工具創(chuàng)造出游戲的內(nèi)容,其實我們是市場的領(lǐng)導(dǎo)者。這家公司11年的歷史,讓好多款游戲變成了3D款,同時因為《阿凡達》成就影視行業(yè),3D眼鏡有一個缺陷,第一不能跟電影互動,第二成本投入比較大。那么游戲是互動性的,從端游、頁游到手游,游戲本身是非?;有缘?,但游戲還是1跟1的交互環(huán)境。怎么打通這兩個行業(yè),現(xiàn)在市場上還在觀摩,但是我們相信通過Unity的技術(shù),能有實力能把影視制作場景帶到游戲互動的角度,把兩個因素結(jié)合在一起。我們在全球有30萬開發(fā)者,我們通過互聯(lián)網(wǎng)的方式把300萬開發(fā)者的資源正和島一起變成了線上最大的開發(fā)者商城,因為這些資源的分享可以讓更多的開發(fā)者降低門檻,開發(fā)他的內(nèi)容。現(xiàn)在國內(nèi)的開發(fā)者已經(jīng)是全球的四分之一,所以我們也勵志要最好的支持國內(nèi)的開發(fā)者。簡單介紹一下Unity8塊業(yè)務(wù):技術(shù)支持、開發(fā)插件、教育認證、發(fā)行服務(wù)、基金孵化、行業(yè)解決方案。好多開發(fā)者,創(chuàng)業(yè)者,一年多前找到我說:你能在技術(shù)上幫我,但你能在實際情況下,比如說資金、物業(yè)、房子來幫助我,所以我們跟普陀區(qū)合作,希望通過園區(qū)物業(yè)支持,再加上Unity基金支持,可以支持到國內(nèi)開發(fā)者。Unity大中華區(qū)致力于為開發(fā)者提供一站式服務(wù),從學習開發(fā)技能到游戲及應(yīng)用的開發(fā)到游戲及應(yīng)用的發(fā)行,甚至對游戲?qū)?yīng)用運營支持的全方位服務(wù),進一步擴大中國開發(fā)的數(shù)量和行業(yè)影響力。1.2論文所做的工作深入了解游戲設(shè)計與開發(fā)相關(guān)領(lǐng)域的知識基礎(chǔ)的3DMAX使用熟練c#、JavaScript語言場景搭建能力的掌握FPS游戲側(cè)重點的強化具備初步的閱讀和理解相關(guān)中英文文獻的能力游戲流程的設(shè)計游戲動畫設(shè)計游戲關(guān)卡設(shè)計游戲內(nèi)容設(shè)計游戲走向設(shè)計游戲可玩性設(shè)計發(fā)布游戲2可行性分析2.1市場可行性目前最火的兩個引擎一個是cocos2d-x另外一個就是Unity3D。這倆個游戲引擎都各有特色。Cscso2d-x主要開發(fā)2D游戲,它的編程語言為C++,這種語言的編譯時間很長,工作量變得很大。Unity3D可以開發(fā)2D游戲也可以開發(fā)3D游戲游戲編輯器主要是5大塊分別是,Hierarchy、Project、Console、Inspector、Sence,這五大塊面板組成了開發(fā)主體,相對于Cocos2d它更加的親切,開發(fā)編程過程中代碼大兩室C#和JavaScript這倆種語言,它們的優(yōu)點是編譯時間短速度快,學習簡單,而且Unity3D由于他的免費性,有大量的開發(fā)公司和個人使用這款軟件,網(wǎng)絡(luò)上有很多現(xiàn)成的教學和資源可以用來學習,最后一點是Unity3D可以發(fā)布多個平臺,簡潔而又方便了多次開發(fā)多個版本,因此選擇Unity3D開發(fā)勢在必行。在一個末日城鎮(zhèn)的場景之中,的玩家控制的角色瑞恩通過鍵盤的WASD等鍵位控制移動,通過鼠標控制視角,左鍵為射擊,通過射擊喪尸尸來保全自己的生命,喪尸是固定時間段刷新的,根據(jù)每次擊殺的時間來計算下次尸潮的數(shù)量,每次在擊殺完尸潮之后,在保證自己安全的前提下,可以探索城鎮(zhèn),獲取武器、彈藥等補給品,整體設(shè)計在之后可能會出現(xiàn)可交互的物品,理想的游戲是Minecraft或者sevendaystodie這樣的自由度特別高的游戲,不需要設(shè)計一個固定的路線來告訴玩家怎么去玩,讓玩家發(fā)現(xiàn)這個游戲的高自由度,喜歡做什么就做什么,這是本游戲的樂趣。在現(xiàn)在游戲市場中中,主要分為手機平臺游戲(ios、android)、pc客平臺游戲(客戶端游戲、網(wǎng)頁游戲)、以及專用游戲設(shè)備(xbox、ps4),大部分比較火的游戲都會分別開發(fā)幾個版本以適用于各種平臺,這種開發(fā)方式無疑是很耗費時間和精力的,使用Unity3D開發(fā)的游戲可跨平臺的使用?,F(xiàn)今市場上最為熱火的游戲是第一視角的生存游戲,比如Minecraft、星露谷物語…這些開放性世界的游戲,一面市就獲得了不凡的市場反應(yīng),玩家都對于其有很高的評價。因此決定做一款此類型的游戲。2.2技術(shù)可行性在技術(shù)可行性方面:Unity3D有詳細的開發(fā)說明書,在開發(fā)說明書中詳細的介紹了每個語句的使用方式,這樣使開發(fā)少了很多困難,不用浪費大量的時間去嘗試語句的使用方式,便捷了開發(fā)步驟。網(wǎng)絡(luò)上也有很多Unity3D開發(fā)的著名小制作游戲可以用來借鑒學習。并且運用了unity提供的豐富的API資源,使用JavaScript語言使編程效率提高。并使用3DMAX進行的建模工作,完成游戲中的建筑模型,人物模型和物體模型等。本款游戲沿用了許多游戲的經(jīng)典元素。如圖1是給player添加特性。圖1player特性2.3游戲策劃其次就是總結(jié)信息著手準備寫立項說明書,立項說明書中需要具備盈利方式和運營的方案這倆個關(guān)鍵點,把能拿出來的拿給投資人看獲取投資。最后是整個項目策劃的文檔一定要寫的完美,美術(shù)工作人員和程序員以及運營工作人員可以通過文檔去了解這個項目,有助于項目的開發(fā)和人員的溝通協(xié)調(diào)。下圖2為工作環(huán)節(jié)。文檔游戲開發(fā)游戲策劃文檔游戲開發(fā)游戲策劃產(chǎn)品創(chuàng)意產(chǎn)品創(chuàng)意玩家玩家游戲運營可行性分析游戲運營可行性分析圖2是游戲工作環(huán)節(jié)表1人員分配開發(fā)人員主要職責游戲主策劃游戲的主要負責人,負責構(gòu)思整個游戲的走向和協(xié)調(diào)開發(fā)游戲,是這個開發(fā)工作中最中心的人物游戲系統(tǒng)策劃主要負責游戲的一些系統(tǒng)規(guī)則的編寫游戲關(guān)卡策劃。負責游戲中關(guān)卡的時間、難度、通關(guān)方式的設(shè)計游戲劇情策劃負責游戲任務(wù)情節(jié)的設(shè)計與編寫,如ARPG游戲中主線任務(wù)和支線人物,F(xiàn)PS游戲中的新手教學任務(wù),對于RPG游戲來講他就是整個游戲的靈魂游戲腳本策劃人物的攻擊方式、速度移動、各個模組直接的耦合靠的就是腳本實現(xiàn),它充當了游戲之中各個部分的紐帶游戲數(shù)值策劃責游戲中HP、MP、CD等屬性值的計算設(shè)計平衡對于一個游戲來說開發(fā)流程也是重中之重,一個完整的開發(fā)流程可以使游戲開發(fā)過程更加清晰明了。如圖3可行性分析可行性分析項目立項項目立項策劃文檔策劃文檔原型展示原型展示商業(yè)計劃說明書技術(shù)設(shè)計文檔游戲背景設(shè)定商業(yè)計劃說明書技術(shù)設(shè)計文檔游戲背景設(shè)定引擎編寫市場宣傳原畫設(shè)計引擎編寫市場宣傳原畫設(shè)計服務(wù)人員培訓客戶服務(wù)游戲運營及銷售代碼編寫音效和美術(shù)腳本編寫服務(wù)人員培訓客戶服務(wù)游戲運營及銷售代碼編寫音效和美術(shù)腳本編寫游戲測試游戲測試圖3開發(fā)流程3.作品架構(gòu)與人物設(shè)計3.1作品架構(gòu)系統(tǒng)的組成是游戲內(nèi)容的一部分,他的作用是明確游戲內(nèi)容,如圖4游戲游戲音效場景人物音效場景人物建筑模型,道具模型槍聲,背景音地圖,小地圖建筑模型,道具模型槍聲,背景音地圖,小地圖移動,駕駛攻擊圖4系統(tǒng)組成3.2角色移動腳本系統(tǒng)是三維立體游戲開發(fā)的組成部分之一,相對于人體來說就是人類的大腦負責行動和思考,腳本系統(tǒng)是游戲之中各部分之間的強力齒輪,它存在于整個游戲中相當于人類的骨骼,如果人類沒有骨骼那么他將無法行走、活動,游戲沒有腳本就會使游戲無法正確的運行。當腳本被寫好之后,它會運行于虛擬機之中,執(zhí)行結(jié)果是由虛擬機打包發(fā)送給資源文件進行執(zhí)行.游戲在編寫完腳本之后,當游戲出現(xiàn)了運行錯誤,只需要查看、更改游戲腳本的邏輯性,不需要整個的拆分游戲檢查錯誤,這通過這種方式把各部分模塊化,游戲的開發(fā)更加的清晰明了高效率。每當游戲之后更新新的武器、車輛、裝備、…這些資源的時候,只需要重新添加資源素材就可以,不需要對游戲的整體來進行改變。本游戲代碼使用JavaScript編寫,Unity3D支持C#和JavaScript倆中,相比來說JavaScript更加的簡潔,可以提高開發(fā)效率,因此選用了JavaScript進行開發(fā),編程之中調(diào)用了大量的Unity自帶API,這些API從unity自帶的說明書之中可以找到,由于是全英文的閱讀方面有些難,舊版本的API有些被廢棄了,也造成了很多的不便。游戲中使用了unity的自由視角,在移動的過程中,攝像機會保持與玩家間的一定距離,然后跟隨角色進行移動。在自由視角中玩家可以依照自身坐標系,向著東南西北四個方向移動,每當玩家按鼠標右鍵的時候,游戲世界的角色就會繞著Y軸進行相同方向相同角度的旋轉(zhuǎn)。如圖5代碼是人物移動代碼。using
UnityEngine;
using
System.Collections;
[AddComponentMenu("Game/Player")]
public
class
Player
:
Player
{
//
組件
public
Transform
m_transform;
CharacterController
m_ch;
//
角色的移動速度
float
P_movSpeed
=
5.0f;
//
重力
float
P_gravity
=
2.0f;圖5游戲開發(fā)主面板3.3人物視角人物的視角切換在2D游戲之中是不存在的,在3D游戲之中一般采用歐拉角的原理進行視角的轉(zhuǎn)換。游戲中歐拉角的值指的是Vector3類型的值,3個坐標值是指分別繞著他們自身的軸去繞x,y,z度。圖3這段代碼的意思是根據(jù)鼠標的位置來旋轉(zhuǎn)物體來實現(xiàn)玩家對物體的觀察,通過自動獲取輸入軸的辦法,可以快速獲得鼠標移動的方向,然后實現(xiàn)對于物體的旋轉(zhuǎn)控制。在Unity3D中可以通過Edit->ProjectSetting->Input這樣的步驟來查看程序中的坐標軸名稱.所以,這個值最直觀的展現(xiàn)形式是可以允許直接用一個三維向量的形式來修改一個物體的角度.在unity中可以用maincamera來表示玩家控制的角色,通過對歐拉角的運用,結(jié)合腳本來實現(xiàn)場景內(nèi)人物的視角轉(zhuǎn)換。在游戲中可以通過鼠標的移動來觀察周圍的環(huán)境。圖6人物視角原理。圖7是人物視角物體空間坐標物體空間坐標 Model矩陣裁剪空間坐標世界坐標裁剪空間坐標世界坐標照相機坐標照相機坐標View矩陣projection矩陣
圖6視角原理
Transform
m_camTransform;
//
攝像機旋轉(zhuǎn)的角度
Vector3
m_camRot;
//
攝像機的高度
float
m_camHeight
=
1.7f;
//
生命值
public
int
m_life
=
5;
void
Control()
{
//獲取鼠標移動的距離
float
rh
=
Input.GetAxis("Mouse
X");
float
rv
=
Input.GetAxis("Mouse
Y");
//
旋轉(zhuǎn)攝像機
m_camRot.x
-=
rv;
m_camRot.y
+=
rh;
m_camTransform.eulerAngles
=
m_camRot;
//
使玩家控制的角色的面向方向與攝像機保持一致
Vector3
camrot
=
m_camTransform.eulerAngles;
camrot.x
=
0;
camrot.z
=
0;
m_transform.eulerAngles
=
camrot;
float
xm
=
0,
ym
=
0,
zm
=
0;
//
重力運動
ym
-=
m_gravity*Time.deltaTime;
//
上下左右運動圖7人物視角3.4人物攻擊人物的射擊對于FPS游戲是重中之重,所有著名的FPS游戲都是擁有完美的射擊判定的,Unity3D建立射擊系統(tǒng)比較方便,編寫腳本完成射擊的基本腳本之后,可以調(diào)節(jié)射擊的聲音,彈道,特效…這些效果將使游戲更加豐滿。游戲通過WASD四個按鍵進行移動,空格鍵是跳躍,鼠標左鍵射擊,R鍵換子彈,這些便捷的操作方式是搬用了現(xiàn)在大多FPS游戲的射擊套路,以求讓玩家更快的投入游戲之中,而不是糾結(jié)在操作教學上,人物的攻擊采用探針方式,每次射擊之后會判定是否攻擊到喪尸,若攻擊到,喪尸的血量會減少,子彈減少。若沒有攻擊到,喪尸血量不減少,子彈減少。這是射擊腳本的一部分:if(Input.GetButtonDown(“Fire1”))首先然后要檢測玩家是否按了開火鍵,“左鍵”映射的是鼠標左鍵和當前配置的鍵盤上的按鍵(可以通過主菜單欄的Editor>ProjectSettings>Input設(shè)定){varinstantiatedProjectile:Rigidbody=Instantiate(projectile,transform.position,transform.rotation);子彈是在現(xiàn)實中是有物理性質(zhì)的,因此在游戲中賦予它Rigibody特性,若果要用Unity3D產(chǎn)生一個新的物體,需要用到一個函數(shù)Instantiate,它具有一些特殊的參數(shù)支持。其中的具體運用方法可以參考開發(fā)手冊,我們把這幾個參數(shù)設(shè)置好,那么就可以測試游戲的射擊情況了,這幾個參數(shù)是物體本身、物體的空間位置還有物體的旋轉(zhuǎn)特性,發(fā)射的物體可以自己選擇,也可通過腳本去選擇,開發(fā)的過程中,選擇了最普通的槍擊效果,因此在實現(xiàn)的時候,只能看到很簡單的槍擊效果,如果想要更好的效果可以通過參數(shù)的設(shè)計來更新新的效果,這是極其方便的,腳本需要關(guān)聯(lián)到槍械上,這樣可以使槍被賦予游戲數(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;
//
射擊間隔時間
float
m_shootTimer
=
0;
//
Use
this
for
initialization
void
Start
()
{
//
獲取組件
m_transform
=
this.transform;
m_ch
=
this.GetComponent<CharacterController>();
//
獲取攝像機
m_camTransform
=
Camera.main.transform;
//
設(shè)置攝像機初始
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è)計游戲之中的AI(非玩家之外的景觀、喪尸…)對于游戲很重要游戲的AI設(shè)計有倆種,第一種是在固定的位置循環(huán)走動如果主角在喪尸為半徑的2的范圍內(nèi)或者被攻擊會主動攻擊主角,第二種是每隔5分鐘會有一定量的喪尸刷新在主角的附近,對主角進行攻擊,攻擊量的大小會隨著游戲的進度進行加強。為了更好地完成游戲的開發(fā)。針對游戲本身需求,和市場需求,面向動作的人工智能是必不可少的,設(shè)計的AI人物有倆種控制方式,第一種是被動控制,當他在沒有遇到觸發(fā)條件之前保持的固定游走或靜止站立。第二種是面對觸發(fā)條件之后才去的措施,一般情況下,作為喪尸在檢測到附近的玩家,或者遭受玩家攻擊的時候,攻擊玩家這種主動方式就會代替被動控制這種邏輯方式。如圖圖8AI站位設(shè)計。圖8AI站位設(shè)計
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;
//
獲取當前動畫狀態(tài)
AnimatorStateInfo
stateInfo
=
m_ani.GetCurrentAnimatorStateInfo(0);
//
如果處于待機狀態(tài)
if
(stateIHash
==
Animator.StringToHash("Base
Layer.idle")
&&
!m_ani.IsInTransition(0))
{
m_ani.SetBool("idle",
false);
//
待機一定時間
m_timer
-=
Time.deltaTime;
if
(m_timer
>
0)
return;表3AI設(shè)定參數(shù)可輸入的條件種類備注怪物智能被動攻擊主動攻擊有條件的主動攻擊可重復(fù)選擇種類普通喪尸BOSS無技能暫無暫無逃跑與否不逃跑不逃跑怪物生成每隔5分鐘會有怪物群刷新隨著時間的流逝喪尸數(shù)量和質(zhì)量都會增加。喪尸生成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;
//
生成喪尸的時間間隔圖10喪尸模型4模型的設(shè)計4.1材質(zhì)的選擇游戲之中運用了大量的材質(zhì)包和道具包,擁有種類繁多的道具材料,這些道具可以給它加上特性,如物理特性剛體,碰撞等特性,這些特性可以使物體受到重力影響,實現(xiàn)擬真的效果。Unity3D引入了一種叫材質(zhì)球的功能組件,材質(zhì)包的創(chuàng)建是在一個球形的材質(zhì)球中加各種的顏色,,在模型上把模型球拖入模型位置上,它會自動給模型添加上材質(zhì),材質(zhì)顏色的選擇是一項巨大的工作,根據(jù)選擇的游戲主題,選擇了暗色系的材質(zhì),模型上都是破敗的建筑、車輛…這樣更加的真實,有助有游戲的整體效果涂材質(zhì)球的使用,材質(zhì)球的使用大大方便了建模的工序,建模的工作大大減少,就像Photoshop中的油漆桶工具一樣,只要一點擊,整個圖都是該種顏色。市面上大部分的游戲開發(fā)都用到了該種功能,它對于開發(fā)團隊和公司的重要意義是,減少了美工團隊的工作量,并且還節(jié)省了游戲制作的周期長度、公司的開發(fā)費用也減少了。如圖11是材質(zhì)包。圖11物體材質(zhì)4.2游戲場景建造建模軟件的選擇是需要建模的開發(fā)中特別重要的,3DMAX功能特別強大,它的全稱是3DStudioMax,它在這以前是在DOS系統(tǒng)下的3DSTUdio這個系列的軟件,DISCREET公司開發(fā)了這款軟件,它是一款如MAYA般強大三維渲染制作軟件,被游戲公司大量的使用,同時它在影視制作中也大放異彩,它通過它的動畫制作能力,被各大影業(yè)公司使用,如環(huán)球影業(yè)、索尼影業(yè)等,這些公司中有點使用它做動畫CG,有的是給電影加特效,如絕地武士、星球大戰(zhàn)…這些大作中都運用了3DMAX這款軟件。它的圖像分割技術(shù)及其的優(yōu)秀,本作游戲的建模大量的使用3DMAX來進行建模,開發(fā)過程中學習了大量的知識,最后制作出一些粗糙的建筑模型。使用該軟件把需求的人物制作為素材,以供游戲使用,其中每個部位的骨骼都要精準,才能使最后的人物行動自如不會產(chǎn)生問題。游戲的地形也需要進行精心的設(shè)計才能使游戲更加的豐滿。制作一個基本的地形場景,需要構(gòu)造一個地形圖,再給地形圖上貼上材質(zhì),再次之后烘焙會使畫面質(zhì)量更加好看。3DMX建模完成后可導(dǎo)出3ds格式的文件,導(dǎo)出的文件可被unity3d識別,游戲場景對于一個游戲來說至關(guān)重要,F(xiàn)PS生存游戲強調(diào)的生存,因此營造了一個陰沉、昏暗的游戲世界,在這個游戲中玩家控制的角色在軍事基地中,周圍圍繞了一圈的鐵皮圍欄,在角落里是一些瞭望塔,玩家控制的角色周圍是一圈的建筑模型,被貼上了破敗的材質(zhì),還有一些家具,充分營造了一個末日環(huán)境,在軍營之外是更加廣闊的世界。如圖12所示。圖12全局地圖4.3特殊音效游戲聲音會使玩家更有沉浸感,。在游戲中背景音樂是一定要有的,一方面可以增加游戲可玩性,讓用戶可以持續(xù)玩下去;另一方面增加游戲真實感,本作中游戲全局擁有背景音樂,在進入特殊房間內(nèi)的時候,會有特殊房間音效,營造一個恐怖、壓抑的環(huán)境,游戲角色也擁有獨立的槍聲和腳步聲音。本作中添加了大量的音效元素,在不同的天氣狀況下,會有不同背景的聲音,比如在下雨天,會有下雨的音效。Unity3D支持多種格式的音效,比如mp3格式和wma格式,這些格式在網(wǎng)絡(luò)上有很多素材,但是很多并不符合我們的需求,需要下載下來之后進行一定的剪輯制作,最后形成需要的音效。添加音效有倆個組件,一個是AudioListener它的作用是聽取聲音。通過這個組件可以監(jiān)聽,就像監(jiān)視器一樣,另外一個就是就相當于人的嘴巴AudioSource,這個組件是用來添加到創(chuàng)建的物體上的,可以是建筑場景,也可以是一個人物角色。Unity可以支持任何物體添加音樂效果。首先在hier面板上prefab預(yù)制中添加一段音頻,把需要的音效作為外部變量添加到預(yù)制件中,然后添加GUI,它的作用是作為一個準心。準心的作用對于一個FPS來講是必不可少的。創(chuàng)建一個相關(guān)的腳本,控制音量的出現(xiàn)方式,這樣可以實現(xiàn)我們的設(shè)計預(yù)期,比如在外部環(huán)境下是音效1,進入了房價是音效2.這樣的切換就是腳本實現(xiàn)的。Audiosource可以添加到任何物體上,這個組件可以調(diào)節(jié)聲音的大小范圍…效果,熟練的使用這個組件是游戲開發(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);}剪切好的音效素材放在游戲工程中的一個單獨文件夾下,多準備幾段音效以備不時之需,音效素材的好壞直接關(guān)系到游戲的整體質(zhì)量,因此在游戲開發(fā)過程中把關(guān)音效是要花時間去做的,音效的素材是可以自己制作,也可從網(wǎng)上搜集的,但是由于可能和預(yù)期不符,后期加工是要做的,可以用Adobe的音頻制作軟件來制作,這款軟件的功能也是特別的強大,操作方面也比較簡單,本作的音效制作正是用的這款軟件。如圖12是音效素材。圖12音效素材4.4道具模型根據(jù)游戲開發(fā)的規(guī)模、特點以及開發(fā)人員的工具、條件,本文主要利用網(wǎng)絡(luò)貼圖,釆用3DMax作為三維建模工具,利用Photoshop對采集素材進行紋理處理,將模型導(dǎo)入Unity中作為開發(fā)引擎,并將模型導(dǎo)入引擎。游戲開發(fā)構(gòu)建過程中,包括使用3DMax,對下層數(shù)據(jù)進行耦合,讓得原始數(shù)據(jù)和圖像數(shù)據(jù)之間具有一定的關(guān)聯(lián)性。物體模型使用3DMAX進行基礎(chǔ)建模,通過對物體的雕琢、組成形成了房屋等物體,這些物體加上一些unity3d之中的特性就可以讓他擁有在游戲中的特性,比如剛體,音樂等信息。圖10是物體模型。游戲開發(fā)構(gòu)建過程中,包括使用3DMax,對下層數(shù)據(jù)進行耦合,使得原始數(shù)據(jù)和圖像數(shù)據(jù)具有一定的關(guān)聯(lián)性。圖13物體模型游戲采用開源三維地圖作為源數(shù)據(jù)地圖,游戲建筑的大小、位置、面積都是基于這張三維地圖。而在地形層,區(qū)別于其他游戲場景,具有唯一性元件層基本依賴3DMax的建模方式,對各種儀器和設(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中會生成相對應(yīng)的材料,這些材料是做成Unity3D中各種模型的基本素材,fbx的正確使用將使工作效率得以提升,反復(fù)的學習模型的制作與布置會提高游戲背景的質(zhì)量,進而提高了整個游戲的質(zhì)量。游戲中的模型制作布置是基于普通FPS游戲進行設(shè)計布置的,對于功能性建筑和普通建筑都有加入,生活中的一些物體也有加入,這些物體的加入豐富了游戲生活,在以后的開發(fā)中還可以加入主角與物體的互動,比如游戲主角可以拿起杯子喝水,舉起酒桶攻擊喪尸…這些互動方式將豐富游戲的玩法。如圖16為游戲中的輪胎。圖16輪胎4.5天空盒天空盒就是unity游戲之中的天空,Unity自帶了許多的天空盒,有星空、白天、夜晚、黃昏…Unity3D官方網(wǎng)站上發(fā)布了一些免費的天空盒子,天空盒子可以讓游戲的天空變得豐富多彩,首先導(dǎo)入Skyboxes這個素材包,在導(dǎo)入之后在相對應(yīng)的資源面板下可以看到相應(yīng)的天空盒子素材,添加天空盒子到游戲中有倆種方式可以實現(xiàn),其中一種是在編輯的渲染設(shè)定中選擇添加天空盒子。另外一種是在Skyboxes材質(zhì)中點選一個材質(zhì)球去添加到游戲場景中,也可以實現(xiàn)這樣的天空盒子效果。如圖17是天空盒。Fog(是否啟用迷霧效果)FogColor(迷霧的顏色)FogMode(迷霧模式FogDensity(迷霧濃度)LinearFogStart(線性迷霧起始距離)LinearFogEnd(線性迷霧終止距離)。SkyboxMaterial(天空盒材質(zhì))HaloStrength(光環(huán)強度)FlareStrength(光暈強度)HaloTextrue(光環(huán)貼圖)SpotCookie(光斑)AmbientLight(環(huán)境光)圖17天空盒5作品的實現(xiàn)5.1射擊FPS游戲是槍戰(zhàn)游戲,所以本作游戲中運用了大量的時間去設(shè)計,調(diào)整游戲的射擊操作感游戲中所持槍械為美軍制式武器M16,在游戲的其他地方也有其他的武器可以供切換選擇,玩家控制的角色擁有5次生命,在被喪尸攻擊后會掉血,當血量為0時,就是游戲結(jié)束時。射擊僵尸將會得到分數(shù),同時隨著時間的推移,喪尸的數(shù)量和質(zhì)量都會提升,每隔一個關(guān)卡的結(jié)束,會有BOSS登場,BOSS擁有更多的血量,更強的攻擊,更大的攻擊范圍,只有挑戰(zhàn)BOSS成功才能通過本個場景,拿到獎勵。如圖18所示。圖18射擊武器是游戲主角的必備裝備,游戲中自帶的是M16步槍,其他的武器會在以后的開發(fā)中逐步發(fā)布,如圖19為M16。圖19M16步槍5.2游戲功能建筑建筑是日常生活中很重要的一件東西,人類利用建筑抵御天氣,在現(xiàn)實生活中建筑不僅僅是一個物體,更是一種美好生活的寄托,比如你沒有房子,會有一些女孩不會考慮和你結(jié)婚。在現(xiàn)實中也存在著大量的功能性建筑,如東方明珠、天安門、世貿(mào)大廈…,他有的是經(jīng)濟功能,有的是文化功能,也有軍事功能,這些功能建筑讓的世界更加的豐富多彩,這某些方面也方便了生活,提高了效率。在游戲中,為了游戲的=豐富性也加入這個元素。功能性建筑是建筑的一種,它具備了建筑得特性同時也有一些特別的特殊效果,它的出現(xiàn)使游戲更加的多樣化。本作中擁有多種功能建筑,如瞭望塔(如圖20)這些功能性建筑有不同的功能,瞭望塔可以阻擋喪尸的攀爬攻擊,提前預(yù)警。還有多層的居民樓也可以在里面建立自己的防御工事,獲取更長時間的生存.圖20瞭望塔5.3小地圖小地圖是指游戲右上角或者其他角落,標示著人物位置坐標的元素,小地圖這種元素在游戲中被廣泛的應(yīng)用,無論是80后的傳奇還有90后的穿越火線、魔獸、英雄聯(lián)盟、極品飛車…很多的知名游戲,都具有一個龐大的世界觀,在這個世界中由于他的龐大,那么它一定會有一個小地圖,它的出現(xiàn)挽救了很多路癡,很多人因為游戲世界的龐大,最后找不到回家或者做任務(wù)的路了,那么這個時候就需要小地圖了。在Unity3D中,相機是一個能夠為玩家捕獲信息并且顯示游戲世界的組件。只有通過操縱相機,可以使得的游戲場景以更加真實和獨特的方式顯示出來。Unity3D中默認有一個主相機MainCamera,他是用來顯示設(shè)計的游戲場景的,同時也可以在一個游戲場景中設(shè)置多個相機對象,他的位置可以不固定,可以放在任何位置,他就像的眼睛觀察這個世界。通過一個相機檢測另一個相機的方式實現(xiàn)了小地圖。如圖21右上角是實現(xiàn)的小地圖。圖21小地圖5.4測試載具交通工具充斥在的日常生活中,他不僅使的效率更高,更使的出行方式發(fā)生了改變?,F(xiàn)今的各種游戲也增加了一些載具功能,H1Z1、GTA5…這些大牌游戲,各種類型的游戲都加入了載具功能,游戲中可以開著飛機從天上感受這個世界,也可以開著裝甲車享受碾壓喪尸的快感,或者開著跑車感受風馳電掣的速度。游戲載具的加入是本作的一大亮點,本作游戲中擁有超過10種載具。如圖22是一輛廢棄的卡車。圖22廢棄的卡車5.5測試房屋游戲的精細程度要從小的細節(jié)來看,每個細節(jié)物體的每一張貼圖都是游戲的用心體現(xiàn)。本作建筑室內(nèi)也是經(jīng)過大量精細的布置,擁有龐大的家具體系,游戲角色可以在屋子觀看屬于游戲世界的裝修風格。圖23室內(nèi)布局5.6跨平臺發(fā)布大量的游戲存在多個版本PC版本、安卓版本、XBOX、PS3…多個版本的開發(fā)對于游戲公司非常的耗時耗力,往往同樣的一個游戲PC版本和其他版本之間的發(fā)布時間都大大不同,這樣一方面使可能的客源流失,另外一方面增大了公司的財政支出。然而Unity3D游戲的發(fā)布很便捷,以5.3版本為例,點擊file,選擇buildandset,選擇發(fā)布的平臺,網(wǎng)頁、PC、Android、ios…發(fā)布出來之后是可執(zhí)行文件,非常的方便。這樣就省去了為了在其他平臺發(fā)布再去開發(fā)的時間和精力。對于個人和公司來講都是很有用的功能。圖24跨平臺發(fā)布結(jié)論通過對unity3d游戲引擎的應(yīng)用開發(fā),熟悉了Unity3D開發(fā),在游戲引擎中各個組件和腳本的基礎(chǔ)上,按照設(shè)計的方案實現(xiàn)了游戲的開發(fā),實現(xiàn)了場景加載和角色控制等功能。對目前游戲開發(fā)現(xiàn)狀的開發(fā)架構(gòu)和管理方式的研究,實現(xiàn)了一個FPS生存游戲,實現(xiàn)了游戲玩家控制的角色的移動、射擊、物品的拾取、以及音效、場景的切換、管理。在這之中一方面體現(xiàn)了unity3d游戲開發(fā)平臺的強大之處,另一方面也體現(xiàn)了活學活用的重要性。本文的游戲在世界開放性上還有所欠缺,可以創(chuàng)造更大的世界,更恢弘的游戲場景,游戲可玩性有待提高,豐富游戲的內(nèi)容,還可以做成一個沙盒游戲,這將是一個重大的工程。參考文獻1于瀟翔,彭月橙,黃心淵.基于Unity3D的道具系統(tǒng)研究與開發(fā).計算機科學與技術(shù)(2014年04期)2成偉,薛林福,張偉.基于Unity3D的三維地質(zhì)模型網(wǎng)絡(luò)共享實現(xiàn).計算機科學與技術(shù)(2014年06期)3梁成.基于Unity3D在基本游戲框架下客戶端研究與實現(xiàn).開發(fā)案例(2015年25期)4張敏.基于Unity3D的游戲的設(shè)計與實現(xiàn)[J].計算機光盤軟件與應(yīng)用.2014
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 十杰少年即興演講題目及答案
- 養(yǎng)老院老人生活設(shè)施維修人員福利待遇制度
- 養(yǎng)老院老人財產(chǎn)保管制度
- 貨物安全檢查制度
- 2026年及未來5年市場數(shù)據(jù)中國女裝行業(yè)市場調(diào)查研究及發(fā)展趨勢預(yù)測報告
- 行政服務(wù)中心安全巡查制度
- 2025年懷柔筆試真題及答案
- 2025年河南事業(yè)單位教育類考試及答案
- 2025年下湖北教資筆試及答案
- 2025年上海浦東美術(shù)小學筆試及答案
- 廠轉(zhuǎn)讓合同范本
- 《肝臟手術(shù)的麻醉》課件
- GB/T 45026-2024側(cè)掃聲吶海洋調(diào)查規(guī)范
- 零星維修工程施工組織設(shè)計方案
- 三年級數(shù)學五千以內(nèi)加減法題能力作業(yè)口算題大全附答案
- 臨床診斷學-胸部檢查課件
- 三力測試題70歲以上老人換領(lǐng)駕照
- 婦女保健之孕期運動與體重管理護理課件
- 職工食堂餐飲服務(wù)投標方案(技術(shù)方案)
- (銀川市直部門之間交流)2022事業(yè)單位工作人員調(diào)動表
- 中國石油大學化工安全工程期末復(fù)習題
評論
0/150
提交評論