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

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

2021-06-28 00:14:37張越陶俊徐迅
現代信息科技 2021年1期
關鍵詞:按鈕游戲設計

張越 陶俊 徐迅

摘? 要:文章基于Unity3D開發引擎,設計并制作了一個塔防類的3D游戲。主要分為兩個模塊,一是敵人功能的設計,包括敵人按照規定路線移動,敵人受到攻擊扣除血量等;二是防御塔的設計,包括對敵人進行攻擊,建造、升級、拆除防御塔等功能設計。使用了3ds Max軟件建造角色和場景的模型,最后在Unity3D中實現游戲的開發,結果表明敵人和防御塔設計合理,游戲體驗良好。

關鍵詞:Unity3D;塔防類游戲;C#腳本;3ds Max

中圖分類號:TP317? ? ? 文獻標識碼:A 文章編號:2096-4706(2021)01-0084-04

Design and Implementation of Tower Defense Game Based on Unity3D

ZHANG Yue,TAO Jun,XU Xun

(School of Artificial Intelligence,Jianghan University,Wuhan? 430056,China)

Abstract:This paper designs and produces a tower defense 3D game based on Unity3D development engine. It is mainly divided into two modules,one is the design of the enemy function,including the enemy moving according to the prescribed route,the enemy being attacked deducting the amount of blood and so on;the second is the design of the defense tower,including the attack on the enemy,construction,upgrade,demolition of defense towers and other functional design. The 3ds Max software was used to build the models of the characters and scenes,and finally the game was developed in Unity3D. The results showed that the enemy and defense towers were designed reasonably and the game experience was good.

Keywords:Unity3D;tower defense game;C# script;3ds Max

0? 引? 言

國內游戲產業突飛猛進的發展和手機的快速普及,根據市場調研公司Newzoo的數據報告2023年全球玩家將達30億。其中許多玩家進入游戲領域都是通過移動設備。而根據中國音數協游戲工委(GPC)與國際數據公司(IDC)共同發布的《2020第一季度中國游戲產業報告》,受新冠肺炎疫情影響,“宅經濟”大熱,游戲業保持了非常高的增速,報告顯示2020年第一季度,中國游戲市場實際銷售為730.03億元,其中移動游戲市場占了75.64%的市場份額,實際銷售收入為553.70億元。基于報告表明,中國游戲市場正處于飛速發展的階段。塔防游戲(Tower Defence Game,TDG)為一個經典的休閑游戲類別,被許多玩家所喜愛,如手游市場上的《部落沖突》。基于以上數據,本人設計開發了一款移動端的塔防類游戲,游戲節奏較快,可以使得玩家利用碎片化時間進行體驗,使用Unity3D引擎開發的這款3D塔防游戲在保證可玩性和策略性的基礎上,增加了攝像機移動功能,優化了游戲畫質。

1? 游戲分析

此款塔防游戲的玩法規則是在地圖的一側出生點生成敵人,敵人按照規定的路線行進到地圖的另一側,在敵人行動路線的兩側玩家可以根據自己的金錢多少,建造炮臺來攻擊敵人,使得敵人無法到達終點,如果炮臺放置的位置不對,或炮臺的威力不夠等,導致敵人到達了終點,敵人就攻入了玩家的大本營,玩家便輸了。玩家需要從地圖、炮臺、敵人、游戲金幣四方面制定防御策略。下面分別介紹:

(1)地圖:敵人從出生點開始生成,按照規定路線朝著終點行進,中途會有轉角處,這就使得玩家在建造炮臺的地方有所選擇,游戲中敵人的行進路線設計了許多轉彎,從而延長了敵人到達終點的時間,使得玩家有足夠的時間考慮在哪里建造炮臺。

(2)炮臺:炮臺有3種種類,每種炮臺的建造成本,攻擊速度,威力各不相同。玩家需要根據當前情況對炮塔進行選擇,同時每種炮臺還能進行升級,使得玩家的選擇更加的多樣性。

(3)敵人:敵人有4種,并且每一波生成敵人的數目不同,同時不同敵人的血量、移動速度不同,擊殺后玩家獲得的金幣也不同。

