?

基于Unity的休閑益智類游戲設計與開發

2021-04-20 02:36郭欣桐
電子技術與軟件工程 2021年1期
關鍵詞:圖層按鈕工具

郭欣桐

(黑龍江工商學院 黑龍江省哈爾濱市 150025)

1 概述

隨著生活節奏的加快,游戲成為人們首選的休閑娛樂方式。正當適度的休閑游戲方式在釋放壓力的同時也可提高大腦反應速度[1]。目前大部分休閑益智類游戲采用2D 與Internet 相結合的方式,如保衛蘿卜、切水果、捕魚達人、憤怒的小鳥,玩法簡單易操作,適合各個年齡段人群,游戲內容輕度,僅占用玩家碎片化時間,花費的流量、時間、金錢較少,游戲畫風簡易,色彩豐富。

本文基于Unity 游戲引擎的2D 功能,針對休閑益智類游戲的特點,設計開發了一款休閑益智類游戲。通過使用Photoshop 設計制作游戲角色和各個場景中的游戲對象模型,將模型導入unity 中搭建游戲場景,利用Unity 編程語言C#實現主角轉身、移動、攻擊、主角與各物體碰撞消息的傳遞等游戲核心功能,從而完成整個游戲流程。

2 游戲設計開發主要核心技術及開發工具

PhotoShop 簡稱“PS”,由Adobe 公司推出。PhotoShop 作為一款操作性強,使用廣泛的圖形類平面處理軟件,在圖像處理領域有著較大的使用優勢[2]。PhotoShop 其強大的色彩調節功能,可方便地對圖像的色彩進行調節及校正,解決圖像本身由于曝光過度造成的過亮或光線不足而太暗的問題。濾鏡功能,可制作出各種絢麗奪目的特效,如風格化,素描等以滿足使用者的需求。PhotoShop采用圖文界面,將常用功能以圖標的形式匯總排列在工具箱中,使用者通過點擊對應圖標觸發相應功能,完成編輯圖像的各種操作。目前PhotoShop 最新版本為PhotoShop2020。

Unity 是由丹麥Unity Technologies 公司開發的綜合性多平臺的游戲開發工具。使用Unity 可實現多平臺一次性開發且兼容性較好。Unity 支持Android,Windows,Linux,Web Player,PC,IOS,BlackBerry ,Window Phone8,Xbox 等多個平臺發布。2018年該引擎已經擴展到支持超過25 個平臺[3-4]??奢p松實現同款游戲在各大主流游戲平臺無縫并存以及跨平臺對決[5]。Unity 的強大之處在于其將編輯器、腳本、地形編輯、物理、著色器、網絡、跨平臺發布、版本控制等整合為一體?;赨nity 開發的游戲有爐石傳說,神廟逃亡2,夢幻國度2,神鬼夢幻等眾多游戲。由于手機游戲的流行,Unity Technologies 為Unity 引擎和編輯器推出了新的2D 功能和工作流程。在原有3D 功能的基礎上添加了新的子畫面紋理導入器類型、自動合成功能和專用的2D 渲染器組件后,方便2D 資源的導入、操作、應用。Unity2D 其特點是游戲場景加載速度快,節約計算機內存資源。

3 游戲設計

3.1 游戲規則

玩家所面對的有星星,彩蛋,敵人,炸彈,草藥五個游戲角色。針對這五種游戲角色執行不同的碰撞規則。玩家只有碰撞到星星和彩蛋時,才可獲得相應的積分,星星和彩蛋的積分不同,星星的積分為10 分,彩蛋的積分為20 分。碰撞到敵人和導彈時,必然會失去一定的生命值,每次碰撞失去生命值20 點。玩家共有120 點生命值。玩家可通過鍵盤操作激活攻擊技能,用以躲避導彈或閃躲敵人。當玩家碰撞到草藥可恢復生命值10 點。五種游戲角色的移動速度會隨著時間的增長而加快,若游戲期間玩家的生命值為0,則說明玩家失敗,游戲結束。玩家可在游戲結束界面查看本次游戲積分,選擇重新開始或退出游戲。

3.2 游戲模型

游戲模型主要包括主角人物以及場景游戲對象模型兩部分。

3.2.1 主角人物

