999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Unity3D引擎的吃豆人游戲設計

2020-01-10 12:43:50郭子豪李燦蘋
現代計算機 2019年34期
關鍵詞:界面游戲

郭子豪,李燦蘋

(廣東海洋大學電子與信息工程學院,湛江 524008)

0 引言

Unity3D是由丹麥Unity公司開發的游戲開發工具,作為一款跨平臺的游戲開發工具,從一開始就被設計成易于使用的產品[1]。Unity3D引擎[2]十分強大,可以開發2D、2.5D、3D游戲,同時在市場經濟應用上也十分廣泛,例如應用于VR(虛擬現實)、3D設計、建筑業、醫療成像等方面[3]。在這種大勢所趨之下,市場越來越完善,Unity功能也越來越強大。

電子游戲自上世紀60年代誕生以來,短短的幾十年得到迅速的發展,極大地推動了軟硬件行業發展[4]。與此同時,互聯網迅速發展的今天,電子游戲具有很大的市場潛力,而5G時代的到來,更多互聯網企業開始涉及游戲制作、VR制作方面的業務,更是促進了電子游戲行業的發展。

利用Unity3D引擎制作的這款復古版2D像素游戲,很多90后可能都玩過,這款游戲每局操作時間短,按鍵簡單方便,工作學習之余能給人們帶來消遣,另外該款游戲最大的改進是可以在PC端、移動設備端及PCE端等上運行,可以滿足各類人群的使用。

1 游戲功能設計

1.1 游戲規則

首先玩家進入游戲后需要用鼠標點擊畫面上的Start按鈕進入游戲,然后有4秒的游戲倒計時畫面,倒計時結束后正式進入游戲,如果玩家在游戲中被淘汰,畫面跳出Game Over定格3秒后將回到游戲開始界面;如果玩家勝利,將會彈出Win的慶祝畫面,按任意鍵回到開始界面;如果玩家要退出界面,可以直接點擊開始界面的Exit按鈕。

玩家通過W、A、S、D(或者對應的方向鍵)控制吃豆人按照方向移動,吃掉關卡里的全部豆子即闖關成功,期間也要躲避敵人的攻擊,若是Pacman與敵人的路徑重合,玩家就會被淘汰。另外每隔10秒將從剩下的豆子中刷新一個超級豆子,Pacman吃到該豆子在3秒內將會變成超級吃豆人,可以吃到敵人,敵人就會回到老巢。

《Pacman吃豆人》的計分面板由Remain、Eaten、Score組成,分別代表著剩余豆子,吃掉的豆子以及分數,其中吃掉一個普通豆子+100分,吃掉一個超級豆子+300分,吃掉一個敵人+500分。游戲也加入了音樂以及隨機刷新的超級豆子獎勵,增加和保證了游戲的趣味性以及平衡性,不至于玩家控制的Pacman在游戲迷宮里一直被敵人“追殺”,并且計分面板記錄了玩家的分數,可以增加玩家與其他玩家的互動性。

1.2 游戲功能

(1)玩家可以控制Pacman在迷宮內按上下左右方向自由移動。

(2)敵人四個小鬼會隨機選擇預設路徑自動巡邏,可以吃掉Pacman。

(3)每隔10秒在剩下豆子中隨機刷新出一顆超級豆子,Pacman吃了超級豆子后在3秒內變成超級Pac?man,可以吃掉敵人。

(4)游戲擁有計分面板,實時計算玩家得分。

(5)點擊Start后有倒計時以及倒計時音效,點擊Exit可直接退出游戲。

2游戲功能實現

2.1 游戲的場景

(1)游戲地圖的初始化

在Maze中添加Box Collider 2D組件,將迷宮的墻都包圍出來,如圖1所示,該組件用于檢測物體之間的碰撞情況,讓游戲里面的人物都無法穿過墻。

圖2 是Box Collider 2D組件的配置,其中is Trig?ger屬性默認不打勾,它表示是否啟用觸發器。是否啟用觸發器主要與腳本有關系,啟動觸發器之后碰撞檢測會觸發腳本的相關方法,地圖不需要添加腳本也不需要做碰撞檢測,故不需要勾上is Trigger屬性。

(2)游戲人物的初始化

首先是Pacman,如圖3,先對Pacman的素材進分割,然后制作成動畫,每個動畫對應擁有一個動畫特效以及一個動畫狀態機,并且利用動畫狀態機設置動畫的Entry(初始狀態)、AnyState(任意時刻)的狀態。在狀態機內定義兩個Float類型的數值DirX和DirY,賦初值分別為1.0與0.0,表示Pacman向右的初始狀態。

同理,將Ghost按照Pacman的方法進行設置,再向地圖里面添加Pacdot,把豆子的素材一顆一顆按照單位像素填進地圖里,最后得到的游戲場景效果如圖4所示。

2.2 游戲的人物

第一個游戲人物是玩家控制的主角:吃豆人Pac?man。

