• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Unity3D的音樂游戲制作

      2021-11-03 13:08張貝貝
      現(xiàn)代信息科技 2021年8期

      DOI:10.19850/j.cnki.2096-4706.2021.08.031

      摘? 要:Unity3D是目前國(guó)內(nèi)相對(duì)流行的游戲開發(fā)軟件,而音樂游戲也是自游戲發(fā)展以來就極其盛行。文章基于Unity3D開發(fā)制作了一款音樂游戲,其主要功能包括人物控制、按鍵消音、樂譜管理、分?jǐn)?shù)統(tǒng)計(jì)、UI界面與音效以及特效播放。該游戲與傳統(tǒng)音樂游戲不同,添加了動(dòng)畫人物以及打擊動(dòng)作,使音樂游戲與動(dòng)作游戲相互結(jié)合。通過此游戲,玩家們能夠在游玩之余享受音樂以及通關(guān)的樂趣。

      關(guān)鍵詞:Unity3D;C#;FL Studio

      中圖分類號(hào):TP311? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A ? ? 文章編號(hào):2096-4706(2021)08-0112-04

      Music Game Making Based on Unity3D

      ZHANG Beibei

      (School of Computer and Software,Jincheng College of Sichuan University,Chengdu? 611731,China)

      Abstract:Unity3D is a relatively popular game development software in China at present,and music games are also extremely popular since the development of the games. In this paper,a music game is developed and made based on Unity3D. Its main functions include character control,key silencing,music score management,score statistics,UI interface,sound effect and special effect playing. The game is different from the traditional music games,adding animated characters and strike actions,which makes music games and action games combine with each other. Through this game,players can enjoy music and clearance fun while playing.

      Keywords:Unity3D;C#;FL Studio

      0? 引? 言

      當(dāng)今社會(huì)發(fā)展飛速,人們生活節(jié)奏快,碎片化時(shí)間比較多,多數(shù)人更愿意選擇玩一些簡(jiǎn)單易操作又不易沉迷的游戲來放松。而根據(jù)中國(guó)音數(shù)協(xié)游戲工委(GPC)與國(guó)際數(shù)據(jù)公司(IDC)共同發(fā)布的《2020年度第一季度中國(guó)游戲產(chǎn)業(yè)報(bào)告》,受新冠肺炎疫情影響,“宅經(jīng)濟(jì)”大熱,游戲業(yè)保持了非常高的增速,且隨著科技的發(fā)展,不少優(yōu)秀的游戲引擎也更新?lián)Q代。本文采用的Unity3D是一款發(fā)展成熟的開發(fā)引擎,極大程度上方便了個(gè)人進(jìn)行游戲的開發(fā)設(shè)計(jì),降低使用的難度,提高了開發(fā)者的效率。而音樂游戲類型則是要求玩家在聽到相應(yīng)的音樂后,根據(jù)節(jié)奏等因素按下按鍵消除音塊,以獲得分?jǐn)?shù)。玩家的最終目的是在盡可能不漏音塊的前提下更加精準(zhǔn)地按下按鍵來獲得更多分?jǐn)?shù)。

      1? 游戲設(shè)計(jì)

      1.1? 玩法設(shè)計(jì)

      本音樂游戲采用常規(guī)的下落式音塊,以及按鍵來控制小人攻擊,攻擊到音塊來達(dá)到消音的功能。游戲場(chǎng)景中,會(huì)不斷有音塊按照一定節(jié)奏落下,當(dāng)落到最底端的人物部分的時(shí)候,需要按下相應(yīng)的按鍵才可以啟動(dòng)按鈕,如果按早或者按晚了,得分就會(huì)低,只有在人物的攻擊剛覆蓋按鈕的時(shí)候才會(huì)得到最高的分?jǐn)?shù)。而在按下了按鈕后,音塊會(huì)消失,并且播放對(duì)應(yīng)音樂中的音符聲與特效。玩法流程如圖1所示。

      1.2? 場(chǎng)景設(shè)計(jì)

      該場(chǎng)景模仿同類游戲Deemo中的簡(jiǎn)潔場(chǎng)景,只有落下的音塊和下方的4個(gè)按鍵人物組成,以此來使玩家體會(huì)到最沉浸的游戲體驗(yàn)。背景采用了與音塊對(duì)比色較大的白色調(diào)背景,并且音塊采用了漸變色以使玩家能更輕松地分辨不同音塊位置,提升玩家的游戲體驗(yàn)。并且在游戲中消音會(huì)有特效播放,該特效會(huì)提醒玩家消音成功,可以提升游戲的流暢性。

      1.3? 人物設(shè)計(jì)

      為了使游戲有更好的游戲節(jié)奏,游戲人物選擇了2D橫版的游戲角色,而攻擊動(dòng)畫制作快速不冗雜,使玩家玩游戲的時(shí)候不會(huì)因?yàn)楣魟?dòng)畫影響手感。由于音塊分為鼓點(diǎn)與鋼琴音,所以選擇了大錘角色來攻擊鼓點(diǎn),單手劍角色來攻擊鋼琴音??臻e時(shí)人物會(huì)進(jìn)行空閑動(dòng)畫,攻擊則播放攻擊動(dòng)畫,游戲完成時(shí)播放慶祝動(dòng)畫。

      1.4? 音樂設(shè)計(jì)

      由于是音樂游戲,游戲類型特殊,所以對(duì)于音效的要求高于其他游戲。需要在編輯軟件FLstudio中,使用鋼琴音將樂譜扒取下來,并且進(jìn)行修改調(diào)整,最終導(dǎo)出。然后將該音樂中所使用到的音符以及鼓點(diǎn)單獨(dú)導(dǎo)出,為后續(xù)的音塊制作做準(zhǔn)備。對(duì)于不同樂曲有不同的節(jié)奏,即BPM,所以根據(jù)不同的節(jié)奏來整理不同的樂曲難度,相對(duì)的難度越高,音塊越多。目前制作的音樂有:Dream,samurai 45,the truth that you leave,第105天,千本櫻等。

      1.5? 關(guān)卡設(shè)計(jì)

      音樂游戲這一類型在讓人感受到音樂魅力的同時(shí)也要最大限度地讓人體會(huì)到演奏音樂的樂趣,而游戲中的音塊又因音樂的特殊性無法進(jìn)行批量孵化,所以最終采用的是音塊擺放的方式。不同的音樂設(shè)置不同的關(guān)卡,而在關(guān)卡中則通過調(diào)整音塊的下落速度、音塊之間的距離來起到符合音樂節(jié)奏的作用;將關(guān)卡中的不同音塊錯(cuò)位擺放,從而模擬在琴鍵上演奏樂曲,讓玩家可以體會(huì)到更多的樂趣。

      1.6? UI設(shè)計(jì)

      該游戲UI采用了簡(jiǎn)潔的設(shè)計(jì),主要是為了讓玩家可以更加沉浸在游戲中,其中包括了開始游戲、關(guān)卡選擇、難度選擇、以及游戲中暫停、重新開始、回到主菜單等功能。UI中還包含了對(duì)于分?jǐn)?shù)的統(tǒng)計(jì),以及對(duì)是否漏掉音塊的判斷。

      1.7? 功能設(shè)計(jì)

      功能主要分為系統(tǒng)功能和游戲功能,其中系統(tǒng)功能有開始游戲、關(guān)卡選擇、游戲暫停及游戲結(jié)束。游戲功能為角色按鍵功能,其中包括角色攻擊、特效播放、音效播放以及動(dòng)畫播放。游戲中的音塊功能分為音塊移動(dòng)、位置判斷、函數(shù)執(zhí)行以及音塊銷毀功能。游戲功能設(shè)計(jì)如圖2所示。

      2? 游戲主要功能模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)

      2.1? 場(chǎng)景搭建

      游戲場(chǎng)景搭建首先要將背景圖片放入,并且與音塊預(yù)設(shè)對(duì)比調(diào)整顏色,由于游戲使用的是碰撞體檢測(cè)來進(jìn)行音塊消除邏輯,所以將人物放入場(chǎng)景而不是UI界面,然后分別擺放游戲管理按鈕位置,關(guān)卡位置,制作主菜單場(chǎng)景并且分別制作關(guān)卡場(chǎng)景。

      2.2? 音塊

      2.2.1? 音塊制作

      音塊制作在Flstudio中進(jìn)行初次制作,首先根據(jù)要制作的音樂,通過扒譜將樂曲轉(zhuǎn)換成單個(gè)音符,再將所有用到的音符單個(gè)導(dǎo)出并保存。然后再進(jìn)行音樂的豐富,添加和弦、鼓點(diǎn)、節(jié)奏鍵,再將所添加的音符單獨(dú)導(dǎo)出并保存。在Unity中,先制作一個(gè)圖片精靈,將事先于PS中制作的音塊圖放入,并且為其添加AudioSource組件,為添加音效做準(zhǔn)備,然后添加碰撞體以及控制腳本。

      2.2.2? 音塊動(dòng)畫制作

      在音塊控制腳本的更新函數(shù)中,通過控制音塊的位置來進(jìn)行音塊動(dòng)畫的實(shí)現(xiàn),通過transform.Translate(new Vector2(0,-3)*Time.deltaTime, Space.World)語句來分別控制腳本對(duì)象的x,y軸,下落的速度以及對(duì)應(yīng)的坐標(biāo)系。在音塊生成時(shí),通過動(dòng)畫控制器為其制作抖動(dòng)動(dòng)畫與搖擺動(dòng)畫,并且在下落過程中使搖擺動(dòng)畫循環(huán)播放。

      2.2.3? 音塊消除控制

      在腳本中定義一個(gè)整數(shù)類型變量存放碰撞的標(biāo)簽類型,初始為0,使用OntriggerEnter函數(shù)判斷碰撞物標(biāo)簽類型,如果碰撞到的是時(shí)機(jī)檢測(cè)標(biāo)簽類型,則根據(jù)不同的標(biāo)簽類型為變量賦不同的值,當(dāng)碰撞到的標(biāo)簽為按鈕時(shí),則運(yùn)行音塊消失函數(shù):實(shí)例化音效、判斷整數(shù)變量的值來進(jìn)行不同特效的實(shí)例化與分?jǐn)?shù)的增加,摧毀音塊等內(nèi)容。如果碰撞到了最后放的漏音檢測(cè)碰撞體則分?jǐn)?shù)減少并且摧毀。

      2.3? 按鍵人物制作

      2.3.1? 人物制作

      游戲角色是從Unity資源商店中下載的2D人物模型初稿,模型特點(diǎn)是方正,在導(dǎo)入后為人物添加裝飾,武器,特效,并且增加碰撞體組件,增加音效組件,然后將人物放入一個(gè)父對(duì)象,并且再設(shè)置三個(gè)子對(duì)象作為音塊位置檢測(cè)碰撞體存放位置。

      2.3.2? 人物動(dòng)畫

      每個(gè)人物制作一個(gè)動(dòng)畫控制,動(dòng)畫有待機(jī)動(dòng)畫、攻擊動(dòng)畫以及慶祝動(dòng)畫,三個(gè)動(dòng)畫均由動(dòng)畫控制器的錄制功能制作,將武器放在初始位置,再到結(jié)尾時(shí)間處添加關(guān)鍵幀,開啟錄制后更換位置即可。動(dòng)畫制作后調(diào)整關(guān)鍵幀之間的時(shí)間,使動(dòng)作干凈利落。動(dòng)畫邏輯如圖3所示。

      2.3.3? 人物攻擊邏輯及腳本

      人物在接收到相應(yīng)按鍵后,播放攻擊動(dòng)畫,人物的碰撞體啟用并在一定時(shí)間后關(guān)閉,如果碰到了音塊則執(zhí)行音塊銷毀相關(guān)內(nèi)容,如果不是則播放揮空音效。腳本中使用游戲?qū)ο髷?shù)組存放四個(gè)角色,在更新函數(shù)中進(jìn)行按鍵的判斷,如果按下后使用SetActive打開游戲的碰撞體。使用協(xié)程函數(shù)進(jìn)行時(shí)間控制,在一定時(shí)間后將碰撞體關(guān)閉。主要代碼為:

      yield return new WaitForSeconds(keytime);

      detects[a].SetActive(false);

      if(isattack){

      CircleCollider.enabled=true;

      StartCoroutine(attacktime); }

      IEnumerator attacktime(int a){

      yield return new WaitForSeconds(keytime);

      CircleCollider.enabled=false; }

      2.4? 游戲中的碰撞檢測(cè)

      游戲中,針對(duì)音塊的位置有4種不同的狀態(tài),分別是未碰到角色按鍵區(qū)域,碰到角色按鍵區(qū)域前段,中部和后端。分別在角色按鍵的前方、上方和后方放置三個(gè)對(duì)應(yīng)位置子對(duì)象并賦予方塊碰撞體,為其分別命名標(biāo)簽以此判斷按鍵時(shí)音塊所處的位置來計(jì)算分?jǐn)?shù)。最后在按鍵后方一定距離處同樣放置一個(gè)游戲?qū)ο蟛①x予方塊碰撞體,該碰撞體目的是判斷是否有音塊漏過,如有則分?jǐn)?shù)減少并實(shí)例化提示特效。主要檢測(cè)代碼為:

      if(collision.CompareTag("button"))

      {Destroy(gameObject);

      GameValue.instance.ScoreTotle+=10;

      SoundManager.instance.PlaySound(keysound);

      }

      if(collision.CompareTag("backdetect")){

      GameValue.instance.isFullCombo=false;

      }

      2.5? 分?jǐn)?shù)統(tǒng)計(jì)

      根據(jù)在音塊腳本中的按鍵位置,分為三種分?jǐn)?shù),過早和過晚按鍵分?jǐn)?shù)、完美按鍵分?jǐn)?shù)以及錯(cuò)過按鍵分?jǐn)?shù),在音塊函數(shù)中判斷位置后,通過腳本的外部訪問,輸入分?jǐn)?shù)來進(jìn)行相應(yīng)的加減。最終分?jǐn)?shù)將不會(huì)在游戲中進(jìn)行顯示,可以通過暫停游戲或者完成游戲來得知自己的分?jǐn)?shù)。分?jǐn)?shù)腳本主要采用實(shí)例化進(jìn)行外部訪問。主要代碼為:

      public static GameValue instance;

      instance = this;

      Scoretext.text="分?jǐn)?shù):"+ScoreTotle.ToString()

      2.6? UI設(shè)計(jì)

      游戲UI設(shè)計(jì)模仿了同類游戲簡(jiǎn)潔明了的樣式,在玩家玩游戲的時(shí)候盡可能地避免在屏幕中放入過多元素而影響了玩家的游戲體驗(yàn),所以游戲關(guān)卡中只有下落的音塊,四個(gè)角色按鍵,菜單呼出鍵和漏音圖標(biāo)這幾個(gè)部分。而在游戲外的關(guān)卡選擇中則會(huì)顯示音樂封面,點(diǎn)擊詳情可以提前查看游戲的關(guān)卡。

      2.7? 游戲管理

      游戲進(jìn)入時(shí)為主頁面,點(diǎn)擊即可開始游戲,緊接著為游戲的不同關(guān)卡選擇,點(diǎn)擊左右按鈕翻頁,后退按鈕回到主頁面。關(guān)卡又對(duì)應(yīng)歌曲封面以及一個(gè)預(yù)覽播放按鍵組成,點(diǎn)擊播放鍵可以預(yù)覽之前制作的全部音樂,并且出現(xiàn)相應(yīng)關(guān)卡剪影。點(diǎn)擊關(guān)卡圖片則進(jìn)入,關(guān)卡中有四個(gè)角色按鈕分別被玩家控制,左上角呼出菜單功能使游戲暫停、重新開始、繼續(xù)、回到主菜單,并且有分?jǐn)?shù)的提示。游戲管理如圖4所示。

      2.8? 游戲腳本

      游戲中制作了按鍵管理腳本、銷毀腳本、游戲完成腳本、游戲控制腳本、游戲值腳本、音效管理腳本、音塊腳本、屏幕控制腳本、關(guān)卡選擇腳本、關(guān)卡解鎖腳本以及角色控制腳本。

      3? 游戲測(cè)試

      3.1? 測(cè)試環(huán)境

      游戲由2018.3.9f1版本Unity3D制作,VisualStudio2019進(jìn)行C#腳本編寫,游戲在顯卡RX550、CPU為i7,內(nèi)存16 GB的環(huán)境下進(jìn)行測(cè)試。

      3.2? 測(cè)試內(nèi)容

      測(cè)試內(nèi)容為調(diào)整不同的游戲分辨率來觀察有無界面的錯(cuò)位,按鍵的丟失;使用不同的電腦來判斷是否存在運(yùn)行錯(cuò)誤;不同的玩家測(cè)試游戲,并且分享游戲體驗(yàn)來調(diào)整不同游戲關(guān)卡難度并且進(jìn)行關(guān)卡的等級(jí)排序,最終完善一個(gè)關(guān)卡等級(jí)分級(jí)。主要功能展示如圖5所示。

      4? 結(jié)? 論

      本項(xiàng)目是使用Unity3D為基礎(chǔ)制作的一款音樂游戲,主要功能有音塊消除,角色按鍵控制,音效播放,特效播放,分?jǐn)?shù)統(tǒng)計(jì),菜單與關(guān)卡管理。本游戲意在使玩家體驗(yàn)游戲的同時(shí)感受音樂給人帶來的樂趣,結(jié)果表明游戲設(shè)計(jì)合理,關(guān)卡難度分層明確,玩家游玩體驗(yàn)良好,可玩性較高。

      雖然這款游戲已經(jīng)可以達(dá)到最初制作的基本要求,但是還有待改進(jìn),未來工作是優(yōu)化游戲代碼和模型,并加入更多曲目,角色以及音塊類型,希望能給玩家?guī)砀映两挠螒蝮w驗(yàn)。

      參考文獻(xiàn):

      [1] 張?jiān)?,陶俊,徐?基于Unity3D的塔防類游戲的設(shè)計(jì)與實(shí)現(xiàn) [J].現(xiàn)代信息科技,2021,5(1):84-87.

      [2] 黃福鈺.基于Unity3D的歷史RPG教育游戲設(shè)計(jì)開發(fā) [J].電腦知識(shí)與技術(shù),2021,17(11):58-60.

      [3] 張勝男,司占軍.基于Unity 3D的尋寶游戲的設(shè)計(jì)與制作 [J].電腦知識(shí)與技術(shù),2020,16(22):37-39.

      [4] 王艷,華唯辰.基于Unity3D的ARPG游戲設(shè)計(jì)與實(shí)現(xiàn) [J].電腦知識(shí)與技術(shù),2020,16(29):199-201.

      [5] 劉雨嘉,楊鍵,馮夢(mèng)雨.基于Unity3D的VR射擊游戲的研究與實(shí)現(xiàn) [J].數(shù)碼世界,2019(3):44-45.

      作者簡(jiǎn)介:張貝貝(2000—)男,漢族,四川宜賓人,本科在讀,研究方向:VR與游戲開發(fā)。

      收稿日期:2021-03-09

      开化县| 黔西县| 钟祥市| 蓬安县| 吴堡县| 甘南县| 山阴县| 定日县| 广河县| 观塘区| 宁河县| 玉龙| 开阳县| 绥江县| 荔浦县| 海淀区| 定兴县| 贞丰县| 宜章县| 西宁市| 江达县| 沙坪坝区| 长沙县| 清徐县| 香港 | 广西| 闸北区| 施甸县| 叶城县| 和政县| 密云县| 额济纳旗| 芦山县| 连江县| 铁岭市| 通道| 隆林| 云浮市| 晴隆县| 松桃| 加查县|