游戲主角是游戲的重要組成部分之一。游戲主角選定為恐龍?;谟螒蛑黝}以及減輕玩家的視覺負擔,游戲主角的顏色設計為綠色,這一色調也與游戲背景相呼應,有利于游戲場景還原,降低游戲場景的違和感。游戲主角的風格設計為簡潔版,有利于不同年齡段的玩家接受。

設計游戲主角雛形,游戲主角主要分為龍角、頭部、身體、手部、尾巴,龍旗、腳六大部分。使用PS 繪圖工具繪制游戲主角輪廓。PS 中常用的繪圖工具有畫筆工具、鉛筆工具以及鋼筆工具。先使用鉛筆工具勾勒輪廓,為后續的鋼筆工具提供參考點,在使用鋼筆工具進行進一步的細化繪制。相比鉛筆工具和畫筆工具,鋼筆工具可通過錨點更好地繪制曲線及復雜的路徑,編輯已有的路徑曲線。

使用鋼筆工具在不同圖層下繪制游戲主角的六大部分,但手和腳通過復制圖層的方式由一個圖形得到兩個相同的圖形,這種復制圖層的方式省時省力。填充各個圖層的顏色,調整圖層位置、和旋轉角度,完成主角輪廓各部位的拼接。但此時主角模型屬于平面圖像,無立體效果,為了用戶體驗度,應當使圖像呈現效果。PS 中添加立體效果的方法很多,常用的為以下四種方式:

(1)圖層樣式中的“斜面和浮雕”功能與圖層樣式其他效果搭配使用。

(2)復制圖層,將新的圖層移動至原圖層斜線方向,多次重復此操作,直至達到理想效果。該方式多用于文字。

(3)利用PS 的3D 功能。但此功能對PS 軟件版本有要求,版本需高于CS4。

(4)在圖像的邊緣添加高光和暗影。

本項目使用方法一和方法四,在設置斜面和浮雕樣式的基礎上,添加高光和陰影效果,從而創建出立體感及浮雕效果,將主角模型變形為陰刻形態。其中斜面和浮雕圖層樣式設置為內斜面,方法選擇平滑,使用較深的顏色作為暗影顏色。

主角模型的輪廓已完成,但整體缺乏層次感,即圖層之間沒有進行遮蓋,可通過調整圖層的順序或添加圖層模板,在圖層模板中將需要遮蓋的部分使用黑色畫筆進行涂抹,需要顯示的部分使用白色畫筆進行涂抹。本項目通過調整圖層的順序,在PS 圖層面板中,由上到下的順序依次為:左手,頭部,嘴內部,嘴外層,尾巴,身體,龍旗,右手,左腳,右腳。

在主角模型輪廓的基礎上,添加各部位細節,主要主要包括牙齒,眼睛,瞳孔,鼻孔,牙齒,龍角,頭部與嘴的銜接部分。通過PS 中的矩形工具,圓角矩形工具,橢圓工具,多邊形工具,直線工具,自定義工具可方便地繪制相應的圖形。本項目中的眼睛,鼻孔,瞳孔,頭部與嘴的銜接部分均使用橢圓工具繪制。眼睛部位添加斜面和浮雕效果,使其更加立體,并利用灰色畫筆在眼睛的下部邊緣繪制暗影。PS 共提供了五種漸變方式,分別為線性漸變、徑向漸變、角度漸變、對稱漸變和菱形漸變。瞳孔依據需求需使用徑向漸變,即從起點顏色白色到終點顏色黑色從內到外進行圓形漸變。設計后的主角模型如圖1所示。

圖1:主角模型

3.2.2 場景游戲對象模型

游戲共有四個界面,分別為游戲進入界面,游戲介紹界面,游戲關卡界面,游戲結束界面。主要針對以上四個界面進行場景以及相關模型設計與創建。

(1)游戲進入場景游戲對象模型。游戲進入界面需要制作的模型為開始按鈕,退出按鈕,界面背景,游戲文字。

開始按鈕和退出按鈕具有兩個狀態,正常狀態和點擊狀態,點擊狀態在正常狀態的基礎上,調整大小,文字顏色更改為紅色,使其突出顯示。正常狀態下的開始按鈕與退出按鈕的制作流程相似,均采用圓角矩形工具,填充藍色漸變。使用橫排文字工具輸入對應文字,將文字位置調整至矩形之中。使用鋼筆工具繪制矩形邊框下方陰影。點擊狀態在上述完成的模型基礎上,使用魔棒工具,單獨選定文字部分,更改顏色即可。

