Unity3D開(kāi)發(fā)標(biāo)準(zhǔn)教程-課程設(shè)計(jì)-探險(xiǎn)飛機(jī)_第1頁(yè)
Unity3D開(kāi)發(fā)標(biāo)準(zhǔn)教程-課程設(shè)計(jì)-探險(xiǎn)飛機(jī)_第2頁(yè)
Unity3D開(kāi)發(fā)標(biāo)準(zhǔn)教程-課程設(shè)計(jì)-探險(xiǎn)飛機(jī)_第3頁(yè)
Unity3D開(kāi)發(fā)標(biāo)準(zhǔn)教程-課程設(shè)計(jì)-探險(xiǎn)飛機(jī)_第4頁(yè)
Unity3D開(kāi)發(fā)標(biāo)準(zhǔn)教程-課程設(shè)計(jì)-探險(xiǎn)飛機(jī)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1頁(yè)課程設(shè)計(jì)—探險(xiǎn)飛機(jī)第2頁(yè)12.1背景以及功能概述12.1.1游戲背景概述此類(lèi)游戲畫(huà)面精美,操作簡(jiǎn)單,成為打發(fā)閑暇時(shí)間的不二之選。

圖12-1跳舞的線(xiàn)圖12-2鋼琴塊2 圖12-3開(kāi)心消消樂(lè)

第3頁(yè)12.1背景以及功能概述12.1.2游戲功能簡(jiǎn)介(1)運(yùn)行游戲后,首先顯示的是本游戲的主菜單界面,如圖12-4所示。在主菜單界面中有本游戲的中文標(biāo)識(shí)“探險(xiǎn)飛機(jī)”,下面是“開(kāi)始游戲”按鈕,在本界面的右上角是音效按鈕,初始默認(rèn)開(kāi)啟音效。單擊音效按鈕,即可控制游戲音效的開(kāi)啟或關(guān)閉。

圖12-4主菜單界面

第4頁(yè)12.1背景以及功能概述12.1.2游戲功能簡(jiǎn)介(2)單擊主菜單界面的“開(kāi)始游戲”按鈕進(jìn)入游戲場(chǎng)景,如圖12-5所示。在游戲中點(diǎn)擊屏幕的左右半?yún)^(qū),控制飛機(jī)左右旋轉(zhuǎn)。每通過(guò)一個(gè)障礙物,得分加1,如圖12-6所示。飛機(jī)沒(méi)有通過(guò)障礙,與障礙物發(fā)生碰撞,則游戲失敗,如圖12-7所示,單擊“重新開(kāi)始“按鈕即可重新開(kāi)始游戲。

圖12-6游戲界面圖12-7游戲失敗界面第5頁(yè)12.2游戲的策劃及準(zhǔn)備工作12.2.1游戲的策劃游戲類(lèi)型運(yùn)行目標(biāo)平臺(tái)目標(biāo)受眾操作方式呈現(xiàn)技術(shù)

第6頁(yè)12.2游戲的策劃及準(zhǔn)備工作12.2.2使用Unity3D開(kāi)發(fā)游戲前的準(zhǔn)備工作本游戲中所用到的背景圖片、天空盒紋理圖和菜單項(xiàng)所需資源圖片本游戲中所有音效游戲中按鈕的圖片資源記分板的數(shù)字圖片資源3D模型是用3dMax生成的FBX文件導(dǎo)入

第7頁(yè)12.3游戲的架構(gòu)12.3.1游戲中各場(chǎng)景的簡(jiǎn)要介紹主菜單場(chǎng)景:游戲中的主場(chǎng)景主要是用來(lái)顯示游戲的標(biāo)題和開(kāi)始按鈕,點(diǎn)擊開(kāi)始游戲界面即可進(jìn)入關(guān)卡。

