版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
摘要隨著科技時代的飛速提升,人們的生活水平發(fā)生了重大的變革,許多人會親自體驗生活中不常去的地方如海邊、沙灘、雪地,深山等,又如一些生活中少體驗的釣魚、滑雪、沖浪等,但不是每個人都能親自去體驗,然而現(xiàn)代發(fā)達(dá)的游戲制作水平卻可以彌補(bǔ)人們生活中一些遺憾。如今游戲和虛擬現(xiàn)實事業(yè)蓬勃發(fā)展,受到越來越多人的關(guān)注和喜愛,模擬類游戲允許玩家自由控制游戲中的人或事物,通過體驗生活中一些比較難去體驗的娛樂或生存方法。該類游戲不僅僅能夠鍛煉到人的反應(yīng)速度,更重要的是提高人對自己未用過或用的較少的物品的認(rèn)知以及人的生存常識等等,非常適合大眾的需求。Unity3D作為一款能夠快速開發(fā)和上手的游戲開發(fā)引擎在市場上逐步升溫。本論文探究基于Unity3D的模擬沖浪游戲的開發(fā),這不僅僅是一款模擬沖浪類游戲,區(qū)別真實的沖浪的體驗但卻能給人帶來自己未曾體驗過的愉悅同時可以通過游戲給人們帶來沖浪的知識以及沖浪需要的設(shè)備、安全注意等。游戲難度適中,游戲的海浪以及海浪的沖擊波會給人帶來刺激感以及被海浪沖進(jìn)水里的膽怯與畏懼,同時玩家可以通過教程學(xué)習(xí)一些基礎(chǔ)沖浪技巧,去挑戰(zhàn)更難的沖浪地點?,F(xiàn)在人們?yōu)榱讼綍r工作和生活的乏累,會選擇更多這類刺激而且能帶來成就感的游戲,因此,模擬類游戲擁有可觀的發(fā)展前景。本文主要描述了該游戲的開發(fā)原理,游戲的設(shè)計與實現(xiàn)以及游戲功能測試等。為后續(xù)希望開發(fā)同類游戲的開發(fā)者提供借鑒與參考。關(guān)鍵詞:Unity3D3D水流沖浪游戲
AbstractWiththerapiddevelopmentofscienceandtechnology,greatchangeshavetakenplaceinpeople'slivingstandards.Manypeoplewillpersonallyexperiencetheplacestheydon'toftengotoinlife,suchastheseaside,beach,snow,deepmountain,etc.,aswellassomefishing,skiing,surfing,etc.,whicharerarelyexperiencedinlife,butnoteveryonecanexperiencetheminperson.However,themoderndevelopedgameproductionlevelcanmakeupforpeople'slifeSomeregrets.Nowadays,gameandvirtualrealityarebooming,andmoreandmorepeoplepayattentiontoandlovethem.Simulationgamesallowplayerstofreelycontrolpeopleorthingsinthegame,andexperiencesomeentertainmentorsurvivalmethodsthataredifficulttoexperienceinlife.Thiskindofgamecannotonlytrainpeople'sreactionspeed,butalsoimprovepeople'scognitionoftheunusedorlessuseditemsandpeople'ssurvivalknowledge,whichisverysuitablefortheneedsofthepublic.Unity3d,asagamedevelopmentenginethatcanbedevelopedandstartedquickly,isgraduallywarmingupinthemarket.Thispaperexploresthedevelopmentofthesimulationsurfinggamebasedonunity3d,whichisnotonlyasimulationsurfinggame,butalsoarealsurfingexperiencethatcanbringpeoplepleasurethattheyhaveneverexperienced.Atthesametime,itcanbringpeopletheknowledgeofsurfing,theequipmentneededforsurfing,safetyattention,etc.throughthegame.Thedifficultyofthegameismoderate.Thewavesofthegameandtheshockwavesofthewaveswillgivepeopleasenseofstimulationandthetimidityandfearofbeingsweptintothewaterbythewaves.Atthesametime,playerscanlearnsomebasicsurfingskillsthroughthecoursetochallengemoredifficultsurfingplaces.Nowadays,inordertoeliminatethetirednessofdailyworkandlife,peoplewillchoosemoregamesthatstimulateandbringasenseofachievement.Therefore,simulationgameshaveaconsiderabledevelopmentprospect.Thispapermainlydescribesthedevelopmentprincipleofthegame,thedesignandimplementationofthegameandthefunctiontestofthegame.Forthefuturedeveloperswhowanttodevelopsimilargamestoprovidereferenceandreference.Keywords:Unity3D3Dwatersurfinggame
目錄第一章 緒論 緒論選題的目的和意義如今社會的計算機(jī)科學(xué)技術(shù)的發(fā)展,電子游戲的豐富多樣,大眾開始對游戲的娛樂性需求逐漸增高,以及對游戲的即時娛樂需求,人們開始對2D的平面游戲感到不夠真實,追求真實的感官體驗成為當(dāng)今游戲發(fā)展的趨勢,隨著科技的不斷發(fā)展,計算機(jī)和手機(jī)的不斷普及,各種各樣的游戲應(yīng)用也層出不窮。而在人們背負(fù)著眾多壓力的生活中,游戲應(yīng)用的出世無疑是一劑調(diào)味品,讓人們可以適當(dāng)?shù)尼尫派顗毫Γ黾尤藗兊纳顦啡?。休閑類游戲是目前最受歡迎的游戲類型之一,它經(jīng)過多年的發(fā)展,變得更加完善,不同種類的游戲使得用戶得到更多的體驗。選擇unity是由于Unity是一個可以讓玩家輕松建立如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內(nèi)容的多平臺的綜合型游戲開發(fā)工具,是一個全面整合的專業(yè)游戲引擎。并且unity可以發(fā)布游戲到多個平臺,Android就是其中一種。休閑類游戲可以在休息的時間內(nèi)以玩的方式得到身心的放松和調(diào)節(jié),從而達(dá)到讓體能得到恢復(fù)、身心保持愉悅的目的的一種業(yè)余生活游戲。休閑類游戲上手很快,不需要長時間進(jìn)行,可以隨時隨地停止游戲,并且有較高的娛樂性,是非常適合和滿足大眾的需求的。國內(nèi)外研究現(xiàn)狀沖浪最初是由波利尼亞人的一種古老運(yùn)動發(fā)展而來,他們部落中的酋長是一個技術(shù)最好的沖浪選手,并且擁有用最好樹木制作的最好沖浪板,最初沖浪對一般階級的民眾來說是十分向往的運(yùn)動,因為統(tǒng)治階層擁有最好的海灘和板子,導(dǎo)致一般人不敢冒險在海浪兇險的地方以及沒有沙灘的地方都不適合沖浪,但隨著時間的推移,人們可以通過高超的沖浪技術(shù)來獲得這些特權(quán),同時也意味著沖浪運(yùn)動開始向基層民眾開放,歐洲人是最早目擊沖浪的,在1767年由Dolphin的一名船員在大溪地記載。之后又由JameKing中尉在1779年在庫克船長的日記中發(fā)現(xiàn)沖浪的藝術(shù)。在科克發(fā)現(xiàn)這種沖浪運(yùn)動的幾十年后,在1912年的奧運(yùn)會中,哈摩庫得了游泳冠軍,在他的大力提倡下沖浪運(yùn)動才開始在美國流行起來并推廣,如今最流行的幾個沖浪地區(qū)就有美國的夏威夷,以及北美、秘魯、澳大利亞和南非都開始流行沖浪,并且逐步發(fā)展為有世界級沖浪錦標(biāo)賽的運(yùn)動沖浪是以海浪為動力的極限運(yùn)動,沖浪者在海邊有適當(dāng)海浪的地方俯臥休息或在沖浪板上等待海浪,當(dāng)有適當(dāng)海浪時,海浪的動力會使沖浪板運(yùn)動沖浪者通過俯臥調(diào)整沖浪板方向和劃水的方式獲得更多的動力,當(dāng)動力足夠時沖浪者起身,保持站立,且雙腿微屈,讓其獲得更多的重心在身上。沖浪可以讓人們暫時忘掉自己的不愉快,體驗與大自然力量的接觸,與海浪搏擊,體驗在一下別在海上實現(xiàn)水上漂的快感,這也許也是許多人為了尋找一處沖浪勝地而到處奔波的理由吧。隨著時代的進(jìn)步人們因為工作等原因,許多人無法好好地休息放松一下自己,所以人們開始在網(wǎng)絡(luò)中尋找放松,2000年后隨著最初紅白機(jī)等游戲的過時網(wǎng)絡(luò)游戲開始盛行,如今許多網(wǎng)絡(luò)游戲發(fā)展迅速,成為當(dāng)今游戲產(chǎn)業(yè)中規(guī)模最大的一類,然而這些也開始隨著時間的發(fā)展被人們玩膩,大多數(shù)的RPG類和刷副本類闖關(guān)游戲過于豐滿人們開始研究新的游戲類型,如3D極限飛車和3D競技類運(yùn)動游戲開始盛行,開發(fā)商開始尋找新的突破口,向各類運(yùn)動類游戲進(jìn)行開放。隨著一些設(shè)備和硬件、軟件的日益增強(qiáng),人們的娛樂范圍也開始從PC端向移動端擴(kuò)展。3D互動娛樂游戲也開始在手機(jī)領(lǐng)域盛行,由于移動端的操作系統(tǒng)較多如Android、IOS等,為了保證開放的軟件有較強(qiáng)的移植性,許多的開放引擎都逐步拓展自己的適用范圍,從最開始的PC端開始向其他平臺發(fā)展,如今最為突出的開發(fā)引擎便是Unity3D,該引擎適用多個平臺,移植性強(qiáng)。但國內(nèi)的跨平臺技術(shù)仍然處于較低的階段,通過該引擎可以實現(xiàn)較快的跨平臺實現(xiàn)。論文組織結(jié)構(gòu)論文從最初構(gòu)思到游戲的分析實踐,結(jié)合專業(yè)3D開發(fā)資料,設(shè)計一款沖浪的游戲,其中具體介紹了游戲制作的基本步驟以及游戲的系統(tǒng)功能設(shè)計和功能代碼編寫等。論文分為六章,各章節(jié)安排如下:?第一部分:緒論,主要闡述了該畢業(yè)設(shè)計制作的背景、國內(nèi)外對相關(guān)課題的研究現(xiàn)狀以及本設(shè)計的大概介紹;?第二部分:介紹了本文制作游戲使用的各類開發(fā)工具和Unity3D的大致介紹;第三部分:詳細(xì)介紹游戲的各個模塊的制作,清晰明確游戲內(nèi)部關(guān)系,采用由下到上的順序?qū)訉硬鹞霾襟E;第四部分:沖浪游戲的系統(tǒng)功能設(shè)計和界面設(shè)計;?第五部分:運(yùn)行游戲進(jìn)行測試,打包封裝;第六部分:結(jié)論以及游戲不足和游戲今后改進(jìn)。
開發(fā)工具介紹Unity3D游戲引擎Unity3D軟件介紹游戲引擎提供了足夠的功能,這些功能在許多不同的游戲中都很有用。因此,通過使用該引擎,只要添加自定義的藝術(shù)資源并添加自己的游戲代碼,就可以輕松獲得這些功能,從而實現(xiàn)一款游戲。Unity3D包括物理模擬、普通地圖、屏幕空間環(huán)境光照明暗處理、動態(tài)陰影等。許多游戲引擎都為自己的許多功能感到驕傲,但Unity3D與其他尖端游戲開發(fā)工具相比有兩個主要優(yōu)勢:提供極為高效的視覺工作流和多維跨平臺支持。可視化工作流是一種非常獨特的設(shè)計,它不同于其他大多數(shù)游戲開發(fā)環(huán)境。由于其他游戲開發(fā)工具通常會將不可避免會引起爭議的無關(guān)部分混合在一起,或者需要建立自己的編程類庫、構(gòu)建鏈等舊的集成開發(fā)環(huán)境設(shè)計,因此Unity3D中的開發(fā)工作流是通過精心設(shè)計的可視化編輯器來定位的。這些編輯器用于布局游戲中的場景,將藝術(shù)資源綁定在一起,并對交互式對象進(jìn)行編碼。這些編輯器的優(yōu)點在于,它們可以讓您快速高效地構(gòu)建專業(yè)和高質(zhì)量的游戲。當(dāng)你需要在視頻游戲中使用大量的新技術(shù)時,它們將為你提供難以置信的高效工具。編譯器對于快速迭代和在原型和測試周期中優(yōu)化游戲非常有用。您可以在編譯器中調(diào)整動物對象,甚至在游戲運(yùn)行時移動對象。此外,Unity3D允許您通過腳本自定義編輯器,因此可以向界面添加一些新功能或菜單。除了編譯器的優(yōu)點外,Unity3D的工具集成還提供了高度的跨平臺支持。它不僅在部署目標(biāo)上是跨平臺的(可以部署到PC、wed、移動設(shè)備或游戲機(jī)上),還包括跨平臺開發(fā)工具(可以在windows或MacOS上開發(fā)游戲)。API接口API接口Unity3D中有豐富的API接口可以幫助你完成各種需要的功能,API是預(yù)定義的函數(shù),應(yīng)用程序和開發(fā)人員都可以使用這些函數(shù)來訪問基于某些軟件或硬件的代碼功能使用,而不需要在源代碼中尋找,這樣會十分耗時,或者用于了解其中的工作機(jī)制,由于Unity自己的用戶量較多,許多人會提供自己優(yōu)質(zhì)的API函數(shù)方法,便于多數(shù)Unity初學(xué)者或找不到實現(xiàn)方法的人使用,這也使得Unity擁有一套完整的API函數(shù)庫,開發(fā)人員可以通過函數(shù)庫便捷的實現(xiàn)項目的一些初始化工作,而不需要自己打基礎(chǔ)的函數(shù)代碼,API函數(shù)庫中有許多功能模塊,如碰撞檢測的基本用法,音效播放的基本實現(xiàn)、人物動畫配置函數(shù),觸發(fā)區(qū)和非觸發(fā)區(qū)等判定方法,Unity開發(fā)的各種功能的基礎(chǔ)調(diào)用都有。物理引擎不管什么游戲,其設(shè)計都是需要使對象特征合理,讓游戲更為真實,實現(xiàn)身臨其境的效果,Unity中提供了各種各樣的組件和插件,目的就是為了可以讓游戲的對象通過渲染和色彩的變化、平行光、、點光源的擺放、游戲貼圖使用、文字、動畫加入、聲音的配置、材質(zhì)更換等,這些組件都可以增加游戲的真實性,為玩家?guī)硪曈X效果的真實,為人物、地圖、障礙物金幣等游戲?qū)ο筇砑咏M織實現(xiàn)阻力,碰撞檢測、碰撞阻礙及改變?nèi)宋镞\(yùn)動路線等,讓玩家有更真實地體驗,讓你覺得這是一個真實存在的物體。其中比較常用的組件如AudioSource、collider等Unity常用生命周期的函數(shù)Unity3D游戲開發(fā)引擎和常規(guī)程序開發(fā)不同在Main函數(shù)的入口運(yùn)行,它是在內(nèi)部實現(xiàn)Unity的生命周期事件,通過給各個生命周期賦予方法來實現(xiàn)游戲的基本生命周期,在Update中可以不斷地更新迭代這些生命周期函數(shù),從而實現(xiàn)游戲地不斷判定。下面介紹一些Unity中比較常用的事件函數(shù)。OnGUI():當(dāng)游戲結(jié)束失敗或勝利時通過該函數(shù)實現(xiàn)勝利或失敗地標(biāo)志顯示。Start():在游戲開始時運(yùn)行的事件如游戲暫停獲取其他物體參數(shù)為初始參數(shù)賦值等。Update():游戲幀事件,在其中寫入的方法和事件會不斷進(jìn)行無法被停止。OnClick():Unity自帶腳本功能,用于Button上的檢測實現(xiàn)游戲的物體隱藏和顯示,實現(xiàn)游戲的點擊場景跳轉(zhuǎn)和游戲菜單實現(xiàn)。OnEnable():在Start事件后調(diào)用,只有被激活的時候才會執(zhí)行。OnTriggerEnter():游戲碰撞檢測函數(shù),用于檢測游戲金幣及人物等碰撞的檢測。OnDestroy():在游戲中對游戲?qū)ο筮M(jìn)行銷毀通??梢詫懺谖矬w本身身上用于自身的銷毀,同時也可以對碰撞物體的銷毀,這種一般寫在角色身上。Unity3D中腳本多數(shù)是繼承Mono行為基類,通常不需要繼承該類來編寫一些工具類因為大多數(shù)類都已經(jīng)實現(xiàn),在Unity運(yùn)行的過程中都會存在,除非開發(fā)人員需要自己釋放內(nèi)存,否則不需要人為編寫工具類。GUI(圖形用戶界面)該項目中使用Unity自帶的UI開發(fā)工具即GUI。Unity的GUI系統(tǒng)稱為UnityGUI。UnityGUI使您能夠快速輕松地添加各種具有完整功能的界面元素,包括在創(chuàng)建GUI控件時的實例化、定位和功能定義。通過這種方式,您可以通過一次編寫少量代碼同時創(chuàng)建一個GUI接口元素實例,并在屏幕上找到實例的位置,描述激活接口元素時要執(zhí)行的腳本。UGUI內(nèi)置于Unity中。與NGUI相比,它是一個UI插件,Unity本身自帶的UI開發(fā)功能少了一些,因此可以導(dǎo)入NGUI的UnityUI的拓展插件,它可以提高開發(fā)者的界面設(shè)計速度以及加快游戲開發(fā)的進(jìn)程。3DsMax軟件3DsMax全稱是3DstudioMax,該軟件是由discreet公司開發(fā)的,主要用于電腦端的一些三維動畫制作以及三維模型制作,通常在游戲和一些設(shè)計領(lǐng)域使用較多,游戲開發(fā)中許多模型的骨骼以及模型的畫質(zhì)等都可以通過該軟件實現(xiàn)提升與拓展,在一些設(shè)計物體形狀中有十分大的幫助,可以不斷地進(jìn)行修改模型的點線面等,以及對模型進(jìn)行各種渲染實現(xiàn)物體的平滑,該軟件最初的目的是實現(xiàn)電腦游戲動畫的制作,然后再慢慢發(fā)展到如今,許多建造領(lǐng)域都或多或少需要了解,能為建造設(shè)計帶來許多便利而在這里只做簡單的介紹,由于游戲模型制作相對耗時,所以不選擇用3DsMax進(jìn)行建模,項目中的模型選自一些網(wǎng)上素材和Unity商城中,但為了保證模型在加載過程中不出現(xiàn)意外情況,將游戲模型導(dǎo)入該軟件中進(jìn)行核對,保證模型不會有過大的漏洞C#開發(fā)語言C#是當(dāng)今開發(fā)軟件以及游戲系統(tǒng)等常用的開發(fā)語言,是由微軟發(fā)布的高級編程語言,它與java語言的編寫代碼類似,但它有更強(qiáng)大的功能,因為Unity軟件實現(xiàn)的是跨平臺,而C#本身不是跨平臺的開發(fā)語言,但在Unity中C#可以通過Mono的重實現(xiàn),使得該語言可以在Unity中跨平臺使用,而且C#有許多優(yōu)點,相對其他開發(fā)語言來說,C#的語法更明了且各種類的庫使用方便,在Unity開發(fā)中C#明顯是一種首選的開發(fā)語言VisualStudio2017VisualStudio2017是現(xiàn)版本系統(tǒng)中較為常用的編程軟件,由微軟公司自主研發(fā),十分適合Unity的開發(fā)只需用using加入Unity本身的一些UI和UnityEngine便可以很快速地進(jìn)行代碼編寫,而且該軟件中支持集成開發(fā),也支持開發(fā)相應(yīng)的Windows程序,,VisualStudio中各種報錯提示以及編寫代碼的輔助功能都十分適合Unity開發(fā)。
游戲設(shè)計場景設(shè)計系統(tǒng)包括場景1_menu和場景gameScene,場景gameScene為游戲的主場景,即玩家進(jìn)行游戲的場景。場景中的對象有:地形:對象都在這上面進(jìn)行活動,還包括一些水流和波浪。游戲?qū)ο螅杭慈宋铩_浪板和金幣。特殊道具:有排球,人物角色拾取可以獲得少許能量。其他物體:障礙物。場景的制作Unity商城中尋找需要的地圖類型,由于考慮游戲本身在水中進(jìn)行,所以在商城中找到相應(yīng)的水流效果LowPolyWaterGPU,并導(dǎo)入進(jìn)項目中,通過網(wǎng)上教程制作游戲道路點擊EditDetails就可以為這些物體選擇相應(yīng)的貼圖。綜合運(yùn)用,就產(chǎn)生了本項目的地形,如圖3-1所示。圖3-1創(chuàng)建好的地形在游戲地圖中放置一些其他的游戲物體,用來豐富游戲場景,如金幣,障礙物,還有排球等,其中為水面上的金幣添加腳本使其旋轉(zhuǎn)便于玩家分辨和充實游戲了,只要玩家穿過金幣,就會獲得然后播放音效然后銷毀游戲?qū)ο螅鐖D3-2所示。圖3-2添加了游戲物體的游戲場景人物和沖浪板創(chuàng)建游戲人物及物體并導(dǎo)入游戲項目中,實現(xiàn)人物的運(yùn)動和人物跳躍管理導(dǎo)入模型首先將玩家控制的游戲?qū)ο笤O(shè)計出來,即主角,人物模型在項目前期已進(jìn)行收集,U3D支持的模型類型是fbx,所以在導(dǎo)入人物模型前可以將人物模型的格式確認(rèn),如果不是該類型可以將其導(dǎo)進(jìn)3DMax中再將其轉(zhuǎn)換為fbx類型格式,如此便可以導(dǎo)入到U3D中使用直接將模型拖入Project面板即完成導(dǎo)入,如圖3-3所示。圖3-3人物模型人物運(yùn)動的實現(xiàn)Unity中導(dǎo)入游戲角色對象,調(diào)整角色大小,為角色添加相應(yīng)的剛體Rigidbody以及碰撞體Collider保證角色有真實的物理屬性以及讓它能夠被游戲中的其他物體檢測Unity默認(rèn)的腳本編輯器設(shè)置為VS2017。當(dāng)人物的基本配置實現(xiàn)時,為它編寫玩家控制角色的運(yùn)動腳本moveController.cs,使玩家能夠控制角色的基本移動如左右移動和加速等,由于使用的方法類型為Horizontal,因此人物的基本移動可以通過鍵盤的上下左右和WADS控制,空格鍵對應(yīng)人物的跳躍人物無法進(jìn)行二次跳躍。移動使用的方法是transform.Translate(),加速的方法是moveVSpeed+=0.1f。usingUnityEngine;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem;publicclassmoveController:MonoBehaviour{//攝像機(jī)位置publicTransformcameraTransform;//攝像機(jī)距離人物的距離publicfloatcameraDistance;//游戲管理器publicGameManagergameManager;//前進(jìn)移動速度floatmoveVSpeed;//水平移動速度publicfloatmoveHSpeed=5.0f;//跳躍高度publicfloatjumpHeight=5.0f;//動畫播放器Animatorm_animator;//起跳時間doublem_jumpBeginTime;//跳躍標(biāo)志intm_jumpState=0;//最大速度publicfloatmaxVSpeed=8.0f;//最小速度publicfloatminVSpeed=5.0f;publicAudioClipimpact;AudioSourceaudioSource;//UsethisforinitializationvoidStart(){GetComponent<Rigidbody>().freezeRotation=true;m_animator=GetComponent<Animator>();if(m_animator==null)print("null");moveVSpeed=minVSpeed;audioSource=GetComponent<AudioSource>();} //Updateiscalledonceperframe voidUpdate(){//游戲結(jié)束if(gameManager.isEnd){Time.timeScale=0;}AnimatorStateInfostateInfo=m_animator.GetCurrentAnimatorStateInfo(0);if(stateInfo.fullPathHash==Animator.StringToHash("BaseLayer.run")){m_jumpState=0;if(Input.GetButton("Jump")){//起跳m_animator.SetBool("Jump",true);m_jumpBeginTime=m_animator.recorderStartTime;}else{//到地面}}else{doublenowTime=m_animator.recorderStartTime;doubledeltaTime=nowTime-m_jumpBeginTime;//掉下m_jumpState=1;m_animator.SetBool("Jump",false);}floath=Input.GetAxis("Horizontal");Vector3vSpeed=newVector3(this.transform.forward.x,this.transform.forward.y,this.transform.forward.z)*moveVSpeed;Vector3hSpeed=newVector3(this.transform.right.x,this.transform.right.y,this.transform.right.z)*moveHSpeed*h;Vector3jumpSpeed=newVector3(this.transform.up.x,this.transform.up.y,this.transform.up.z)*jumpHeight*m_jumpState;Vector3vCameraSpeed=newVector3(this.transform.forward.x,this.transform.forward.y,this.transform.forward.z)*minVSpeed;}}人物AI人物初始化運(yùn)動速度為5f,人物碰撞障礙物會導(dǎo)致速度減少,但相對的攝像機(jī)離人物較近且無障礙時,人物會加速行駛使其保持在屏幕中央。制作得分統(tǒng)計即Coins,在腳本中聲明一個公有數(shù)coins將它的初始值設(shè)為0,然后在賦予金幣的得分參數(shù),編寫一個得分腳本讓其統(tǒng)計Coin的數(shù)量并使其顯示在游戲界面的上方usingUnityEngine;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem;publicclassmoveController:MonoBehaviour{//攝像機(jī)位置publicTransformcameraTransform;//攝像機(jī)距離人物的距離publicfloatcameraDistance;//游戲管理器publicGameManagergameManager;//前進(jìn)移動速度floatmoveVSpeed;//水平移動速度publicfloatmoveHSpeed=5.0f;//跳躍高度publicfloatjumpHeight=5.0f;//動畫播放器Animatorm_animator;//起跳時間doublem_jumpBeginTime;//跳躍標(biāo)志intm_jumpState=0;//最大速度publicfloatmaxVSpeed=8.0f;//最小速度publicfloatminVSpeed=5.0f;publicAudioClipimpact;AudioSourceaudioSource;//UsethisforinitializationvoidStart(){GetComponent<Rigidbody>().freezeRotation=true;m_animator=GetComponent<Animator>();if(m_animator==null)print("null");moveVSpeed=minVSpeed;audioSource=GetComponent<AudioSource>();} //Updateiscalledonceperframe voidUpdate(){//游戲結(jié)束if(gameManager.isEnd){Time.timeScale=0;}AnimatorStateInfostateInfo=m_animator.GetCurrentAnimatorStateInfo(0);if(stateInfo.fullPathHash==Animator.StringToHash("BaseLayer.run")){m_jumpState=0;if(Input.GetButton("Jump")){//起跳m_animator.SetBool("Jump",true);m_jumpBeginTime=m_animator.recorderStartTime;}else{//到地面}}else{doublenowTime=m_animator.recorderStartTime;doubledeltaTime=nowTime-m_jumpBeginTime;//掉下m_jumpState=1;m_animator.SetBool("Jump",false);}floath=Input.GetAxis("Horizontal");Vector3vSpeed=newVector3(this.transform.forward.x,this.transform.forward.y,this.transform.forward.z)*moveVSpeed;Vector3hSpeed=newVector3(this.transform.right.x,this.transform.right.y,this.transform.right.z)*moveHSpeed*h;Vector3jumpSpeed=newVector3(this.transform.up.x,this.transform.up.y,this.transform.up.z)*jumpHeight*m_jumpState;Vector3vCameraSpeed=newVector3(this.transform.forward.x,this.transform.forward.y,this.transform.forward.z)*minVSpeed;this.transform.position+=(vSpeed+hSpeed+jumpSpeed)*Time.deltaTime;cameraTransform.position+=(vCameraSpeed)*Time.deltaTime;if(this.transform.position.x-cameraTransform.position.x<cameraDistance){moveVSpeed+=0.1f;if(moveVSpeed>maxVSpeed){moveVSpeed=maxVSpeed;}}//超過時讓攝像機(jī)趕上elseif(this.transform.position.x-cameraTransform.position.x>cameraDistance){moveVSpeed=minVSpeed;cameraTransform.position=newVector3(this.transform.position.x-cameraDistance,cameraTransform.position.y,cameraTransform.position.z);}//攝像機(jī)超過人物if(cameraTransform.position.x-this.transform.position.x>0.0001f){Debug.Log("你輸啦?。。。。。。。。?!");gameManager.isEnd=true;}//cameraTransform.position=newVector3(this.transform.position.x-cameraDistance,cameraTransform.position.y,cameraTransform.position.z);}voidOnGUI(){if(gameManager.isEnd){GUIStylestyle=newGUIStyle();style.alignment=TextAnchor.MiddleCenter;style.fontSize=40;style.normal.textColor=Color.red;GUI.Label(newRect(Screen.width/2-100,Screen.height/2-50,200,100),"你輸了~",style);}}voidOnTriggerEnter(Colliderother){//如果是抵達(dá)點if(.Equals("ArrivePos")){gameManager.changeRoad(other.transform);}//如果是透明墻elseif(other.tag.Equals("AlphaWall")){//沒啥事情}//如果是障礙物elseif(other.tag.Equals("Obstacle")){}}}沖浪板的設(shè)計與特效實現(xiàn)在Unity中創(chuàng)建長方形cube在3DMax中進(jìn)行修飾將其修整成前方為尖嘴形狀,為其尋找相應(yīng)的游戲貼入在3DMax中導(dǎo)入貼圖,在Project面板中新建一個Prefabs的文件夾將預(yù)制體命名為Surfboard3。同時,使用粒子系統(tǒng),制作出沖浪板的沖浪特效。在Hierarchy面板Create->CreateEmpty->ParticleSystem新建一個空對象命名為surfpoint,將該空對象放置在沖浪板尾部附近,調(diào)整好方向,如圖3-4所示。這里就是后面浪花產(chǎn)生的地方,將其位置稍微調(diào)高讓特效不至于被其他物體擋住而無法顯示。圖3-4設(shè)置浪花孵化點給沖浪的浪花添加音效,添加AudioSource組件,并使用AudioSource.Play()方法播放。usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclasssurfAudio:MonoBehaviour{AudioSourceaudioData;voidStart(){audioData=GetComponent<AudioSource>();audioData.Play(0);Debug.Log("started");}voidOnGUI(){if(GUI.Button(newRect(10,70,150,30),"Pause")){audioData.Pause();Debug.Log("Pause:"+audioData.time);}if(GUI.Button(newRect(10,170,150,30),"Continue")){audioData.UnPause();}}}障礙物與角色對象不一樣的是障礙物,將障礙物的模型導(dǎo)入,并其調(diào)整大小,并給它添加Ridgybody和BoxCollider。然后編寫腳本實現(xiàn)障礙物的阻礙功能。這里使用publicList<GameObject>objPrefabList=newList<GameObject>()列表來隨機(jī)初始化障礙物生成的位置,里面的參數(shù)表示在添加障礙物對象。publicList<Transform>arrivePosList=newList<Transform>();//障礙物列表publicList<GameObject>objPrefabList=newList<GameObject>();//目前的障礙物Dictionary<string,List<GameObject>>objDict=newDictionary<string,List<GameObject>>();
游戲中,當(dāng)攝像機(jī)距離小于人物離屏幕距離時,即游戲失敗之時,用Deastroy()方法控制地圖中越過的障礙物,同時障礙物數(shù)量進(jìn)行同步保證游戲的性能穩(wěn)定。voidinitRoad(intindex){stringroadName=roadList[index].name;//清空已有障礙物foreach(GameObjectobjinobjDict[roadName]){Destroy(obj);}objDict[roadName].Clear();//添加障礙物foreach(TransformposinbornPosList[index]){GameObjectprefab=objPrefabList[Random.Range(0,objPrefabList.Count)];Vector3eulerAngle=newVector3(0,Random.Range(0,360),0);GameObjectobj=Instantiate(prefab,pos.position,Quaternion.EulerAngles(eulerAngle))asGameObject;obj.tag="Obstacle";objDict[roadName].Add(obj);}使用Distance()方法判斷人物與屏幕之間的距離,當(dāng)距離大于0米且速度低于5時,人物速度逐漸增加,并使人物運(yùn)動到離攝像機(jī)距離為10時保持穩(wěn)定;當(dāng)人物運(yùn)動速度穩(wěn)定為5時人物不做加速運(yùn)動;當(dāng)攝像機(jī)超過人物時即人物距離攝像機(jī)小于0時游戲判斷失敗,游戲暫停人物無法運(yùn)動。if(this.transform.position.x-cameraTransform.position.x<cameraDistance){moveVSpeed+=0.1f;if(moveVSpeed>maxVSpeed){moveVSpeed=maxVSpeed;}}//超過時讓攝像機(jī)趕上elseif(this.transform.position.x-cameraTransform.position.x>cameraDistance){moveVSpeed=minVSpeed;cameraTransform.position=newVector3(this.transform.position.x-cameraDistance,cameraTransform.position.y,cameraTransform.position.z);}//攝像機(jī)超過人物if(cameraTransform.position.x-this.transform.position.x>0.0001f){Debug.Log("你輸啦!?。。。。。。。?!");gameManager.isEnd=true;}游戲中的碰撞檢測用OnTriggerEnter(Colliderother)方法檢測角色拾取金幣以及觸發(fā)金幣音效的互動,金幣同時也要檢測是否為人物拾取,增加角色的得分privatevoidOnTriggerEnter(Colliderother){if(other.tag=="Player"){moveControllercharacter=other.GetComponent<moveController>();source.PlayOneShot(OpenDoorSound,1F);//播放聲音if(character!=null){character.coins+=gems;Destroy(coin1);Destroy(c);Destroy(gameObject,1F);}}}游戲中當(dāng)人物拾取到金幣時通過OnTriggerEnter(Colliderother)方法做出相應(yīng)的得分變化,如果人物拾取到金幣則增加游戲得分,如果角色未拾取到金幣則不增加得分usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;publicclassScore:MonoBehaviour{TextscoreText;publicTextCoinNum;publicmoveControllermc;voidStart(){scoreText=this.GetComponent<Text>();Time.timeScale=0;}//UpdateiscalledonceperframevoidUpdate(){CoinNum.text=mc.coins+"coin";//scoreText.text="coins:"+moveController.coins.ToString();}publicvoidStartPlus(){Time.timeScale=1;}publicvoidWin(){if(mc.coins>=1000){GUIStylestyle=newGUIStyle();style.alignment=TextAnchor.MiddleCenter;style.fontSize=40;style.normal.textColor=Color.red;GUI.Label(newRect(Screen.width/2-100,Screen.height/2-50,200,100),"你贏了!",style);}Time.timeScale=0;}}地圖和地圖隨機(jī)生成通過GameManager將游戲中的地圖導(dǎo)入進(jìn)Unity中然后保存其prefab,編寫地圖生成列表以及地圖prefab生成列表,除此還需要對走完的地圖進(jìn)行銷毀,因此需要道路的銷毀列表。
usingUnityEngine;usingSystem.Collections;usingSystem.Collections.Generic;publicclassGameManager:MonoBehaviour{//道路列表publicList<Transform>roadList=newList<Transform>();//抵達(dá)點列表publicList<Transform>arrivePosList=newList<Transform>();//目前的障礙物Dictionary<string,List<GameObject>>objDict=newDictionary<string,List<GameObject>>();publicintroadDistance;publicboolisEnd=false; //Usethisforinitialization voidStart(){foreach(TransformroadinroadList){List<GameObject>objList=newList<GameObject>();objDict.Add(,objList);}initRoad(0);initRoad(1);} //Updateiscalledonceperframe voidUpdate(){ }//切出新的道路publicvoidchangeRoad(TransformarrivePos){intindex=arrivePosList.IndexOf(arrivePos);if(index>=0){intlastIndex=index-1;if(lastIndex<0)lastIndex=roadList.Count-1;//移動道路roadList[index].position=roadList[lastIndex].position+newVector3(roadDistance,0,0);initRoad(index);}else{Debug.LogError("arrivePosindexiserror");return;}}voidinitRoad(intindex){stringroadName=roadList[index].name;//清空已有障礙物foreach(GameObjectobjinobjDict[roadName]){Destroy(obj);}objDict[roadName].Clear();}}
添加背景音樂及游戲音效通過publicAudioSourceasource、publicSlidersd、Con_sound()方法給游戲添加背景音樂和游戲音效。金幣的音效通過source.PlayOneShot(OpenDoorSound,1F);表示該音效只播放一次usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;publicclassControl_sound:MonoBehaviour{publicAudioSourceasource;publicSlidersd;voidStart(){}//UpdateiscalledonceperframevoidUpdate(){}publicvoidCon_sound(){asource.volume=sd.value;}}
游戲界面設(shè)計菜單界面場景1為菜單界面,菜單界面包括開始游戲界面和設(shè)置界面,均使用NGUI插件制作。菜單界面功能PLAY按鈕:點擊該按鈕可以進(jìn)入游戲難度選擇,其中有三個難度分別為EASY、Normal、Hard三種游戲難度點擊EASY進(jìn)入游戲場景1、Normal、Hard分別對應(yīng)游戲場景2和3.在游戲菜單界面,當(dāng)鼠標(biāo)經(jīng)過按鈕時會有相應(yīng)的互動效果表示給玩家,且鼠標(biāo)點擊時也會有顏色的透明度互動表示玩家點擊了該按鈕Option按鈕:點擊該按鈕進(jìn)入游戲的配置界面,玩家可以調(diào)整游戲本身的音效以保證適合自己,其中BACk按鈕即設(shè)置完成后回到主菜單。BACk按鈕:當(dāng)玩家設(shè)置完成時可以點擊Back按鈕返回主菜單設(shè)置的音效會同步玩家設(shè)置QUIT按鈕:點擊該按鈕退出游戲。圖4-1游戲開始界面圖4-2游戲設(shè)置界面菜單界面的制作制作菜單界面時,需要創(chuàng)建一個新的場景再Assets的Sence中創(chuàng)建新場景并命名為1_menu,再Unity的buildandsetting中可以將該場景設(shè)為場景0,導(dǎo)入菜單制作所需的素材和腳本,再點擊Create->UI->image,創(chuàng)建一張圖片作為界面的背景,如圖4-3所示。然后通過資源將背景圖片導(dǎo)入Unity中并Inspector面板設(shè)置其屬性將它設(shè)置為sprite(2DandUI),如圖4-4所示。然后在Inspector面板上將導(dǎo)入的素材背景圖片拖入image中并調(diào)整圖片大小使其適合攝像機(jī)的范圍。圖4-3用UGUI創(chuàng)建的背景圖4-4背景設(shè)置然后點擊Create->UI->Button創(chuàng)建游戲按鈕由于游戲本身按鈕顏色為白色,通過調(diào)整顏色使其顏色相對較為適合游戲主題,添加按鈕文字在Button->Test中,修改文本信息,并調(diào)整文本大小進(jìn)行適當(dāng)?shù)募哟忠约拔谋敬笮≌{(diào)整,然后安裝文本插件TextMeshPro調(diào)整文本顏色使其更為鮮艷,其它的按鈕創(chuàng)建一樣。所有按鈕創(chuàng)建完后,把他們放進(jìn)一個新建的空對象中并命名為MainMenu。將其余按鈕通過按ALT鍵且點擊RectTransform面別中的AnchorPresets,使其居中再對三個按鈕位置進(jìn)行上下調(diào)整,使當(dāng)前三個按鈕都置于屏幕中央位置。圖4-5按鈕的創(chuàng)建創(chuàng)建一個新的空對象將其命名為Option,如上邊創(chuàng)建其他的一樣,然后再Create->UI中找到Slider創(chuàng)建,該UI自帶Slider滑動條用于調(diào)節(jié)游戲音量。圖4-6設(shè)置面板然后創(chuàng)建腳本Control_sound.cs來處理玩家與游戲界面的交互。這里實現(xiàn)游戲音效有效變化。usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;publicclassControl_sound:MonoBehaviour{publicAudioSourceasource;publicSlidersd;publicvoidCon_sound(){asource.volume=sd.value;}}這里使用Button自帶的腳本來實現(xiàn)菜單界面、難度選擇界面和游戲設(shè)置界面的切換,其中包括游戲進(jìn)行中的游戲暫停以及游戲設(shè)置和返回游戲等功能,使用OnButtonClick方法處理按鈕的點擊。usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.SceneManagement;publicclassMainmenu:MonoBehaviour{publicvoidPlayGame(){SceneManager.LoadScene(1);}publicvoidPlayGame1(){SceneManager.LoadScene(2);}publicvoidPlayGame2(){SceneManager.LoadScene(3);}publicvoidresume(){Time.timeScale=1;}publicvoidBackMenu(){SceneManager.LoadScene(0);}publicvoidQuitGame(){Debug.Log("QUIT!");Application.Quit();}游戲結(jié)束界面游戲結(jié)束界面使用UnityUI制作。游戲結(jié)束界面功能玩家拾取目標(biāo)數(shù)金幣時,判斷游戲勝利,UI上方的文本Text顯示為:你贏了。玩家被卡在屏幕外時,判斷游戲失敗,UI上方的文本Text顯示為:你輸了~。重玩按鈕:點擊AGAIN按鈕,重新加載游戲。設(shè)置按鈕:點擊Option按鈕,進(jìn)入設(shè)置菜單。設(shè)置菜單用來調(diào)節(jié)游戲音效。菜單按鈕:點擊Quit按鈕,回到場景0,即菜單界面。圖4-7游戲結(jié)束界面游戲失敗界面制作通過Unity自帶的UI制作GUI界面在Create界面中創(chuàng)建UI->button,創(chuàng)建三個游戲按鈕分別用來實現(xiàn)游戲的再次進(jìn)行和游戲設(shè)置以及游戲返回主菜單,將三個Button的錨點居中然后再進(jìn)行上下調(diào)整,然后將創(chuàng)建好的按鈕以及文本等UI放置在新創(chuàng)建的空對象DeadMenu中方便管理創(chuàng)建publicGameObjectDead、Dead.SetActive(true)、publicGameObjectWin、Win.SetActive(true)方法通過添加相應(yīng)的DeadMenu、WinMeun來顯示游戲結(jié)束菜單,同樣的游戲勝利時分別調(diào)用。voidOnGUI(){if(gameManager.isEnd){GUIStylestyle=newGUIStyle();style.alignment=TextAnchor.MiddleCenter;style.fontSize=40;style.normal.textColor=Color.red;GUI.Label(newRect(Screen.width/2-100,Screen.height/2-50,200,100),"你輸了~",style);}}publicvoidWin(){if(mc.coins>=1000){GUIStylestyle=newGUIStyle();style.alignment=TextAnchor.MiddleCenter;style.fontSize=40;style.normal.textColor=Color.red;GUI.Label(newRect(Screen.width/2-100,Screen.height/2-50,200,100),"你贏了!",style);}Time.timeScale=0;}接下來給游戲結(jié)束界面添加相應(yīng)的效果以及音效使其有相對的氣氛。圖4-8游戲音效添加給重玩按鈕和菜單按鈕添加點擊事件。publicvoidPlayGame(){SceneManager.LoadScene(1);}publicvoidBackMenu(){SceneManager.LoadScene(0);}暫停界面游戲主界面均使用UGUI制作,左上方顯示游戲按鈕功能,中上方顯示獲得金幣數(shù)量中間部分顯示相應(yīng)的游戲繼續(xù)進(jìn)行以及游戲設(shè)置和游戲返回主菜單按鈕界面功能按P鍵游戲暫停當(dāng)玩家需要休息時以及要退出游戲時可以使用,暫停游戲圖4-9暫停界面暫停界面的制作首先如菜單一樣創(chuàng)建相應(yīng)的游戲按鈕Create->UI->Button創(chuàng)建三個按鈕修改按鈕文本以及調(diào)整按鈕的圖片樣式顏色選擇相對適合暫停界面的顏色,然后如圖4-10所示在按鈕中添加相應(yīng)的OnClick方法,實現(xiàn)有效的菜單跳轉(zhuǎn)以及場景跳轉(zhuǎn)。圖4-10暫停菜單按鈕配置usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.SceneManagement;publicclassPausemenu:MonoBehaviour{publicvoidPlayGame(){SceneManager.LoadScene(1);}publicvoidPlayGame1(){SceneManager.LoadScene(2);}publicvoidPlayGame2(){SceneManager.LoadScene(3);}publicvoidresume(){Time.timeScale=1;}publicvoidBackMenu(){SceneManager.LoadScene(0);}if(Input.GetKeyDown(KeyCode.P)){Time.timeScale=0;Menu.SetActive(true);}金幣金幣功能通過拾取地圖中的金幣獲得更多的得分和游戲的勝利金幣的制作在Unity商城中獲得所需要的Coins,游戲中Coins分為三種金幣、銀幣、銅幣對應(yīng)相應(yīng)的得分5、3、1。在GameManger中添加相應(yīng)的游戲金幣生成列表即bornCoinList,和對應(yīng)金幣類型列表CoinPrefabList并且為金幣生成的點進(jìn)行排列使其生成在適合位置,然后在Inspector面板中加入三種金幣類型具體如下圖:圖4-10添加金幣類型//生成金幣列表publicList<Transform>bornCoinList=newList<Transform>();//金幣列表publicList<GameObject>CoinPrefabList=newList<GameObject>();//添加金幣foreach(TransformposinbornCoinList[index]){GameObjectprefab=CoinPrefabList[Random.Range(0,CoinPrefabList.Count)];Vector3eulerAngle=newVector3(0,Random.Range(0,360),0);GameObjectobj=Instantiate(prefab,pos.position,Quaternion.EulerAngles(eulerAngle))asGameObject;obj.tag="Obstacle";objDict[roadName].Add(obj);}在工程項目中創(chuàng)建一個空對象并且命名為GoldCoin,另外兩種金幣類型分別命名為SilverCoin、CopperCoin,然后將游戲prefab的金幣進(jìn)行調(diào)試將其rotation的Z軸旋轉(zhuǎn)90度使其立起來,同理另外兩中也是如此,然后將其保存在原來的prefab上調(diào)整金幣大小為100,然后添加金幣音效使角色拾取到金幣使觸發(fā),使人物
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度地質(zhì)勘探現(xiàn)場錄像記錄合同4篇
- 2025年度智能辦公系統(tǒng)開發(fā)與IT技術(shù)支持服務(wù)協(xié)議3篇
- 二零二五年度知識產(chǎn)權(quán)背景下的股權(quán)轉(zhuǎn)讓合同3篇
- 專業(yè)?;愤\(yùn)輸委托合同書版B版
- 二零二五年度綠色家居裝修綠植租賃與室內(nèi)裝飾服務(wù)協(xié)議4篇
- 2024西藏自治區(qū)建設(shè)工程施工合同范本
- 2024碎石原料供應(yīng)鏈優(yōu)化與升級合同
- 2023-2024學(xué)年高中信息技術(shù)選修2(浙教版2019)-網(wǎng)絡(luò)基礎(chǔ)-說課稿-2.2-網(wǎng)絡(luò)體系結(jié)構(gòu)與TCPIP協(xié)議
- 2025年度智能家居產(chǎn)品貼牌代工及銷售合同4篇
- 二零二五年度毛紗產(chǎn)業(yè)創(chuàng)新發(fā)展基金投資合同4篇
- 市政道路工程交通疏解施工方案
- 2024年部編版初中七年級上冊歷史:部分練習(xí)題含答案
- 拆遷評估機(jī)構(gòu)選定方案
- 床旁超聲監(jiān)測胃殘余量
- 上海市松江區(qū)市級名校2025屆數(shù)學(xué)高一上期末達(dá)標(biāo)檢測試題含解析
- 綜合實踐活動教案三上
- 《新能源汽車電氣設(shè)備構(gòu)造與維修》項目三 新能源汽車照明與信號系統(tǒng)檢修
- 2024年新課標(biāo)《義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)》測試題(附含答案)
- 醫(yī)院培訓(xùn)課件:《靜脈中等長度導(dǎo)管臨床應(yīng)用專家共識》
- 中國國際大學(xué)生創(chuàng)新大賽與“挑戰(zhàn)杯”大學(xué)生創(chuàng)業(yè)計劃競賽(第十一章)大學(xué)生創(chuàng)新創(chuàng)業(yè)教程
- 鋼管豎向承載力表
評論
0/150
提交評論