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