圖12-10主菜單架構(gòu)圖第8頁(yè)12.3游戲的架構(gòu)12.3.1游戲中各場(chǎng)景的簡(jiǎn)要介紹關(guān)卡場(chǎng)景:本場(chǎng)景是該游戲最重要的場(chǎng)景,這個(gè)場(chǎng)景的游戲一些對(duì)象被附加了相應(yīng)的腳本,比如主攝像機(jī)、飛機(jī)、障礙物等,在游戲的關(guān)卡界面,關(guān)卡是循環(huán)生成的、點(diǎn)擊屏幕的兩側(cè),可以控制飛機(jī)的旋轉(zhuǎn)。同時(shí)屏幕上方還能顯示游戲的得分,“重新開(kāi)始”按鈕還能控制游戲重新開(kāi)始等。

第9頁(yè)12.3游戲的架構(gòu)12.3.2游戲的架構(gòu)簡(jiǎn)介(1)運(yùn)行本游戲,首先會(huì)進(jìn)入到主菜單場(chǎng)景“MainMenu”。此界面是用UGUI編寫(xiě)而成,UGUI控件與控件之間可以進(jìn)行嵌套,。整個(gè)場(chǎng)景背景為一個(gè)天空盒,腳本控制主攝像機(jī)旋轉(zhuǎn),從而實(shí)現(xiàn)動(dòng)態(tài)效果,然后在一塊畫(huà)布上放置按鈕圖片(開(kāi)始游戲,開(kāi)啟音效或關(guān)閉音效)。(2)當(dāng)?shù)谝淮芜M(jìn)入此游戲時(shí),音效是默認(rèn)開(kāi)啟的。如果玩家需要關(guān)閉游戲中的音效,可以單擊右上角的音效控制按鈕。如若單擊按鈕則會(huì)觸發(fā)掛載在按鈕上的腳本里的方法,如“開(kāi)啟音效”按鈕的KQOnClick方法、“關(guān)閉音效”按鈕的GBOnClick方法。

第10頁(yè)12.3游戲的架構(gòu)12.3.2游戲的架構(gòu)簡(jiǎn)介(3)單擊主菜單場(chǎng)景中的“開(kāi)始游戲”按鈕進(jìn)入游戲界面后,將會(huì)觸發(fā)掛載在攝像機(jī)上控制障礙物移動(dòng)的ObstacleMove類(lèi)、控制游戲重新開(kāi)始的GameControl類(lèi)、掛載在障礙物上控制障礙物隨機(jī)旋轉(zhuǎn)的ObstacleControl類(lèi)以及掛載在記分板上改變游戲得分的ScoreBoard類(lèi)。(4)飛機(jī)在飛行過(guò)程中需要改變角度才能安全的穿越障礙物,玩家在點(diǎn)擊屏幕時(shí)將會(huì)觸發(fā)掛載在飛機(jī)上控制它旋轉(zhuǎn)、游戲?qū)ο笈鲎矙z測(cè)、成功穿越障礙物得分以及發(fā)生碰撞后重新開(kāi)始的AirPlaneControl類(lèi)。

第11頁(yè)12.4游戲場(chǎng)景12.4.1游戲主菜單場(chǎng)景(1)首先新建項(xiàng)目,然后新建場(chǎng)景并設(shè)置環(huán)境光。接著新建一個(gè)Canvas,具體操作為單擊左側(cè)“Hierarchy”面板上方Create→UI→Canvas,如圖12-9所示。即可看到在窗口中創(chuàng)建了一個(gè)畫(huà)布,畫(huà)布相關(guān)信息如圖12-10所示。

圖12-9創(chuàng)建畫(huà)布 圖12-10“Canvas”面板設(shè)置第12頁(yè)12.4游戲場(chǎng)景12.4.1游戲主菜單場(chǎng)景(2)接著創(chuàng)建兩個(gè)Button,分別對(duì)應(yīng)““開(kāi)啟音效”和“關(guān)閉音效”按鈕。如圖12-11所示。然后將預(yù)先放置在Textures文件夾下的“off.png”圖片和“on.png”圖片拖曳到Button的“Image”組件“SourceImage”上,最后分別重命名為“on”、““off”,如圖12-12所示。

