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

基于Unity3D的塔防游戲設計與實現

2015-04-18 01:21:48郭祖江
科技傳播 2015年5期
關鍵詞:設置游戲

劉 俊,郭祖江

沈陽化工大學計算機科學與技術學院,遼寧沈陽 110142

近幾年來,Android平臺游戲、iPhone平臺游戲以及Web的網頁游戲迅猛發展,已經成為帶動游戲產業發展的中堅力量。遺憾的是目前除了少數的作品成功外,大部分的游戲屬宣傳攻勢往往大于其內容品質,加之玩家體驗游戲時,對游戲的沉浸感和操作性的要求也逐漸提高。在這種局面下,3D游戲成為當前游戲的發展熱點。而本文所采用的Unity3D游戲引擎提供了創造高質量的3D游戲和真實視覺效果的核心技術,為開發3D游戲提供了強大的驅動力。

本文基于Unity3D游戲引擎,研究游戲中AI設計過程的主要思路和主要算法實現,通過高效復雜的AI系統以及特定的shaderLab(著色器)編程開發一款基于Unity3D的3D塔防類游戲,使之具備豐富的畫面而且保證游戲運行的流暢度。實踐證明,本文所討論的關鍵技術可以應用于增強現實、游戲開發等多個領域,具有一定的實際應用價值。

1 游戲場景

塔防游戲的基本玩法比較類似,在場景中我方有一個基地,敵人從場景的一側出發,沿著相對固定的路線攻打基地。我方可以在地圖上布置防守單位,攻擊前來進攻的敵人,防止他們闖入基地。

本游戲的場景通常比較簡單,就像一個棋盤格,可以在上面擺放防守單位,并專門留給敵人一個通道。在本游戲中,使用二維數組來表示場景中的格子,每個格子只有兩種狀態,允許擺放防守單位或不允許。

這是一個使用Terrain制作的簡單場景,場景中間繪制了一條通道,敵人將從通道的左側出發,目的地是通道右側的房子,它是我們的基地。在通道以外的地方我們可以設置防守單位進攻敵人

塔防游戲的場景游戲固定的模式,它由一個二維的單元格組成,每個格子的用途可能不同,通常是下列用途之一:

1)專用于擺放防守單位。

2)無法擺放防守單位,也不允許敵人通過。

3)專用于敵人通過。

攝像機始終由上至下俯視游戲場景,按 住鼠標左鍵并移動可以移動攝像機的位置。

2 AI系統的實現

在BuildMap函數中,首先創建保存場景信息的二維數組,默認每個單元格都是可以擺放防守單位。然后在當前場景中找到所有Tag名為gridnode的游戲體,將其屬性賦予和它位置相同的單元格。

在OnDrawGizmos函數中,我們使用線段繪制場景中的單元格,并將不能放置防守單位的單元格繪制為紅色,這個功能主要是幫助我們預覽場景單元格的狀態。在OnDrawGizmos中繪制的圖案并不會出現在最后的游戲界面中。

我們創建一個游戲管理器GameManager函數,它由幾個作用,包括UI顯示,控制鼠標操作和顯示調試信息等。

正在塔防游戲中,敵人通常不需要智能尋路,而是按照一條預設的路線行動。我們為敵人創建一條前進路線,這條路線是預設的,敵人將從一個路點到達另一個路點,在PathNode腳本中,主要是通過SetNext函數設置它的子路點。

圖1 是否可以擺放防守單位的單元格

圖2 路點

敵人一共有兩種,一種在陸地上前進,另一種則會飛行。我們將先創建前一種,然后繼承它的大部分屬性和函數,略加修改完成另一種。在Enemy腳本中,定義了敵人的一些基本屬性,如生命值、移動速度、類型等,它由一個路點屬性作為當前的出發點。在其MoveTo函數中,敵人向當前路點的子節點前進,當距離子路點較近時,即將子路點作為當前路點,再向下移個路點前進。注意這里計算敵人與子路點的距離時沒有計算Y軸,因為我們希望空中的敵人飛到路點上方即認為是到達該路點。當敵人走到最后的路點,即是到達我方基地,銷毀自身,并使基地減少一點生命值。接下來創建另一個飛行敵人的腳本AirEnemy,它繼承了Enemy腳本的大部分功能,只添加一個Fly函數,作用是當高度小于2時向上飛行。

