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

基于Unity的飛船大戰(zhàn)游戲設(shè)計與開發(fā)

2021-08-09 00:35:53郭欣桐
科技資訊 2021年11期

郭欣桐

摘? 要:該文講述了基于Unity的飛船大戰(zhàn)游戲的設(shè)計與開發(fā)過程,游戲以第三人稱視角控制主角躲避太空隕石進(jìn)行游戲?qū)?zhàn)。該系統(tǒng)以Unity為開發(fā)平臺,加載三大游戲場景,即游戲開始場景、游戲關(guān)卡場景以及游戲結(jié)束場景。使用C#編程語言實現(xiàn)主角以及隕石的移動、主角發(fā)射炮彈攻擊、主角與隕石碰撞以及炮彈傷害計算等游戲狀態(tài)控制以及游戲核心功能。該系統(tǒng)最終實現(xiàn)了整個游戲流程通過友好的人機交互界面以及相關(guān)操作,增強用戶的游戲樂趣,利用碎片化時間緩解壓力、休閑放松。

關(guān)鍵詞:游戲制作? Unity? C#? 飛機大戰(zhàn)

中圖分類號:TP311.5? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A文章編號:1672-3791(2021)04(b)-0067-03

Design and Development of Ship War Game Bsed on Unity

GUO Xintong

(Heilongjiang college of business and technology, Harbin, Heilongjiang Province, 150025? China)

Abstract: This paper describes the design and development process of the spacecraft war game based on Unity. The game controls the protagonist to avoid the meteorite from the third person perspective for game to battle. The system takes Unity as the development platform, loading three major game scenes, the game start scene, the game level scene and the end of the game. The game state control and core functions of the game, such as the movement of the main character and meteorite, the attack of the main body launching shell, the collision between the protagonist and meteorite, and the shell damage calculation, are realized by using C # programming language. The system finally realizes the whole game flow through friendly human-computer interaction interface and related operations, enhance the user's game fun, and use fragmented time to relieve pressure and relax leisure.

Key Words: Game making; Unity; C#; Aircraft war

隨著電腦用戶的不斷增多,電腦游戲逐漸成為人們主要的休閑娛樂方式。根據(jù)現(xiàn)代人對電腦游戲的需求,設(shè)計開發(fā)一款游戲內(nèi)容輕度、簡單易操作的飛船大戰(zhàn)游戲。Unity3D作為目前主流的3D游戲開發(fā)引擎,集圖形、音頻、物理和網(wǎng)絡(luò)等多功能為一體,可編輯地形、搭建3D場景、通過其強大的物理引擎,模擬更加逼真的場景,增強游戲的真實性[1-2]。故該游戲采用Unity平臺,搭建3D場景,選用Unity編程語言C#實現(xiàn)游戲基本流程以及核心功能。游戲類型定位為PUZ,即益智類游戲,采用第三人稱視角,游戲規(guī)則簡單,操作易上手,受眾面較廣。通過友好的人機交互界面以及玩家自身的游戲操作,達(dá)到增強用戶游戲樂趣,利用碎片化時間緩解壓力、休閑放松的目的[3]。

1? 游戲設(shè)計開發(fā)準(zhǔn)備

1.1 開發(fā)工具以及編程語言

Unity3D是一款功能強大,一次性多平臺開發(fā)的交互式游戲引擎。Unity3D采用簡潔的圖形化界面。其內(nèi)置的Nvidia公司的PhysX物理引擎可模擬剛體碰撞、粒子模擬、重力等物理效果,使對象物體具備質(zhì)量、摩擦力等物理屬性[4]。Unity3D支持一次性多平臺且跨平臺對決,2018年該引擎已經(jīng)擴展到支持超過25個平臺[5]。

Unity3D支持C#和JavaScript兩種腳本語言編寫unity項目程序,U3D官方團隊基于數(shù)據(jù)分析得出結(jié)論:目前,80.4%的Unity項目程序使用C#語言編寫,U3D文檔、示例等相關(guān)的支持重點在C#語言。故該游戲項目采用Unity平臺,C#語言開發(fā)。

1.2 游戲規(guī)則

該游戲共有兩個游戲角色:太空飛船以及太空隕石。其中太空隕石為隨機生成,游戲玩家不可控制,在游戲過程中,太空隕石生成后會自動尋找太空飛船,進(jìn)行攻擊,隕石會隨著游戲的進(jìn)度不斷變多,攻擊速度變快。游戲玩家可通過鍵盤上的方向鍵,操作飛船在上、下、左、右這4個方向進(jìn)行移動,躲避太空隕石,也可發(fā)射炮彈消滅隕石保護自己,游戲剛開始玩家沒有炮彈,需按下鍵盤上的空格鍵方可觸發(fā)發(fā)射炮彈。若太空隕石碰撞至飛船,飛船護甲防御值降低10點,當(dāng)護甲值為0時,飛船爆破,即游戲失敗。游戲采用回合制,10 min一回合,若在此期間,飛船護甲值一直大于0,則游戲勝利。