圖12-11創(chuàng)建Button 圖12-12“on”面板設(shè)置第13頁(yè)12.4游戲場(chǎng)景12.4.1游戲主菜單場(chǎng)景(3)之后創(chuàng)建一個(gè)天空盒來(lái)作為主菜單背景,具體操作為新建一個(gè)名為“Material”的文件夾,然后選中文件夾單擊鼠標(biāo)右鍵,選擇Create→Material,如圖12-13所示,并將其命名為“Skybox”。在“Material”文件夾中即可看到剛剛創(chuàng)建的材質(zhì)。

圖12-13創(chuàng)建Material 第14頁(yè)12.4游戲場(chǎng)景12.4.1游戲主菜單場(chǎng)景(4)接著選中剛剛創(chuàng)建的“Skybox”材質(zhì),在屬性查看器中修改去渲染方式為Skybox模式,具體的修改步驟為單擊Shader→Skybox→6Sided。修改完成后,我們將準(zhǔn)備好的天空盒紋理圖拖入到相對(duì)應(yīng)的位置,如圖12-14所示。

圖12-14天空盒屬性 第15頁(yè)12.4游戲場(chǎng)景12.4.1游戲主菜單場(chǎng)景(5)制作好天空盒后,我們需要做的是在Unity集成開(kāi)發(fā)環(huán)境中對(duì)其進(jìn)行相關(guān)的設(shè)置并將其顯示出來(lái)。選中場(chǎng)景中的攝像機(jī),依次單擊菜單欄中Component→Rendering→Skybox為其添加天空盒組件,如圖12-16所示。并在將之做好的天空盒拖到Skybox處,如圖12-17所示。

圖12-15添加天空盒1圖12-16添加天空盒2第16頁(yè)12.4游戲場(chǎng)景12.4.1游戲主菜單場(chǎng)景(6)新建一個(gè)C#腳本,具體操作為單擊鼠標(biāo)右鍵,選擇Create→C#Script,將其命名為“Welcome.cs”。本腳本主要是控制天空盒旋轉(zhuǎn),界面跳轉(zhuǎn)和音效的開(kāi)啟或關(guān)閉,腳本代碼如下。1 usingSystem.Collections;2 usingSystem.Collections.Generic;3 usingUnityEngine;4 usingUnityEngine.SceneManagement; //導(dǎo)入系統(tǒng)包5 publicclassWelcome:MonoBehaviour{6 publicTexture2DTitle; //游戲名稱(chēng)圖片7 publicTexture2DStartGame; //開(kāi)始游戲按鈕圖片8 publicGUIStyleMystyle; //自定義Style9 publicGameObjectOn; //關(guān)閉音效按鈕10 publicGameObjectOff; //開(kāi)啟關(guān)閉按鈕11 publicfloatrotateSpeed=1f; //攝像機(jī)旋轉(zhuǎn)速度