(4)游戲金幣:游戲中的金幣,是支撐玩家繼續游戲的源泉,金幣越多,玩家所能建造的炮臺也就越多,游戲就越簡單;反之,游戲就越難。因此,合理的設置游戲中金幣的數量非常重要,初始金幣、擊殺敵人獲取的金幣、建造防御塔損失的金幣、升級防御塔損失的金幣和拆除防御塔獲得的金幣,這些金幣的數量都需要嚴謹的考慮。

2? 游戲設計

塔防游戲功能設計模塊如圖1所示。

本次設計主要體現在防御塔的功能、敵人的功能、以及各種UI界面的設計上。游戲開始時玩家需要先進行賬號的登錄,若沒有賬號則先進行注冊。登錄成功后,可以對游戲進行設置,如背景音樂音量的大小、游戲的難度等,也可直接進入游戲。進入游戲后,左上角為玩家金幣的數量,最右側為三種炮臺的UI,點擊相應的按鈕則可以建造不同的炮臺。在3秒的等待后,第一關的第一波敵人生成,按照規定的路線向著終點移動。玩家則用初始的金幣建造炮臺,守住第一波的攻勢,得到的金幣進行下一波的炮臺建造。同時玩家可以點擊暫停按鈕彈出暫停界面,暫停界面中有繼續游戲、重新開始和退出游戲按鈕。所有敵人都死亡后,游戲勝利進入下一關;如果有敵人進入了玩家大本營,并且玩家總血量降為0,游戲結束,彈出失敗界面。對于游戲的GameManager采用單例模式設計,方便對游戲的控制并且節約系統資源。對于炮臺和敵人則采用類似MVC的設計模式,使得炮臺和敵人的數據模塊和功能模塊分開,降低了程序的開發難度,提高了程序的可維護性。

游戲包含的類主要為GameManager.cs、Bullet.cs、Enemy.cs、Turret.cs等,如圖2所示。

GameManager類:實現游戲的總體控制,如UI控制、場景加載等功能。

Bullet類:實現子彈的追蹤、扣除敵人血量等功能。

Enemy類:實現敵人的移動、受到傷害死亡等功能。

Turret類:實現發射子彈等功能。

3? 游戲實現

3.1? Unity3D游戲引擎關鍵技術

Unity3D引擎具有許多模塊,下文列舉一些本次開發中使用比較頻繁的功能模塊。

3.1.1? 預設體

預設體(Prefab)為Unity中的重要概念,Prefab中儲存著一個游戲對象,包括游戲對象的所有組件以及其下所有子游戲對象。在Hierarchy視圖中可以對Prefab進行復制粘貼。本次開發中所有的敵人和炮臺都采用了預設體的設計,大大減少了重復性工作,簡化了工作量。我們首先將炮臺的模型導入到Unity中,將炮臺所需的腳本Turret編寫好加載到目標上,測試其功能無誤后,將當前對象拖入Project視圖中,做為炮臺的預設體。

3.1.2? UGUI核心控件

UGUI Panel可將該面板控件看作一個容器,我們將其他的UI控件放置在上面進行編輯。利用Text文本組件顯示建造炮臺所消耗的金幣和消滅敵人所獲得的金幣。我們利用Button和Image組件實現建造炮臺的按鈕,將圖片轉為精靈格式,使用填充的呈現方式,使得界面更加友好。而不同炮臺的建造,我們將三個炮臺建造按鈕放入同一個Toggle中,這樣保證UI傳入的數據正確,每次玩家都只會建造一種炮臺,避免了不必要的錯誤。

3.2? 游戲的AI設計

3.2.1? 敵人

我們為敵人編寫了兩個類,分別為Enemy類和CreateEnemy類。CreateEnemy類:實現在出生點對敵人的創建。為了實現敵人按照路點進行前進從而形成特定的路線時,我們在地圖中設定了路點,使敵人獲取路點這個數組,由下一個路點的位置減去當前路點的位置,則得到一條由當前位置指向下一個路點的向量,將其單位化,利用transform中的方法,使敵人按照這個向量移動即可。當移動到一個路點后,number++則進行計算下一個路點。主要代碼為:

if (index > positions.Length - 1) {return; }

transform.Translate((positions[index].position - transform.position).normalized * Time.deltaTime * speed);

if (Vector3.Distance(positions[index].position , transform.position) < 0.2f) {index++;}

