姚子杰
摘 要:本文主要講解手機游戲的設計與實現,對游戲引擎交互技術應用進行專題研究,以界面交互腳本實現、角色控制腳本實現、賽道隨機腳本實現等四個部分,詳細介紹了運用Unity3D引擎實現游戲開發(fā)的研究過程。
關鍵詞:游戲開發(fā);手機游戲;程序開發(fā)
1 Unity3D游戲引擎
Unity3D是由Unity Technologies公司開發(fā)的一款專業(yè)游戲引擎。軟件成本較低,非常適合小團隊及初創(chuàng)公司使用。Unity3D引擎可以運行在Windows和Mac OS X系統(tǒng)下,可輕松發(fā)布游戲及項目至Windows、Mac、Wii、iPhone和Android平臺。
2 《烏龜速遞》游戲界面實現的要點分析
用戶須通過人機交互動作來參與游戲。要完成人機交互,在人和計算機之間必須有一個有效的接口,這個接口既要向人反饋信息也要向游戲設備傳遞指令,這就是游戲的圖形用戶界面。
2.1 基于Unity3D實現游戲界面的交互功能
本節(jié)將以《烏龜速遞》游戲主界面為例,全面介紹在Unity3D引擎平臺中,如何實現界面交互功能的。
將主界面中的各個元素單獨存儲成PNG格式圖像,如按鈕“新的游戲”,就需要將文字層、按鈕層分開保存,而按鈕層又分成了兩個:一個是默認顯示狀態(tài);另一個是點擊選中狀態(tài)。這樣分層的存儲更方便程序直接調用,并且是帶有透明層的文件,不會擋住下一層內容顯。
(1)主界面項目在Unity3D中創(chuàng)建:Unity3D的默認控件提供了一個預先制作的、簡單的藍色模版作為皮膚,但是,并不一定我們制作的每一款游戲都能使用它。所以在這次的項目中我們使用了GUI Texture來進行界面的制作。GUI Texture是顯示在二維的平面圖像。他們特別適用于用戶界面元素、按鈕和裝飾。它們的定位和縮放只通過改變X和Y軸來完成。
(2)創(chuàng)建主界面:打開Untiy3D軟件主界面在菜單中選擇GameObject→Crearte Other→GUI Texture。并將創(chuàng)建出來的GUI Texture改名為bg,讓我們可以在后面更方便找到它。當創(chuàng)建完GUI Texture之后,把我們的之前制作完成的背景圖放置在GUI Texture組件中的Texture參數中,并將它的wedth和height兩個參數修改為1467和587。接著在Transform組件中將Position的Z軸坐標改為-3,這樣背景圖就會設置在最底層,便于界面上的按鈕、文字和游戲標志可以放置在背景圖的上方。按同樣的方法將其他的按鈕和游戲標志放置在界面上,分別將“新的游戲”、“排行榜”、“設置選項”和“退出游戲”等按鈕命名為“button_Start”、“button_top10”、“button_option”和“button_quit”,方便后期的識別。在Project面板上創(chuàng)建按鈕及背景等相對應的prefabs,并將每一個GUI Texture分別拖拽到相對應的prefabs中,然后保存即可。
2.2 按鈕實現交互功能
“新的游戲”按鈕在已建立的界面的功能按鈕上增加該功能。在界面完成的基礎上實現該按鈕的功能。
首先需要判斷手指是否觸碰該按鈕,然后這時候就需要用到腳本語言的Update()函數,因為Update()函數是在腳本執(zhí)行的過程中反復調用,我們可以通過它來檢測手指是否觸碰該按鈕。當手指觸碰到按鈕的時候就會執(zhí)行changeScene()函數,切換到下一個界面。腳本編寫完成之后,將腳本拖拽到Hierarchy面板上的“button_Start”按鈕上。
當“新的游戲”按鈕完成觸碰檢測功能之后,開始編寫替換圖片功能的代碼。首先創(chuàng)建一個Texture2D的公共變量,名稱為beginGame_p,把圖片拖拽到參數中。然后當按鈕被點擊之后,我們需要把貼圖替換為beginGame_p,需要在changeScene()函數里面添加guiTexture.texture = beginGame_p;這一串代碼,整個按鈕效果實現,其他幾個按鈕做法相同。
3 隨機賽道腳本實現的要點分析
3.1 分段賽道設置
在游戲策劃的時候,就設定了每一個關卡由多個賽道組構成,隨機賽道的好處,一是讓玩家每一次進入游戲都有新鮮感,不會產生賽道的重復性。二是增加游戲難度,讓玩家不容易記住賽道的行駛路徑,不會輕松地通過,增加賽道的可玩性。
3.2 隨機賽道程序實現
第一,我們需要設置賽道的四個坐標點的位置。雖然賽道的模型文件是隨機的,但是我們在程序中約束了每一個段賽道的長度,那么在更換模型的時候,賽道的坐標點是不會改變的。
第二,通過獲取游戲進度得到玩家當前游戲的難度,并保存在stageNum變量中。代碼如下:
第三,根據Random()隨機函數所取值得到賽道數組,代碼如下:
第四,不論賽道如何隨機,整條賽道的開頭和結尾是保持不變的,所以我們把這個隨機的C#腳本保存在“kaiTou”賽道中,功能得以實現。
4 小結
本文對基于Untiy3D的《烏龜速遞》游戲程序要點分析。探討了程序實現的方法,并研究了能夠實現的主要效果。游戲的模塊復雜多樣,需要不同的技術人員分工可以完成。具體在本章中對游戲的主界面布局、按鈕點擊反饋及按鈕替換圖形做了一個要點分析。針對由本游戲一個亮點的隨機賽道也進行了程序分析。