敵人生成器(EnemySpawner):塔防游戲的敵人通常是成批出現,一波接著一波,因為敵人數量眾多,所以需要一個生成器按預先設置的順序生成不同的敵人。為了提高工作效率,我們將在Excel中設置每一波出現的敵人,然后將其導出為XML格式,敵人生成器讀取這個XML文件,按其設置生成敵人。實際上我們也可以在Unity的Inspector窗口設置組件的數值,但對于一個復雜的項目來說,這么做會使項目的維護變得困難,而游戲策劃又偏愛使用Excel表格,所以可以先在Excel中設置數據,再將其導入Unity,這會是一個非常好的選擇。

本游戲中唯一的防守單位是個袍塔(Defender),我們先準備一個ArrayList,將所有敵人遍歷都存進去,這樣很容易查找到任何一個敵人,當敵人進入它的攻擊范圍便會開火。在這個腳本中,FindEnemy函數主要用于查找進入其攻擊范圍的敵人,然后在這些敵人中再選出一個生命值最低的敵人作為目標敵人。Attack函數向敵人攻擊,這里只是很簡單地調用了敵人的SetDamage函數減少敵人的生命值。當創建了一個防守單位后,它所處的單元格則被當前防守單位占據,不能再創建其他東西,因此我們在Start函數中改變了防守單位所處單元格的屬性。

生命條(LifeBar):敵人在受到攻擊的時候,生命條可以顯示它受到多少傷害,和提示它的剩余生命值。在Project窗口的Rawdata/Lifebar目錄下引入了一個LifeBar.fbx文件,這是一個普通的平面模型,并附有一張貼圖,貼圖由簡單的黃色和紅色組成,我們將使用改變模型UV的方式,使黃色表示剩余生命值,紅色表示失去的生命值。

在LifeBar腳本中,Ini函數負責初始化,主要是獲取生命條模型的UV。在UpdateLife函數中,我們根據當前生命值和最大生命值計算出一個比例,然后調用Pad函數左右移動UV的位置,當生命值越低,黃色顯示的越少,紅色顯示的越多。SetPosition函數負責設置生命條的位置,因為生命條始終要伴隨鄉音敵人的移動,并出現在它的上方,所以這個函數設置了一個yoffset參數,使生命條的位置向上偏移一定距離。

3 UV旋轉紋理動畫shaderLab

shaderLab主要用Cg語言來開發。Cg語言(C for Graphics)是為GPU編程設計的高級著色器語言,由NVIDIA公司開發。Cg極力保留C語言的大部分語義,并讓開發者從硬件細節中解脫出來,Cg同時也有一個高級語言的其他好處,如代碼的易重用性,可讀性得到提高,編譯器代碼優化。下段代碼實現了圖片中紋理自動旋轉的功能。

此處用到圖形旋轉三角函數數學公式

x1=cos(angle)*x-sin(angle)*y;

y1=cos(angle)*y+sin(angle)*x;

其中x,y表示物體相對于旋轉點旋轉angle的角度之前的坐標,x1,y1表示物體旋轉angle后相對于旋轉點的坐標。

4 游戲實現

4.1 代碼實現

Unity3D游戲引擎能夠快速開發,并具有高的擴展性,其腳本不僅支持JavaScript,而且支持C#,還支持C編寫的DLL插件,可以提高代碼的重復使用率。本文主要采用Cg語言開發ShadeLab, C#語言開發游戲C#由Unity3D的腳本默認繼承自MonoBehavior,而MonoBehavior來源于Mono框架(屬于.Net的跨平臺框架)。

圖3 生命條UV貼圖

圖4 自動轉輪在場景中的顯示

圖5 自動轉輪的UV貼圖

4.2 游戲展示