游戲進入界面背景借鑒游戲“憤怒的小鳥”原圖,將原圖中的文字以及游戲角色去掉。

PS 中去除多余部分的方法主要有兩種:1.使用索要工具。2.使用仿制圖章工具。由于天空背景為漸變色,變化較細微,不適合使用方法1 處理文字,故使用方法2 仿制圖章工具,選取文字周圍進行去除。原圖中的游戲角色去除使用方法2,將小鳥周圍部分索套,按住Alt 鍵將索套部分移動小鳥將其遮擋。

游戲文字為Dinosaur catch eggs。使用文字工具輸入文字,通過變形文字工具將文字變形,添加斜面和浮雕,內發光以及陰影圖層樣式。在PS 中文字圖層不能直接使用濾鏡,應將文字圖層柵格化轉換為正常圖層,但圖層的內容變為不可編輯的文本,柵格化文字后,添加濾鏡水波效果。

(2)游戲介紹場景游戲對象模型。游戲介紹界面需要制作的模型:星星、彩蛋、敵人,藥包。這些圖片的處理過程中須截取部分圖像。的方法:1.利用裁切工具2.利用選框工具3.魔棒工具。使用裁剪工具直接將星星、彩蛋、敵人,藥包從相應的圖中裁出,在使用魔棒工具選中背景將其刪除。最后導出文件格式為PNG。PNG 格式的圖像背景透明。

(3)游戲關卡場景游戲對象模型。游戲關卡界面需要制作的模型:石頭、草地、火球、子彈頭以及7 種狀態的生命條。

石頭,火球,子彈頭三者的制作流程與上述游戲介紹界面的星星處理方法一致。7 種狀態的生命條由一張只有一格血(20 點)的生命條圖片使用仿制圖章工具制作而成。

(4)游戲結束場景游戲對象模型。游戲結束界面需要制作的模型:再玩一次按鈕,Score 文字,結束邊框,game over 文字,乘號。其中再玩一次按鈕分為兩種狀態,正常狀態以及點擊狀態。再玩一次按鈕的正常顯示狀態和點擊狀態圖片的制作方法與開始按鈕一致。game over 文字使用文字工具輸入,添加變形文字中的上弧效果。乘號使用文字工具輸入,填充顏色為黃色。

4 游戲實現

4.1 游戲場景

4.1.1 游戲進入場景

該場景主要實現的是玩家通過點擊界面的兩個按鈕進入游戲或退出游戲。主要使用OnMouseEnter,OnMouseExit 函數和IEnumerator,Application.LoadLevel 函數實現功能。在Unity 中當鼠標進入到GUI 元素或碰撞體時調用OnMouseEnter 函數,鼠標移出GUI 元素或碰撞體時調用OnMouseExit 函數,當用戶點擊按鈕時使用Application.LoadLevel 函數加載File 菜單Build Settings 關卡列表中的關卡。

4.1.2 游戲介紹場景

該場景主要實現的是顯示游戲規則文字,15 秒之后自動轉到游戲關卡場景。主要使用Time.deltaTime,Application,LoadLevel 函數完成。顯示文字通過選擇GameObject 菜單中CreateOther|GUIText 建立GUI,將相應的文字輸入至屬性面板中的Text 處。

4.1.3 游戲關卡場景

該場景主要實現的是子彈的發射。通過子彈隨機產生彩蛋,敵人,星星,草藥,設置各游戲配角的下落時間間隔為5 秒。主要使用二維數組Rigidbody2D[]存放物體,在實例化時使用隨機數Random.Range()實現隨機掉落物體。血條通過選擇GameObject 菜單中CreateOther|GUITexture,建立GUI,將其顯示在界面左上角,方便用戶直觀地查看自身血量。

4.1.4 游戲結束場景

該場景主要實現的是顯示本局游戲數據,并使玩家通過點擊兩個按鈕能夠重新開始游戲或退出游戲。主要使用OnGUI()實現,在相應的位置用GUI.Label()來顯示相應的數,需要調用游戲關卡中的變量,后續小節會講到具體實現方法。界面其他圖片直接拖拽至相應的位置,按鈕的顯示通過選擇GameObject 菜單中CreateOther|GUITexture,建立GUI。