第17頁(yè)12.4游戲場(chǎng)景12.4.1游戲主菜單場(chǎng)景12 voidUpdate(){13 transform.Rotate(newVector3(0,rotateSpeed*Time.deltaTime,0));//旋轉(zhuǎn)14 }15 privatevoidOnGUI(){16 floatt_Heigh=Screen.height*0.30f; //定義標(biāo)題圖片顯示寬度17 floatt_width=Screen.width*0.45f; //定義標(biāo)題圖片顯示高度18 GUI.DrawTexture(newRect( //繪制標(biāo)題19 Screen.width*0.5f-t_width/2, //設(shè)置圖片初始位置20 Screen.height*0.4f-t_Heigh/2,21 t_width,t_Heigh),Title); //設(shè)置圖片尺寸22 floatb_width=Screen.width*0.5f; //定義開(kāi)始游戲按鈕寬度23 floatb_heigh=Screen.height*0.2f; //定義開(kāi)始游戲按鈕高度24 if(GUI.Button(newRect( //判斷是否點(diǎn)擊25 Screen.width*0.6f-b_width/2, //繪制開(kāi)始游戲按鈕26 Screen.height*0.85f-b_heigh/2,

12.4游戲場(chǎng)景12.4.1游戲主菜單場(chǎng)景27 b_width,b_heigh),StartGame,Mystyle)){28 SceneManager.LoadScene("PlaneGame"); //加載游戲場(chǎng)景29 }}30 publicvoidKQOnClick(){ //開(kāi)啟音效方法31 On.SetActive(true); //顯示On32 Off.SetActive(false); //隱藏Off33 AirPlaneControl.Soundflag=true; //設(shè)置聲音標(biāo)志位為true34 }35 publicvoidGBOnClick(){ //關(guān)閉音效方法36 On.SetActive(false); //隱藏ON37 Off.SetActive(true); //開(kāi)啟Off38 AirPlaneControl.Soundflag=false; //設(shè)置聲音標(biāo)志位為false39 }}第18頁(yè)12.4游戲場(chǎng)景12.4.1游戲主菜單場(chǎng)景(7)編輯完成的腳本保存后,將其掛載到主攝像機(jī)和兩個(gè)按鈕上。打開(kāi)主攝像機(jī)的屬性查看器,我們需要將準(zhǔn)備好的紋理圖拖到對(duì)應(yīng)位置,如圖12-18所示。然后打開(kāi)按鈕屬性查看器,將兩個(gè)按鈕拖到對(duì)應(yīng)位置,并設(shè)置對(duì)應(yīng)的點(diǎn)擊事件,如圖12-19所示。第19頁(yè)圖12-17主攝像機(jī)屬性查看器

圖12-18按鈕屬性查看器第20頁(yè)12.4游戲場(chǎng)景12.4.2游戲障礙物的創(chuàng)建與移動(dòng)腳本開(kāi)發(fā)

(1)首先需要介紹游戲中障礙物的創(chuàng)建。一組障礙物由兩個(gè)相同的模型和中間的加分點(diǎn)Point,如圖12-20所示,并且每個(gè)可以觸發(fā)功能的游戲?qū)ο蠖继砑恿伺鲎搀w。四組不同不同形狀的障礙物構(gòu)成了一整組障礙物,整體效果如圖12-21所示。