if (index > positions.Length - 1){ReachEnd();}

3.2.2? 炮臺

建造炮臺功能的實現,我們需要確定鼠標點擊在可以建造炮臺的地方,鼠標是與MapCube地圖塊層級進行碰撞,而不是UI層。所以在Unity中我們需要對Physics進行設置,在代碼中,我們需要進行判斷,這樣就可以判斷鼠標和相應的層級進行了碰撞。

炮臺自動攻擊范圍內的第一個敵人,我們需要設置一個觸發器(trigger),也就是防御塔的攻擊范圍,在代碼中需要設置一個OnTriggerEneter的方法,當敵人進入炮臺的攻擊范圍時,獲得敵人這個對象,然后由向量的方法,用敵人的位置,即position,減去炮塔的position就會得到由炮臺指向敵人的向量,將其單位化,然后利用transform的方法就可以實現炮臺攻擊敵人了,并且我們利用transform.lookat的方法,可以保持炮臺一直指向敵人。主要代碼為:

private void OnTriggerEnter(Collider other)

{if (other.tag == "Enemy"){enemys.Add(other.gameObject); } }

private void OnTriggerExit(Collider other)

{if (other.tag == "Enemy"){enemys.Remove(other.gameObject);}}

void Attack()

{if (enemys[0] == null){EnemyUpdate();}

if (enemys.Count > 0){GameObject bullet = GameObject.Instantiate(bulletPrefab, firePosition.position, firePosition.rotation);

bullet.GetComponent().SetTarget(enemys[0].transform);}

else{timer = attackRateTime;}}

3.2.3? UI界面的設計與制作

游戲的UI界面使用Unity3D中自帶的UGUI工具來進行創建,如“開始游戲”按鈕、“重新開始”按鈕和“建立炮臺”按鈕、“炮臺升級”以及“炮臺拆解”按鈕等。制作完成的界面如圖3和圖4所示。

3.2.4? 炮彈追蹤算法

假設炮彈的位置為(x1,y1,z1),敵人的位置為(x2,y2,z2),則得到兩條向量,則由線性代數中向量減法的知識,則? 為世界坐標系中原點指向敵人的向量, 為世界坐標系中遠點指向炮彈的向量,則? 減去? ,由向量減法的幾何意義可知? 為炮彈指向敵人位置向量:

得到后我們將此向量進行單位化,就可以得到一條單位向量,在游戲里運行的每一幀我們都進行計算,更新此向量,使炮彈按照此方向移動。

4? 結? 論

本文使用Unity3D引擎開發了一款塔防游戲,實現的主要功能有敵人的生成、敵人的移動、建造防御塔、防御塔攻擊、炮彈的追蹤等功能。結果表明游戲設計合理,敵人和防御塔的交互性較好,玩家游戲體驗良好,可玩性較高。

參考文獻:

[1] 周正,司占軍.基于Unity3D的冒險闖關類游戲的設計與實現 [J].電腦知識與技術,2020,16(21):90-91.

[2] 蔣明.基于Unity3D的區域景觀生態敏感性評價系統設計 [J]. 現代電子技術,2020,43(20):171-174.

[3] 楊劍,白忠建,丁曉峰.數據結構 [M].北京:人民郵電出版社,2013.

[4] 劉俊,郭祖江.基于Unity3D的塔防游戲設計與實現 [J].科技傳播,2015,7(5):152-154.

[5] 胡杭.基于Unity3D的移動塔防游戲設計與實現 [J].現代計算機(專業版),2019(4):60-63.

[6] 李遇涵.基于Unity3D的虛擬校園漫游系統的研究 [D].武漢:華中科技大學,2019.

[7] 馬力.基于Unity3D旅行故事游戲軟件設計與實現 [D].武漢:華中科技大學,2019.

[8] 尹曉卿.基于Unity3D的MMO移動游戲關鍵技術設計與實現 [D].成都:電子科技大學,2019.

[9] 吳亞峰,索依娜,于復興.Unity案例開發大全:第2版 [M].北京:人民郵電出版社,2018.

[10] 陳嘉棟.Unity 3D腳本編程——使用C#語言開發跨平臺游戲 [M].北京:電子工業出版社,2016.