本文實現了一個塔防類游戲,玩家可以通過鍵盤鼠標控制角色在場景中進行自由游戲。

我方基地有10點生命值,敵人攻入基地一次減少1點生命值,當生命值為零,游戲失敗。敵人以波數的形式向我方基地進攻,每波由若干敵人組成。在這個實例中,一共有10波,當成功擊退敵人10波的進攻則游戲勝利。

圖6 游戲運行過程

敵人有兩種,一種是在陸地上行進的裝甲車,一種是飛行在空中的飛行器。每消滅一個敵人 獲取一定點數,點數用于創建防守單位。

我們這里只完成一種基本類型的防衛單位,它是炮塔,一旦敵人進入它的攻擊范圍便會開火,同時每新建一個防守單位也會扣除一定點數以期望用最少的炮塔消滅最多的敵人為分數高。

圖7 游戲運行過程

[1]盧金浩,張帥,伍傳敏.三明學院信息工程學院.

[2]Unity Technologies ,Unity 4.x從入門到精通.中國鐵道出版社.

[3]宣雨松.Unity3D游戲開發.人民郵電出版社.

猜你喜歡
設置游戲
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
7招教你手動設置參數
游戲
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
第八章 直接逃出游戲
小學科學(2015年6期)2015-07-01 14:30:14
主站蜘蛛池模板: 四虎AV麻豆| 亚洲精品视频免费观看| 天天色天天综合网| 她的性爱视频| 中文字幕日韩久久综合影院| 高清亚洲欧美在线看| 国产精品无码久久久久久| 国产一区二区三区在线观看免费| 99视频全部免费| 国产精品分类视频分类一区| 欧美a级完整在线观看| 青青操国产| 丝袜高跟美脚国产1区| 日本成人福利视频| 国产精品开放后亚洲| 成人在线观看一区| 国产午夜精品一区二区三区软件| 农村乱人伦一区二区| 国产在线专区| 国产精品漂亮美女在线观看| 亚洲热线99精品视频| 在线观看欧美精品二区| 国产真实乱子伦精品视手机观看| 69视频国产| 亚洲丝袜中文字幕| 国产午夜无码片在线观看网站 | 亚洲成人在线网| 麻豆精品在线| www精品久久| 亚洲精品无码成人片在线观看| 久久毛片网| 久久久久亚洲精品成人网| 亚洲,国产,日韩,综合一区| 亚洲色无码专线精品观看| 在线观看热码亚洲av每日更新| 精品无码国产自产野外拍在线| 亚洲专区一区二区在线观看| 亚洲天堂久久| 国产黄色爱视频| 中文字幕在线观看日本| 国产麻豆精品久久一二三| 久久免费视频6| 亚洲一区免费看| 亚洲精品无码不卡在线播放| 日日拍夜夜操| 欧美色香蕉| 国产综合亚洲欧洲区精品无码| 9966国产精品视频| 国产亚洲精品无码专| 99人妻碰碰碰久久久久禁片| 精品福利网| 在线va视频| 不卡无码h在线观看| 久久综合一个色综合网| 国产精品漂亮美女在线观看| 国产探花在线视频| 亚卅精品无码久久毛片乌克兰 | 美臀人妻中出中文字幕在线| 无码一区18禁| 福利在线不卡一区| 国产亚洲精久久久久久无码AV| 欧美激情综合| 日本人真淫视频一区二区三区| 亚洲人成人无码www| 黄色免费在线网址| 蜜桃视频一区二区三区| 国产精品丝袜视频| 2021国产乱人伦在线播放| 91精品福利自产拍在线观看| 中文字幕在线欧美| 99手机在线视频| 久久国产精品波多野结衣| 91探花国产综合在线精品| 国产麻豆va精品视频| 亚洲欧美在线综合图区| 成人福利一区二区视频在线| 五月天综合网亚洲综合天堂网| 麻豆精品久久久久久久99蜜桃| 亚洲成在线观看 | 日韩欧美高清视频| 亚洲天堂啪啪| 中文字幕人成乱码熟女免费|