Unity課程設(shè)計(jì)_第1頁
Unity課程設(shè)計(jì)_第2頁
Unity課程設(shè)計(jì)_第3頁
Unity課程設(shè)計(jì)_第4頁
Unity課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、移動(dòng)終端游戲開發(fā)課程設(shè)計(jì)說明書題目: flappy bird游戲設(shè)計(jì) 院 系: 專業(yè)班級: 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 2016年 6 月 30 日安徽理工大學(xué)課程設(shè)計(jì)(論文)任務(wù)書 學(xué)院 學(xué) 號學(xué)生姓名專業(yè)(班級)設(shè)計(jì)題目 flappy bird游戲設(shè)計(jì) 設(shè)計(jì)技術(shù)參數(shù)系統(tǒng)平臺:windows 7開發(fā)工具:unity、monodevelop開發(fā)語言:c#設(shè)計(jì)要求1.能夠統(tǒng)計(jì)分?jǐn)?shù),并記錄以往最高分2.管道出現(xiàn)具有隨機(jī)性3.界面合理、友好工作量課程設(shè)計(jì)報(bào)告4945字源程序314行工作計(jì)劃2016.04.15-04.22 根據(jù)課程設(shè)計(jì)的要求,查找相關(guān)資料,完成需求分析;2016.04.23-0

2、5.07 進(jìn)行系統(tǒng)的概要設(shè)計(jì);2016.05.08-06.12 進(jìn)行系統(tǒng)的詳細(xì)設(shè)計(jì)和源代碼的書寫;2016.06.13-06.30 對系統(tǒng)進(jìn)行調(diào)試分析,撰寫課程設(shè)計(jì)報(bào)告。參考資料1嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu). 北京:清華大學(xué)出版社,2011 2立波.c#入門經(jīng)典.北京:清華大學(xué)出版社,2006 3金璽曾.unity3d手機(jī)游戲開發(fā).北京:清華大學(xué)出版社,2013 4指導(dǎo)教師簽字教研室主任簽字 2016年 4月 1 日 安徽理工大學(xué)課程設(shè)計(jì)(論文)成績評定表學(xué)生姓名: 學(xué)號: 專業(yè)班級: 課程設(shè)計(jì)題目: flappy bird游戲設(shè)計(jì) 評價(jià)單元評價(jià)要素

3、評價(jià)內(nèi)涵優(yōu)良中差知識水平30%文獻(xiàn)查閱與知識運(yùn)用能力(20分)能獨(dú)立查閱文獻(xiàn)資料,并能合理地運(yùn)用到程序設(shè)計(jì)訓(xùn)練之中;能將所學(xué)課程(專業(yè))知識準(zhǔn)確地運(yùn)用到程序設(shè)計(jì)之中,并歸納總結(jié)本程序設(shè)計(jì)訓(xùn)練所涉及的有關(guān)課程知識程序設(shè)計(jì)方案(10分)程序設(shè)計(jì)整體思路清晰,程序設(shè)計(jì)方案合理可行設(shè)計(jì)表現(xiàn)50%工作量(10分)課程設(shè)計(jì)工作量飽滿設(shè)計(jì)態(tài)度(10分)設(shè)計(jì)態(tài)度認(rèn)真,遵守程序設(shè)計(jì)階段的紀(jì)律,作風(fēng)嚴(yán)謹(jǐn),能按時(shí)完成設(shè)計(jì)任務(wù)書中規(guī)定的任務(wù),按時(shí)上交課程設(shè)計(jì)有關(guān)資料實(shí)際動(dòng)手能力(20分)實(shí)際動(dòng)力能力強(qiáng),能獨(dú)立完成相關(guān)設(shè)計(jì)任務(wù)創(chuàng)新能力(10分)有一定的創(chuàng)新能力說明書質(zhì)量20%寫作水平(10分)整體思路清晰,結(jié)構(gòu)合理,層