[11] 徐文芳.基于Unity3D的教育游戲的設計與開發 [D].南昌:江西科技師范大學,2019.

[12] 程宇.Unity3D教育游戲在初中生物教學中的應用研究 [D].廣州:廣東技術師范大學,2019.

[13] 沈志超.基于Cocos2d-x的RPG手機游戲開發 [D].南京:東南大學,2015.

[14] Unity公司.Unity 5.X/2017 標準教程 [M].北京:人民郵電出版社,2018:99-101.

[15] 姜雪偉.Unity 3D實戰核心技術詳解 [M].北京:電子工業出版社,2017:193-198.

[16] 岳書丹,陳雪榮.基于Unity3D塔防游戲的設計與實現 [J].電子測試,2020(13):124-126.

[17] 仲曉慶,蔡朝暉.基于unity3D的塔防游戲開發 [J].科技創新與應用,2018(29):14-15+18.

作者簡介:張越(1998—),男,漢族,湖北襄陽人,碩士,研究方向:機器學習;通訊作者:陶俊(1976—),男,漢族,湖北武漢人,教授,碩士研究生導師,博士,主要研究方向:機器學習;徐迅(1991—),男,漢族,北京人,碩士,研究方向:計算機視覺。

猜你喜歡
按鈕游戲設計
這些按鈕能隨便按嗎?
當你面前有個按鈕
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
內心不能碰的按鈕
商業評論(2014年9期)2015-02-28 04:32:41
主站蜘蛛池模板: 国产在线视频二区| 国产美女自慰在线观看| 日韩区欧美国产区在线观看| 四虎永久免费地址在线网站| 国产第一页屁屁影院| 久久综合色88| 制服无码网站| 国产91久久久久久| 国产浮力第一页永久地址| 一级一级一片免费| 欧美成人精品一区二区| 国产在线精彩视频二区| 日韩不卡免费视频| 欧美成人精品在线| 免费看a级毛片| 91小视频在线播放| 茄子视频毛片免费观看| 国产在线无码一区二区三区| 日韩美毛片| 97精品国产高清久久久久蜜芽| 玖玖精品视频在线观看| 综合天天色| 亚洲av无码人妻| 91亚洲精品第一| 欧美不卡视频在线观看| 亚洲欧美日韩中文字幕一区二区三区| 久久semm亚洲国产| 91无码人妻精品一区二区蜜桃| 国产精品天干天干在线观看| 久久精品aⅴ无码中文字幕| 久久96热在精品国产高清| 91精品伊人久久大香线蕉| 日本在线视频免费| 日韩毛片免费| 免费女人18毛片a级毛片视频| 国产视频自拍一区| 在线视频一区二区三区不卡| 无码'专区第一页| 无码不卡的中文字幕视频| 热99re99首页精品亚洲五月天| 国产sm重味一区二区三区| 天堂在线www网亚洲| 天天摸天天操免费播放小视频| 伊人精品视频免费在线| jizz在线免费播放| 在线看片免费人成视久网下载 | 欧美综合中文字幕久久| 午夜在线不卡| 欧美综合区自拍亚洲综合绿色 | 国产精品尤物铁牛tv| 久久先锋资源| 天天摸夜夜操| 色悠久久久久久久综合网伊人| 18禁色诱爆乳网站| 欧美激情视频二区三区| 日韩毛片免费| 欧美三级日韩三级| 久久超级碰| 国产亚洲精品自在线| 97超爽成人免费视频在线播放| 国产毛片不卡| 久久a毛片| 国产女人水多毛片18| 午夜啪啪福利| 欧美精品亚洲精品日韩专| 99r在线精品视频在线播放| 国产精品欧美激情| 久久精品国产精品青草app| 欧美亚洲国产精品第一页| 亚洲成a∧人片在线观看无码| 国产亚洲精品97在线观看| 久久大香香蕉国产免费网站| 亚洲欧洲日产国产无码AV| 亚洲av无码久久无遮挡| 日本三级欧美三级| 亚洲第一页在线观看| 97国产精品视频人人做人人爱| 成人在线天堂| 午夜激情福利视频| 茄子视频毛片免费观看| 国产欧美日韩资源在线观看| 中文毛片无遮挡播放免费|