張 俊,廖金巧
(北方工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,北京 100144)
基于Unity3D的手機(jī)版FPS射擊游戲設(shè)計(jì)與開發(fā)
張俊,廖金巧
(北方工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,北京100144)
此文旨在介紹基于Unity3D游戲引擎的手機(jī)版第一人稱的3D射擊類游戲.主要研究的是游戲三維場(chǎng)景的設(shè)計(jì)與制作,游戲人物、游戲道具、NPC的設(shè)計(jì)與制作,以及游戲模式的設(shè)計(jì)和游戲功能的實(shí)現(xiàn)與完善.所涉及的關(guān)鍵技術(shù)有碰撞檢測(cè)技術(shù),觸控技術(shù),人工智能交互技術(shù)以及粒子系統(tǒng)的實(shí)現(xiàn)方法.這個(gè)系統(tǒng)搭建了一個(gè)真實(shí)的三維場(chǎng)景,讓玩家能更容易的沉浸在游戲環(huán)境中;觸控式操作讓玩家的操作更加靈活多變,增加了游戲的樂趣與多變性.
Unity3D;JavaScript;FPS;碰撞檢測(cè);粒子系統(tǒng)
Unity3D是一款跨平臺(tái)性突出,兼容性強(qiáng)的游戲引擎,開發(fā)人員的起點(diǎn)要求不高,基本的資料文檔都很豐富.在射擊游戲這種3D類游戲方面,Unity的應(yīng)用更加廣泛,市場(chǎng)上60%的射擊游戲都是以Unity3D為平臺(tái)開發(fā)的.該引擎基于特定的技術(shù)架構(gòu),實(shí)現(xiàn)了實(shí)時(shí)生成查看的功能,易用性高,簡(jiǎn)化了開發(fā)的流程,更便于射擊類游戲的設(shè)計(jì)與開發(fā).這篇文章針對(duì)第一人稱射擊游戲的設(shè)計(jì)與開發(fā)展開論述,詳細(xì)地闡述了游戲中運(yùn)用的關(guān)鍵技術(shù).這對(duì)Unity3D游戲引擎的研究與開發(fā)有著十分重要的意義.
這篇文章是以Unity為開發(fā)平臺(tái),對(duì)碰撞檢測(cè)技術(shù)、觸控技術(shù)、人工智能技術(shù)以及粒子系統(tǒng)進(jìn)行研究.
碰撞檢測(cè)技術(shù)的主要目的有三個(gè):檢測(cè)模型之間是否發(fā)生了碰撞,反饋出發(fā)生或即將發(fā)生碰撞的部位,動(dòng)態(tài)的查詢模型之間的距離.進(jìn)而針對(duì)碰撞后的反饋進(jìn)行針對(duì)性的動(dòng)作.碰撞檢測(cè)技術(shù)廣泛應(yīng)用于各種系統(tǒng)中,比如時(shí)下比較流行的游戲英雄聯(lián)盟和守望先鋒,都離不開碰撞檢測(cè)算法.
觸控技術(shù)是最近幾年興起的一項(xiàng)技術(shù),伴隨著出現(xiàn)的是觸屏類電子產(chǎn)品.是一項(xiàng)脫離鍵盤輸入,直接接收用戶手指觸摸的信息進(jìn)行實(shí)時(shí)反饋的技術(shù).是當(dāng)下信息接收的一項(xiàng)潮流技術(shù),更便于用戶與電子產(chǎn)品進(jìn)行交互.2004年,進(jìn)入21世紀(jì),觸屏手機(jī)伴隨著觸控技術(shù)的出現(xiàn)而普遍流行,諾基亞Symbian系統(tǒng)手機(jī)、微軟Windows Mobile以及索尼愛立信UIQ平臺(tái)手機(jī)在此浪潮中推波助瀾,使得觸控技術(shù)日趨成熟與完善.
任何一個(gè)游戲的設(shè)計(jì)與開發(fā)都需要進(jìn)行策劃和需求分析,為游戲的制作理清一條清晰的主線,這樣才能在接下來(lái)的工作中有條不紊地進(jìn)行開發(fā).
游戲開發(fā)一般分為創(chuàng)意管理,撰寫草案,市場(chǎng)分析,需求分析這四步.在這里著重介紹下需求分析.它主要分為三個(gè)部分:美工需求,程序需求和策劃需求.顧名思義,美工需求就是游戲UI的一切組件,比如人物角色,NPC,人物動(dòng)畫,游戲場(chǎng)景,游戲的各種界面,粒子特效等;程序需求也就是游戲的功能需求,包括地圖編輯器和粒子編輯器的各種功能需求,實(shí)現(xiàn)游戲各種功能的函數(shù)、算法、數(shù)據(jù)、碰撞檢測(cè)、AI等方面的需求;策劃需求作為游戲制作的總指導(dǎo),是一個(gè)游戲正常運(yùn)行開發(fā)流程的關(guān)鍵部分,包括劇本的設(shè)計(jì)和游戲開發(fā)每個(gè)階段進(jìn)行的時(shí)間安排和具體流程.
2.1游戲策劃
從游戲性來(lái)說,射擊游戲是非常適合手機(jī)玩家的高粘度產(chǎn)品,近幾年已有不少類似產(chǎn)品出現(xiàn)在市場(chǎng)上,其中很多都非常成功.我們的游戲是模仿市場(chǎng)上已有的F PS類射機(jī)游戲進(jìn)行設(shè)計(jì),在一些細(xì)節(jié)上進(jìn)行了調(diào)整和優(yōu)化.首先,運(yùn)用3D建模技術(shù)和次世代貼圖技術(shù)搭建一個(gè)真實(shí)的游戲場(chǎng)景,讓玩家更容易沉浸到游戲中去,增強(qiáng)了用戶的虛擬性體驗(yàn);其次,玩家可以自主選擇攻擊模式而且游戲中彈藥沒有限制,全靠玩家的操作能力擊殺NPC進(jìn)行過關(guān),增加了玩家對(duì)游戲的粘度;最后,游戲的盈利模式是通過與廣告商合作,在玩家失敗或者死亡時(shí)可以通過觀看一段廣告視頻來(lái)繼續(xù)游戲.
2.2游戲美術(shù)
一個(gè)好的游戲離不開精良的美術(shù)內(nèi)容.所謂游戲美術(shù)就是游戲中出現(xiàn)的可視化內(nèi)容,包括游戲UI界面,游戲場(chǎng)景及角色等,美術(shù)決定游戲的畫面風(fēng)格走向,是游戲設(shè)計(jì)與開發(fā)過程中不可或缺的重要組成部分.具體來(lái)說本款作品的游戲美術(shù)需要完成UI界面的設(shè)計(jì)、游戲場(chǎng)景和道具的設(shè)計(jì)與制作、人物角色和NPC形象的設(shè)計(jì)和建模以及動(dòng)畫的制作等.
2.3關(guān)鍵技術(shù)
上文介紹了美術(shù)制作的部分內(nèi)容,現(xiàn)在介紹一下程序設(shè)計(jì)部分.程序需求是一個(gè)游戲的核心,是實(shí)現(xiàn)預(yù)期效果的必要保證.即用一些腳本和代碼將美工設(shè)計(jì)的好的各種素材聯(lián)系起來(lái)并進(jìn)行交互.程序需求在游戲設(shè)計(jì)開發(fā)過程中十分重要,決定著一個(gè)游戲現(xiàn)在運(yùn)行過程中是否能完美還原策劃的預(yù)期效果和運(yùn)行時(shí)是否流暢.
這款手機(jī)版的F PS射擊游戲中涉及到多種人工智能技術(shù),NPC,主角,場(chǎng)景中障礙物,道具等一些列對(duì)象,需要通過腳本來(lái)控制個(gè)對(duì)象之間的關(guān)系以及互動(dòng).當(dāng)前介紹碰撞檢測(cè)技術(shù),粒子系統(tǒng),觸控技術(shù),交互技術(shù).
2.3.1碰撞檢測(cè)技術(shù)
碰撞檢測(cè)技術(shù)幾乎是所有游戲中必須要用到的技術(shù),玩家與地面、障礙物、NPC的交互都是在碰撞檢測(cè)技術(shù)的基礎(chǔ)上來(lái)實(shí)現(xiàn)的.但是碰撞檢測(cè)技術(shù)有各種不同的算法,好的算法可以大大增強(qiáng)碰撞的真實(shí)性并減少計(jì)算機(jī)的計(jì)算時(shí)間.此系統(tǒng)在Unity3D中用如下Java Script腳本進(jìn)行碰撞檢測(cè):
functionOnCollision Enter(obj:Collision){
Debug.Log("Collider:"+obj.collider.name+"game Object: "+o b j.game Object.name);
Action;
}
將如上的碰撞檢測(cè)的OnCollision Enter函數(shù)綁定到對(duì)象obj上,當(dāng)這個(gè)物體被其他物體碰撞時(shí)函數(shù)被調(diào)用.
碰撞檢測(cè)的算法有很多種,時(shí)間預(yù)測(cè)算法、距離預(yù)測(cè)算法、靜態(tài)檢測(cè)算法、距離計(jì)算算法等,其中,距離計(jì)算算法計(jì)算量比較大但是精確度高,更具有真實(shí)性.此游戲采用的就是距離計(jì)算的算法.當(dāng)物體之間發(fā)生碰撞以后,會(huì)出現(xiàn)什么樣的效果和做出什么反應(yīng)都是調(diào)用這個(gè)函數(shù).此游戲中用到這個(gè)函數(shù)的主要是NPC碰撞到主角以后會(huì)觸發(fā)NPC的動(dòng)畫效果進(jìn)行攻擊;主角的武器道具碰撞到NPC以后,NPC的血量降低;主角和NPC碰撞到墻面等障礙物不讓其穿過;手榴彈扔出以后碰到地面或者NPC會(huì)觸發(fā)粒子系統(tǒng)的爆炸的粒子效果并對(duì)范圍內(nèi)的NPC造成傷害降低血量等.
2.3.2粒子系統(tǒng)
粒子系統(tǒng)是為了模擬一些范圍性的難以用傳統(tǒng)渲染技術(shù)達(dá)到的一些特殊的效果,是游戲中常用的基本功能.
為了增加游戲場(chǎng)景的真實(shí)感,增強(qiáng)用戶體驗(yàn),需要用到粒子系統(tǒng).粒子系統(tǒng)可以達(dá)到其他傳統(tǒng)的渲染技術(shù)達(dá)不到的真實(shí)效果.常用粒子系統(tǒng)模擬火,煙霧.流星尾跡等.這里,我們使用粒子系統(tǒng)來(lái)模擬場(chǎng)景中的硝煙和玩家使用的炸彈的爆炸效果.
此游戲中的粒子系統(tǒng)使用主要是戰(zhàn)場(chǎng)的硝煙和扔出的手榴彈爆炸的效果,在產(chǎn)生硝煙的地方創(chuàng)立一個(gè)游戲?qū)ο蟛㈦[藏,然后給該對(duì)象添加一個(gè)粒子系統(tǒng),調(diào)節(jié)出硝煙的粒子系統(tǒng)參數(shù)和粒子產(chǎn)生的速度和頻率即可模擬出戰(zhàn)場(chǎng)的硝煙的粒子效果;主角扔出的手榴彈的爆炸效果就相對(duì)于小硝煙復(fù)雜一點(diǎn),需要制作一個(gè)手榴彈的prefab,然后在該prefab上添加一個(gè)粒子系統(tǒng)組件,然后調(diào)節(jié)好爆炸的粒子效果參數(shù).但是,手榴彈需要在一定條件下才會(huì)觸發(fā)爆炸特效所以需要添加下面的碰撞檢測(cè)代碼來(lái)控制粒子系統(tǒng)
functionOnCollision Enter(obj:Collision){
Start(ParticleSystem);
}
2.3.3觸控技術(shù)
此游戲是手機(jī)版的F PS射擊游戲,現(xiàn)階段的手機(jī)市場(chǎng)主要以觸屏手機(jī)為主.所以為了迎合市場(chǎng)的需求,在系統(tǒng)中加入觸控技術(shù)以實(shí)現(xiàn)玩家觸屏控制角色進(jìn)行游戲.利用射線檢測(cè)技術(shù),將玩家手指觸碰點(diǎn)轉(zhuǎn)化為游戲虛擬的三維場(chǎng)景中的具體坐標(biāo)點(diǎn),讓玩家與虛擬場(chǎng)景中的對(duì)象進(jìn)行交互.手機(jī)屏幕左下角(0,0),右上角為(Screen.width,Screen.height);通過Unity 中的函數(shù)Input.GetTouch (0).positon獲取點(diǎn)擊的位置,將玩家手指觸碰的點(diǎn)的屏幕坐標(biāo)轉(zhuǎn)化為虛擬三維場(chǎng)景中的三維坐標(biāo),即從屏幕坐標(biāo)點(diǎn)發(fā)射一條射線,朝向屏幕內(nèi)部的游戲世界,在unity中實(shí)現(xiàn)方法是:
if (Physics.Raycast (transform.position,Vector3.right,outhit,100, mask.value)){
Debug.DrawLine(transform.position,hit.point,Color.red,1);
}
2.3.4交互技術(shù)
一款游戲若是缺少交互就無(wú)法生存,所以交互技術(shù)是任何游戲的核心技術(shù).這款游戲的交互主要包括玩家和游戲中的主角,主角與NPC,主角與三維場(chǎng)景,NPC與三維場(chǎng)景.
玩家與游戲中的主角的交互式通過觸控技術(shù),玩家在手機(jī)屏幕上的信息實(shí)時(shí)反饋到虛擬的三維場(chǎng)景中,使場(chǎng)景中的虛擬的角色進(jìn)行反應(yīng):行走、跑動(dòng)、射擊等;主角與NPC的交互是通過碰撞檢測(cè)技術(shù)來(lái)實(shí)現(xiàn)的,給NPC的prefab添加一個(gè)比他本身略大的一個(gè)碰撞盒,當(dāng)碰撞盒和主角發(fā)生碰撞反應(yīng)時(shí)就觸發(fā)NPC的攻擊動(dòng)作,并降低主角的血量.主角可以是用槍、刀和手榴彈三種武器,當(dāng)槍發(fā)射的子彈或者刀的碰撞盒與NPC發(fā)生碰撞的時(shí)候會(huì)觸發(fā)NPC的掉血機(jī)制來(lái)消滅NPC;手榴彈則先檢測(cè)是否與場(chǎng)景中的地面或者NPC發(fā)生碰撞,若碰撞則觸發(fā)其上的粒子特效并且在手榴彈的爆炸范圍內(nèi)對(duì)NPC造成傷害降低其血量;主角與三維場(chǎng)景和NPC與三維場(chǎng)景的交互都是通過碰撞檢測(cè)技術(shù)來(lái)實(shí)現(xiàn)的,給場(chǎng)景中的地面和障礙物綁定碰撞盒,當(dāng)主角或者NPC與之發(fā)生碰撞不讓其穿透障礙物.
隨著計(jì)算機(jī)技術(shù)的日益發(fā)展,Unity3D游戲引擎越來(lái)越平民化.此篇文章在對(duì)Unity3D游戲引擎精心研究的基礎(chǔ)上結(jié)合FPS射擊類游戲的特點(diǎn),通過3D建模技術(shù)和次世代貼圖技術(shù),運(yùn)用碰撞檢測(cè)、觸控、粒子系統(tǒng)等算法和人工智能交互技術(shù)進(jìn)行設(shè)計(jì)與開發(fā).總結(jié)出了游戲場(chǎng)景構(gòu)建和基本功能實(shí)現(xiàn)的一些方法.游戲的故事情節(jié)性不明顯,游戲模式稍微單一,還需要在游戲的多元化方向進(jìn)行進(jìn)一步的深化研究.
〔1〕吳業(yè)紅.基于3DSMax材質(zhì)與貼圖技術(shù)的教學(xué)探討[J].電腦知識(shí)與技術(shù),2009,5(36):103,112.
〔2〕伍傳敏,張帥,邱錦明.基于Unity3D的FPS游戲設(shè)計(jì)與開發(fā)[J].三明學(xué)院學(xué)報(bào),2012,29(2):35-40.
〔3〕SchachSR.軟件工程面向?qū)ο蠛蛡鹘y(tǒng)的方法[M].北京:機(jī)械工業(yè)出版社,2009.
〔4〕宜雨松.Unity3D開發(fā)[M].北京:人民郵電出版社,2012.6.
〔5〕華澤璽,王迎春,孫建順.基于粒子系統(tǒng)的爆炸仿真研究[J].計(jì)算機(jī)科學(xué),2012,39(4):278-281.
T P311.52
A
1673-260X(2016)08-0038-02
2016-05-12
北方工業(yè)大學(xué)2016實(shí)培計(jì)劃大學(xué)生科研訓(xùn)練計(jì)劃深化項(xiàng)目(XN 003-17)