4、次分明,語言表達(dá)流暢,綜合概括能力強(qiáng)寫作規(guī)范(10分)符合課程設(shè)計(jì)說明書的基本要求,用語、格式、圖表、數(shù)據(jù)及各種資料引用規(guī)范(符合標(biāo)準(zhǔn))成績: 指導(dǎo)教師: 年 月 日目錄1 需求分析12 概要設(shè)計(jì)12.1 設(shè)計(jì)思路12.2 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)22.3 功能模塊設(shè)計(jì)33 詳細(xì)設(shè)計(jì)33.1 游戲工程視圖33.2 游戲界面布局53.3 功能模塊設(shè)計(jì)實(shí)現(xiàn)63.3.1游戲開始設(shè)計(jì)63.3.2小鳥移動(dòng)模塊設(shè)計(jì)73.3.3管道碰撞模塊設(shè)計(jì)83.3.4場景延續(xù)模塊設(shè)計(jì)83.3.5分?jǐn)?shù)統(tǒng)計(jì)模塊設(shè)計(jì)83.3.6游戲結(jié)束模塊設(shè)計(jì)93.4 其他設(shè)計(jì)實(shí)現(xiàn)103.4.1 攝像機(jī)的跟隨103.4.2 游戲音效的添加113.4.3

5、 游戲開始界面的設(shè)計(jì)114 運(yùn)行與測試125 總結(jié)15參考文獻(xiàn)15 1 需求分析1.技術(shù)需求: 此游戲是在unity5.3.3上開發(fā)出來的,unity5.3.3可以支持2d、3d場景的編輯,本游戲是基于3d場景開發(fā)的。游戲中的腳本語言使用的是c#,unity5.3.3中的monodevelop為腳本編輯提供了平臺。2.功能需求: flappy bird是一款益智類的小游戲,其玩法為:游戲開始后,玩家需間歇性的點(diǎn)擊鼠標(biāo),讓小鳥向上飛,不會(huì)掉下來,并且要穿過隨機(jī)出現(xiàn)的管道的間隙,不能碰到管道,碰到就游戲結(jié)束,穿過一個(gè)管道就可以得到一分。其制作包括對以下六大功能的需求:(1)當(dāng)開始游戲后,玩家需要單

6、擊指定位置才能開始游戲,否則無法開始;(2)需要通過點(diǎn)擊屏幕來控制小鳥的位置,完成使小鳥上下移動(dòng)的功能;(3)需要對小鳥是否碰到地面或者管道進(jìn)行判斷,從而決定游戲是否結(jié)束;(4)需要設(shè)置觸發(fā)器以實(shí)現(xiàn)場景的延續(xù),當(dāng)小鳥碰到觸發(fā)器,場景中的第一幅背景便挪到最后一幅的后面,從而實(shí)現(xiàn)視覺上場景不斷出現(xiàn)的效果;(5)需要對玩家進(jìn)行記分,并對最高分進(jìn)行判斷和存儲(chǔ);(6)在失敗后,需要使玩家通過點(diǎn)擊按鈕重新開始游戲。 2 概要設(shè)計(jì)2.1 設(shè)計(jì)思路flappybird是一款形式簡易但難度極高的休閑游戲,我們打算使用unity開發(fā)工具來制作這款游戲。經(jīng)過分析,我們首先要完成的是對素材的收集,我們可以從網(wǎng)上搜索下

7、載,也可以自己使用ps等工具來畫。其次,我們需要對整個(gè)游戲進(jìn)行模塊劃分,理清整個(gè)游戲是由哪幾個(gè)模塊組成的,經(jīng)過討論分析,我們得出這個(gè)游戲共需要六大模塊。分析完之后,便進(jìn)入了正式的游戲制作環(huán)節(jié),我們需要對各個(gè)模塊進(jìn)行詳細(xì)設(shè)計(jì),其中包括頁面布局、碰撞檢測、小鳥飛行動(dòng)畫等。完成各個(gè)模塊的詳細(xì)設(shè)計(jì)后,我們便可以在unity中對它們進(jìn)行組裝和拼接,并運(yùn)行測試,修改錯(cuò)誤和不適當(dāng)?shù)牡胤健W源?,整個(gè)游戲就設(shè)計(jì)完成了。2.2 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì) 1pipe類:管道設(shè)計(jì) float pos_y /管道的y軸值,目的是為了使管道能隨機(jī)出現(xiàn) 2bird類:小鳥設(shè)計(jì) publicfloattimer;/計(jì)時(shí)器,為了控制顯示小

