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
主站蜘蛛池模板: 谁有在线观看日韩亚洲最新视频| 久久综合色视频| 国产精品视频猛进猛出| 久久久久免费精品国产| 欧美精品啪啪一区二区三区| 亚洲av无码久久无遮挡| 亚洲婷婷在线视频| 成人欧美日韩| 欧美亚洲另类在线观看| 男女男精品视频| 91年精品国产福利线观看久久| 国产一级毛片在线| 55夜色66夜色国产精品视频| 91精品国产91久无码网站| 她的性爱视频| 日韩精品少妇无码受不了| 91精品国产综合久久香蕉922| 国内自拍久第一页| 久久这里只有精品66| 日韩国产无码一区| 欧美成人影院亚洲综合图| 99热这里只有精品5| 高清不卡一区二区三区香蕉| 日韩小视频在线观看| 国产男人天堂| 国产午夜不卡| 日韩欧美国产三级| 亚洲午夜综合网| 五月天丁香婷婷综合久久| 久久亚洲AⅤ无码精品午夜麻豆| 欧美日韩91| 91国内外精品自在线播放| 亚洲人视频在线观看| 在线观看av永久| 97视频免费在线观看| 婷婷亚洲视频| 2048国产精品原创综合在线| 狠狠色香婷婷久久亚洲精品| 中国国产一级毛片| 国产精品无码一二三视频| 欧美日韩国产一级| 国产成人精品免费视频大全五级| 欧美乱妇高清无乱码免费| av手机版在线播放| 国产成人综合日韩精品无码首页| 国产精品成人免费视频99| 色久综合在线| 综合久久久久久久综合网| 国产亚洲欧美日韩在线观看一区二区| 91成人在线观看视频| 欧美中文字幕在线二区| 人妻少妇乱子伦精品无码专区毛片| 午夜免费视频网站| 日日噜噜夜夜狠狠视频| 久久免费精品琪琪| 18禁色诱爆乳网站| 国产h视频免费观看| 性欧美在线| 久热re国产手机在线观看| 一级做a爰片久久免费| 毛片免费在线视频| 91精品情国产情侣高潮对白蜜| 国产精品一区二区久久精品无码| 广东一级毛片| 亚洲美女高潮久久久久久久| 精品视频一区在线观看| 国产精品福利社| 日本高清有码人妻| 亚洲性日韩精品一区二区| 在线播放91| 欧美在线导航| 久久久久九九精品影院| 熟女日韩精品2区| 欧美劲爆第一页| 亚洲国产精品一区二区第一页免 | 精品视频第一页| 欧美成人第一页| 国产三级成人| 在线观看av永久| 久久77777| 国内精品久久人妻无码大片高| 久久久久免费精品国产|