圖12-19障礙物結(jié)構(gòu)圖12-20障礙物效果12.4游戲場(chǎng)景12.4.2游戲障礙物的創(chuàng)建與移動(dòng)腳本開(kāi)發(fā)(2)前面介紹了障礙物組合的制作,下面將介紹障礙物相關(guān)腳本ObstacleMove.cs的開(kāi)發(fā)。此腳本控制游戲場(chǎng)景中障礙物的循環(huán)生成,以及使飛機(jī)成功通過(guò)的障礙物隱藏消失。該腳本掛載到本場(chǎng)景的主攝像機(jī)上,并且需要將障礙物拖到對(duì)應(yīng)位置。1 usingSystem.Collections;2 usingSystem.Collections.Generic;3 usingUnityEngine;4 publicclassObstacleMove:MonoBehaviour{5 publicstaticfloatMoveSpeed; //定義障礙物移動(dòng)速度6 publicVector3StartPosition; //障礙物初始位置7 publicGameObject[]Obstacle; //存放障礙物數(shù)組8 privateVector3[]LoadPosition=newVector3[2]; //存放障礙物初始速度9 voidStart(){第21頁(yè)12.4游戲場(chǎng)景12.4.2游戲障礙物的創(chuàng)建與移動(dòng)腳本開(kāi)發(fā)10 MoveSpeed=15; //定義障礙物移動(dòng)速度11 Obstacle[0].GetComponent<ObstacleControl>().ChangeObstacle();//改變第一組障礙物的角度12 Obstacle[1].GetComponent<ObstacleControl>().ChangeObstacle();//改變第二組障礙物的角度13 StartPosition=Obstacle[1].transform.position; //保存第二組障礙物的位置14 for(inti=0;i<LoadPosition.Length;i++){ //遍歷所有障礙物數(shù)組15 LoadPosition[i]=Obstacle[i].gameObject.transform.position; //儲(chǔ)存初始位置,用于恢復(fù)16 }}17 voidUpdate(){18 for(inti=0;i<Obstacle.Length;i++){ //遍歷所有障礙物19 Obstacle[i].transform.Translate(newVector3(0,0,-Time.deltaTime*MoveSpeed)); 20 if(Obstacle[i].transform.position.z<=-100){ //判斷障礙物是否需要移動(dòng)21 Obstacle[i].GetComponent<ObstacleControl>().ChangeObstacle();第22頁(yè)12.4游戲場(chǎng)景12.4.2游戲障礙物的創(chuàng)建與移動(dòng)腳本開(kāi)發(fā)22 Obstacle[i].transform.position=StartPosition; //改變障礙物位置23 MoveSpeed=MoveSpeed+AirPlaneControl.score/4; //改變障礙物速度24 }}}25 publicvoidresetObstacle(){ //恢復(fù)位置方法26 for(inti=0;i<LoadPosition.Length;i++){ //遍歷障礙物數(shù)組27 Obstacle[i].gameObject.transform.position=LoadPosition[i];//得到初始數(shù)據(jù)28 }29 Obstacle[0].GetComponent<ObstacleControl>().ChangeObstacle();//改變障礙物角度30 StartPosition=Obstacle[1].transform.position; //保存第二組障礙物的位置31 }}第23頁(yè)12.4游戲場(chǎng)景12.4.2游戲障礙物的創(chuàng)建與移動(dòng)腳本開(kāi)發(fā)(3)上面介紹了用于控制障礙物旋轉(zhuǎn)與移動(dòng)的腳本,下面將介紹用于控制障礙物顯示與隱藏,以及隨機(jī)改變障礙物的旋轉(zhuǎn)角度的腳本。該腳本掛載到每組Obstacle對(duì)象上。1 usingSystem.Collections;2 usingSystem.Collections.Generic;3 usingUnityEngine;4 publicclassObstacleControl:MonoBehaviour{5 publicGameObject[]Obstacle; //存放障礙物數(shù)組6 publicfloatleft=45f,right=-45f; //障礙物旋轉(zhuǎn)角度范圍7 privatevoidStart(){8 Random.seed=System.Environment.TickCount;//隨機(jī)數(shù)的種子9 }第24頁(yè)12.4游戲場(chǎng)景12.4.2游戲障礙物的創(chuàng)建與移動(dòng)腳本開(kāi)發(fā)10 publicvoidChangeObstacle(){ //障礙物變化方法11 floatRandomVal; //聲明一個(gè)隨機(jī)數(shù)12 for(inti=0;i<Obstacle.Length;i++){ //遍歷障礙物數(shù)組13 Obstacle[i].SetActive(true); //顯示障礙物對(duì)象14 RandomVal=Random.value; //隨機(jī)數(shù)賦值15 floatObRota_z=Mathf.Lerp(left,right,RandomVal);//生成障礙物旋轉(zhuǎn)參數(shù)16 Obstacle[i].transform.Rotate(0,0,ObRota_z);//使每個(gè)障礙物旋轉(zhuǎn)17 }}18 publicvoidhidden(){ //隱藏障礙物方法19 for(inti=0;i<Obstacle.Length;i++){ //遍歷障礙物數(shù)組20 Obstacle[i].SetActive(false); //隱藏障礙物21 }}}第25頁(yè)第26頁(yè)12.4游戲場(chǎng)景12.4.3游戲物體的創(chuàng)建和運(yùn)動(dòng)控制腳本開(kāi)發(fā)(1)首先導(dǎo)入放置在“Model”文件夾下的的飛機(jī)模型,打開(kāi)文件夾選中模型后拖到游戲場(chǎng)景中,并調(diào)整其大小,位置,角度等參數(shù),如圖12-21所示。然后為飛機(jī)游戲?qū)ο筇砑觿傮w與碰撞體,為后續(xù)進(jìn)行碰撞檢測(cè)做準(zhǔn)備,相關(guān)參數(shù)如圖12-22所示。

圖12-21游戲?qū)ο笙嚓P(guān)參數(shù)1圖12-22游戲?qū)ο笙嚓P(guān)參數(shù)2第27頁(yè)12.4游戲場(chǎng)景12.4.3游戲物體的創(chuàng)建和運(yùn)動(dòng)控制腳本開(kāi)發(fā)(2)前面完成了對(duì)游戲?qū)ο笙嚓P(guān)參數(shù)的調(diào)整設(shè)置,接下來(lái)講介紹掛載在游戲?qū)ο笊系腁irPlaneControl.cs腳本。該腳本主要包括通過(guò)觸摸屏幕的不同區(qū)域?qū)崿F(xiàn)對(duì)飛機(jī)的左右旋轉(zhuǎn),以及飛機(jī)觸碰到游戲場(chǎng)景中的碰撞體后觸發(fā)的相關(guān)事件和相對(duì)應(yīng)的音效等。具體開(kāi)發(fā)過(guò)程如下。(3)腳本開(kāi)發(fā)完畢后,將其掛載到飛機(jī)上后。還需要將音效文件和粒子系統(tǒng)拖曳到AirPlaneControl.cs腳本組件對(duì)應(yīng)的變量處。AirPlaneControl.cs腳本組件如圖12-23所示。