8、鳥飛行動(dòng)畫 publicintframenumber;/一秒的幀數(shù) publicintframecount;/ 幀計(jì)數(shù)器 3. followbird類:攝像機(jī)設(shè)計(jì) private gameobject bird; private transform birdtransform;/bird的位置 4. gamemanager類:游戲狀態(tài)設(shè)計(jì) publicstaticintgamestate_menu;/游戲菜單狀態(tài) publicstaticintgamestate_playing;/游戲中狀態(tài) publicstaticintgamestate_end; /游戲結(jié)束狀態(tài) publictransfo

9、rmfirstbg;/用來記錄應(yīng)該將第一幅場景挪到哪幅場景 的后面,以實(shí)現(xiàn)場景延續(xù) publicintscore=0;/記錄分?jǐn)?shù) 5. movetrrigger類:觸發(fā)器設(shè)計(jì) transform currentbg;/用于當(dāng)前場景的位置 pipe pipe1;/用于新出現(xiàn)的場景中管道1的位置pipe pipe2;/用于新出現(xiàn)的場景中管道2的位置 6. gamemenu類:游戲結(jié)束菜單設(shè)計(jì)publicguitextnowscore;/當(dāng)前分?jǐn)?shù)publicguitexthighscore;/歷史最高分publicguitexturestarttexture;/開始按鈕圖片publicguitext

10、ureovertexture; /“game over”圖片 7. gameready類:游戲開始菜單設(shè)計(jì)publicguitexturereadytexture;/“getready”圖片 publicguitexturetoptexture;/“tap tap”圖片 publicstaticgameready_intance2; 2.3 功能模塊設(shè)計(jì)flappy bird游戲具有六大功能模塊,分別為:(1) 游戲開始模塊:包括游戲開始菜單的設(shè)計(jì);(2) 小鳥移動(dòng)模塊:包括對小鳥飛行進(jìn)行控制的設(shè)計(jì);(3) 管道碰撞模塊:包括管道碰撞和穿過管道即可得分的設(shè)計(jì);(4) 場景延續(xù)模塊:包括場景觸發(fā)

11、器的設(shè)計(jì);(5) 分?jǐn)?shù)統(tǒng)計(jì)模塊:包括對玩家分?jǐn)?shù)的統(tǒng)計(jì)、顯示和在游戲結(jié)束時(shí),對玩家的分?jǐn)?shù)進(jìn)行判斷的設(shè)計(jì);(6) 游戲結(jié)束模塊:包括游戲結(jié)束菜單的設(shè)計(jì);其功能模塊圖如圖2-1所示:flappy bird小鳥移動(dòng)模塊管道碰撞模塊場景延續(xù)模塊分?jǐn)?shù)統(tǒng)計(jì)模塊游戲結(jié)束模塊游戲開始模塊 圖2-1 功能模塊圖3 詳細(xì)設(shè)計(jì)3.1 游戲工程視圖在新建項(xiàng)目后,我們需要在“assets”文件夾下導(dǎo)入素材“audios”:游戲音樂素材文件夾,包括游戲開始音樂、小鳥煽動(dòng)翅膀的音樂、得分的音樂、撞到管道和地面的音樂、小鳥死亡的音樂;“textures”:圖片素材文件夾,包括:游戲背景、管道、小鳥、游戲菜單等?!癮udios”

12、文件夾如圖3-1所示: 圖3-1 “audios”文件夾“textures”文件夾如圖3-2所示: 圖3-2 “textures”文件夾然后我們需要新建“materials”:材質(zhì)文件夾;“prefabs”:預(yù)制文件夾;“scenes”:游戲場景文件夾;“scripts”:腳本文件夾。總體工程視圖如圖3-3所示: 圖3-3 總體工程視圖3.2 游戲界面布局1.開始界面 游戲開始界面如圖3-4所示,左上角的“score”為分?jǐn)?shù),中間的圖畫為開始按鈕,單擊“getready”即可開始游戲,右邊的管道為小鳥行進(jìn)途中的障礙,當(dāng)小鳥碰到障礙,游戲便結(jié)束,但當(dāng)小鳥通過一個(gè)障礙即可得一分。 圖3-4 開始界