1.3 游戲素材設(shè)計

游戲的素材設(shè)計主要指的是游戲場景對象UI設(shè)計以及音頻。游戲場景對象包括游戲進(jìn)入界面按鈕和背景、游戲結(jié)束界面按鈕和背景。設(shè)計結(jié)合“太空”主題,使用Photoshop圖像編輯軟件進(jìn)行編輯處理,主要用到的功能工具有:“鋼筆”工具勾勒輪廓,“文字”工具繪制按鈕顯示文字,“斜面和浮雕”結(jié)合“高光和陰影”“線性漸變”,創(chuàng)建出立體感、滿足太空主題深邃的視覺感。所有UI設(shè)計素材導(dǎo)出格式為png格式,背景透明。

需要編輯的游戲音頻包括游戲背景音樂、點擊按鈕音效、游戲勝利、飛船發(fā)射子彈、子彈擊中隕石、隕石擊中飛船、護甲值降低、游戲失敗。搜索相關(guān)音頻資源后,使用會聲會影編輯工具對音頻資源進(jìn)行剪輯,刪除多余的音頻部分,保留合適的時間長短音頻。所有音頻導(dǎo)出格式為mp3,保證音頻質(zhì)量。

2? 游戲功能開發(fā)

2.1 游戲場景搭建

游戲的場景搭建主要包括游戲基本素材添加、UI界面。場景UI界面使用Unity的GUI工具進(jìn)行創(chuàng)建[6]。

游戲開始場景所需的按鈕為“開始游戲”按鈕、“退出游戲”按鈕,玩家通過點擊“開始游戲”按鈕進(jìn)入游戲關(guān)卡,開啟游戲過程,點擊“退出游戲”按鈕時直接關(guān)閉游戲應(yīng)用程序。當(dāng)“開始游戲”按鈕被觸發(fā)時,即鼠標(biāo)點擊該按鈕時,程序執(zhí)行unity內(nèi)置OnMouseEnter函數(shù),在該函數(shù)中添加unity內(nèi)置Application.LoadLevel函數(shù)用于加載游戲關(guān)卡場景,但游戲關(guān)卡場景需添加至File菜單Build Settings的關(guān)卡列表中,使用索引數(shù)加載關(guān)卡。

游戲關(guān)卡為該游戲的重要場景,整個游戲核心功能都依托于此游戲場景。該場景涉及的游戲基本素材為玩家飛船、太空隕石、游戲背景、燈光、飛船子彈。將玩家飛船、太空隕石、游戲背景直接導(dǎo)入并拖拽至編輯環(huán)境并調(diào)整玩家飛船的旋轉(zhuǎn)角度,使其正常顯示在unity相機的區(qū)域中。為了模擬真實飛船的情況,增強用戶體驗度,在飛船尾部使用Unity預(yù)制件添加火焰噴射效果。但此時飛船紋理特性并不明顯,亮度過暗,需添加燈光,增強飛船亮度,突出飛船紋理。Unity共提供4種燈光效果:Directional(方向光源)、Point(點光源)、Spot(聚光燈)、Area(區(qū)域光)。4種燈光效果具有不同特性及應(yīng)用場景。由于飛船對象在游戲過程中需要移動,位置不固定,故需要采用Directional(方向光源),方向光源由于沒有真正的光源坐標(biāo),放置在場景任何地點都不會影響光的效果,只有旋轉(zhuǎn)會影響定向光的照射結(jié)果,因此即使飛船改變位置,離方向光源較遠(yuǎn),都不會影響表面投影光照效果。新建object,創(chuàng)建長方形作為子彈,將子彈圖片拖拽至長方形材質(zhì)球處,將Shader處設(shè)置為additive用以去除子彈的背景黑框。隕石的添加方式與子彈類似,在Unity中新建gameObject,將隕石拖拽至該gameObject處。

游戲結(jié)束場景所需的按鈕為“重新開始”按鈕、“退出游戲”按鈕。玩家通過點擊“重新開始”按鈕可重新進(jìn)入游戲,點擊“退出游戲按鈕”可直接關(guān)閉游戲。兩個按鈕的實現(xiàn)過程與開始場景按鈕一致。

2.2 游戲基本功能

2.2.1 飛船控制