圖12-23腳本組件第28頁(yè)12.4游戲場(chǎng)景12.4.3游戲物體的創(chuàng)建和運(yùn)動(dòng)控制腳本開(kāi)發(fā)(4)接下來(lái)介紹飛機(jī)與障礙物碰撞時(shí)顯示的粒子系統(tǒng)。好的粒子系統(tǒng)可以極大的提高游戲的視覺(jué)體驗(yàn),在游戲的日常開(kāi)發(fā)中也是必不可少的。由于前面的章節(jié)已經(jīng)介紹過(guò)粒子系統(tǒng)的相關(guān)開(kāi)發(fā),所以此處只介紹兩個(gè)粒子系統(tǒng)的重要參數(shù)。如圖12-24、圖12-25所示。

圖12-24火焰粒子系統(tǒng)參數(shù)圖12-25爆炸粒子系統(tǒng)參數(shù)第29頁(yè)12.4游戲場(chǎng)景12.4.4游戲場(chǎng)景主攝像機(jī)腳本開(kāi)發(fā)11 contact.point.x<=other.transform.position.x+0.1)){12 if(array_nameAndflag[0].Equals()){//判斷與列表中名字是否相同13 if(array_nameAndflag[1].Equals("up")){ //獲取“向上”方向14 this.GetComponent<Rigidbody>().velocity= //對(duì)小球進(jìn)行轉(zhuǎn)向15 newVector3(0,0,this.GetComponent<Rigidbody>().velocity.magnitude*1.25f);16 }elseif(array_nameAndflag[1].Equals("down")){ //獲取“向下”方向17 this.GetComponent<Rigidbody>().velocity= //對(duì)小球進(jìn)行轉(zhuǎn)向18 newVector3(0,0,-this.GetComponent<Rigidbody>().velocity.magnitude);19 }elseif(array_nameAndflag[1].Equals("right")){//獲取“向右”方向20 this.GetComponent<Rigidbody>().velocity= //對(duì)小球進(jìn)行轉(zhuǎn)向21 newVector3(this.GetComponent<Rigidbody>().velocity.magnitude,0,0);22 }elseif(array_nameAndflag[1].Equals("left")){//獲取“向左”方向23 this.GetComponent<Rigidbody>().velocity= `//對(duì)小球進(jìn)行轉(zhuǎn)向24 newVector3(-this.GetComponent<Rigidbody>().velocity.magnitude,0,0);}}

第30頁(yè)12.4游戲場(chǎng)景12.4.4游戲場(chǎng)景主攝像機(jī)腳本開(kāi)發(fā)(1)首先將主攝像機(jī)的ProJection設(shè)置為“Orthographic”,即設(shè)置主攝像機(jī)的投影方式為正交投影,并為攝像機(jī)添加天空盒,設(shè)置為黑色背景,具體操作請(qǐng)參考主菜單界面的攝像機(jī)設(shè)置。(2)前面介紹完攝像機(jī)相關(guān)參數(shù)的設(shè)置。接下來(lái)將詳細(xì)介紹游戲控制腳本“GameControl.cs”的開(kāi)發(fā),新建C#腳本,將其重名為為GameControl,掛載到主攝像機(jī)上,然后雙擊腳本進(jìn)入腳本編輯器,開(kāi)始腳本的編寫(xiě),具體代碼如下所示。1 usingSystem.Collections;2 usingSystem.Collections.Generic;3 usingUnityEngine;4 publicclassGameControl:MonoBehaviour{5 publicboolisOver=false; //游戲結(jié)束標(biāo)志位

12.4游戲場(chǎng)景12.4.4游戲場(chǎng)景主攝像機(jī)腳本開(kāi)發(fā)6 publicGameObjectAirPlane; //飛機(jī)對(duì)象7 publicGameObjectScoreboard; //計(jì)分板對(duì)象8 publicGameObjectButton_reset; //重新開(kāi)始按鈕9 voidUpdate(){10 isOver=AirPlane.GetComponent<AirPlaneControl>().isOver;//獲得結(jié)束標(biāo)志位11 if(isOver){ //如果游戲結(jié)束12 Scoreboard.SetActive(false); //隱藏計(jì)分板13 Button_reset.SetActive(true); //顯示重新開(kāi)始按鈕14 }else{15 Scoreboard.SetActive(true); //顯示計(jì)分板16 Button_reset.SetActive(false); //隱藏重新開(kāi)始按鈕17 }}18 publicvoidreset(){//游戲重置方法19 isOver=false;//將結(jié)束標(biāo)志位置為否20 AirPlane.GetComponent<AirPlaneControl>().resetAirPlane();//飛機(jī)上的重置方法21 this.gameObject.GetComponent<ObstacleMove>().resetObstacle();//障礙物重置方法22 }}第31頁(yè)第32頁(yè)12.4游戲場(chǎng)景12.4.5游戲計(jì)分板的創(chuàng)建和腳本開(kāi)發(fā)(1)首先需要新建一個(gè)Canvas,前面已經(jīng)介紹過(guò)創(chuàng)建過(guò)程,故此處省略創(chuàng)建過(guò)程。然后在Canvas的下層創(chuàng)建一個(gè)空對(duì)象并將其重命名為“ScoreBoard”,接著在ScoreBoard的下層創(chuàng)建兩個(gè)Image用于顯示數(shù)字,將其重命名為“Num1”和“Num2”,整體效果如圖12-26所示。

圖12-26計(jì)分板整體結(jié)構(gòu)

12.4游戲場(chǎng)景12.4.5游戲計(jì)分板的創(chuàng)建和腳本開(kāi)發(fā)(2)前面介紹完了計(jì)分板的創(chuàng)建,下面將介紹計(jì)分板的相關(guān)腳本ScoreBoard.cs的開(kāi)發(fā)編寫(xiě)流程。腳本的創(chuàng)建方法與之前腳本創(chuàng)建方法相同,過(guò)不再贅述。該腳本的功能為實(shí)時(shí)獲取玩家得分后,改變計(jì)分板對(duì)象的貼圖為對(duì)應(yīng)的數(shù)字。具體代碼如下所示。1 usingSystem.Collections;2 usingSystem.Collections.Generic;3 usingUnityEngine;4 usingUnityEngine.UI;5 publicclassScoreBoard:MonoBehaviour{6 publicGameObjectNumSprite1; //十位數(shù)字貼圖7 publicGameObjectNumSprite2; //個(gè)位數(shù)字貼圖8 publicSprite[]Num; //數(shù)字貼圖9 voidUpdate(){10 drawScore(AirPlaneControl.score); //調(diào)用繪制得分方法11 }第33頁(yè)12.4游戲場(chǎng)景12 voiddrawScore(intnum){ //繪制計(jì)分板方法13 intnum1; //聲明十位數(shù)字14 intnum2; //聲明個(gè)位數(shù)字15 if(num>=100){ //得分大于等于100時(shí),默認(rèn)顯示9916 num1

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論