13、面2.結(jié)束界面 游戲結(jié)束界面如圖3-5所示,中間的為菜單欄,顯示當(dāng)輪游戲分?jǐn)?shù)和歷史最高分,并根據(jù)分?jǐn)?shù)來顯示所得獎(jiǎng)牌的種類,分為金牌、銀牌、銅牌,我們可以單擊“重新開始”按鈕來重新開始游戲。 圖3-5 結(jié)束界面3.3 功能模塊設(shè)計(jì)實(shí)現(xiàn)3.3.1游戲開始設(shè)計(jì)游戲開始界面與游戲進(jìn)行界面相似,但一開始沒有管道,目的是為了給玩家一個(gè)反應(yīng)的時(shí)間。當(dāng)程序檢測到玩家在游戲界面內(nèi)點(diǎn)擊了鼠標(biāo),那么就進(jìn)入了游戲進(jìn)行界面。程序如下: public static int gamestate_menu =0; public static int gamestate_playing =1; public static in

14、t gamestate_end =2; void update ()if (gamestate =gamemanager.gamestate_menu) if (input.getmousebuttondown (0) gamestate = gamestate_playing;bird.sendmessage (getlife); public void getlife()getcomponent().usegravity = true;this.getcomponent().velocity = new vector3(3,0,0);3.3.2小鳥移動(dòng)模塊設(shè)計(jì) 進(jìn)入游戲進(jìn)行界面后,小鳥會(huì)顯

15、示飛行的動(dòng)畫,在unity中進(jìn)行相關(guān)參數(shù)的設(shè)置后,我們需要通過代碼來控制小鳥飛行動(dòng)畫,程序如下:if(gamemanager._intance.gamestate=gamemanager.gamestate_playing)timer+=time.deltatime;if(timer=1.0f/framenumber)framecount+;timer-=1.0f/framenumber;intframeindex=framecount%3;this.getcomponent().material.settextureoffset (_maintex,newvector2(0.333333f*

16、frameindex,0);我們通過點(diǎn)擊鼠標(biāo)來控制小鳥進(jìn)行移動(dòng),程序如下:if(gamemanager._intance.gamestate =gamemanager.gamestate_playing)if(input.getmousebutton(0) /按下左鍵 getcomponent().play(); vector3vel2=this.getcomponent().velocity; this.getcomponent().velocity = newvector3(vel2.x,4,vel2.z); 3.3.3管道碰撞模塊設(shè)計(jì) 當(dāng)小鳥碰撞到管道,游戲便結(jié)束,此時(shí)我們便不能再控制小

17、鳥進(jìn)行移動(dòng),管道碰撞程序如下:voidoncollisionenter(collisionother) if(other.gameobject.tag=player) hitmusic.play(); diemusic.play(); gamemanager._intance.gamestate=gamemanager.gamestate_end; 3.3.4場景延續(xù)模塊設(shè)計(jì) 當(dāng)小鳥在飛行過程中,后面的場景應(yīng)該是不斷更新的,我們需要在第三個(gè)場景中設(shè)置一個(gè)觸發(fā)器,當(dāng)小鳥碰撞到這個(gè)觸發(fā)器后,我們便把第一個(gè)場景挪到最后面,這樣我們的場景就能一直不斷的更新,程序如下:publicvoidontrigg

18、erenter(colliderother) print(ontriggerenter); if(other.tag=player) transformfirstbg = gamemanager._intance.firstbg; currentbg.position=newvector3(firstbg.position.x+10,currentbg.position.y,currentbg.position.z); gamemanager._intance.firstbg=currentbg; /管道的新位置 pipe1.randomgenerateposition(); pipe2.ra

19、ndomgenerateposition(); 3.3.5分?jǐn)?shù)統(tǒng)計(jì)模塊設(shè)計(jì) 當(dāng)小鳥通過管道后,分?jǐn)?shù)便會(huì)加1,所以我們需要在管道中間設(shè)置一個(gè)觸發(fā)器,并使用代碼控制小鳥在碰到觸發(fā)器后分?jǐn)?shù)能加1,同時(shí)顯示分?jǐn)?shù),程序如下:voidontriggerexit(colliderother) if(other.tag=player) getcomponent().play(); gamemanager._intance.score+;/分?jǐn)?shù)voidongui() guilayout.label(score:+gamemanager._intance.score); 游戲結(jié)束時(shí),將顯示本輪分?jǐn)?shù)和歷史最高分,代