飛船控制主要包括飛船移動以及發(fā)射子彈。在游戲過程中,玩家可通過鍵盤上的4個方向鍵實現(xiàn)飛船在水平和垂直方向的運動。在Unity內(nèi)置函數(shù)fixedUpdate中,通過Input.GetAxis("Horizontal")和Input.GetAxis("Vertical")獲取玩家具體按下哪一個方向鍵,確定飛船的移動方向。將上述兩個函數(shù)返回值作為三維向量的x、z軸數(shù)值,與飛船移動速度進(jìn)行相乘,計算移動距離,更新向量速度。未避免飛船移出屏幕區(qū)域,需對飛船移動范圍進(jìn)行限制,使用Mathf.Clamp函數(shù)控制飛船位置。

飛船在移動的過程中可隨時發(fā)射子彈,故子彈發(fā)射點要隨著飛機位置的改變同時改變。在unity資源列表飛船游戲?qū)ο笾刑砑涌盏膐bject,作為子物體用于記錄子彈發(fā)射位置,由于子彈運動方向為飛船的前進(jìn)方向,故使用transform.forward與子彈移動速度相乘,控制子彈發(fā)射。子彈應(yīng)具有一定的生命周期,即當(dāng)子彈飛出有效區(qū)域后自行銷毀以減少不必要的內(nèi)存開銷。為游戲區(qū)域添加觸發(fā)器,當(dāng)子彈飛出有效區(qū)域時,觸發(fā)事件調(diào)用Destroy函數(shù)銷毀子彈。

2.2.2 隕石控制

隕石控制主要包括隕石的隨機生成以及移動。在游戲過程中,隕石隨機生成,且按照隨機的角度旋轉(zhuǎn)。

隕石已在場景搭建時添加至場景中,為了讓隕石更加逼真,添加旋轉(zhuǎn)效果。旋轉(zhuǎn)效果通過使用Random.insideUnitSphere得到隨機的二維向量,為了讓旋轉(zhuǎn)效果更佳明顯,將該二維向量乘以5作為隕石的旋轉(zhuǎn)角度。

設(shè)置隕石為預(yù)制件,為增強游戲的趣味性,隕石成波(6個為一波)出現(xiàn),設(shè)置兩波隕石的時間間隔,在規(guī)定的時間間隔內(nèi)程序使用Instantiate函數(shù)隨機生成預(yù)制件隕石,但為了防止同一撥隕石距離較近,導(dǎo)致隕石之間相互碰撞銷毀,使用協(xié)程類函數(shù)WaitForSeconds,確保每個隕石對象生成的時間間隔。

隕石的運動與子彈的運動實現(xiàn)過程類似,只是運動方向相反,將運動速度設(shè)置為負(fù)值即可。

2.2.3 游戲?qū)ο笈鲎?/p>

各個游戲?qū)ο笾g執(zhí)行不同的碰撞規(guī)則。當(dāng)子彈與隕石相互碰撞時,隕石爆炸消失。當(dāng)飛船與隕石相互碰撞時,飛船護甲值降低。且以上對象進(jìn)行碰撞時,不能穿透對方。因此,需將子彈、隕石、飛船添加碰撞體組件,設(shè)置碰撞檢測。飛船因其形狀不規(guī)則,故添加Mesh Collider網(wǎng)格碰撞體,并勾選Convex和Is Trigger選項框,將Mesh Collider設(shè)置為觸發(fā)器。為避免飛船受重力影響,向下掉落,添加rigidbody剛體,使飛船自身重力失效。子彈以及隕石形狀較規(guī)則,因此添加Capsule Collider膠囊碰撞體,勾選Is Trigger設(shè)為觸發(fā)器,根據(jù)子彈和隕石的大小設(shè)置膠囊碰撞體的半徑與高度,使子彈和隕石包裹在碰撞體之間即可。方向為Z-Axis。

所有的游戲?qū)ο蠖纪ㄟ^OnTriggerEnter函數(shù)實現(xiàn)物體碰撞消息傳遞。在該函數(shù)中,使用if函數(shù)判斷碰撞物體的“Tag”標(biāo)簽,判斷碰撞物是子彈、隕石、飛船具體哪一個。根據(jù)碰撞物物體進(jìn)行積分計算、護甲計算。

2.2.4 積分、護甲顯示

積分與護甲的顯示通過unity中的Text組件實現(xiàn)。添加Text組件后,調(diào)整組件位置至屏幕左上角,方便玩家直觀查看積分以及護甲值。使用if語句判斷,當(dāng)飛船發(fā)射子彈擊中隕石后,積分增加,分值增加后更新Unity中的Text組件顯示。當(dāng)隕石擊中飛船時,護甲值較少,分值較少后更新Unity中的Text組件顯示,當(dāng)護甲值為0時,游戲結(jié)束。

