




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第1頁第十二章課程設(shè)計—趣味小球
第1頁第十二章課程設(shè)計—趣味小球第2頁12.1背景以及功能概述12.1.1游戲背景概述此類游戲畫面精美,操作簡單,成為打發(fā)閑暇時間的不二之選。
圖12-1開心消消樂圖12-2小鱷魚洗澡 圖12-3割繩子2第2頁12.1背景以及功能概述12.1.1游戲背景概述 第3頁12.1背景以及功能概述12.1.2游戲功能簡介(1)運行游戲后,首先進入的是主菜單界面,如圖12-4所示。這里是游戲的中轉(zhuǎn)站,從這里可以通過單擊不同的功能按鈕進入到不同的界面。
圖12-4主菜單界面第3頁12.1背景以及功能概述12.1.2游戲功能簡介 第4頁12.1背景以及功能概述12.1.2游戲功能簡介(2)點擊主菜單界面的關(guān)卡選擇按鈕進入關(guān)卡選擇界面,如圖12-5所示。關(guān)卡選擇界面主要顯示了本游戲中的六個關(guān)卡。其中除第一關(guān)外,其他關(guān)卡是上鎖的,每通過一個關(guān)卡即可解鎖下一關(guān)卡。點擊屏幕下方的返回按鈕可以返回主菜單界面。
第4頁12.1背景以及功能概述12.1.2游戲功能簡介 第5頁12.1背景以及功能概述12.1.2游戲功能簡介(3)點擊主菜單界面的幫助按鈕進入幫助界面,如圖12-6所示。此界面顯示本游戲的游戲規(guī)則,點擊右上角的關(guān)閉按鈕返回主菜單界面。點擊第一關(guān)按鈕進入第一關(guān)游戲界面,如圖12-7所示。游戲界面左上角分別是背景音樂按鈕和返回主菜單按鈕。
第5頁12.1背景以及功能概述12.1.2游戲功能簡介 第6頁12.1背景以及功能概述12.1.2游戲功能簡介(5)當(dāng)小球滾出界面時顯示游戲失敗界面,如圖12-8所示。點擊界面下方的選擇關(guān)卡按鈕可選擇相應(yīng)關(guān)卡,點擊重玩按鈕可重玩本關(guān)卡,點擊主菜單按鈕可返回主菜單。當(dāng)小球進入小洞后顯示游戲通關(guān)界面,如圖12-9所示,點擊開始按鈕即可開始下一關(guān)。
圖12-8闖關(guān)失敗界面 圖12-9闖關(guān)成功界面第6頁12.1背景以及功能概述12.1.2游戲功能簡介 第7頁12.2游戲的策劃及準(zhǔn)備工作12.2.1游戲的策劃游戲類型運行目標(biāo)平臺目標(biāo)受眾操作方式呈現(xiàn)技術(shù)
第7頁12.2游戲的策劃及準(zhǔn)備工作12.2.1游戲的策劃第8頁12.2游戲的策劃及準(zhǔn)備工作12.2.2使用Unity3D開發(fā)游戲前的準(zhǔn)備工作主菜單界面所用到的背景圖片和菜單項所需資源圖片游戲界面用到的背景圖片和菜單項、精靈所需圖片以及幀動畫所需圖片操作方式通關(guān)界面的圖片資源選擇關(guān)卡界面的圖片資源游戲中所用到得各種音效3D模型是用3dMax生成的FBX文件導(dǎo)入
第8頁12.2游戲的策劃及準(zhǔn)備工作12.2.2使用Uni第9頁12.3游戲的架構(gòu)12.3.1游戲中各場景的簡要介紹主菜單場景:轉(zhuǎn)向各個場景的中心場景。在該場景中可以通過單擊按鈕進入其它界面,如關(guān)卡界面,選關(guān)界面,得分界面,幫助界面、退出界面等
圖12-10主菜單架構(gòu)圖第9頁12.3游戲的架構(gòu)12.3.1游戲中各場景的簡要介第10頁12.3游戲的架構(gòu)12.3.1游戲中各場景的簡要介紹輸贏場景:用于在每一關(guān)小球進洞或者沒有進洞之后顯示出來幫助場景:幫助場景的作用是使玩家更容易懂得游戲的玩法選關(guān)場景:在游戲關(guān)卡過關(guān)后逐漸解鎖游戲下一關(guān)關(guān)卡場景:本游戲一共有六個關(guān)卡即游戲場景有六個,每個場景包括UI控制層和三維立體場景,這是游戲開發(fā)的重點。
第10頁12.3游戲的架構(gòu)12.3.1游戲中各場景的簡要第11頁12.3游戲的架構(gòu)12.3.2游戲的架構(gòu)簡介(1)運行本游戲,首先會進入到主菜單場景“BallGame_caidan”。此界面是用UGUI編寫而成,UGUI控件與控件之間可以進行嵌套,父控件可以包含子控件,子控件又可以進一步包含子控件。整個場景布局格式為:在一塊畫布上放了五個圖片按鈕(分別是第一關(guān)、總得分、選擇關(guān)卡、幫助以及退出)縱向排列。
(2)進入主菜單后如若點擊五個圖片按鈕則會觸發(fā)掛載在按鈕上的腳本里的方法,如“第一關(guān)”按鈕的GuanOnClick方法、“總得分”按鈕的DFOnClick方法、“選擇關(guān)卡”按鈕的XGOnClick方法、“幫助”按鈕的BZOnClick方法以及“退出”按鈕的TCOnClick方法。
第11頁12.3游戲的架構(gòu)12.3.2游戲的架構(gòu)簡介 第12頁12.3游戲的架構(gòu)12.3.2游戲的架構(gòu)簡介(3)當(dāng)?shù)谝淮芜M入此游戲關(guān)卡時,音樂是默認開啟的。如果玩家需要關(guān)閉其中的某項,可以點擊左上角的小喇叭圖標(biāo)關(guān)閉音樂,點擊設(shè)置圖標(biāo)則會返回主菜單。(4)點擊工具欄道具會觸發(fā)掛載在道具上的方法,如控制游戲關(guān)卡UI層物體選中和轉(zhuǎn)向的cube類,掛載在攝像機上控制實例化以及刪除物體的RayText類,掛載在球物體上的控制小球運動速度以及轉(zhuǎn)向問題的control_two類等。(5)不管最終小球進不進洞都會各自觸發(fā)兩個場景即輸贏界面,這兩個場景加載時會觸發(fā)掛載在物體上的腳本文件來實現(xiàn)開始時的一段動畫,相關(guān)圖片按鈕也會掛載腳本來觸發(fā)相應(yīng)操作.
第12頁12.3游戲的架構(gòu)12.3.2游戲的架構(gòu)簡介 第13頁12.4游戲場景12.4.1游戲主菜單場景(1)首先新建項目,然后新建場景并設(shè)置環(huán)境光。新建一個Canvas,具體操作為點擊左側(cè)“Hierarchy”面板上方“Create”→“UI”→“Canvas”,如圖12-12所示。即可看到在窗口中創(chuàng)建了一個畫布如圖12-13所示。
圖12-12創(chuàng)建畫布 圖12-13“Canvas”面板設(shè)置第13頁12.4游戲場景12.4.1游戲主菜單場景 第14頁12.4游戲場景12.4.1游戲主菜單場景(2)然后創(chuàng)建一個Image來作為主菜單背景圖片,具體操作為選中Canvas,在右擊的菜單中“UI”→“Image”,將Image命名為“kuangjia”,如圖12-14所示。之后創(chuàng)建出五個條狀I(lǐng)mage作為滑動圖片的目的坐標(biāo),如圖12-15所示。
圖12-14創(chuàng)建Image組件 圖12-15創(chuàng)建場景中各個板塊第14頁12.4游戲場景12.4.1游戲主菜單場景 第15頁12.4游戲場景12.4.1游戲主菜單場景(3)之后創(chuàng)建五個Button,分別對應(yīng)“第一關(guān)”、“總得分”、“關(guān)卡選擇”、“幫助”和“退出”按鈕,如圖12-16所示。其中,幫助界面是先創(chuàng)建一個Panel,將Panel命名為“ScrollView”,如圖12-17所示。
圖12-16創(chuàng)建Button 圖12-17“ScrollView”面板設(shè)置第15頁12.4游戲場景12.4.1游戲主菜單場景 第16頁12.4游戲場景12.4.1游戲主菜單場景(4)創(chuàng)建一個“Grid”,具體操作為右擊“ScrollView”→“CreateEmpty”,將其命名為“Grid”。在“Grid”下創(chuàng)建五個Image,作為幫助圖片,如圖12-18所示。將“bz01.png”等圖片拖拽到“Image”組件“SourceImage”上,如圖12-19所示。
圖12-18幫助場景 圖12-19“help_one”面板設(shè)置第16頁12.4游戲場景12.4.1游戲主菜單場景 第17頁12.4游戲場景12.4.1游戲主菜單場景(5)新建一個C#腳本,具體操作為右鍵點擊“Create”→“C#Script”,將其命名為“ScrollView.cs”。本腳本主要是圖片滑動并始終保持某一圖片正對窗口效果的實現(xiàn),腳本代碼見課本。
第17頁12.4游戲場景12.4.1游戲主菜單場景 第18頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)(1)由于UI層的搭建和上一小節(jié)過程相似在此不再贅述,UI層游戲工具是多個3D物體和一張方向圖片構(gòu)成,獲取和控制3D物體需要用到3D拾取技術(shù),通過攝像機發(fā)出射線與3D物體碰撞獲取物體引用,具體代碼如下所示。1 usingUnityEngine; //引用Unity引擎命名空間2 usingSystem.Collections; //引用泛型集合命名空間3 usingUnityEngine.UI; //引用Unity引擎UI類4 publicclasscube:MonoBehaviour{//Unity每個腳本都繼承自MonoBehaviour類5 publicCameracamera; //3D拾取使用的攝像機6 ……//此處省略了部分成員變量得聲明,有需要的讀者可以參考光盤中的源代碼。7 voidUpdate(){ //Unity3D中的幀方法8 if(Input.touchCount==1){ //單點觸控9 Toucht=Input.GetTouch(0); //獲取觸控輸入引用
第18頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)第19頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)10 if(t.phase==TouchPhase.Began){ //開始觸控11 Rayray=camera.ScreenPointToRay(Input.GetTouch(0).position);//從觸控點到攝像機構(gòu)建射線12 RaycastHithitInfo; //獲取光線投射碰撞物體信息的引用13 if(Physics.Raycast(ray,outhitInfo)){//當(dāng)射線碰撞到物體時獲取物體信息14 GameObjectgameobject=hitInfo.collider.gameObject;//得到碰撞物體的引用15 if(hitInfo.collider.gameO=="Cube"){ //碰撞物體為正立方體16 RayTest.pickCubeTrian=1;} //置標(biāo)志位標(biāo)志實例化立方體17 if(hitInfo.collider.gameO=="halfCube"){ //碰撞物體為半個立方體18 RayTest.pickCubeTrian=3;} //置標(biāo)志位標(biāo)志實例化半個立方體19 if(hitInfo.collider.gameO=="Image_dir"){ //碰撞體為方向圖片20 ……//由于方向圖片轉(zhuǎn)換方法過于復(fù)雜,將在下面步驟中單獨講解此處暫時省略。21 RayTest.pickCubeTrian=4;} //置標(biāo)志位實現(xiàn)場景物體貼紋理22 if(hitInfo.collider.gameO=="half_angle"){ //碰撞體為三棱柱23 RayTest.pickCubeTrian=2; //置標(biāo)志位標(biāo)志實例化三棱柱24 }}}}}}
第19頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)第20頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)(2)通過3D拾取得到射線碰撞的物體引用后對物體置標(biāo)志位來標(biāo)識在場景中實例化該物體,對于方向圖片和三棱柱還涉及到物體的旋轉(zhuǎn)方向問題,當(dāng)?shù)谝淮芜x中這兩個物體時再次點擊就會旋轉(zhuǎn)方向,而后在場景中實例化不同方向的物體,具體代碼見課本。
第20頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)第21頁12.4游戲場景12.4.3游戲物體運動控制腳本開發(fā)(1)在新建項目場景中設(shè)置環(huán)境光和攝像機,然后創(chuàng)建場景中的三維物體其中包括場景主體地面和墻壁即由立方體構(gòu)成、場景中的球體等,具體操作為點擊左側(cè)“Hierarchy”面板上方“Create”→“3DObject”→“Cube”,如圖12-20所示。即可看到在場景中創(chuàng)建了一個立方體如圖12-21所示。
圖12-20創(chuàng)建立方體圖12-21物體設(shè)置第21頁12.4游戲場景12.4.3游戲物體運動控制腳本開第22頁12.4游戲場景12.4.3游戲物體運動控制腳本開發(fā)(2)然后將做出的物體調(diào)整位置,組成場景所需要的樣式,如圖12-22,注意要使相關(guān)物體具有層次結(jié)構(gòu)符合父子關(guān)系,方便在腳本中操作引用。使物體具有層次結(jié)構(gòu)可以通過拖拽的方式將子物體拖拽到父物體下面,如圖12-23。
圖12-22基本場景模型圖 圖12-23模型關(guān)系圖第22頁12.4游戲場景12.4.3游戲物體運動控制腳本開第23頁12.4游戲場景12.4.3游戲物體運動控制腳本開發(fā)(3)下面介紹球滾動過程中遇到轉(zhuǎn)向標(biāo)志之后小球?qū)淖冊羞\動方向,朝著標(biāo)志方向繼續(xù)運動直到小球進洞或者滾出屏幕為止,具體代碼如下所示。1 voidOnCollisionStay(Collisionother){ //物體發(fā)生碰撞中調(diào)用該方法2 if(.Equals(array_nameAndflag[0])||//判斷碰撞物體名字與列表中存儲的是否相同3 .Equals(array_nameAndflag[2])||4 .Equals(array_nameAndflag[4])||5 .Equals(array_nameAndflag[6])||6 .Equals(array_nameAndflag[8])){7 foreach(ContactPointcontactinother.contacts){ //遍歷碰撞接觸點列表8 if((contact.point.z>=other.transform.position.z-0.2&&//判斷碰撞點z坐標(biāo)是否落在該范圍9 contact.point.z<=other.transform.position.z+0.2)&&10 (contact.point.x>=other.transform.position.x-0.1&&//判斷碰撞點x坐標(biāo)是否落在該范圍
第23頁12.4游戲場景12.4.3游戲物體運動控制腳本開第24頁12.4游戲場景12.4.3游戲物體運動控制腳本開發(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= //對小球進行轉(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= //對小球進行轉(zhuǎn)向18 newVector3(0,0,-this.GetComponent<Rigidbody>().velocity.magnitude);19 }elseif(array_nameAndflag[1].Equals("right")){//獲取“向右”方向20 this.GetComponent<Rigidbody>().velocity= //對小球進行轉(zhuǎn)向21 newVector3(this.GetComponent<Rigidbody>().velocity.magnitude,0,0);22 }elseif(array_nameAndflag[1].Equals("left")){//獲取“向左”方向23 this.GetComponent<Rigidbody>().velocity= `//對小球進行轉(zhuǎn)向24 newVector3(-this.GetComponent<Rigidbody>().velocity.magnitude,0,0);}}
第24頁12.4游戲場景12.4.3游戲物體運動控制腳本開第25頁12.4游戲場景12.4.4游戲場景3D拾取和實例化腳本開發(fā)(1)首先詳細介紹腳本中update方法所要實現(xiàn)的具體功能和利用3D拾取功能實現(xiàn)的設(shè)計架構(gòu),主要作用是在工具欄選中相應(yīng)工具后在三維場景中實例化預(yù)制體,在此過程中利用3D拾取進行坐標(biāo)定位,具體代碼如下所示。(2)介紹如何在3D場景中刪除已經(jīng)實例化的物體和如何刪除在場景物體上方向紋理貼圖以及恢復(fù)道具欄的圖標(biāo)、數(shù)量和物體等,具體代碼如下所示。
第25頁12.4游戲場景12.4.4游戲場景3D拾取和實例第26頁12.4游戲場景12.4.5輸贏場景開發(fā)(1)首先新建場景,然后新建場景并設(shè)置環(huán)境光。新建一個Canvas,具體操作為點擊左側(cè)“Hierarchy”面板上方“Create”→“UI”→“Canvas”,如圖12-24所示。即可看到在窗口中創(chuàng)建了一個畫布如圖12-25所示。
圖12-24創(chuàng)建畫布 圖12-25“Canvas”面板設(shè)置第26頁12.4游戲場景12.4.5輸贏場景開發(fā) 第27頁12.4游戲場景12.4.5輸贏場景開發(fā)(2)然后創(chuàng)建一個Image來作為主菜單背景圖片,具體操作為選中Canvas,在右擊的菜單中“UI”→“Image”,將Image命名為“kuangjia”,如圖12-26所示。之后創(chuàng)建出六個條狀I(lǐng)mage作為滑動動畫圖片,如圖12-27所示。
圖12-26創(chuàng)建Image組件 圖12-27創(chuàng)建場景中各個板塊第27頁12.4游戲場景12.4.5輸贏場景開發(fā) 第28頁12.4游戲場景12.4.5輸贏場景開發(fā)(4)下面展示一下效果圖,在加載場景后圖片按鈕會逐漸滑動到設(shè)定位置,按鈕圖片也會有漸入漸變效果,這就是不斷更改其透明度的結(jié)果,下面3幅圖就是動畫過程,如下圖12-28、圖12-29和圖12-30所示。
圖12.28動畫效果圖1圖12.29動畫效果圖2圖12.30動畫效果圖3第28頁12.4游戲場景12.4.5輸贏場景開發(fā) 第29頁12.5游戲的優(yōu)化與改進游戲界面的改進。游戲性能的進一步優(yōu)化。優(yōu)化細節(jié)處理。增加游戲體驗
第29頁12.5游戲的優(yōu)化與改進游戲界面的改進。 第30頁第十二章課程設(shè)計—趣味小球
第1頁第十二章課程設(shè)計—趣味小球第31頁12.1背景以及功能概述12.1.1游戲背景概述此類游戲畫面精美,操作簡單,成為打發(fā)閑暇時間的不二之選。
圖12-1開心消消樂圖12-2小鱷魚洗澡 圖12-3割繩子2第2頁12.1背景以及功能概述12.1.1游戲背景概述 第32頁12.1背景以及功能概述12.1.2游戲功能簡介(1)運行游戲后,首先進入的是主菜單界面,如圖12-4所示。這里是游戲的中轉(zhuǎn)站,從這里可以通過單擊不同的功能按鈕進入到不同的界面。
圖12-4主菜單界面第3頁12.1背景以及功能概述12.1.2游戲功能簡介 第33頁12.1背景以及功能概述12.1.2游戲功能簡介(2)點擊主菜單界面的關(guān)卡選擇按鈕進入關(guān)卡選擇界面,如圖12-5所示。關(guān)卡選擇界面主要顯示了本游戲中的六個關(guān)卡。其中除第一關(guān)外,其他關(guān)卡是上鎖的,每通過一個關(guān)卡即可解鎖下一關(guān)卡。點擊屏幕下方的返回按鈕可以返回主菜單界面。
第4頁12.1背景以及功能概述12.1.2游戲功能簡介 第34頁12.1背景以及功能概述12.1.2游戲功能簡介(3)點擊主菜單界面的幫助按鈕進入幫助界面,如圖12-6所示。此界面顯示本游戲的游戲規(guī)則,點擊右上角的關(guān)閉按鈕返回主菜單界面。點擊第一關(guān)按鈕進入第一關(guān)游戲界面,如圖12-7所示。游戲界面左上角分別是背景音樂按鈕和返回主菜單按鈕。
第5頁12.1背景以及功能概述12.1.2游戲功能簡介 第35頁12.1背景以及功能概述12.1.2游戲功能簡介(5)當(dāng)小球滾出界面時顯示游戲失敗界面,如圖12-8所示。點擊界面下方的選擇關(guān)卡按鈕可選擇相應(yīng)關(guān)卡,點擊重玩按鈕可重玩本關(guān)卡,點擊主菜單按鈕可返回主菜單。當(dāng)小球進入小洞后顯示游戲通關(guān)界面,如圖12-9所示,點擊開始按鈕即可開始下一關(guān)。
圖12-8闖關(guān)失敗界面 圖12-9闖關(guān)成功界面第6頁12.1背景以及功能概述12.1.2游戲功能簡介 第36頁12.2游戲的策劃及準(zhǔn)備工作12.2.1游戲的策劃游戲類型運行目標(biāo)平臺目標(biāo)受眾操作方式呈現(xiàn)技術(shù)
第7頁12.2游戲的策劃及準(zhǔn)備工作12.2.1游戲的策劃第37頁12.2游戲的策劃及準(zhǔn)備工作12.2.2使用Unity3D開發(fā)游戲前的準(zhǔn)備工作主菜單界面所用到的背景圖片和菜單項所需資源圖片游戲界面用到的背景圖片和菜單項、精靈所需圖片以及幀動畫所需圖片操作方式通關(guān)界面的圖片資源選擇關(guān)卡界面的圖片資源游戲中所用到得各種音效3D模型是用3dMax生成的FBX文件導(dǎo)入
第8頁12.2游戲的策劃及準(zhǔn)備工作12.2.2使用Uni第38頁12.3游戲的架構(gòu)12.3.1游戲中各場景的簡要介紹主菜單場景:轉(zhuǎn)向各個場景的中心場景。在該場景中可以通過單擊按鈕進入其它界面,如關(guān)卡界面,選關(guān)界面,得分界面,幫助界面、退出界面等
圖12-10主菜單架構(gòu)圖第9頁12.3游戲的架構(gòu)12.3.1游戲中各場景的簡要介第39頁12.3游戲的架構(gòu)12.3.1游戲中各場景的簡要介紹輸贏場景:用于在每一關(guān)小球進洞或者沒有進洞之后顯示出來幫助場景:幫助場景的作用是使玩家更容易懂得游戲的玩法選關(guān)場景:在游戲關(guān)卡過關(guān)后逐漸解鎖游戲下一關(guān)關(guān)卡場景:本游戲一共有六個關(guān)卡即游戲場景有六個,每個場景包括UI控制層和三維立體場景,這是游戲開發(fā)的重點。
第10頁12.3游戲的架構(gòu)12.3.1游戲中各場景的簡要第40頁12.3游戲的架構(gòu)12.3.2游戲的架構(gòu)簡介(1)運行本游戲,首先會進入到主菜單場景“BallGame_caidan”。此界面是用UGUI編寫而成,UGUI控件與控件之間可以進行嵌套,父控件可以包含子控件,子控件又可以進一步包含子控件。整個場景布局格式為:在一塊畫布上放了五個圖片按鈕(分別是第一關(guān)、總得分、選擇關(guān)卡、幫助以及退出)縱向排列。
(2)進入主菜單后如若點擊五個圖片按鈕則會觸發(fā)掛載在按鈕上的腳本里的方法,如“第一關(guān)”按鈕的GuanOnClick方法、“總得分”按鈕的DFOnClick方法、“選擇關(guān)卡”按鈕的XGOnClick方法、“幫助”按鈕的BZOnClick方法以及“退出”按鈕的TCOnClick方法。
第11頁12.3游戲的架構(gòu)12.3.2游戲的架構(gòu)簡介 第41頁12.3游戲的架構(gòu)12.3.2游戲的架構(gòu)簡介(3)當(dāng)?shù)谝淮芜M入此游戲關(guān)卡時,音樂是默認開啟的。如果玩家需要關(guān)閉其中的某項,可以點擊左上角的小喇叭圖標(biāo)關(guān)閉音樂,點擊設(shè)置圖標(biāo)則會返回主菜單。(4)點擊工具欄道具會觸發(fā)掛載在道具上的方法,如控制游戲關(guān)卡UI層物體選中和轉(zhuǎn)向的cube類,掛載在攝像機上控制實例化以及刪除物體的RayText類,掛載在球物體上的控制小球運動速度以及轉(zhuǎn)向問題的control_two類等。(5)不管最終小球進不進洞都會各自觸發(fā)兩個場景即輸贏界面,這兩個場景加載時會觸發(fā)掛載在物體上的腳本文件來實現(xiàn)開始時的一段動畫,相關(guān)圖片按鈕也會掛載腳本來觸發(fā)相應(yīng)操作.
第12頁12.3游戲的架構(gòu)12.3.2游戲的架構(gòu)簡介 第42頁12.4游戲場景12.4.1游戲主菜單場景(1)首先新建項目,然后新建場景并設(shè)置環(huán)境光。新建一個Canvas,具體操作為點擊左側(cè)“Hierarchy”面板上方“Create”→“UI”→“Canvas”,如圖12-12所示。即可看到在窗口中創(chuàng)建了一個畫布如圖12-13所示。
圖12-12創(chuàng)建畫布 圖12-13“Canvas”面板設(shè)置第13頁12.4游戲場景12.4.1游戲主菜單場景 第43頁12.4游戲場景12.4.1游戲主菜單場景(2)然后創(chuàng)建一個Image來作為主菜單背景圖片,具體操作為選中Canvas,在右擊的菜單中“UI”→“Image”,將Image命名為“kuangjia”,如圖12-14所示。之后創(chuàng)建出五個條狀I(lǐng)mage作為滑動圖片的目的坐標(biāo),如圖12-15所示。
圖12-14創(chuàng)建Image組件 圖12-15創(chuàng)建場景中各個板塊第14頁12.4游戲場景12.4.1游戲主菜單場景 第44頁12.4游戲場景12.4.1游戲主菜單場景(3)之后創(chuàng)建五個Button,分別對應(yīng)“第一關(guān)”、“總得分”、“關(guān)卡選擇”、“幫助”和“退出”按鈕,如圖12-16所示。其中,幫助界面是先創(chuàng)建一個Panel,將Panel命名為“ScrollView”,如圖12-17所示。
圖12-16創(chuàng)建Button 圖12-17“ScrollView”面板設(shè)置第15頁12.4游戲場景12.4.1游戲主菜單場景 第45頁12.4游戲場景12.4.1游戲主菜單場景(4)創(chuàng)建一個“Grid”,具體操作為右擊“ScrollView”→“CreateEmpty”,將其命名為“Grid”。在“Grid”下創(chuàng)建五個Image,作為幫助圖片,如圖12-18所示。將“bz01.png”等圖片拖拽到“Image”組件“SourceImage”上,如圖12-19所示。
圖12-18幫助場景 圖12-19“help_one”面板設(shè)置第16頁12.4游戲場景12.4.1游戲主菜單場景 第46頁12.4游戲場景12.4.1游戲主菜單場景(5)新建一個C#腳本,具體操作為右鍵點擊“Create”→“C#Script”,將其命名為“ScrollView.cs”。本腳本主要是圖片滑動并始終保持某一圖片正對窗口效果的實現(xiàn),腳本代碼見課本。
第17頁12.4游戲場景12.4.1游戲主菜單場景 第47頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)(1)由于UI層的搭建和上一小節(jié)過程相似在此不再贅述,UI層游戲工具是多個3D物體和一張方向圖片構(gòu)成,獲取和控制3D物體需要用到3D拾取技術(shù),通過攝像機發(fā)出射線與3D物體碰撞獲取物體引用,具體代碼如下所示。1 usingUnityEngine; //引用Unity引擎命名空間2 usingSystem.Collections; //引用泛型集合命名空間3 usingUnityEngine.UI; //引用Unity引擎UI類4 publicclasscube:MonoBehaviour{//Unity每個腳本都繼承自MonoBehaviour類5 publicCameracamera; //3D拾取使用的攝像機6 ……//此處省略了部分成員變量得聲明,有需要的讀者可以參考光盤中的源代碼。7 voidUpdate(){ //Unity3D中的幀方法8 if(Input.touchCount==1){ //單點觸控9 Toucht=Input.GetTouch(0); //獲取觸控輸入引用
第18頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)第48頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)10 if(t.phase==TouchPhase.Began){ //開始觸控11 Rayray=camera.ScreenPointToRay(Input.GetTouch(0).position);//從觸控點到攝像機構(gòu)建射線12 RaycastHithitInfo; //獲取光線投射碰撞物體信息的引用13 if(Physics.Raycast(ray,outhitInfo)){//當(dāng)射線碰撞到物體時獲取物體信息14 GameObjectgameobject=hitInfo.collider.gameObject;//得到碰撞物體的引用15 if(hitInfo.collider.gameO=="Cube"){ //碰撞物體為正立方體16 RayTest.pickCubeTrian=1;} //置標(biāo)志位標(biāo)志實例化立方體17 if(hitInfo.collider.gameO=="halfCube"){ //碰撞物體為半個立方體18 RayTest.pickCubeTrian=3;} //置標(biāo)志位標(biāo)志實例化半個立方體19 if(hitInfo.collider.gameO=="Image_dir"){ //碰撞體為方向圖片20 ……//由于方向圖片轉(zhuǎn)換方法過于復(fù)雜,將在下面步驟中單獨講解此處暫時省略。21 RayTest.pickCubeTrian=4;} //置標(biāo)志位實現(xiàn)場景物體貼紋理22 if(hitInfo.collider.gameO=="half_angle"){ //碰撞體為三棱柱23 RayTest.pickCubeTrian=2; //置標(biāo)志位標(biāo)志實例化三棱柱24 }}}}}}
第19頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)第49頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)(2)通過3D拾取得到射線碰撞的物體引用后對物體置標(biāo)志位來標(biāo)識在場景中實例化該物體,對于方向圖片和三棱柱還涉及到物體的旋轉(zhuǎn)方向問題,當(dāng)?shù)谝淮芜x中這兩個物體時再次點擊就會旋轉(zhuǎn)方向,而后在場景中實例化不同方向的物體,具體代碼見課本。
第20頁12.4游戲場景12.4.2游戲UI層控制腳本開發(fā)第50頁12.4游戲場景12.4.3游戲物體運動控制腳本開發(fā)(1)在新建項目場景中設(shè)置環(huán)境光和攝像機,然后創(chuàng)建場景中的三維物體其中包括場景主體地面和墻壁即由立方體構(gòu)成、場景中的球體等,具體操作為點擊左側(cè)“Hierarchy”面板上方“Create”→“3DObject”→“Cube”,如圖12-20所示。即可看到在場景中創(chuàng)建了一個立方體如圖12-21所示。
圖12-20創(chuàng)建立方體圖12-21物體設(shè)置第21頁12.4游戲場景12.4.3游戲物體運動控制腳本開第51頁12.4游戲場景12.4.3游戲物體運動控制腳本開發(fā)(2)然后將做出的物體調(diào)整位置,組成場景所需要的樣式,如圖12-22,注意要使相關(guān)物體具有層次結(jié)構(gòu)符合父子關(guān)系,方便在腳本中操作引用。使物體具有層次結(jié)構(gòu)可以通過拖拽的方式將子物體拖拽到父物體下面,如圖12-23。
圖12-22基本場景模型圖 圖12-23模型關(guān)系圖第22頁12.4游戲場景12.4.3游戲物體運動控制腳本開第52頁12.4游戲場景12.4.3游戲物體運動控制腳本開發(fā)(3)下面介紹球滾動過程中遇到轉(zhuǎn)向標(biāo)志之后小球?qū)淖冊羞\動方向,朝著標(biāo)志方向繼續(xù)運動直到小球進洞或者滾出屏幕為止,具體代碼如下所示。1 voidOnCollisionStay(Collisionother){ //物體發(fā)生碰撞中調(diào)用該方法2 if(.Equals(array_nameAndflag[0])||//判斷碰撞物體名字與列表中存儲的是否相同3 .Equals(array_nameAndflag[2])||4 .Equals(array_nameAndflag[4])||5 .Equals(array_nameAndflag[6])||6 .Equals(array_nameAndflag[8])){7 foreach(ContactPointcontactinother.contacts){ //遍歷碰撞接觸點列表8 if((contact.point.z>=other.transform.position.z-0.2&&//判斷碰撞點z坐標(biāo)是否落在該范圍9 contact.point.z<=other.transform.position.z+0.2)&&10 (contact.point.x>=other.transform.position.x-0.1&&//判斷碰撞點x坐標(biāo)是否落在該范圍
第23頁12.4游戲場景12.4.3游戲物體運動控制腳本開第53頁12.4游戲場景12.4.3游戲物體運動控制腳本開發(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= //對小球進行轉(zhuǎn)向15 newVector3(0,0,this.GetComponent<Rigidbody>().velocity.magnitude*1.25f);16 }elseif(array_nameAndflag[1].Equals("down
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動合同范本題目
- 農(nóng)村水田租賃承包合同范本
- 企業(yè)汽車銷售合同范本
- 代理買賣二手車合同范本
- 代領(lǐng)購房合同范本
- 一般經(jīng)銷合同范例
- 個人購貨采購合同范本
- 關(guān)于裝修貸款合同范本
- 升旗臺合同范本
- 前臺勞務(wù)派遣合同范本
- 2025勞動合同法重點法條導(dǎo)讀附案例詳解
- 2025年內(nèi)蒙古自治區(qū)政府工作報告測試題及參考答案
- 2024年全國中學(xué)生生物學(xué)聯(lián)賽試題及答案詳解
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)服務(wù)平臺建設(shè)合同2篇
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)平臺建設(shè)合同3篇
- 魚骨圖培訓(xùn)課件
- 小學(xué)班會-交通安全伴我行(共25張課件)
- 建筑施工現(xiàn)場安全警示(案例)
- 《生產(chǎn)與運作管理 第4版》課件 第1、2章 概論、需求預(yù)測與管理
- 護理禮儀與人文關(guān)懷
- 患者隱私保護的考試試題及答案
評論
0/150
提交評論