首先對Pacman的prefab預制體增加幾項組件:Circle Collider 2D、Rigidbody 2D。其中 Circle Collider 2D為圓碰撞器,如圖5所示,并將其半徑設為0.95,是為了避免其他誤差。Rigidbody 2D為剛體類型,如圖6所示,這種類型是為了物理仿真運動而設計的(讓物體看起來更像現實世界行為),它的運動受重力、質量、其他因素的影響。因為此款游戲為2D像素游戲,故將Gravity Scale設置為0,并且凍結Z軸。

圖6 Rigidbody 2D剛體組件

然后編寫控制Pacman移動的C#腳本,將腳本放在Scr文件夾下,在Visual Studio 2017下編寫運行。腳本代碼中涉及到一些腳本生命周期的方法,即掛載到的游戲物體“從出生到死亡”所經歷的一些事件。這些生命周期事件,是一些特定的方法,而且是由Unity引擎事先定義好,在游戲的運行過程中,由引擎自動調用。Start()方法是開始事件,只執行一次;FixedUpdate()方法是固定更新事件,執行N次,0.02秒執行一次,所有物理組件相關的更新都在這個事件中處理,通過差值方法實現Pacman的移動。

下面是控制Pacman移動的核心代碼。

//使用差值移動的方法獲取到達目的地

Vector2 temp=Vector2.MoveTowords(transform.position,dest,speed);

//將剛體移動到目標位置

GetComponent<Ridgidbody2D>().MovePosition(temp);

第二個游戲人物是游戲里的敵人:Blinky、Clyde、Inky、Pinky。

首先給 Blinky、Clyde、Inky、Pinky 四個人物均加上Circle Collider 2D以及Rigidbody 2D組件,并設置is Trigger以及將Gravity Scale設置為0和凍結Z軸。

然后在這些敵人對象中添加Ghost腳本組件。在對Ghost設置巡邏路徑時,應將路徑做成預制件素材,這是為了更加方便地導入腳本方法和導入存儲著路徑坐標的數組。其中GameObject類型的wayPointsGos[]數組存儲的是一組路線(waypoints1,2,3,4),ways集合存儲的是一組路線的具體某一位置。

下面的代碼主要是一種偽AI算法,實現的是Ghost按照固定的四組路線隨機地進行巡邏。四組巡邏路徑區域分布在以Ghost老家為原點坐標,建立二維坐標系的四個象限上,每一組路線就是一個位置的集合,選擇其中一組路徑,遍歷該組路徑。

if(transform.position!=ways[curr])

{

//ways[]數組存儲的是某一確定坐標

Vector2 temp=Vector2.MoveTowards(transform.position,ways[curr],speed);

GetComponent<Rigidbody2D>().MovePosition(temp);

}else

