于永勝,李效偉,許駿勝,張海程,莊緒姣
(山東女子學(xué)院 信息技術(shù)學(xué)院,山東 濟(jì)南 250300)
摘要:主要介紹使用Unity3D制作躲避類手機(jī)游戲的方法。實(shí)現(xiàn)通過手機(jī)的重力感應(yīng)控制角色躲避飛來的箭,實(shí)現(xiàn)箭的數(shù)量隨機(jī)和準(zhǔn)確度隨機(jī),實(shí)現(xiàn)攝像機(jī)自然地轉(zhuǎn)動視角,使玩家有更舒適的視覺體驗。實(shí)現(xiàn)箭的射出和擊中時的音效及擊中玩家后的粒子特效,使游戲的打擊感生動。以上功能的實(shí)現(xiàn)使游戲帶給玩家更加豐富的游戲體驗。
關(guān)鍵詞:Unity3D;JavaScript;躲避類;3D手機(jī)游戲
0引言
手機(jī)游戲已經(jīng)進(jìn)入人們的娛樂生活中,成為娛樂消遣的不可或缺的方法。三維游戲逼真的三維效果和良好的人機(jī)交互可以帶給用戶愉悅的游戲體驗。不論是從游戲框架方面還是開發(fā)周期方面來分析,三維游戲的制作都很難脫離游戲引擎。Unity3D是由丹麥Unity公司開發(fā)的游戲開發(fā)工具,Unity3D游戲引擎本身強(qiáng)大的物理特性、跨平臺發(fā)布、地形編輯、著色器、腳本、網(wǎng)絡(luò)、物理、版本控制等特性[1],以及通過Unity3D進(jìn)行作品開發(fā)的快速高效性[2],使其受到開發(fā)人員的歡迎。
在眾多移動平臺游戲中,躲避類手機(jī)游戲現(xiàn)在越來越受歡迎。躲避類手機(jī)游戲已經(jīng)有很多經(jīng)典作品了,比如《神廟逃亡》、《小黃人快跑》等,這些游戲都是第三人稱躲避類而且節(jié)奏很強(qiáng)的游戲。本文游戲的操作設(shè)計比較人性化,玩家僅通過重力感應(yīng)就可以操控角色,箭的設(shè)置比較用心,箭每次飛來的數(shù)量隨機(jī),準(zhǔn)確度也隨機(jī),而且會交替到達(dá);充分模仿了人的視覺習(xí)慣,玩家獲取的視角會隨箭而變化。游戲中玩家流血效果的制作運(yùn)用了粒子系統(tǒng)[3];地形的制作用到了Unity3D本身的地形編輯工具[46];游戲運(yùn)用了碰撞檢測技術(shù)[7]。
1游戲設(shè)計
游戲設(shè)計包括游戲內(nèi)容設(shè)計和游戲功能設(shè)計。游戲內(nèi)容設(shè)計包括游戲的操作方法和游戲的細(xì)節(jié)設(shè)計;游戲功能設(shè)計是對組成游戲的要素的具體設(shè)計。
1.1游戲內(nèi)容設(shè)計
游戲的操作主要通過重力感應(yīng)實(shí)現(xiàn),玩家進(jìn)入游戲后,會看到一支支箭從前方射過來,每次來的箭的數(shù)量隨機(jī),準(zhǔn)確度也隨機(jī),玩家需要通過傾斜屏幕來躲避飛來的箭。
1.2游戲結(jié)構(gòu)設(shè)計
游戲的結(jié)構(gòu)包括3D森林場景、重力感應(yīng)控制、箭的設(shè)置、玩家動態(tài)視角和游戲的音效與粒子特效。游戲整體設(shè)計如圖1所示。
2游戲?qū)崿F(xiàn)
游戲的實(shí)現(xiàn)包含游戲場景的制作、重力感應(yīng)控制、箭的設(shè)置、玩家動態(tài)視角及音效與粒子特效。游戲場景的制作包括地形制作、植物的添加以及天空盒的添加;重力感應(yīng)控制用于控制角色移動;箭的設(shè)置包含箭的數(shù)量和準(zhǔn)確性的設(shè)計隨機(jī)性;玩家動態(tài)視角是實(shí)現(xiàn)玩家在躲避箭時攝像機(jī)視角的自然變化;音效與粒子特效包含箭射出和玩家被擊中時的音效和此時的粒子效果。
2.1游戲場景的制作
游戲場景的制作包含地形和植被的制作以及天空盒的添加。地形和植被的制作包括制作高低起伏的地形和森林;天空盒的添加指給游戲場景加一個天空背景。
?。?)地形和植被的制作
森林地形的制作包括地表材質(zhì)的添加以及制作高低起伏的地形。首先要通過創(chuàng)建terrain來創(chuàng)建一塊平地。地表材質(zhì)貼圖需要通過 “Add Terrain Texture”面板添加。高低起伏的地形的制作需要先做出有一定高度的山丘,然后磨平這些山丘比較尖銳的角就可以了。
添加樹和草的方法很相近。添加樹時,需要先在“add tree”面板中添加樹的模型,點(diǎn)擊add按鈕后,就可以用筆刷工具在場景中種樹了。添加草時只要添加做好的草的png格式的圖像就能在場景中用筆刷工具種草了。
(2)天空盒的添加
天空盒的添加包括向場景中添加和向攝像機(jī)添加,這里采用的是向場景中添加。首先要導(dǎo)入天空盒資源包,然后向skybox Material拖入不同的天空盒文件就能添加不同的天空盒。
2.2重力感應(yīng)控制
重力感應(yīng)是玩家操縱游戲角色的方法。通過調(diào)用Input.acceleration.x控制角色的水平移動,調(diào)用Input.acceleration.z控制角色的上下移動。
重力感應(yīng)實(shí)際是調(diào)用了手機(jī)的加速度感應(yīng)器,包含x、y和z軸三個方向上的加速度數(shù)值,當(dāng)手機(jī)晃動時,每個軸上的加速度數(shù)值都會發(fā)生相應(yīng)的變化。當(dāng)手機(jī)左邊高度低于右邊高度時,Input.acceleration.x小于0,角色向左移動;反之同理;當(dāng)手機(jī)的屏幕有朝上的分量,Input.acceleration.z小于0,角色向上移動;反之同理。
2.3箭的設(shè)置
箭的設(shè)置包括每次飛來的箭數(shù)量隨機(jī)和每一支箭的準(zhǔn)確度隨機(jī)。
?。?)數(shù)量隨機(jī)
場景中需要設(shè)置多支箭,只要把每一只箭的速度設(shè)置成隨機(jī),當(dāng)箭飛到玩家身后一段距離后,將箭的位置重置到玩家前方,而且將箭的速度也一起重置,這樣,每一支箭被重置到玩家前方,這一支箭的速度就會發(fā)生變化,玩家每一次遇到的箭的數(shù)量也會變?yōu)殡S機(jī)。在每次將箭重置到玩家前方時,還將箭在射向玩家方向上的坐標(biāo)設(shè)置成一定范圍的隨機(jī)值,這樣就使玩家每次遇到的箭的數(shù)量更加不確定,使本游戲的趣味性更強(qiáng),變化性更豐富。
?。?)準(zhǔn)確度隨機(jī)
當(dāng)將箭的位置重置為玩家前方時,通過箭的高度和水平位置的調(diào)整可以使箭的準(zhǔn)確度不確定。將箭的高度和水平坐標(biāo)重置成一定范圍的隨機(jī)值就可以實(shí)現(xiàn)箭是隨機(jī)的;將箭的高度重置成玩家的高度、水平坐標(biāo)重置成玩家的坐標(biāo)就可以實(shí)現(xiàn)箭的追蹤,這里通過emp.transform.position.x、emp.transform.position.y和emp.transform.position.z獲取玩家的三維空間坐標(biāo)。
2.4玩家動態(tài)視角
視角的變化主要是用LookAt來實(shí)現(xiàn)的。LookAt函數(shù)能使物體旋轉(zhuǎn)自身,使其指向目標(biāo)物體所在的位置。首先需要獲取箭在三維空間中的坐標(biāo)arrow.transform.position.x、arrow.transform.position.y和arrow.transform.position.z,然后將箭的位置作為參數(shù)帶入LookAt函數(shù)。
2.5音效與粒子特效
游戲中的音效與粒子特效的實(shí)現(xiàn)都是通過用代碼調(diào)用在場景中創(chuàng)建的組件實(shí)現(xiàn)的。
(1)游戲音效
箭擊中角色所觸發(fā)的音效的實(shí)現(xiàn)方法如下。首先在場景中建立一個空物體hit,在hit上添加Audio Source音頻組件,然后將聲音文件拖到音頻組件的Audio Clip中,再在控制角色移動的腳本中聲明一個AudioSource類型的變量music,最后用music獲取剛才的聲音組件AudioSource,當(dāng)箭射中了角色時,就用music.play()觸發(fā)這一段音效。
(2)粒子特效
箭擊中玩家時會觸發(fā)粒子特效,實(shí)現(xiàn)方法包括創(chuàng)建粒子系統(tǒng)物體和通過代碼控制粒子物體。
先創(chuàng)建一個粒子系統(tǒng)物體Particle System,要在Inspector中將粒子的顏色Start Color調(diào)整為紅色;粒子持續(xù)時間需要設(shè)定為確定值,這里需要將Looping的對勾去掉,再將Duration的值設(shè)定為確定值;通過Start Lifetime調(diào)整粒子存在的時間;通過Start Speed調(diào)整粒子噴出的速度;再通過調(diào)整Emission中的Rate來改變單位時間里發(fā)射的粒子數(shù)。
創(chuàng)建一個GameObject的變量particle,用particle去獲取Particle System,當(dāng)箭擊中了角色時,就通過particle.particleSystem .Play ()觸發(fā)這個粒子效果。
游戲界面如圖2、圖3所示,它的實(shí)現(xiàn)要有3D的效果,而且背景必須要精美,這樣才能有足夠的吸引力。
4結(jié)論
這是一款基于Unity3D開發(fā)平臺制作的游戲,運(yùn)用了JavaScrip腳本,實(shí)現(xiàn)了游戲場景的制作、重力感應(yīng)控制、箭的設(shè)置、玩家動態(tài)視角及音效與粒子特效,但模型的制作還需要再精細(xì)一些,場景中可以加一些動態(tài)的變換的元素,3D效果還可以通過暴風(fēng)墨鏡加強(qiáng)。
參考文獻(xiàn)
?。?] 王樹斌.淺析Unity3D開發(fā)游戲流程及常用技術(shù)[J].電腦知識與技術(shù),2012,8(22):53515352.
?。?] 李效偉,張海程,董樹霞,等.Unity3D引擎在軟件類學(xué)科競賽中的應(yīng)用[J].計算機(jī)教育,2015(24):69.
?。?] 謝韜.基于Unity3D粒子系統(tǒng)的游戲特效實(shí)現(xiàn)[J].現(xiàn)代計算機(jī),2015(16):3032.
?。?] 蔣元,蔡勝軍,何紹勇,等.基于Unity3D的虛擬地理環(huán)境構(gòu)建[J].現(xiàn)代計算機(jī),2014(22):5255.
?。?] 張敏.基于Unity3D的三維地形建模[J].湖南工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報,2014,14(6):1618.
?。?] 王亞萍.淺析Unity3D創(chuàng)建環(huán)境地形[J].計算機(jī)光盤軟件與應(yīng)用,2012(19):175.
?。?] 李杰,楊娜,李釗.真實(shí)感游戲中的碰撞檢測方法研究[J].現(xiàn)代計算機(jī),2014(1):3537.