20、碼如下:if(gamestate=gamemanager.gamestate_end) gamemenu._intance.gameobject.setactive(true); gamemenu._intance.updatescore(score); 3.3.6游戲結(jié)束模塊設(shè)計(jì)當(dāng)小鳥碰撞到管道或者地面時(shí),游戲便會(huì)結(jié)束,此時(shí)顯示游戲結(jié)束畫面,同時(shí)顯示本輪分?jǐn)?shù)和歷史最高分,并根據(jù)分?jǐn)?shù)來顯示所得獎(jiǎng)牌種類,同時(shí)有重新開始按鈕,點(diǎn)擊即可重新開始游戲,此為無限循環(huán)過程。代碼如下:voidawake() _intance=this; this.gameobject.setactive(false);pu

21、blicvoidupdatescore(floatnowscore) floathighscore=playerprefs.getfloat(score,0); if (nowscorehighscore)highscore=nowscore; inta; a=int.parse(nowscore.tostring(); if (a0&a10&a30|a=30) modelmenu3._intance5.gameobject.setactive(true); playerprefs.setfloat(score,highscore); this.nowscore.text=nowscore+;

22、 this.highscore.text=highscore+; if(input.getmousebuttondown(0)&gamemanager._intance.gamestate=gamemanager.gamestate_end) /重新開始游戲rectrect=starttexture.getscreenrect();vector3mousepos=input.mouseposition;if(mousepos.xrect.x& mousepos.xrect.y& mousepos.y2.3f) y=2.3f;if(yrect.x& mousepos.xrect.y& mouse

23、pos.y(rect.y+rect.height) gamestate=gamestate_playing; bird.sendmessage(getlife); 4 運(yùn)行與測試1.我們運(yùn)行游戲,進(jìn)入游戲界面。一開始出現(xiàn)一個(gè)靜止不動(dòng)的畫面,我們需要單擊“get ready!”來開始游戲,游戲開始界面如圖4-1所示: 圖4-1 游戲開始界面2.當(dāng)開始游戲后,我們需要間歇性點(diǎn)擊鼠標(biāo)來控制小鳥向上飛行,每次點(diǎn)擊只會(huì)讓小鳥獲得一次速度,接著就會(huì)在重力的作用下向下落,如果接觸到地面或者觸碰到管道,游戲就會(huì)結(jié)束。經(jīng)過測試,我們可以開始游戲并能控制小鳥進(jìn)行飛行,游戲進(jìn)行界面如圖4-2所示: 圖4-2 游戲進(jìn)行界面3.當(dāng)我們觸碰到管道時(shí),我們便失去對小鳥的控制,彈出游戲結(jié)束菜單,我們可以在菜單中看到自己此輪的分?jǐn)?shù)、歷史最高分和所得獎(jiǎng)牌種類,并選擇是否繼續(xù)游戲。經(jīng)過測試,當(dāng)小鳥觸碰到管道時(shí),游戲結(jié)束,并彈出菜單,當(dāng)?shù)梅衷?9之間,游戲結(jié)束界面如圖4-3所示: 圖4-3 得分在010之間的結(jié)束界面當(dāng)?shù)梅衷?029之間,游戲結(jié)束界面如圖4-4所示: 圖4-4 得分1029之間的結(jié)束界面當(dāng)?shù)梅衷?0以上,游戲結(jié)束界面如圖4-5所示: 圖4-5 得分在30以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論