{

curr++;

if(curr>=ways.Count)

{

curr=0;

//wayPointsGos[]數組存儲的是任意一組路線(waypoints1,2,3,4)

LoadPath(wayPointsGos[Random.Rage(0,wayPointsGos.length)]);

}

第三個游戲人物是游戲里的豆子Pacdot。

給780顆Pacdot prefab預制體都增加Box Collid?er 2D組件,勾上is Trigger以啟動觸發器,以便在腳本中通過調用OnTriggerEnter2D()方法來做碰撞檢測,此款游戲主要是對Pacman和Pacdot進行碰撞檢測。

if(collider.gameObct.name=="Pacman")

{

//如果碰撞檢測為超級豆子

if(isSuperPacdot)

{

GameManager.Instance.OnEatPacdot(gameObject);

//調用OnEatSuperPacdot()函數實現對應功能

GameManager.Instance.OnEatSuperPacdot();

//銷毀游戲對象

Destory(gameObject);

}

else

{

GameManager.Instance.OnEatPacdot(gameObject);

Destory(gameObject);

}

}

2.3 游戲的交互

(1)游戲的UI交互(包括開始畫面、實時計分畫面、游戲輸贏效果提示)

StartPanel界面中Start和Exit按鈕分別代表進入游戲和退出游戲。在GamePanel界面中添加Remain、Eaten、Score文本,分別用以顯示剩余的豆子、吃掉的豆子以及獲得的分數。界面效果如圖7和圖8所示。

圖7 StartPanel界面

圖8 GamePanel界面

當吃完所有的豆子后,取得勝利,實現的是隱藏GamePanel畫面,實例化winPrefab畫面,取消所有協程并將游戲狀態設置為false,效果如圖9所示。

當 Pacman被 Ghost吃掉后,游戲結束,隱藏GamePanel畫面,實例化gameOverPrefab畫面,并且畫面停留3秒后,回到游戲初始畫面,效果如圖10所示。

圖9 Win效果

圖10 GameOver效果

(2)游戲的音效交互(包括游戲背景音樂、游戲開始音效等)

音效在整個游戲過程中占有極其重要的地位,直接關系到玩家的感觀享受與游戲體驗。有特色的音效交互能夠非常生動地描繪出游戲所在場景的環境氛圍和背景氛圍,增強游戲的場景感,令人身臨其境[5]。

在該游戲里,主要有兩個音效:一個是背景音樂,另一個是游戲開始倒計時音效。其中背景音樂是給GameManager預制體中添加組件Audio Source,并且將素材里的bgm文件導入到該組件中,當開啟GamePan?el游戲畫面時播放該bgm;倒計時音效是在游戲開始時點擊Start按鈕時,開始播放startClip音樂。

3 游戲測試

游戲開始界面測試:游戲開始界面以及倒計時界面播放背景音樂的畫面,點擊Start按鈕之后播放倒計時動畫。倒計時功能畫面,如圖11所示。

圖11 倒計時功能測試

游戲計分界面測試:游戲中計分板畫面,計分面板由Remain、Eaten、Score組成,分別代表剩余的豆子,吃掉的豆子以及分數,其中吃掉一個普通豆子+100分,吃掉一個超級豆子+300分,吃掉一個敵人+500分。計分UI系統測試界面如圖12所示。

圖12 計分UI系統測試

游戲主要功能測試:每隔10秒從剩下的豆子中刷新一個超級豆,Pacman吃到該豆子在3秒內將會變成超級吃豆人,吃掉Superdot之后,Ghost會變虛,靜止在地圖的畫面上,在SuperPacman狀態下可以吃掉Ghost,Ghost就會回到初始位置上。吃到Pacdot效果和Ghost回到老家功能測試界面如圖13所示。

圖13 吃掉Superdot后的效果

游戲結束測試:游戲勝利以及游戲失敗畫面。如果玩家在游戲中被Ghost碰到,Pacman被淘汰,畫面將跳出Game Over畫面,定格3秒后將回到游戲開始界面,如果玩家將地圖上所有的Pacdot吃完,將會彈出Win的慶祝畫面,按任意鍵回到開始界面。游戲勝利畫面和游戲失敗畫面如圖9和圖10所示。

4 結語

借助Unity3D引擎開發的2D復古游戲——《Pac?man吃豆人》,這款游戲從最初的游戲規則、場景及人物的設計,到場景、人物以及功能的實現,再到UI以及音效的優化,整個制作流程按照游戲開發規范進行開發,并且測試效果達到了功能設計的要求。

雖然這款游戲基本復原了童年的像素游戲,但是也存在很多不足,尤其是在對Ghost的移動控制,現階段只做到偽AI的巡邏路徑,可以優化為更加智能的自動規劃路線。因此,此款游戲還有很大的優化空間。

猜你喜歡
界面游戲
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
空間界面
金秋(2017年4期)2017-06-07 08:22:16
游戲
電子顯微打開材料界面世界之門
人機交互界面發展趨勢研究
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
主站蜘蛛池模板: 日韩A∨精品日韩精品无码| 日韩毛片免费观看| 一级成人欧美一区在线观看| 国产美女在线观看| 波多野结衣第一页| 成人韩免费网站| 国产人人乐人人爱| 亚洲一区毛片| 欧美va亚洲va香蕉在线| 欧美精品v| 91在线无码精品秘九色APP| 国产一区二区三区精品久久呦| 国产在线自乱拍播放| 国产又色又爽又黄| 国产香蕉在线视频| 一本大道香蕉中文日本不卡高清二区| 亚洲资源站av无码网址| 在线免费观看a视频| 亚洲精品成人片在线观看| 精品黑人一区二区三区| 国产色偷丝袜婷婷无码麻豆制服| 一区二区日韩国产精久久| 亚洲AV成人一区国产精品| 一级成人a毛片免费播放| 天天躁夜夜躁狠狠躁躁88| 亚洲无码久久久久| 欧美午夜视频在线| 国产成人精品一区二区不卡| 亚洲全网成人资源在线观看| 欧美激情第一区| 在线色综合| 网久久综合| 国产一级毛片网站| 国产精品无码AV中文| 欧美日韩激情在线| 成人韩免费网站| 91无码国产视频| 欧美国产在线一区| 免费a级毛片18以上观看精品| 亚洲欧美一级一级a| 国产精品手机在线播放| 精品無碼一區在線觀看 | 一区二区无码在线视频| 国产不卡一级毛片视频| 亚洲精品另类| 真实国产乱子伦视频| 91国内在线观看| 广东一级毛片| 一级毛片高清| 在线观看欧美国产| 亚洲 欧美 中文 AⅤ在线视频| 1769国产精品免费视频| 综合亚洲网| 亚洲无码高清视频在线观看| 国产大片黄在线观看| 女人18毛片久久| 99这里只有精品在线| 无码综合天天久久综合网| 欧美一级在线看| 色综合中文字幕| 白丝美女办公室高潮喷水视频| 日韩在线欧美在线| 欧美不卡二区| 国模极品一区二区三区| 日本午夜影院| 大陆国产精品视频| 97视频在线观看免费视频| 欧美视频免费一区二区三区| 久久这里只精品国产99热8| 国产精品网址在线观看你懂的| 无码人妻热线精品视频| 久久免费成人| 老司机久久99久久精品播放| 国产99精品视频| 在线观看亚洲精品福利片| 国产成人毛片| 欧美中文字幕无线码视频| 91精品网站| 91精品人妻互换| 四虎永久免费地址| 91www在线观看| 免费无码又爽又刺激高|