4.2 游戲核心功能

4.2.1 游戲主角移動轉身功能

游戲主角移動功能通過鍵盤左右方向鍵實現向左或右進行移動。在移動的同時,系統判斷主角朝向,確定是否使游戲主角轉身。因游戲主角為平面模型,進行左右轉身時,模型須向左轉或向右旋轉180 度。實現過程主要涉及三個函數,分別為Update,FixedUpdate 以及自定義函數Flip。Update 函數中通過Input.GetAxis("Horizontal")獲取水平軸的方向。在Unity 中FixedUpdate函數在固定的是時間間隔執行,不受游戲幀率的影響。FixedUpdate函數判斷主角人物的朝向。通過獲取水平軸方向h 判斷玩家是否按下左右鍵,h>0 代表玩家按下右鍵,h<0 代表玩家按下左鍵,布爾變量facingRight 判斷主角是否朝向右側,只有當主角朝向右側,按下左鍵或主角朝向左側,按下右鍵這兩種情況下才可轉身。自定義Flip()函數將facingRight 進行取反操作,通過引用中間變量theScale 改變transform.localScale,transform.localScale 表示獲取主角當前的局部縮放值,在Unity 中transform 的position 和Scale 只能整體改變,若只改變其中一項,用自定義變量代替轉換。

4.2.2 游戲主角攻擊功能

主角攻擊功能主要指的是發射火球阻擋炸彈的攻擊,達到躲避炸彈的目的。在Untiy 中創建GameObject 作為發射器,通過該發射器發射火球。將火球設置為預制件(Prefab)。在Unity 中預制件是根據需要預先做好的物體,預制物體可以保存火球的所有信息。主角攻擊功能代碼由Update 函數實現完成,通過Input.GetMouseButtonDown(0)函數判斷玩家是否按下鼠標左鍵,三維向量獲取當前物體的位置transform.postion,在當前位置通過Instantiate 函數實例化預制件火球。

4.2.3 主角與各物體碰撞消息傳遞功能

游戲中的炸彈以及掉落的各類游戲元素不能穿破主角人物。為了達到該物理效果,場景中的物體需要添加碰撞,以便完成碰撞檢測。在Unity 中要產生碰撞須為游戲對象添加剛體和碰撞器,剛體可以讓物體在物理影響下運動,碰撞器是物理組件的一類,在物理模擬中,沒有碰撞體的剛體會彼此相互穿過。Unity 中檢測碰撞發生的方式有兩種,一種是利用碰撞器,另一種是利用觸發器。碰撞器和觸發器主要的區別為:碰撞器是觸發器的載體,而觸發器只是碰撞器身上的一個屬性。為prefabs 文件夾中的預制件添加Collide。通過OnTriggerEnter 函數實現主角物體與下落物體碰撞消息傳遞,在Unity 使用OnTriggerEnter 需將Collider 屬性中的OnTrigger 勾選。下落物體通過代碼DropObject 中的SendMessage傳遞消息給主角人物。判斷碰撞物是彩蛋、炸彈、草藥、星星、石頭,是通過識別碰撞物屬性中的“Tag”標簽屬性實現[6],當玩家與某物體發生碰撞時,通過if 語句判斷與哪一物體發生碰撞,從而實現主角與各物體碰撞消息傳遞,根據碰撞物體計進行積分、血量計算,將血條的變化通過OnGUI 顯示出來。

游戲最終效果如圖2所示。

圖2:游戲最終效果

5 結語

本次設計通過Unity 引擎實現了休閑益智類游戲—恐龍吃彩蛋的設計與開發。游戲主要實現了主角基本操作(移動,轉身,攻擊)、游戲場景對象自動加載、主角與游戲場景對象碰撞信息傳遞,游戲關卡數據分析等功能。游戲可在PC 端以及安卓手機端安裝且游戲交互功能正常,可流暢運行。該游戲操作簡單,具備一定的可玩性。

猜你喜歡
圖層按鈕工具
波比的工具
波比的工具
巧用混合圖層 制作抽象動感森林
“巧用”工具
圖層法在地理區域圖讀圖中的應用
跟我學添加真實的光照效果
淺析“遞層優化法”在礦井制圖中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合