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