3? 結(jié)語

該文通過Unity實現(xiàn)了飛船大戰(zhàn)游戲的設(shè)計與開發(fā)。該游戲主要的游戲角色為飛船與隕石,玩家可操作飛船進(jìn)行移動、攻擊,隨機生成移動的隕石。在游戲過程中,玩家可通過游戲程序內(nèi)部游戲?qū)ο笈鲎蚕⒌膫鬟f,在屏幕左上角查看更新的積分、護甲值。經(jīng)測試,游戲可在PC端流暢運行,游戲各項功能正常。該游戲操作簡單,適合各個年齡階段人群。

參考文獻(xiàn)

[1] 尹大偉,張熙若,李歡歡,等.基于Unity3D的虛擬校園漫游系統(tǒng)及其關(guān)鍵技術(shù)研究[J].軟件工程,2019,

22(9):17-19.

[2] 朱晴.Unity3D開發(fā)工具在3D游戲開發(fā)中的應(yīng)用[J].電子技術(shù)與軟件工程,2019(22):58-59.

[3] 劉碩,王海森,李其偉,等.基于Funcode平臺的兒童益智類游戲設(shè)計與開發(fā)[J].軟件,2020,41(8):52-55.

[4] 吳可玉,莊建軍,徐琳玲.基于Unity3D的虛擬消防與安全教育系統(tǒng)[J].實驗技術(shù)與管理,2020,37(12):

237-240.

[5] 周雪薇.基于Unity3D的小學(xué)科學(xué)教育游戲的設(shè)計與開發(fā)[J].微型電腦應(yīng)用,2021,37(1):44-46,51.

[6] 周正.基于Unity3D的冒險闖關(guān)類游戲的設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2020,16(21):90-91.

主站蜘蛛池模板: 天天爽免费视频| 国产在线视频自拍| 狠狠色婷婷丁香综合久久韩国| 综合色在线| 日韩欧美国产成人| 91精品专区国产盗摄| 青草视频在线观看国产| 国产一国产一有一级毛片视频| 国产在线观看成人91| 成年看免费观看视频拍拍| 国产va在线观看免费| 玖玖精品视频在线观看| 在线综合亚洲欧美网站| 亚洲乱码视频| 成人一区在线| 91精品人妻一区二区| 思思热精品在线8| 青青草91视频| 久久大香伊蕉在人线观看热2| 欧美在线黄| 国产精品任我爽爆在线播放6080| 国产精品香蕉在线| 欧美另类图片视频无弹跳第一页| 69av免费视频| 国产小视频免费观看| 五月综合色婷婷| 亚洲国产天堂在线观看| 国产黄在线观看| 国产成人AV综合久久| 欧美一区福利| 精品综合久久久久久97超人| 免费人成在线观看视频色| 国产精品爆乳99久久| 国产a v无码专区亚洲av| 综合社区亚洲熟妇p| 亚洲伊人久久精品影院| 久久精品人人做人人| 国产成人高精品免费视频| 91免费观看视频| 国产精品毛片一区| 国产拍在线| 欲色天天综合网| 伊人久久久久久久| a毛片在线免费观看| 亚洲日韩在线满18点击进入| 亚洲区视频在线观看| 99热这里只有免费国产精品| 制服丝袜无码每日更新| 在线观看免费黄色网址| 呦视频在线一区二区三区| 亚洲日韩久久综合中文字幕| 亚洲国产AV无码综合原创| 午夜福利视频一区| 婷婷六月在线| 欧美精品成人一区二区视频一| 5388国产亚洲欧美在线观看| 亚洲欧洲日产无码AV| 一本大道香蕉中文日本不卡高清二区| 亚洲欧美日本国产综合在线 | 国产国语一级毛片在线视频| 91原创视频在线| 亚洲欧美日韩综合二区三区| 蜜臀AV在线播放| WWW丫丫国产成人精品| 亚洲精品黄| 亚洲美女一区| 精品日韩亚洲欧美高清a| 国产91无码福利在线| 久久精品这里只有国产中文精品| 天天做天天爱天天爽综合区| 国产真实乱子伦精品视手机观看| 亚洲欧洲日产国产无码AV| 中文字幕精品一区二区三区视频| 97影院午夜在线观看视频| 国产精品视频白浆免费视频| 日本人妻一区二区三区不卡影院| 亚洲第一黄片大全| 97在线观看视频免费| 日韩国产黄色网站| 国产成人精品在线| 欧美在线中文字幕| 人人91人人澡人人妻人人爽|