




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、東北石油大學本科生畢業設計(論文)摘 要隨著社會的發展,人們越來越注重工作和學習之外的娛樂生活。游戲作為一種常見的休閑娛樂方式,已經日益成為人們生活中的重要內容,而人們對游戲的要求也越來越高。3D游戲作為一種依托于新視覺和體感的游戲,已經得到了越來越多的玩家歡迎。本次畢業設計旨在成功地設計一款簡單的3D游戲飛機大戰,在需求分析的基礎上進行功能模塊劃分,然后對各個模塊進行分析和詳細設計,并利用Unity3D等技術實現整個游戲。本游戲系統以Unity3D游戲引擎作為開發和發布平臺,C#作為編程語言,Photoshop作為圖片制作基礎,最終通過鍵盤實現對飛機模型的控制。玩家可以通過方向鍵來控制飛機的
2、左右移動,通過空格鍵來控制子彈的發射。系統會隨機產生一些隕石,通過對飛機的左右控制并發射子彈來擊落不斷下降的隕石。整個游戲結構簡單、操作容易、界面美觀,給玩家提供了一個很好的游戲環境。 關鍵詞:3D游戲;飛機大戰;Unity3D;游戲引擎2AbstractWith the development of the society, people pay more and more attention to entertainment life outside of work and study. As a common way of leisure entertainment, games hav
3、e become an important content in people's life, and peoples demands for games become higher and higher. As a kind of new visual and somatosensory game, 3D games have become more and more popular.This graduation design is aimed at successfully designed a simple 3D game - the air war, on the deman
4、d analysis on the basis of function module partition, then analyze the various modules and the detailed design, and using the Unity3D and other technology to realize the whole game. This game system with Unity3D game engine as the development and publishing platform, c# as a programming language, Ph
5、otoshop as pictures production base, finally through the keyboard to achieve control of the aircraft model. Players can through the arrow keys to control the moving of the plane, through the blank space key to control the launch of a bullet. System will be randomly generated some meteorites, through
6、 about control of the plane and launch the bullet to shoot down the falling meteorites.The game has simple structure, easy operation, beautiful interface, and provide players with a good game environment. Keywords: 3D Game; Air War; Unity3D; Game Engine本科生畢業設計(論文)目 錄第1章 概述11.1 課題開發背景和研究意義11.2系統研究內容1
7、1.3 系統開發工具2第2章 系統開發環境和技術32.1 Photoshop介紹32.2 Unity3D介紹32.3 C#語言5第3章 系統的需求分析73.1 可行性研究73.2 需求分析8第4章 系統的總體設計94.1 系統功能模塊圖94.2游戲界面設計9第5章 系統的詳細設計與實現145.1 功能模塊的設計與實現145.2 玩家模塊的設計與實現22第6章 游戲測試266.1 軟件測試目的266.2 系統測試過程及結果26結 論28參考文獻29致 謝30第1章 概述1.1 課題開發背景和研究意義游戲產業作為一門新興的娛樂產業,已經在世界范圍內得到迅猛的發展。玩家進行游戲時,對游戲視覺和體感的
8、要求也逐漸提高,一些比較單一的二維游戲已經不能滿足人們對游戲視覺上的需求了。3D游戲作為一種依托于新視覺和體感的游戲,得到越來越多的玩家歡迎。三維游戲不僅在視覺上給人們一定的視覺沖擊,并且三維游戲向著體感方向發展,使玩家身臨其境。世界知名的游戲品牌公司都把自己的游戲制作成逼真的3D游戲,讓越來越多的玩家可以感受到身臨其境的快樂,3D游戲將主導游戲的發展。雖然現在市面上存在著各種各樣的游戲版本,可是飛機大戰游戲這類小游戲還是很有市場的。這類游戲的優勢在于它們操作簡單,上手容易。在當今社會,人們的工作學習壓力逐漸增大,生活節奏逐漸加快,大多數人都沒有足夠的時間去休閑娛樂。對于這些忙碌的人來說,他們
9、不可能花費大量時間在娛樂上,大型游戲是行不通的。這樣的小游戲剛好迎合了這部分人的需求,可以讓他們在工作之余放松一下。 本次畢業設計的題目是3D游戲飛機大戰的設計與實現,旨在成功的設計出一款在電腦上運行的3D小游戲飛機大戰。游戲的主界面應該力求美觀,以提高玩家對游戲的興趣。游戲的控制模塊應該做到簡單易懂、易操作,給玩家提供一個很好的游戲環境。1.2系統研究內容實現一個3D的飛機大戰游戲需要完成以下工作:1、了解和分析用戶需求,并根據用戶需求設計游戲內容,設定相關場景,包括背景、飛機、隕石、子彈、爆炸特效,具體制定游戲邏輯關系、主要流程、具體任務內容和過關要求。 2、使用Photoshop CS3
10、制作游戲背景以及飛機、隕石等模型的貼圖。3、使用3ds max等建模工具建立模型并導入Unity3D中。4、通過Visual Studio 2013來編寫腳本,從而實現鍵盤的控制、隨機生成隕石、顯示分數等功能。5、對游戲進行詳細的系統測試,測試游戲是否能正常運行,對發現的問題進行調試。6、最后,通過Unity3D將游戲發布出來,生成.exe格式。玩家可以在電腦上啟動游戲,從而進行3D游戲飛機大戰的體驗。1.3 系統開發工具本系統采用以下運行環境和開發工具:1、編程語言:C#2、操作系統:Windows 73、開發工具:Unity3D、Visual Studio 20134、美工環境:Photo
11、shop CS313第2章 系統開發環境和技術2.1 Photoshop介紹Adobe Photoshop,簡稱“PS”,是美國Adobe公司開發的圖像設計及處理軟件,以其強大的功能倍受用戶的青睞。它是一個集圖像掃描、編輯修改、圖像制作、廣告創意、圖像合成、圖像輸入/輸出、網頁制作于一體的專業圖形處理軟件。Photoshop主要處理以像素所構成的數字圖像。使用其眾多的編修與繪圖工具,可以有效地進行圖片編輯工作1。Photoshop有很多功能,在圖像、圖形、文字、視頻、出版等各方面都有涉及,深受廣大平面設計人員和電腦美術愛好者的喜愛。其用戶界面易懂、功能完善,、性能穩定,所以幾乎在所有的廣告、出
12、版、軟件公司,Photoshop都是首選的平面工具2。Photoshop廣泛用于對圖片、照片進行效果制作及對在其它軟件中制作的圖片做后期效果加工。從功能上看,Photoshop可分為圖像編輯、圖像合成、校色調色及特效制作等。 1、圖像編輯是圖像處理的基礎,可以對圖像做各種變換如放大、縮小、旋轉、傾斜、鏡像、透視等;也可進行復制、去除斑點、修補、修飾圖像的殘損等。2、圖像合成則是將幾幅圖像通過圖層操作、工具應用合成完整的、傳達明確意義的圖像,這是美術設計的必經之路。Photoshop提供了繪圖工具讓外來圖像與創意很好地融合。3、校色調色可方便快捷地對圖像的顏色進行明暗、色偏的調整和校正,也可進行
13、不同顏色的切換以滿足圖像在不同領域如網頁設計、印刷、多媒體等方面應用。4、特效制作在該軟件中主要由濾鏡、通道及工具綜合應用完成。包括圖像的特效創意和特效字的制作,如油畫、浮雕、石膏畫、素描等常用的傳統美術技巧都可由Photoshop特效完成。 總之,Photoshop具有平面圖象處理的所有功能,色彩、亮度、尺寸、各種式樣、效果、各種濾鏡以及通過各種技巧實現的對圖像的任意組合、變形,通過層和通道很方便的進行處理,并對結果圖形進行優化,輸出各種圖像格式,目前也能處理動畫3。2.2 Unity3D介紹Unity3D是由Unity Technologies開發的一個讓玩家輕松創建諸如三維視頻游戲、建筑
14、可視化、實時三維動畫等類型互動內容的多平臺的綜合型游戲開發工具,是一個全面整合的專業游戲引擎4。Unity3D類似于Director、Blender game engine、Virtools 或 Torque Game Builder等利用交互的圖型化開發環境為首要方式的軟件,其編輯器運行在Windows 和Mac OS X下,可發布游戲至Windows、Mac、Wii、iPhone、Windows phone 8和Android平臺。也可以利用Unity web player插件發布網頁游戲,支持Mac 和Windows的網頁瀏覽。它的網頁播放器也被Mac widgets所支持5。Unity
15、3D是一款跨平臺的游戲開發工具,從一開始就被設計成易于使用的產品。作為一個完全集成的專業級應用,Unity3D還包含了價值功能強大的游戲引擎。具體的特性包含整合的編輯器、跨平臺發布、地形編輯、著色器、腳本、網絡、物理、版本控制等特性。Unity3D是一個讓你輕松創作的多平臺的游戲開發工具,是一個全面整合的游戲引擎6。Unity3D游戲引擎具有以下特性:1、綜合編輯:通過Unity3D簡單的用戶界面,用戶可以完成任何工作。這些為用戶節省了大量的時間。在本游戲的編程過程中,可以整體對一個界面進行編輯,節省了一個一個打開每個界面的時間,并且程序可以在界面中共享,節約了大量的相同程序重復編輯使用的時間
16、,提高了整體的效率。2、資源導入:Unity3D支持所有主要文件格式,并能和大部分相關應用程序協同工作。本游戲的圖片可以盡數導入Unity3D中進行編輯,同時可以大量導入游戲所需要的聲音特效,在Unity3D中對聲音進行編輯。對于游戲的整體實現十分有利。3、一鍵部署:Unity3D可以讓我們的作品在多平臺呈現。利用File選項中的BuildSetting功能,可以選擇將游戲發布到多個平臺上,可供選擇的方案十分齊全,完成的作品可以發布到Windows平臺,或者Android,IOS平臺等,對于本次畢業設計的要求分布到移動平臺上,Unity3D更是可以完全的滿足需求。4、音頻和視頻:實時三維圖形混
17、合音頻流、視頻流。在本游戲中,我們在主界面內添加聲音控件,為了達到使游戲更加具有真實感的效果。5、腳本:Unity3D支持很多的腳本語言,本次游戲的設計,編程主要使用到的為C#語言,Unity3D對于C#語言的支持使得程序的制作者可以盡可能的完成所需要的功能和設計的實現。6、Unity3D資源服務器:Unity3D資源服務器是一個附加的包括版本控制的產品。使得對于場景的切換更加快捷。7、全屏后處理效果:unity3D擁有大量的全屏后處理特效圖片去創建,例如陽光、鏡頭效果、色彩豐富的光學效果、色彩校正甚至更多。8、重寫渲染引擎:在Unity3D中改寫了全部的渲染終端,更加的靈活,渲染的速度也得到
18、了大大提高7。2.3 C#語言C#是微軟公司發布的一種面向對象的、運行于.NET Framework之上的高級程序設計語言。并定于在微軟職業開發者論壇(PDC)上登臺亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司 .NET windows網絡框架的主角。C#是一種安全的、穩定的、簡單的、優雅的,由C和C+衍生出來的面向對象的編程語言。它
19、在繼承C和C+強大功能的同時去掉了一些它們的復雜特性(例如沒有宏以及不允許多重繼承)。C#綜合了VB簡單的可視化操作和C+的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程的支持成為.NET開發的首選語言8。 C#是面向對象的編程語言。它使得程序員可以快速地編寫各種基于MICROSOFT .NET平臺的應用程序,MICROSOFT .NET提供了一系列的工具和服務來最大程度地開發利用計算與通訊領域。C#使得C+程序員可以高效的開發程序,且因可調用由C/C+編寫的本機原生函數,因此絕不損失C/C+原有的強大的功能。因為這種繼承關系,C#與C/C+具有極
20、大的相似性,熟悉類似語言的開發者可以很快的轉向C#9。C#旨在設計成為一種“簡單、現代、通用”以及面向對象的程序設計語言,此種語言的實現,應提供對于以下軟件工程要素的支持:強類型檢查、數組維度檢查、未初始化的變量引用檢測、自動垃圾收集(Garbage Collection,指一種自動內存釋放技術)。軟件必須做到強大、持久,并具有較強的編程生產力。此種語言為在分布式環境中的開發提供適用的組件開發應用。為使程序員容易遷移到這種語言,源代碼的可移植性十分重要,尤其是對于那些已熟悉C和C+的程序員而言。對國際化的支持非常重要。C#適合為獨立和嵌入式的系統編寫程序,從使用復雜操作系統的大型系統到特定應用
21、的小型系統均適用10。C#所開發的程序源代碼并不是編譯成能夠直接在操作系統上執行的二進制本地代碼。與Java類似,它被編譯成為中間代碼,然后通過.Net Framework的虛擬機被稱之為通用語言運行時(CLR)執行。所有的.Net編程語言都被編譯成這種被稱為MSIL(Microsoft Intermediate Language)的中間代碼。因此雖然最終的程序在表面上仍然與傳統意義上的可執行文件都具有“.exe”的后綴名。但是實際上,如果計算機上沒有安裝.Net Framework,那么這些程序將不能夠被執行。在程序執行時,.Net Framework將中間代碼翻譯成為二進制機器碼,從而使它
22、得到正確的運行。最終的二進制代碼被存儲在一個緩沖區中。所以一旦程序使用了相同的代碼,那么將會調用緩沖區中的版本。這樣如果一個.Net程序第二次被運行,那么這種翻譯不需要進行第二次,速度明顯加快。C#幾乎集中了所有關于軟件開發和軟件工程研究的最新成果:面向對象、類型安全、組件技術、自動內存管理、跨平臺異常處理、版本控制、代碼安全管理盡管像很多人注意到的一樣,羅列上述特性時,總是讓人想到JAVA,然而C# 確實走得更遠11。但現實的情況是,非技術的因素往往更能決定一個產品的未來,尤其在計算機軟件的歷史上,技術卓越的產品,如OS/2、Mac OS、UNIX等,都敗在了Windows漂亮的界面上。JA
23、VA的用戶主要是網絡服務的開發者和嵌入式設備軟件的開發者,嵌入式設備軟件不是C#的用武之地,而在網絡服務方面,C#的即時編譯和本地代碼Cache方案比JAVA虛擬機具有絕對的性能優勢。第3章 系統的需求分析3.1 可行性研究可行性研究的目的就是用最小的成本在盡可能短的時間內確定問題定義階段描述的系統目標和規模是否可行,是否能夠解決。也就是說,可行性研究的目的不是解決問題,而是確定問題是否值得去解決,研究在當前的具體條件下,開發新系統是否具備必要的資源和其它條件12。一般來說,至少要從以下幾個方面來進行分析:1、經濟可行性這個系統的經濟效益能超過它的開發成本嗎?2、技術可行性使用現有的技術能實現
24、這個系統嗎?3、操作可行性系統的操作方式在這個用戶組織內行得通嗎?現在分別從經濟可行性、技術可行性、操作可行性三個方面對本游戲系統進行研究。3.1.1 經濟可行性 一般衡量經濟上是否合算,應考慮一個“底線”,經濟可行性研究范圍較廣,包括成本-效益分析,開發所需的資金和資源,潛在的市場發展的前景等。本系統的開發是在電腦上進行的,其測試工作也可以在電腦上模擬網絡環境來進行。從短期來看,系統的開發所需的費用是很少的。同時,游戲一旦上線運行,會給用戶帶來更加精彩的游戲體驗,用戶可以在PC端進行游戲體驗,也可以在智能手機端進行游戲體驗。因此,從經濟上具有可行性。3.1.2 技術可行性3D游戲開發是基于U
25、nity3D游戲引擎,主要包括前期模型的制作以及后期游戲場景程序的開發。本系統擬采用Photoshop、Unity3D和C#分別作為前期和后期的開發工具。Photoshop是Adobe公司出品的最為出名的圖像處理軟件之一,充分利用無與倫比的編輯合成功能來大幅度提高工作效率。采用Photoshop可以使圖片的編輯更加完美。Unity是一款跨平臺的游戲開發工具,是一個全面整合的專業游戲引擎。Unity可以發布到多個平臺,支持Windows、Mac、Iphone、Android等平臺。C#是面向對象的編程語言。它使得程序員可以快速地編寫各種基于.NET平臺的應用程序,.NET提供了一系列的工具和服務
26、來最大程度地開發利用在計算與通訊領域。這些技術已經比較成熟,因此從技術方面來說開發此系統是可行的。3.1.3 操作可行性本系統是一個3D游戲飛機大戰,是Unity3D技術應用于游戲中的產物。本游戲交互性好,簡單易操作,對用戶并沒有特殊的要求。一般用戶經過幾分鐘練習就可以掌握游戲規則,在操作上十分方便。所以在操作方面來說開發此系統是可行的。3.2 需求分析3.2.1 功能需求根據對游戲功能需求的仔細分析,對本游戲提出如下要求:1、玩家進入游戲開始菜單可以選擇開始游戲、退出游戲;2、進入游戲界面后可退出游戲;3、玩家飛機以一定速度飛行,用戶可以控制飛機上下左右移動;4、玩家飛機一直發射子彈,用戶通
27、過操控飛機位置來掃射隕石;5、不同種類隕石會以一定速度隨機出現;6、玩家飛機發射的子彈擊中隕石后,隕石爆炸銷毀,子彈擊中隕石后消失;7、玩家飛機若與隕石相撞,玩家飛機則墜毀,游戲失敗;8、玩家飛機游戲失敗后失敗界面會顯示用戶達到的分數,用戶可以選擇重新游戲。3.2.2 性能需求1、實時性:本游戲為電腦游戲因此對于用戶的操作必須做出立即響應,否則本游戲即為失敗;2、易操作性:本游戲的最大特點即為易操作性,玩家在不看說明的情況下也能夠玩,并且在玩過幾遍之后即熟悉本游戲的規則。這是本游戲對于操作性的要求。3.2.3 美工音效需求1、游戲畫面風格清新,活潑可愛;2、玩家點擊按鈕后,按鈕要發生變化,在視
28、覺上提醒用戶已成功點擊按鈕;3、玩家點擊按鈕時進入游戲界面,在聽覺上提醒用戶已成功進入游戲中;4、玩家飛機發射子彈、發生碰撞墜毀都有音效;5、隕石被玩家子彈炸毀時要有音效,玩家使用炸彈時要有音效。第4章 系統的總體設計4.1 系統功能模塊圖本游戲系統分為游戲功能模塊和玩家模塊兩大部分。1、游戲功能模塊。在游戲界面中要有很多的隕石阻擋飛機的飛行,所以游戲功能模塊包括隕石產生并且自動下落、飛機擊落隕石產生爆炸、飛機被隕石砸到飛機墜毀、子彈射擊時播放背景音效、擊中隕石累計分數等功能。2、玩家模塊。玩家可以控制鍵盤來控制飛機的飛行,用鍵盤空格鍵來控制子彈的發射。根據游戲功能分析,可以畫出包含游戲功能模
29、塊和玩家模塊的系統功能模塊圖,如圖4-1所示。3D游戲飛機大戰玩家模塊功能模塊分數累計飛機墜毀重新開始播放背景音效隕石爆炸隕石下落 控制飛行發射子彈圖4-1系統功能模塊圖4.2游戲界面設計使用Photoshop對游戲的背景進行制作,因為飛機是三維立體的,需要把圖片按照平面給取下來,就需要Photoshop來完成,為了使游戲的效果更加炫目,需要把背景圖片設計成太空的感覺,同時需要借助Photoshop。游戲的開始的游戲界面如圖4-2所。圖4-2游戲界面圖4.3 模型設計和構建三維模型在游戲中占據著重要作用,模型的好壞直接影響運行的效果和游戲的逼真度。模型的構建可以使用專業的建模工具。本飛機大戰游
30、戲中的飛機模型采用3DS MAX進行建模,用它建立的模型有很強的仿真立體效果。3DS MAX提供了高級的三維建模指令,它豐富的建模技術能夠較為方便和真實地表現復雜、精細的 模型,它在工業產品設計、數字化技術、仿真系統等諸領域中得到廣泛的應用。3DS MAX建立模型的過程主要是: 1、收集相關的資料并整理數據。資料盡量齊全、統一、規劃。 2、定好計劃,計劃模型制作與貼圖的時間分配、模型的布局等。 3、模型制作。按照收集到的數據準確建模,在局部進行精簡、優化。 4、映射紋理。按照需要處理紋理,并進行紋理映射。 5、合成。按照要求把局部模型進行合成,并調整燈光、材質。 6、調整、優化。查看實際渲染效
31、果,針對個別情況進行調整,并進行優化。7、獲得模型成果。根據對飛機結構的分析,逐層逐塊地利用建模軟件3DS MAX提供的點、線、面、體創建和修改工具,進行幾何模型的創建。對于需要精細建模的模型要用盡量使用精確的幾何形體創建模型細節,對于要粗略建模的模型要盡量使用面數較少的幾何體構建。這時創建的模型還只是一個未加任何修飾的模型,這個過程完成了幾何建模的工作,但是并沒有層次感和立體感。如圖4-3所示為飛機的幾何模型。圖4-3 飛機的幾何模型為了提高三維模型的逼真度,減少模型的多邊形數量,我們采用紋理貼制的方法來代替用多邊形表示模型的細節,從而大大降低了模型的多邊形數量。飛機的紋理貼圖是由Photo
32、shop處理得到的,如圖4-4所示。圖4-4 飛機的紋理貼圖為制作好的飛機幾何模型進行貼圖,最終的飛機模型制作完成,如圖4-5所示。圖4-5飛機模型圖游戲中還有墜落的隕石,隕石的制作和飛機模型的制作是相同的。需要進行隕石幾何模型的制作,然后進行隕石的貼圖制作。最終的隕石模型圖如圖4-6所示。圖4-6隕石模型圖東北石油大學本科生畢業設計(論文)第5章 系統的詳細設計與實現3D游戲飛機大戰包括游戲功能模塊和玩家模塊兩大部分。游戲功能模塊部分,目的是實現游戲的各種效果,而玩家模塊則是實現對游戲的控制操作。下面對3D游戲飛機大戰各個功能的實現做個簡單的介紹。5.1 功能模塊的設計與實現5.1.1開始游
33、戲模塊的設計與實現玩家可以在游戲的主界面點擊New Game進入游戲界面,點擊Quit退出游戲。該模塊使用了UGUI技術和動畫特效來實現對游戲主界面的操作,游戲開始主界面如圖5-1所示。 圖5-1 游戲開始主界面圖在點擊New Game后在場景中需要切換游戲場景界面,在設置中需添加Space Shooter Game .unity從而切換游戲的界面,切換場景界面圖如圖5-2所示。圖5-2 切換場景界面圖切換場景主要的實現代碼如下:public void Change()Application.LoadLevel ("SpaceShooterGame"); 結束游戲主要實現的
34、代碼如下:public void Quit () #if UNITY_EDITORUnityEditor.EditorApplication.isPlaying = false;#elseApplication.Quit();#endif5.1.2隕石下落模塊的實現該模塊實現的是隕石的下落,將隕石設為預設體,再將預設體設為剛體,隕石為剛體受向下的力向下運動。將隕石預設體添加腳本RandomRoater和MoverBount隨機產生隕石下落的位置。隕石下落時子彈可以射擊,擊中發射爆炸,從而得打分數。如果隕石撞到了飛機上,玩家游戲停止。隕石下落控件如圖5-3所示。圖5-3 隕石控件界面隕石下落主要
35、的實現代碼如下:public class MoverBount : MonoBehaviour public float speed = 10.0f; public float thumble = 5; void Start() rigidbody.velocity = -transform.right * speed; rigidbody.angularVelocity = Random.insideUnitSphere * thumble; 隕石旋轉主要的實現代碼如下:public class RandomRoater : MonoBehaviour public float thumbl
36、e = 5;void Start() rigidbody.angularVelocity = Random.insideUnitSphere * thumble; 5.1.3隕石爆炸模塊的實現當玩家通過鍵盤控制子彈擊落隕石的時候,隕石發生爆炸。撞擊隕石發生爆炸,隕石需要添加腳本DestroyByContact,為了可以使隕石在爆炸后自動消失。消失一個隕石得到的分數為10分。隕石爆炸模塊如圖5-4所示。圖5-4 隕石爆炸模塊 隕石爆炸主要的實現代碼如下: public class DestroyByContact : MonoBehaviour public GameObject explosi
37、on;public GameObject playerExplosion;public GameController game;public int score=10;void Start()GameObjectgameControllerObject = GameObject.FindGameObjectWithTag ("GameController");if (gameControllerObject != null) game=gameControllerObject.GetComponent<GameController>();if (gameCont
38、rollerObject = null) Debug.Log("錯誤");void OnTriggerEnter(Collider other)if (other.gameObject.tag = "Boundary") return;if (other.gameObject.tag = "Player") Instantiate(playerExplosion,transform.position,transform.rotation);game.GameOver();Destroy (other.gameObject);Destr
39、oy (this.gameObject);game.AddScore (score);Instantiate (explosion,transform.position,transform.rotation);5.1.4游戲結束模塊的實現當隕石擊中飛機的時候,飛機發生爆炸,從而游戲結束,點擊R重新開始游戲。飛機擊落模塊如圖5-5所示。圖5-5 飛機擊落模式游戲結束的主要實現代碼如下: IEnumerator spawnWaves() yield return new WaitForSeconds (startWait); while (true) for (int i=0; i<NumP
40、erWave; i+) spawn(); yield return new WaitForSeconds (spawnWait); yield return new WaitForSeconds (waveWait); if(gameover)/游戲結束,停止繼續產生小行星 break; 游戲重新開始實現的代碼如下:public void GameOver() gameover = true; gameoverText.text = "GameOver" helpText.text = "press R to Start"5.1.5背景音效模塊的實現進入
41、游戲之后產生背景音樂,子彈射擊的時候伴有音樂音效,隕石擊落的時候也伴有音樂音效。首先需要在場景中添加Audio Source組件,組件設置所需要的音效。場景中音樂音效模塊圖如圖5-6所示。圖5-6 音樂音效模塊圖5.1.6分數累計模塊的實現玩家通過鍵盤控制發射子彈射擊隕石,若子彈打中隕石,玩家得分,與此同時將得到的分數記錄在分數框中。分數累計模塊如圖5-7所示。圖5-7 分數累計模塊圖主要實現代碼如下: void spawn() GameObject o = hazardsRandom.Range(0, hazards.Length); Vector3 p = new Vector3(spaw
42、nValues.x, spawnValues.y, Random.Range(-spawnValues.z, spawnValues.z); Quaternion q = Quaternion.identity; Instantiate(o, p, q); public void AddScore(int v) score += v; guiText.text = "score:" + score; 5.1.7粒子特效的實現為了使游戲的效果更加的絢麗,就要給場景添加粒子特效,在GameObject中添加Particle System組件,粒子特效的主界面模塊如圖5-8所示。
43、圖5-8 粒子特效模塊圖5.2 玩家模塊的設計與實現5.2.1發射子彈的實現 玩家進入游戲主界面點擊進入游戲,通過點擊鍵盤的空格鍵發射子彈射擊落下的隕石,發射子彈模塊如圖5-9所示。圖5-9 發射子彈模塊圖主要的實現代碼如下:public class Mover : MonoBehaviour public float speed=10.0f; void Start () rigidbody.velocity = transform.forward * speed; 5.2.2 飛機左右移動模塊的設計和實現 玩家可以通過控制鼠標上下左右來控制飛機的飛行。給飛機設置成剛體,這樣就可以飛機受到力的
44、作用,從而控制飛機的飛行。另外還需要添加腳本PlayerController來設置飛機移動的范圍和飛機移動的速度。飛機移動模塊如圖5-10所示。圖5-10 飛機移動模塊圖主要實現代碼如下:public class Boundary public float xMin = -6.8f; public float xMax = 6.8f; public float zMin = -10.0f; public float zMax = 20.0f;public class PlayerController : MonoBehaviour public float speed = 10f; publi
45、c Boundary bound; public GameObject bolt; public Transform spawnPos; public float fireRate = 0.25f;/發射的時間間隔 public float nextFire;/下次發射的時間 public AudioClip fire; void Update() if (Input.GetButton("Jump") && Time.time > nextFire) nextFire = Time.time + fireRate; Instantiate(bolt,
46、 spawnPos.position, spawnPos.rotation); audio.PlayOneShot(fire); void FixedUpdate() float h = Input.GetAxis("Vertical"); float v = Input.GetAxis("Horizontal"); Vector3 move = new Vector3(h, 0f, v); rigidbody.velocity = speed * move; rigidbody.position = new Vector3(Mathf.Clamp(ri
47、gidbody.position.x, bound.xMin,bound.xMax),0f,Mathf.Clamp(rigidbody.position.z,bound.zMin,bound.zMax); 第6章 游戲測試前面章節中,從需求分析、總體設計、詳細設計等不同環節對3D游戲飛機大戰進行了詳細的描述。至此,游戲的設計已經完畢,進入了游戲測試階段。游戲測試作為軟件測試的一部分,它具備了軟件測試所有的共同的特性:測試的目的是發現軟件中存在的缺陷。測試都是需要測試人員按照產品行為描述來實施。游戲測試是根據游戲開發各階段的規格說明和程序的內部結構而精心設計一批測試用例,并利用這些測試用例運行程
48、序,以及發現錯誤的過程,即執行測試步驟13。6.1 軟件測試目的測試的目的是發現軟件中存在的缺陷。測試都是需要測試人員按照產品行為描述來實施。產品行為描述可以是書面的規格說明書,需求文檔,產品文件,或是用戶手冊,源代碼,或是工作的可執行程序。每一種測試都需要產品運行于真實的或是模擬環境之下。每一種測試都要求以系統方法展示產品功能,以證明測試結果是否有效,以及發現其中出錯的原因,從而讓程序人員進行改進14。6.2 系統測試過程及結果游戲采用功能測試技術進行測試。所謂功能測試,就是在已知游戲所具有的功能的前提下,通過預測試每個功能是否都能正確實現。進行功能測試的方法如下:1、測試隕石是否隨機產生,
49、隕石產生移動的方向和位置。隕石在界面的上方相同的y軸,不同的x軸隨機產生。隕石的下落方向為向著飛機的方向運動,使飛機可以打到隕石。隕石隔一段時間將會生成并且在不同的地方隨機產生。2、測試鍵盤w、s、a、d控件飛機上下左右的飛行。按“w”鍵飛機向上飛行,按“a” 鍵飛機向左飛行,按“s” 鍵飛機向下飛行,按“d” 鍵飛機向右飛行。空格控制飛機子彈的發射,點擊其他的按鍵,發現飛機沒有發生移動,同時點擊啟動的按鍵飛機也沒有發射出子彈。鍵盤的測試正常。3、子彈射擊隕石玩家會得到相應的分數,射擊到一個隕石的分數大概是50分,射擊隕石的個數乘以射擊每個隕石得到的分數和預期的分數相等。測試正確,沒有錯誤。4、測試子彈射擊到隕石后的情況。若子彈射擊到隕石,隕石發射爆炸,測試結果正確。若子彈射擊到隕石,隕石并沒有發射爆炸,測試發生錯誤。經過測試,沒有錯誤。5、測試隕石撞碰飛機,飛機是否毀滅。若隕石撞擊到飛機上面,飛機發生爆炸現象游戲結束,測試成功。若隕石撞擊到飛機上面,飛機并沒有發生爆炸現象,證明游戲中存在問題,測試不成功。經測試,也能正常運行。結 論本文詳細描述了通過Unity3D、Visual Studio和Photoshop等工具實現3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 瓷磚鋪貼工崗位面試問題及答案
- 2025屆河南天一大聯考高一化學第二學期期末預測試題含解析
- 培養質量評價管理辦法
- 醫藥產品登記管理辦法
- 權力清單管理辦法麗水
- 辦公區域日常管理辦法
- 民航安檢道口管理辦法
- 北京特殊班級管理辦法
- 碳中和目標下鋰離子電池健康狀態評估體系構建研究
- 醫療器材資質管理辦法
- 公務員考試經驗分享培訓課件
- (高級)數據安全管理員職業技能鑒定考試題庫-實操題
- 初三化學上冊第一單元測試題(含答案)
- 移動通信網絡優化服務合同
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗收規范
- JBT 14449-2024 起重機械焊接工藝評定(正式版)
- DL-T5017-2007水電水利工程壓力鋼管制造安裝及驗收規范
- 海上風電場選址與環境影響評估
- 《陸上風電場工程概算定額》(NB-T 31010-2019)
- 藥物分析年終述職報告
- 農發行信貸業務考試題庫題庫附答案
評論
0/150
提交評論