unity3d從入門(mén)到精通本書(shū)是國(guó)內(nèi)第一本以面向?qū)ο蠛晚?xiàng)目流程開(kāi)發(fā)角度全面系統(tǒng)介紹_第1頁(yè)
unity3d從入門(mén)到精通本書(shū)是國(guó)內(nèi)第一本以面向?qū)ο蠛晚?xiàng)目流程開(kāi)發(fā)角度全面系統(tǒng)介紹_第2頁(yè)
unity3d從入門(mén)到精通本書(shū)是國(guó)內(nèi)第一本以面向?qū)ο蠛晚?xiàng)目流程開(kāi)發(fā)角度全面系統(tǒng)介紹_第3頁(yè)
unity3d從入門(mén)到精通本書(shū)是國(guó)內(nèi)第一本以面向?qū)ο蠛晚?xiàng)目流程開(kāi)發(fā)角度全面系統(tǒng)介紹_第4頁(yè)
unity3d從入門(mén)到精通本書(shū)是國(guó)內(nèi)第一本以面向?qū)ο蠛晚?xiàng)目流程開(kāi)發(fā)角度全面系統(tǒng)介紹_第5頁(yè)
已閱讀5頁(yè),還剩225頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本書(shū)是國(guó)內(nèi)第一本以面向?qū)ο蠛晚?xiàng)目流程開(kāi)發(fā)角度,全面系統(tǒng)介紹Unity3D的書(shū)籍。本書(shū)以具體項(xiàng)目結(jié)構(gòu)開(kāi)發(fā)的角度,結(jié)合Unity3D層級(jí)式的綜合開(kāi)發(fā)環(huán)境、視覺(jué)化編輯、詳分段手法來(lái)向大家詳盡闡述概念和使用方法,在程序編寫(xiě)方面以以O(shè)OP【面向?qū)ο蟪绦蛟O(shè)的精髓所在,當(dāng)你把這一點(diǎn)領(lǐng)悟透徹之后,會(huì)發(fā)現(xiàn)不論你利用Unity3D進(jìn)行何種方面的開(kāi)發(fā),都是相互貫通、渾然一體的,從而再進(jìn)行學(xué)習(xí)或開(kāi)發(fā),就會(huì)駕輕就熟,如腳踏5部分:組件開(kāi)發(fā)。附書(shū)光盤(pán)內(nèi)容為書(shū)中實(shí)例源文件和本書(shū)中重點(diǎn)操作演示。 語(yǔ)言體系良好的解決了多系統(tǒng)跨平臺(tái)直接協(xié)同的問(wèn)題。可以說(shuō)是今年一款十分方便易引擎,一直以來(lái)的市場(chǎng)支持度并不是太高,但今年有所不同。隨著Joy在Unity3D最早是一款運(yùn)行在蘋(píng)果系統(tǒng)下的軟件,一直以來(lái)對(duì)蘋(píng)果系列都有游戲產(chǎn)品高額回報(bào)率。就拿最經(jīng)典的熱銷游戲《的小鳥(niǎo)》來(lái)說(shuō)吧,2011年1月份的量是7500萬(wàn),3月份是1億,截至到4月27日已經(jīng)達(dá)到了1.4億的量,每個(gè)0.991.386億美金,而且該開(kāi)發(fā)團(tuán)隊(duì)還在繼續(xù)向前,不斷的推出小鳥(niǎo)的更新版本,的小鳥(niǎo)也在不斷的續(xù)寫(xiě)著!所以說(shuō),作為Unity3D的開(kāi)發(fā)者,很有可能你就會(huì)在這場(chǎng)風(fēng)暴中,一個(gè)不的就變?yōu)榱藘|萬(wàn)。筆者也非常愿意看到這一幕的出現(xiàn),也不枉費(fèi)筆者的良苦用心,寫(xiě)了這么一厚本書(shū),o(∩_∩)o哈哈。者的信心。一些少有的意志堅(jiān)定者,可能在經(jīng)歷了漫長(zhǎng)過(guò)程之后,會(huì)學(xué)得小有所成,Unity3DUnion的使讀者在了解Unity3D的同時(shí),更好的把握Unity3D游戲的制作思想。其在Unity3D中的運(yùn)用。D未來(lái)的發(fā)展規(guī)劃,并充分的了Unity3D所潛在的力量,并開(kāi)始研究其架構(gòu),積累了筆者在電子工業(yè)的大力協(xié)助下,以嚴(yán)謹(jǐn)?shù)膶W(xué)術(shù)態(tài)度撰寫(xiě)本書(shū)。筆者衷心期望,者,但的是對(duì)Unity3D完全茫然的者,以及準(zhǔn)備從CGDesigner(CG建模設(shè)計(jì)師)轉(zhuǎn)向Unity3DProgramer(Unity3D程序設(shè)計(jì)師)的新手。更有廣大的以前從事圖形編程設(shè)計(jì)的程序員,這里面包括了Flash3D、Java3D、OGRE、虛幻引擎等等的,擁有良好的OOP的一本“Basedontheprojectdevelopmentlearning”【基于實(shí)例開(kāi)發(fā)學(xué)習(xí)】書(shū)籍,讓你對(duì)ewBehaviourScriptNumberUiyD程Mnormrk使it于C#Ja程序員都能夠駕輕就迅速掌握和使用它;在圖形特效方面,U3DSab還提供了對(duì)gLaesdys類型以獲得廣大的兼容性。第2部分:組件使用、編寫(xiě)與項(xiàng)目設(shè)計(jì)容的綜合型創(chuàng)作工具。Unity類似于Director,Blendergameengine,VirtoolsTorqueGameBuilder等利用交互的圖型化開(kāi)發(fā)環(huán)境為首要方式的軟件其編輯器運(yùn)行在Windows和MacOSX下,可發(fā)布游戲至Windows、Mac,Wii或平臺(tái)。也可以利用Unitywebyer插件發(fā)布網(wǎng)頁(yè)游戲,支持Mac和Windows的網(wǎng)頁(yè)瀏覽。它的網(wǎng)頁(yè)器也被Macwidgets雖然很多主流的三維建模軟件為Unity所支持,不過(guò)對(duì)于3dsMax、Maya、Blender、CinemaMotionbuildr同時(shí)發(fā)布了FilmBox1.0,F(xiàn)BX2004年AliasKayDara公司收購(gòu)了,從此擁有了FBX技術(shù)?,F(xiàn)在FBX有兩個(gè)研發(fā)中心,一個(gè)位于的,一個(gè)位于中國(guó)。FBX相比傳統(tǒng)的模型格式文件,除了對(duì)頂點(diǎn)、片段、材質(zhì)等信息數(shù)據(jù)的支持外,它還對(duì)骨骼綁定動(dòng)畫(huà)有著良好的FBX已經(jīng)提供了比較良好的軟件I/,對(duì)ya、3dsa、udbox、oftiage、oxik、otionBuilerBX還提供了一整套跨平臺(tái)基于CPPK持BX的3D建模軟件中的場(chǎng)景文件,通過(guò)XSK到我們自己的游戲引擎中。另外如果你安裝了uicktieBX插件,那么你就可以用uicktieBX了。(Ecma-334和Ecma-335)的.NET工具,包括C#編譯器和共通語(yǔ)言運(yùn)行平臺(tái)。與微軟的.NETFramework不同,Mono項(xiàng)目不僅可以運(yùn)行于Windows系統(tǒng)上,還可以運(yùn)行于Linux,BSD,Unix,MacOSX和Solaris?!獊?lái)自百科在項(xiàng)目版本控制方面,使用的是自帶的TheUnityAssetServer,避免了重新學(xué)習(xí)另外音效系統(tǒng)基于OpenAL程式庫(kù),可以O(shè)ggVorbis的壓縮音效。采用Theora編碼。內(nèi)建地型編輯器,支持樹(shù)木與植被貼片。內(nèi)建Lightmap以及Globalillumination。多人網(wǎng)絡(luò)連線采用Raknet。發(fā)的游戲在蘋(píng)果商店獲得利潤(rùn)。第1部分Unity3D第1章Unity3D的基本及功能介應(yīng)用Unity3D軟件。Unity3D3Dnity3DUnity3D另外筆者要在這里提醒一下建模設(shè)計(jì)師,可能在原先的行業(yè)里面已經(jīng)將3DSX、Maya等建模軟件摸索得相當(dāng)熟練了,但游戲場(chǎng)景和影視場(chǎng)景還是存在很大的差異。首1-1Unity3D2by3Unity3D最為常用的幾【【除了Unity3D“AddTab”按鈕和菜單欄中的“Wghtmap”和“OccllusionCulling”面板對(duì)游戲的后期優(yōu)化尤為管用。除此而外還有用源】、【游戲?qū)ο蟆?、ponent【組件】、Terrain【地形】、Window【窗口】、HeNewSceneSaveSceneSaveSceneas…【場(chǎng)景另存為…NewProjectOpenProject…SaveProject何種方式發(fā)布,發(fā)布的場(chǎng)景文件又包含那些Build&Run【創(chuàng)建并運(yùn)行】(這里以“BuildSettings置好的方式,發(fā)布并運(yùn)行游戲ExitUndoRedoCutCopyPasteDuplicate【DeleteFrameSelectedSelectAll… 放PauseStep【逐幀游戲ProjectSettings【工程文件設(shè)置】(包含了該工程項(xiàng)目的“Inp“Scrip周圍的霧化程度,環(huán)境顏色等等一系列參數(shù)的設(shè)定件條件下的游戲顯示質(zhì)量Snapsettings【捕捉設(shè)置(3DsMaxAssetsavaScriptPrefabShowinExplorImportNewAsset..ImportPackage...ExportPackage...SelectDependenciesExportcompressedaudiofile...RefreshReimportReimportAll【“【【程程【【“【【程程【SyncMonoDevelopProject【與MonoCreateEmptyCreateOther【創(chuàng)建其他組件(包含了“ParticleSystem”【粒子系統(tǒng)】、“CameraGUIText”【圖形用戶界面文CenterOnChildrenMakeParent【創(chuàng)建父集(必須選擇兩個(gè)以上的物體才能使用象的子集間的父子級(jí)關(guān)系A(chǔ)pplyChangesToPrefab【改變影響預(yù)制物體】(如果你在場(chǎng)體,除非你點(diǎn)擊該按鈕MoveToView【移動(dòng)物體到“SceneAlignWithView【移動(dòng)物體到“SceneAlignViewtoSelected【移動(dòng)“Scene“Mes霧、激光、火焰等效果的首選?!癊llipsoidParticleEmitter“ParticleAnimatorWorldParticleColliderRenderingMiscellaneous Camera-Control【機(jī)控制CreateTerrain【面子【【面子【ImportHeightmap-Raw...ExportHeightmap-Raw...SetResolution...CreateLightmap... ceTrees...FlattenHeightmap...【高度圖RefreshTreeandDetailPrototypesNextWindowPreviousWindowLayoutsSceneGameProjectAssetStoreAssetServerLightmap【燈影視圖窗口OcclusionCullingConsoleAboutUnity...UnityEnterserialnumber...UnityManual【UnityReferenceManualScriptingManual【手冊(cè)What’sNew【功能UnityForum【UnityUnityAnswers【Unity答疑UnityFeedback【UnityeScreenCheckforUpdatesReleaseNotes【說(shuō)明ReportabugUnity3DUnity3D的學(xué)習(xí)版是完全免費(fèi)的。在彈出的“InternetActivation”框中選擇“Interneta權(quán)方式。這里的郵箱地址請(qǐng)你務(wù)必認(rèn)真填寫(xiě),日后你可以憑此帳號(hào)Unity3d相應(yīng)版本專切工作做完之后,軟件將自動(dòng)關(guān)閉圖1-2所示連接框,回到軟件的編輯畫(huà)面用期限。30天試用完之后你的軟件仍然處于未狀態(tài)的話,系統(tǒng)將不允許你再試用Unity3D產(chǎn)品。3.0到3.3的正式版中,自帶的Demo就是網(wǎng)上展示的那款強(qiáng)大的第一人稱射擊游戲BootcaUnity3D就會(huì)看見(jiàn)自帶的那個(gè)demo項(xiàng)目文件。但如果Unity3D并沒(méi)有打開(kāi)這個(gè)項(xiàng)目文件,你可以在Unity3D里的“File”菜單下點(diǎn)擊“OpenProject…”,在隨后彈出的“Unity–ProjectWizard”框中點(diǎn)擊“OpenOther…”按鈕,在“C:\sandSettings\AllUs 么都沒(méi)有顯示的的話,請(qǐng)?jiān)赑roject【項(xiàng)目文件欄】雙擊場(chǎng)景文件“Bootcamp”。稍等片刻之后,該舞臺(tái)場(chǎng)景的所有對(duì)象就可導(dǎo)入舞臺(tái)場(chǎng)景面板中。導(dǎo)入成功之后效果如圖1-3所示:點(diǎn)擊一下中間 按鈕做一下測(cè)試(如果你的機(jī)器配置不是太高,可能等待時(shí)間會(huì)稍長(zhǎng)。過(guò)了不一會(huì),你就可以在Game【動(dòng)畫(huà)面板】中看到一個(gè)正在運(yùn)行的射擊游陰影如圖1-4所示。來(lái)將畫(huà)質(zhì)進(jìn)一步調(diào)高,如圖1-5所示。許多。圖1-6為畫(huà)質(zhì)調(diào)高前的效果,圖1-7是畫(huà)質(zhì)調(diào)高后的效果。圖1-6畫(huà)質(zhì)調(diào)高 圖1-7畫(huà)質(zhì)調(diào)高Snap3D3D程序的編程人員,在一個(gè)項(xiàng)目開(kāi)始之nity3D場(chǎng)景布置的快速學(xué)習(xí)當(dāng)中去。、首先去的這個(gè)/support/resources/tutorials/2d-gamey-t但筆者并不打算給大家講述2DGameyTutorial的,所以大家不需要2DGameplayTutorial.pdf這個(gè)文件,當(dāng)然你也可以有選擇性的下來(lái)學(xué)習(xí)。件打開(kāi)之后點(diǎn)擊“File”——>“OpenProject…”,在彈出的“Unity–ProjectWizard”對(duì)話框中找到“OpenOther...”按鈕,輸入創(chuàng)建項(xiàng)目的文件夾地址,或者找到對(duì)應(yīng)的文件夾之、載入完畢之后,它可能會(huì)自動(dòng)打開(kāi)2Dtformer游戲場(chǎng)景,你可以點(diǎn)間的播—“NewSceneCtrl+N②在1選中預(yù)Project【項(xiàng)目文件欄】中展開(kāi)“LevelPrefabs”文件夾,②在1選中預(yù)以使用快捷鍵Shift+V的組合,來(lái)切換切合點(diǎn)選取狀模式。又要用到我們可愛(ài)的Snap了,但這里不是設(shè)置貼合頂點(diǎn),而是間距,所以會(huì)有所不同。在菜單欄中找到“Edit”——>“SnapSettingsSnapSettings【捕捉設(shè)置】面板,這里面大家會(huì)看到一個(gè)MoveXMoveYMoveZ輸入框、一個(gè)縮放或旋轉(zhuǎn)物體時(shí)的最小吸附單位。另外在最下面還有一排改變物體中心軸的按鈕,其中的“SnapAllAxes或是Hierarchy【層次欄】中選中現(xiàn)有的“Movingtform”對(duì)象,然后在菜單欄中找到“Edit”——>“Duplicate”或使用快捷鍵Ctrl+D來(lái)一個(gè)當(dāng)前選中的對(duì)象“Moving的方法,你就可以出第二個(gè)、第三個(gè)、第四個(gè)……斷格物體,如圖1-14所示。 機(jī) 機(jī)的視口能觀測(cè)到整個(gè)場(chǎng)景捷鍵E來(lái)旋轉(zhuǎn)機(jī)到一個(gè)合適的角度,如圖1-16所示。、但這時(shí)候的場(chǎng)景略顯得了些,我們?cè)诓藛螜谥悬c(diǎn)擊“Edit”——>“RenderSe如圖1-17所示。②在②在Inspecto將AmbientL調(diào)節(jié)為最亮1菜單欄中erProject【項(xiàng)目文件欄】中展開(kāi)“LevelPrefabs”文件夾,將預(yù)置物體“Character(Lerpz)”拖放到場(chǎng)景中的鋼板上面,然后點(diǎn)擊運(yùn)行按鈕,在Game【游2Unity3D引擎將這些元素都考慮進(jìn)去了,讓你在制作地形時(shí)游刃有余。本章主要就是來(lái)為你講述Unity3D的內(nèi)形系統(tǒng)以及相關(guān)組件的。除了上述講到的知識(shí)而外,在本章還會(huì)牽涉到利用PhotoShop通道的來(lái)為樹(shù)木制作樹(shù)Shader之間的關(guān)系等等方面的知識(shí)。由于涉及的后點(diǎn)擊“File”——>“NewProject…”,在彈出的“Unity–ProjectWizard”框中找到“ProjectLocation:”輸入創(chuàng)建項(xiàng)目的文件夾地址,或者點(diǎn)擊后面的“Browse…”選擇一個(gè)且非空的文件夾也不能當(dāng)作新創(chuàng)建項(xiàng)目的文件夾來(lái)使用。),然后在“Importthefollowingpackages:”中選擇要導(dǎo)入的項(xiàng)目文件包,每個(gè)文件包都帶有一些插件功能。由于我們第一Unity3D項(xiàng)目文件的時(shí)候,我們只勾選需要使用到的包就可以了,如圖2-1所示。全部設(shè)置好之后,我們點(diǎn)擊、在創(chuàng)建一個(gè)新項(xiàng)目之后,我們會(huì)看見(jiàn)新項(xiàng)目的各個(gè)面板中,只有Project【項(xiàng)目文件欄】包含了“StandardAssets”和“StandardAssets()”兩個(gè)文件夾,這兩個(gè)文件夾里“Terrain”——>“CreateTerrain”創(chuàng)建一個(gè)帶有地形屬性的平面,如圖2-2所示。但我們、點(diǎn)擊菜單欄上的“GameObject”——>“CreateOther”——>“Camera”,在場(chǎng)景中創(chuàng)建一個(gè)機(jī),這時(shí)你就可以在Game【動(dòng)畫(huà)面板】中到機(jī)所觀察到的景象了,如圖2-3所示。、點(diǎn)擊菜單欄上的“GameObject”——>“DirectionalLight”創(chuàng)建一個(gè)平行光來(lái)模擬的角度有關(guān)。使用場(chǎng)景調(diào)整工具的旋轉(zhuǎn)按鈕將剛添加進(jìn)來(lái)的“Directionallight”調(diào)整到一個(gè)合適的角度,如圖2-4所示。的物體對(duì)象。在菜單欄上點(diǎn)擊“Terrain”——>“SetResolution…”彈出“SetHeightmapresolution”面板來(lái)調(diào)節(jié)地面的大小。在“TerrainWidth”的后面將數(shù)字改成500,然后再在“TerrainLength”的后面將數(shù)字改成500,設(shè)置好之后點(diǎn)擊“SetResolution”按鈕來(lái)將原來(lái)的地形改成500*500大小的地形。以及地面對(duì)象固有的“errain(Script”和“TerrainCollider2-5所示:“errai(Script質(zhì)的。我們點(diǎn)擊它之后,可以在下面找到“EditTextures…”按鈕,點(diǎn)擊“EditTextures…”——>“AddTexture”來(lái)到“AddTerrainTexture2-6XXYY對(duì)貼圖效果不滿意,可以繼續(xù)點(diǎn)擊“EditTextures…”——>“EditTextures…”彈出“EditTerrainTexture”窗口來(lái)繼續(xù)修整地形貼圖。、繼續(xù)點(diǎn)擊“EditTextures…”——>“AddTexture”來(lái)為單調(diào)的地形添加一個(gè)復(fù)合1——形添加一個(gè)中選中剛才添Brus您想要的④設(shè)置“BrushSize”【筆刷尺寸】、“Opacity”【不】以較的山峰進(jìn)行柔滑,使山峰看上去更平緩,圖2-11展示了使用該筆刷對(duì)第一個(gè)按鈕刷Shift鍵不放,用剛才的筆刷進(jìn)行反向凹刷,但你會(huì)發(fā)現(xiàn)當(dāng)你反向刷到原欄上的“Terrain”——>“FlattenHeightmap...”打開(kāi)“FlattenHeightmap”窗口,設(shè)置里面是高度圖的導(dǎo)入與導(dǎo)出。在現(xiàn)代、地質(zhì)勘探等對(duì)地形高度信息要求比較高的專業(yè)領(lǐng)域,Unity3D的高度圖只支持一種Raw的無(wú)損格式,而傳統(tǒng)的JGP等格式的都會(huì)3DMaxHeightMapRawUnity3D打造個(gè)性化的地形時(shí),帶來(lái)了一定。但這并不能成為我們繼續(xù)學(xué)習(xí)它的。Unity3DHeightMap來(lái)作為參考,所以根據(jù)前面一節(jié)所學(xué)Terrain之后,全部該地形在被選中的情況下,點(diǎn)擊菜單欄中的“Terrain”——>“ExportHeightmap-Raw...”【導(dǎo)出高度圖】,在彈出的“ExportHeightmap”窗口中將“ByteOrder”選擇為Win,然后點(diǎn)擊“Export”按鈕,將其為T(mén)errain.raw的文檔。②在參數(shù)卷展②在參數(shù)卷展欄中設(shè)置長(zhǎng)度和寬度與地形段數(shù)也和長(zhǎng)③在頂視圖點(diǎn)擊鼠標(biāo)右 用繪制等方法來(lái)調(diào)整地形的高度,如圖2-15所示。②在投影卷展欄②在投影卷展欄中按下“平面貼圖”按鈕,對(duì)齊方向選擇Y軸應(yīng)上,面片拉伸到整個(gè)貼圖空間,如圖2-17所示。然后關(guān)閉UV編輯器。Color1Color32-Blinn100,這是為了避免其F9渲染我們地形的高度圖,最后得到如圖2-19的效果。然后點(diǎn)擊保存按鈕,將高度圖保存為JPG格式。Ctrl+A,使用鼠標(biāo)將其拖入Raw的各個(gè)通道、用PhotoShopUntiy3D導(dǎo)出的Terrain.raw3DsMax剛才導(dǎo)出的所以需要我們點(diǎn)擊“圖像”——>“調(diào)整”——>Raw不支持直接從JPG文件中直接講拖入,須在JPG文件中使用Ctrl+A全Ctrl+A,使用鼠標(biāo)將其拖入Raw的各個(gè)通道點(diǎn)擊菜單欄中的“Terrain”——>“ImportHeightmapRaw...”【導(dǎo)入高度圖】,導(dǎo)入剛才我們所保存的Raw文件,如圖2-21所示。(22、正如我之前所說(shuō),JPG是一種有損格式的文件,當(dāng)它被用于一些較大場(chǎng)景的地我們之前學(xué)到的知識(shí),將紋理從新鋪一遍得到如圖2-23所示的效果。何給Terrain添加樹(shù)木和花草。我們首先來(lái)看如何種樹(shù),先點(diǎn)擊“EditTrees..”按鈕,在彈出的“AddTree”面板中有兩個(gè)定“BendFactor”彎曲的數(shù)字之后,點(diǎn)擊“Add”按鈕退出“AddTree”面板。接著你會(huì)在、點(diǎn)擊種草按鈕,在這個(gè)按鈕的下面點(diǎn)擊“EditDetails..”按鈕,與種樹(shù)的“EditTrees..”不同,種草里面有兩個(gè)添加按鈕“AddGrassTexture”和“AddDetailMesh”,這往往只能看到某個(gè)單面,所以“AddGrassTexture”以一種面片加一個(gè)帶透明通道的貼圖方2-25所示,既大大的節(jié)約了資源又呈現(xiàn)除了最優(yōu)秀的效果。但有些細(xì)節(jié)物密集,針對(duì)這種細(xì)節(jié)的“AddDetailMesh”就能很好的綜合“AddGrassTexture”這一缺 這里,我們先以“AddGrassTexture”方法來(lái)向地形添加一些雜草,具體做法參照上面刷樹(shù)ty3D在編輯模式下為了節(jié)約資源,提高游戲開(kāi)發(fā)效率,采取了資源剔除的方法。如果你在察到效果,如圖2-27所示。、地形系統(tǒng)Terrain的其他設(shè)置,點(diǎn)擊按鈕,來(lái)設(shè) 參數(shù),如圖2-28所示。3牌朝向,既是該網(wǎng)格的正面始終朝向機(jī)對(duì)樹(shù)木無(wú)效。并得到了Unity3D的管理員“aNTeNNatrEE”的確認(rèn),將、Unity3D為了能讓開(kāi)發(fā)人員快速的測(cè)試場(chǎng)景在游戲中的運(yùn)行情況,在自帶的導(dǎo)入包中內(nèi)置了許多組件,這其中就包含了用于場(chǎng)景漫游的第一人稱組件“First 兩個(gè)組件存放在什么地方,那么你可以通過(guò)Project【項(xiàng)目文件欄】最上面的查找輸入框,輸入這兩個(gè)組件的名字來(lái)查找它們,如圖2-29所示。、查找到該組件之后,將它直接拖放進(jìn)場(chǎng)景點(diǎn)擊測(cè)試按鈕,你就可以控制一個(gè)行走,如圖2-30所示。漫游的過(guò)程中,你可以清晰的看見(jiàn)你創(chuàng)建的草隨微風(fēng)緩緩擺動(dòng)。、再次點(diǎn)擊測(cè)試按鈕,退出動(dòng)畫(huà)模式Unity3D中主要有兩種方式可以制作草坪、石頭等細(xì)節(jié)。Mesh,加上帶“AlphaPSD作為草坪的材質(zhì)文件,該方法十分簡(jiǎn)單,也特別節(jié)省資源,是筆者極力推薦的法。第二種方式是用3DsMax或是MayaUnity3D調(diào)用,該況需求來(lái)使用,但盡量少用。下面我先為大家介紹一下第法的詳細(xì)制作步驟:Photoshop或其他的圖形制作軟件,新建一個(gè)名字為“grassTexture”,大小為256*256像素大小的一張,分辨率設(shè)置為600像素/每英寸,如圖2-31所示。當(dāng)然,、將你準(zhǔn)備好的草坪貼圖導(dǎo)入到現(xiàn)在的畫(huà)布中,并利用Ctrl+T的鍵盤(pán)組合調(diào)整貼圖的大小和位置,與當(dāng)前的畫(huà)布所匹配,如圖2-32所示。“Alpha12-33所示。213在舞臺(tái)面板中用白色的顏料繪制出、將制作完成的圖像保存為PSD格式的文件,放置到Unity3D項(xiàng)目文件夾的“errain,選“EditDetails..”按鈕——>“AddGrassTexture”彈出“AddGrassTexture”框,2-34所示。在“DetailTexture”后面的材質(zhì)接口中,找到我們剛才保存的“grassTexture”材質(zhì),然后點(diǎn)擊“Add”按鈕。當(dāng)然你還可以在“AddGrassTexture”框中,對(duì)各間。這里是Mesh的最小寬度。Color”【干枯顏色】則用來(lái)指定枯草的顏色。、這時(shí)你已經(jīng)可以在“Details”下面看到我們剛才所繪制的草坪了,如圖2-35所示。、在“Brushes”下選擇適合的筆刷,在“Scene”【場(chǎng)景面板】中進(jìn)行對(duì)地面對(duì)象“Terrain”進(jìn)行草坪繪制,最后的效果如圖2-36所示。3DsMax或Maya2-37所示。這里有兩點(diǎn)需要注Unity3D3DsMax里2點(diǎn)擊“僅影響 4軸旋轉(zhuǎn)90°31確保物體在被選中的情況下,點(diǎn)擊“errain鈕。當(dāng)然你還可以在“AddDetailsMesh”框中,對(duì)各項(xiàng)參數(shù)進(jìn)行一些個(gè)性設(shè)置,每個(gè)Color”【干枯顏色】則用來(lái)指定枯草的顏色。、在“Brushes”下選擇適合的筆刷,在“Scene”【場(chǎng)景面板】中進(jìn)行對(duì)地面對(duì)象“Terrain”進(jìn)行草坪繪制,最后的效果如圖2-40所示。Unity3DUnity3D建立樹(shù)木LOD(減面優(yōu)化)Unity3D使用基礎(chǔ),因?yàn)槟阍谕獠縿?chuàng)建的模型導(dǎo)ree”【樹(shù)形系統(tǒng)】來(lái)創(chuàng)建樹(shù)木。、在菜單欄中找到“GameObject”——>“CreatOther”——>“Tree”創(chuàng)建一個(gè)系統(tǒng)自帶的“Tree1”樹(shù)到“Scene”【場(chǎng)景面板】的(0,0,0)2-41所示。但這時(shí)候認(rèn)是將樹(shù)根節(jié)點(diǎn)選中激活,如圖2-42所示。精細(xì)。確保“AmbientOcclusion”【環(huán)境光遮蔽】4為勾選狀態(tài),這樣可以提升樹(shù)的顯示效果,但是如果不勾選的話會(huì)提升樹(shù)木的渲染速度。設(shè)置“AODensity”【環(huán)境光遮蔽密度】wCaster的分辨率】4“AmbientOclusionAO是來(lái)描繪物體和物體相交或靠近的時(shí)候遮擋周圍漫反射光線的效果,可以解決或改善漏光、飄和陰影不實(shí)等問(wèn)題,解決或改善場(chǎng)景中縫隙、褶皺與墻角、角線以及細(xì)小物體等的表現(xiàn)不清晰問(wèn)題,綜合改善細(xì)節(jié)尤其是暗部陰影,增強(qiáng)空間的層次感、真實(shí)感,同時(shí)加強(qiáng)和改善畫(huà)面明暗對(duì)比,增強(qiáng)畫(huà)面的藝術(shù)性。形狀體】或“FrondsOnly”【棕櫚樹(shù)葉的形狀體】時(shí)才有效)枝有一半的可能性會(huì)產(chǎn)生斷裂,1代表所有的樹(shù)枝都會(huì)產(chǎn)生斷裂。為你滿意的一個(gè)數(shù)字。如果“GroupSeed”【樹(shù)枝種類】不能將樹(shù)枝的位置調(diào)節(jié)到你認(rèn)為滿BranchBranch Hand、分別選中樹(shù)干和樹(shù)枝節(jié)點(diǎn),到“Geometry”卷展欄下找到“BranchMaterial”接口,點(diǎn)擊后面的圓圈按鈕為樹(shù)干和樹(shù)枝添加表面材質(zhì),最后的效果如圖2-43所示。3選擇樹(shù)干和樹(shù)枝所需要的2點(diǎn)擊“BranchMateria1分別選中樹(shù)PhotoShopAlpha的部分刪除掉,形成一張背景透明的,如圖2-44所示。 tation/Images/manual/AlphaUtility.atn.zip,解壓出“AlphaUtility.atn”文件,將其 擊2載入成功之后,發(fā)現(xiàn)多了2在菜單欄中層”——>“修邊”——>“去邊”命圖形的邊沿得、快捷鍵“Alt+F9”打開(kāi)動(dòng)作面板,展開(kāi)“AlphaUtility”文件夾,在最下面選中“DilateManytimes”然后點(diǎn)擊“選定的動(dòng)作”按鈕。你可以多幾次,已使得能達(dá)到理想的效果,如圖2-57所示。這里不用對(duì)“Alpha”通道做任何的繪制,直接將完成好的PSD文件在Unity3D項(xiàng)目文、回到Unity3D編輯器中,在菜單欄中找到“Assets”——>“Create”“TreeCreatorLeaves”,然后將我們制作好的樹(shù)葉文件拖拽到“Base”基礎(chǔ)材質(zhì)接口里面去,如圖2-58所示。次結(jié)構(gòu)】卷展欄下選中樹(shù)枝節(jié)點(diǎn),然后點(diǎn)擊增添樹(shù)葉按鈕,如圖2-59所示。3點(diǎn)擊增添12、選中新增添的樹(shù)葉節(jié)點(diǎn),在“LeafGroupProperties”【樹(shù)葉組屬性】中的“Distribution”卷展欄中,調(diào)節(jié)樹(shù)葉的數(shù)量“Frequency”以及樹(shù)葉的隨機(jī)形態(tài)“GroupSeed、繼續(xù)在“LeafGroupProperties”【樹(shù)葉組屬性】中的“Geometry”卷展欄中,樹(shù)葉材質(zhì)球添加進(jìn)來(lái),如圖2-60所示。2找到材質(zhì)接口3將我們之前定義好1WindZoneUnity3DUnity3D卻為我們提供了“WindZone”【風(fēng)域】,創(chuàng)建它的具體方法如下:、在菜單欄下找到“GameObject”——>“CreateOther”——>“WindZone”,創(chuàng)建完畢之后會(huì)在場(chǎng)景的坐標(biāo)(0,0,0)點(diǎn)看到一個(gè)類似十字箭頭的線框,如圖2-63所示。加樹(shù)木的時(shí)候設(shè)置“BendFactor”參數(shù)。不同的材表面具有不同的物理屬性,而為碰撞器們?cè)O(shè)置專有的“PhysicMaterial”、利用Project【項(xiàng)目文件欄】的查找工具查找預(yù)置物體“palmCollider”為樹(shù)添加一個(gè)藥丸碰撞器。確保樹(shù)木模型在選中的情況下,在它的面板】中展開(kāi)“CapsuleCollider”組件卷展欄,調(diào)節(jié)它的“Radius”【半徑】大小剛好和樹(shù)干一樣,調(diào)節(jié)它的“Height”【高度】剛好和樹(shù)一樣高Direction【方向】為此“Y-②將找預(yù)置物體②將找預(yù)置物體“palmSc④展開(kāi)“CapsuleCollider”組件卷展欄,③在菜單欄中點(diǎn)————>“CapsuleCollider”為樹(shù)添加1利用【項(xiàng)目文件欄】的查找工具查找預(yù)置物、選中添加好碰撞器的樹(shù)木,在它右側(cè)Inspector【監(jiān)視面板】下面找到該物體的名Tree,并將其重命、點(diǎn)擊按鈕,如無(wú)意外場(chǎng)景中的人物在碰到樹(shù)木的時(shí)候就不能前進(jìn)了,如圖Collider”【地形碰撞器】,看看里面的“CreateTreeColliders”這一項(xiàng)是否打勾了。Shader置的“Water”預(yù)置對(duì)象可供用戶直接調(diào)用,除此而外用戶還可以為自己制作的模型添加水、在Poect“Waer種藍(lán)色方框標(biāo)志的對(duì)象,都是有關(guān)水的預(yù)置物體,可直接拖入場(chǎng)景中使用。但為了能讓們的例,須整變的,267“WElem用3DMAX制作出河道的面片模型,并導(dǎo)出FBX文件到項(xiàng)目 得到的效果大致如圖2-68所示。再次我們用鼠標(biāo)Project【項(xiàng)目文件欄】的空白處“Create”——>“Material”新建一個(gè)材質(zhì)球文件,選中它并按下F2鍵為其更名為將河水的貼圖放入“Fallbacktexture”接口,將河水的法線貼圖放入“Normals”接口,得到了如圖2-69所示的效果圖。在PCCP來(lái)運(yùn)算,并將長(zhǎng)的微軟和專注計(jì)算機(jī)圖形技術(shù)的Khronos工作組當(dāng)仁不讓的重任,(現(xiàn)在還有英偉達(dá)公司的CG編程語(yǔ)言也算是GPU高級(jí)編程語(yǔ)言之一。這也成就了當(dāng)前3D計(jì)算機(jī)領(lǐng)域DirectX6和OpenGL7分庭抗衡的局面。所以DirectX和OpenGL會(huì)隨著圖形卡硬件的不斷升級(jí)打一個(gè)簡(jiǎn)單的比方來(lái)說(shuō),在圖形渲染中,GPU的可編程計(jì)算單元被稱為器(shade頂點(diǎn)器和像素器。為了實(shí)現(xiàn)更細(xì)膩真的畫(huà)質(zhì),GPU的體系架構(gòu)從最早的固定功DirectX10時(shí)代的以通用的可編程計(jì)算單元為主、圖形固5GPU就是顯卡上專門(mén)用于進(jìn)行圖形計(jì)算的硬件,功能和作用類似于CPUCPU。7OpenGL,(OpenGraphicsLibraryOpenGL)Khronos小組發(fā)布的跨編程語(yǔ)言、跨平臺(tái)ShaderModel的圖形卡,在游戲畫(huà)面的顯示上,就會(huì)顯得比較粗糙一些。你可以打開(kāi)Unity3D,在菜單欄中選中“Edit”——>“GraphicsEmulation”,在我的電腦上可以看到“No但你還可以選著其它的選項(xiàng),來(lái)模擬該游戲在在較低硬件上所顯示的圖形效果。圖2-70、2“ShaderModel1”,“DirectX72-702-71上的陰影清晰可見(jiàn),而由于“ShaderModel1”與“DirectX7”所在的硬件并不支持動(dòng)態(tài)陰影ImageEffects組件。ImageEffects組件是用于處理有25個(gè)ImageEffects組件,如下所示:(CrrectionRampDiClrDetection(Geometry對(duì)AccumulationScreenSpaceAmbientOcclusion【屏幕空間環(huán)境光遮蔽】:這是一種被廣泛使用、在菜單欄中點(diǎn)擊“GameObject”——>“CreateOther”——>“Cube”為場(chǎng)景添加寬高,如圖2-74所示。第一,因?yàn)榕鲎搀w的原因人物不能立方體而進(jìn)入河道;第二,整個(gè)河道看上去會(huì)是白茫茫的一片。但不要緊,Unity3D物能夠穿越立方體只要確?!癈ubeInspector【監(jiān)視面板】將“BoxCollider”中的“IsTrigger”復(fù)選框打勾,這樣碰撞體就只作為碰撞檢測(cè)來(lái)使用,來(lái)到它的Inspector【監(jiān)視面板】將“MeshRenderer”前面的組件啟用復(fù)選框中的勾點(diǎn)掉即可。如圖2-75所示。OnTriggerEnterUnity3DCollider進(jìn)入該碰撞體內(nèi),除此而外還有相關(guān)用于判斷其他碰撞對(duì)象Collider持續(xù)呆在碰撞體內(nèi)部的函數(shù){、在資源面板中鼠標(biāo)Project【OnTriggerEnterUnity3DCollider進(jìn)入該碰撞體內(nèi),除此而外還有相關(guān)用于判斷其他碰撞對(duì)象Collider持續(xù)呆在碰撞體內(nèi)部的函數(shù){ }}{ }}將編輯好的碰撞檢將編輯好的碰撞檢拖放給場(chǎng)景中的碰、運(yùn)試一下效果,當(dāng)人物在水面上行走時(shí)得到的效果如圖2-77所示,當(dāng)人物移動(dòng)到水下的時(shí)候得到的畫(huà)面效果如圖2-78所示。3章光

Renderer”【網(wǎng)格渲染器】Unity3D于Unity3D對(duì)材質(zhì)有著良好的支持,所以你可以增大“Materials”卷展欄中的的渲染,如圖3-2所示。 Unity3D3DsMax那樣,有各種各樣豐富的燈光。它只有三種基本燈光:“Pointl是在菜單欄中點(diǎn)擊“GameObject”——>“CreateOther”,然后找到對(duì)應(yīng)的光源。創(chuàng)建成功“Spotlights”【聚光燈】有效。1i“Size”【遮罩尺寸】:遮罩的尺寸大小。僅對(duì)“Directionallight”【平系統(tǒng)根據(jù)機(jī)與陰影之間的距離來(lái)自動(dòng)判斷該用何種方式顯示陰影“Realtim、選中場(chǎng)景中的機(jī)對(duì)象,然后點(diǎn)選菜單欄中的“Component”——rdAssets”文件夾下的“Skyboxes”文件夾。這里面擺放了許多關(guān)于天空的材質(zhì)球,你只需12在它彈出的“SelectFlare”框中選中雙擊CPU的計(jì)算為代價(jià)來(lái)產(chǎn)生陰影效果,這種模式運(yùn)行速度較慢,但對(duì)于硬件比較的使用哪一個(gè)選項(xiàng),動(dòng)畫(huà)場(chǎng)景的物體都會(huì)相對(duì)于陽(yáng)光產(chǎn)生陰影效果。如圖3-6所示:Ctrl+S來(lái)保存場(chǎng)景文件,取名叫做“terrain”以便oFlare【項(xiàng)目文件欄】中看到一個(gè)名為“NewFlare”星形狀的材質(zhì)對(duì)象。選中它之后,到“Inspector3-7的屬性?!癟extureLayout”【材質(zhì)布局】:一共有“1Large4Small“1Large2MediuSmall這六種材質(zhì)的布局圖可詳見(jiàn)Unity3D的的說(shuō)明頁(yè)面 、打開(kāi)PhotoShop作圖軟件,到查看一下“1Large4Small”的布局。新建一個(gè)寬度120像素、高度240像素的,背景顏色為黑色。這是由于如果我們以60像素作一個(gè)耀斑元素的大小的話,按照“1Large4Small120像素、高度240像素的,而黑色背景是為了在Unity3D中做材質(zhì)的背景透明處理。3-8PSD保后面的圓圈,選中剛才我們保存的“yaoban.psd”文件,如圖3-9所示。1在“Project”【項(xiàng)目3選中剛才我們保存2板】中點(diǎn)選“Flare、將“Elements”【元素】卷展欄下的“Size”設(shè)置為5,這時(shí)會(huì)發(fā)現(xiàn)除了原來(lái)的“Element4個(gè)“Element”卷展欄出來(lái),利用每個(gè)“Element”下的“Image是0那么對(duì)應(yīng)3-10所示?!癐mageIndex0卷展欄下的“Position”規(guī)定了五“UseLightColor”規(guī)定了五角星耀斑是否需要和燈光的顏色進(jìn)行疊加,“Rotate”規(guī)定了、選中場(chǎng)景中的光照對(duì)象“Directionallight”,到“Inspector”【監(jiān)視面板】中點(diǎn)擊“Flare”后面的圓圈,將耀斑材質(zhì)換成我們新添加的“NewFlare”這個(gè)耀斑材質(zhì),最后的效果如圖3-11所示。 可。但制作好的材質(zhì)圖,在導(dǎo)入U(xiǎn)nity3D之后要作出一定調(diào)整才行。將其保存到Unity3D工程項(xiàng)目的資源文件夾“Assets”里面。、打開(kāi)Unity3D,在“Project【項(xiàng)目文件欄】中選中我們剛才保存在這里面的材質(zhì)文件,可以在“Inspector”【監(jiān)視面板】看到如圖3-12所示的屬性。““、將“WrapMode”【位圖的覆蓋模式】設(shè)置為“Clamp”【拉伸】,然后將“TextureType”【材質(zhì)類型】設(shè)置為“ 、選中場(chǎng)景中的燈光對(duì)象“Directionallight”,在“Inspector”【監(jiān)視面板】點(diǎn)擊可以在場(chǎng)景中看到由燈光投射下來(lái)的一個(gè)星形陰影了,如圖3-13所示?!癙roject影效果如圖3-14所示。但這里需要注意一下,由于“Directionallight”【平行光】和“Spot“Project選擇一個(gè)合適的貼圖類型。設(shè)置完畢之后,點(diǎn)擊“Apply”按鈕,讓Unity3D自動(dòng)將“l(fā)iStar面的圓圈選擇我們剛才生成的遮罩材質(zhì)“l(fā)iStart”,最后得到如圖3-15所示的效果。Cubemap的制作以及“Skybox3DsMax這些軟件里面完成的話,那你可以使用VRay360°機(jī)渲染的方法輸出全景圖,然后再用PhotoS要跟著筆者的步驟走,就可以在Unity3D的場(chǎng)景中制作出一個(gè)帶反射貼圖的小鋼球了。、點(diǎn)擊菜單欄中的“Help”——>“ScriptingReference”打開(kāi)參考頁(yè)面,在搜索欄中輸入“RenderToCubemap”然后點(diǎn)擊回車,點(diǎn)擊超關(guān)鍵字“Camera.RenderToCubemap”進(jìn)入該的詳細(xì)頁(yè)面,如圖3-16所示。//Renderscenefromagivenpointintoastaticcube cethisscriptinEditorfolderofyour//ThenusethecubemapwithoneofReflectiveshaders!classRenderCubemapWizardextendsScriptableWizard{varrenderFromPosition//Renderscenefromagivenpointintoastaticcube cethisscriptinEditorfolderofyour//ThenusethecubemapwithoneofReflectiveshaders!classRenderCubemapWizardextendsScriptableWizard{varrenderFromPosition:Transform;varcubemap:Cubemap;functionOnWizardUpdate()helpString="Selecttransformtorenderfromandcubemaptorenderinto";isValid=(renderFromPosition!=null)&&(cubemap!=null);}functionOnWizardCreate()//createtemporarycameraforvargo=newGameObject("CubemapCamera",Camera ceitonthego.transform.position=renderFromPosition.position;go.transform.rotation=Quaternion.identity;//renderintocubemapgo.camera.RenderToCubemap(cubemap);//destroytemporarycameraDestroyImmediate(go);}@Item("GameObject/RenderintostaticfunctionRenderCubemap() Rendercubemap","Render!");}} JS文件“RenderCubemapWizard”拖放到“Editor”文件夾里面來(lái)。這時(shí)你點(diǎn)擊菜單欄中的“GameObject”會(huì)發(fā)現(xiàn)多了一個(gè)“RenderintoCubemap”選項(xiàng),這、點(diǎn)擊菜單欄中的“GameObject”——>“CreateOther”——>“Sphere”新建一個(gè)、鼠標(biāo)“Project【項(xiàng)目文件欄】——>“Create”——>“Cubemap”新建一個(gè)、點(diǎn)擊菜單欄中的“GameObject”——>“RenderintoCubemap”打開(kāi)“Rendercubemap”面板,在“Hierarchy”【層次欄】將新建的“Sphere”拖放到“RenderFromPosition”后面的接口上,將新建的“NewCubemap”拖放到“Cubemap”后面的接如圖31在1在“HierarchyFromPosition②將新建的“NewCubemap”拖、鼠標(biāo)“Project”【項(xiàng)目文件欄】——>“Create”——>“Material”新建一個(gè)材質(zhì)球組件。并且選中新建的材質(zhì)球,到監(jiān)視面板中將它的Shader改為帶反射通道的“Reflective/Diffuse”,然后將渲染好的“NewCubemap”拖入到“ReflectionCubemap”接口,如圖3-18所示。②將渲染好的“②將渲染好的“NewCubemap”拖入到“ReflectionCubemap”接口1Shader改、將做好帶反射的材質(zhì)球“NewMaterial”拖放給“Hierarchy”【層次欄】中的“Sphere3-19的效果。nderSetings”為場(chǎng)景添置背景。具體步驟如下:、先準(zhǔn)備六張?zhí)炜蘸械牟馁|(zhì)貼圖,放到項(xiàng)目的資源文件夾“Assets”內(nèi)。然后在Unity3DWrapMode”【包裹模式】從原、鼠標(biāo)“Project”【項(xiàng)目文件欄】——>“Create”——>“Material”新建一個(gè)材質(zhì)球組件。并且選中新建的材質(zhì)球,到監(jiān)視面板中將它的Shader改為ZX“down(-3-21所示:、點(diǎn)擊菜單欄中的“Edit”——>“RenderSettingsMaterial3-22里由于小球周圍的環(huán)境發(fā)生了改變,建議將Cubemap重新渲染一遍。Unity3DV3.0以后的版本中,對(duì)渲染引擎做了許多的優(yōu)化,其中就包括非常重要的、將制作好的模型導(dǎo)出成FBX格式,到項(xiàng)目的資源文件夾“Assets”下。然后ProjectUnity3D可能會(huì)彈出“Losingprefab”的警告框,提示這樣做可能會(huì)讓場(chǎng)景中的模型對(duì)象Eissio(Lightaper面的數(shù)值,如圖3-24所示。出來(lái)的燈泡對(duì)象“l(fā)ight3-25所示。221、選中“Bake”【烘焙】選項(xiàng)欄,選擇“Mode”【烘焙模式】為“Dual1在場(chǎng)景中看到如圖3-27的效果。254“Rslton辨率】設(shè)置為13“SkyLightIn度】設(shè)為0.11使用燈光烘焙能將游戲物體表面的光影信息在靜態(tài)的上,不但能制作出表面Unity3Dv3.0以后,對(duì)于場(chǎng)第4 畫(huà)信息,Unity3DAnimation4-1種動(dòng)畫(huà)、色澤變換、或觸發(fā)機(jī)制?!癢indow”——>“AnimationCtrl+6。Animation4-2所示。ifs(ntne(ateil面的——>“AddCurve”為紅色屬性參數(shù)增加變換曲線數(shù)值設(shè)置為0。點(diǎn)擊錄制按鈕保存退出,如圖4-3所示。果不夠明顯,那么請(qǐng)你在“Project”【項(xiàng)目文件欄】中選中動(dòng)畫(huà)文件CubeAnim,然后到按下快捷鍵Ctrl+6打開(kāi)Animation面板,點(diǎn)擊左上角紅色的錄制按鈕,為該立方體創(chuàng)面的數(shù)值設(shè)置為-90。點(diǎn)擊錄制按鈕保存退出,如圖4-5所示。、選擇每一個(gè)單獨(dú)模型,在菜單欄中點(diǎn)擊“Component”——>“PhysicsusingusingpublicclassusingusingpublicclassOpenDoor:MonoBehaviour }}C#文件拖放給場(chǎng)景中的人物角色對(duì)象,點(diǎn)擊按鈕執(zhí)行播放可看到圖4-6與圖4-7的效果。Unity3D自帶的,這使得我們的游戲大3DsMaxMaya等建模軟件,建立人物模型以及模型的貼圖,最好帶上法線也可參看《迎接互聯(lián)網(wǎng)的明天——玩轉(zhuǎn)3DWEB》里的具體)Biped或類似的建模軟件里自帶的人物骨骼組件,為人物模型賦給相應(yīng)的人物的選項(xiàng)勾上,如圖4-8所示:mp剪輯到最后一幀,然后停在那一幀,直到下一個(gè)動(dòng)畫(huà)開(kāi)始。 模型動(dòng)畫(huà)在創(chuàng)建之初。然后到菜單欄中選中“Component”——>“Character”——“CharacterMotor”給模型添加一個(gè)人物控制器,接著到”Inspector”【監(jiān)視面板】中的“Char、接著到菜單欄中選中“Component”——>“Character”——“FPSInputController”著到菜單欄中選中“Component”——>“Camera-Control”——“MouseLook”給模型添視面板】的“MouseLook”卷展欄中將“Axes”選擇為“Mou”,然后將其他的有關(guān)Y屬性的值都調(diào)節(jié)為零,如圖4-12所示:、選中機(jī)對(duì)象“Camera”,并到菜單欄中選中“Component”——>“Camera-Control”——“SmoothFollow”給機(jī)添加一個(gè)跟隨組件,在它的”Inspector”【監(jiān)視面板】中找到“SmoothFollow(ScriptTarget”后面的“Transform”接口,如圖4-13所示。、點(diǎn)擊測(cè)試按鈕,在模式下調(diào)節(jié)“SmoothFollow(Script”卷展欄里的各個(gè)屬為調(diào)試模式,當(dāng)您重新將測(cè)試按鈕點(diǎn)起之后,所有的參數(shù)又會(huì)恢復(fù)?;謴?fù)之后,再將“SmoothFollow(Script”卷展欄里的各個(gè)屬性值設(shè)定為前面記錄下的參數(shù)值。functionStart()functionStart()animation["Jump"].layer=}functionUpdate()if(Mathf.Abs(Input.GetAxis("Vertical"))>0.1) if(Input.GetKeyDown("space"))}“moveest如圖4-14所示。、然后點(diǎn)擊測(cè)試按鈕測(cè)試一下效果,如圖4-15所示。用鍵盤(pán)的方向鍵和空格鍵盤(pán)來(lái)控制人物,可以看到我們的人物在里面行走自如,彈跳輕松。是活靈活現(xiàn)啊!要重點(diǎn)說(shuō)下各部位的方法,如圖4-16所示。Bip01LFoot3LeftFoot3LeftHipsBip01LThigh,LeftKneeBip01LCalf,LeftFoot<——Bip01LFoot。3RightHipsBip01RThigh,RightKneeBip01RCalf,RightFoot<——Bip01RFoot。2LeftArmBip01LUpperArm,LeftElbowBip01LForearm。Bip01RUpperArm2RightArm2RightArmBip01RUpperArm,RightElbowBip01RForearm。下面還有兩塊骨骼比較簡(jiǎn)單:MiddleSpineBip01Spine,Head<——Bip01Head。家更便于理解,圖4-17展示了角色系統(tǒng)構(gòu)造解析。 情況下倒在了地上,并且隨作用力的方向隨機(jī)擺放。如圖4-18所示:5章OcclusionCulling“OcclusionCullingUnity3D中一種被用于游戲場(chǎng)景后期優(yōu)化的一種Static”復(fù)選框,將他們?nèi)吭O(shè)定為靜態(tài)物體對(duì)象。如果有提示框彈出,則選擇“Yes,changechildren”【影響到子物體對(duì)象】按鈕。、點(diǎn)擊菜單欄中的“Window”——>“OcclusionCulling”打開(kāi)“Occl.Culling”窗口,用鼠標(biāo)左鍵點(diǎn)用鼠標(biāo)左鍵點(diǎn)擊剔除區(qū)域前面的綠色按鈕進(jìn)行拖拽,將剔除區(qū)域布滿Production21將“ViewCell的尺寸】調(diào)到8焙之后的效果了,如圖3-70所示。大家可以清晰的看到,場(chǎng)景中沒(méi)有被機(jī)看到的物體Unity3D的與組在Unity3D中可以把每一個(gè)交互式都做成一個(gè)單獨(dú)的文件,可視化對(duì)象要想JavaUnity3D中可視化對(duì)象從無(wú)、點(diǎn)擊菜單欄“GameObject”——>“CreateEmpty”在場(chǎng)景中創(chuàng)建一個(gè)空的顯示對(duì)象,它與“GameObject”組件是平級(jí)關(guān)系,在代碼編寫(xiě)中兩者可以相互繼承,相用。、繼續(xù)在菜單欄中點(diǎn)擊“Component”——>“Mesh”——>“MeshFilter”前面這個(gè)組件是用來(lái)設(shè)定可視化物體的形體樣貌的,在“Inspector”【監(jiān)視面板】中我們點(diǎn)擊“Mesh”后面的圓圈,在彈出來(lái)的“SelectMesh”框中選擇那個(gè)膠囊的模型,如圖中不像PV3D在沒(méi)有添加材質(zhì)之前會(huì)用線框材質(zhì)去描述物體。所以我們還得為“GameObject”對(duì)象添加一個(gè)“MeshRenderer”【網(wǎng)格渲染器】組件。——>“MeshFilter”為該對(duì)象添加一個(gè)“MeshRenderer”【網(wǎng)格渲染器】組件,并到“Insnt0”后面的圓圈接口,在彈出的“SelectMaterial”中為物體選中一個(gè)合適的材質(zhì)球,這時(shí)你便可以在“Scene3-75所示。3在“Scene”【場(chǎng)景1在“Materials展欄中點(diǎn)擊“Element2在彈出的“SelectMaterial本節(jié)所對(duì)應(yīng)的教學(xué)“ImageEffects”光 :\Unity3D軟件新創(chuàng)建一個(gè)“water&Fog”項(xiàng)目文件,并導(dǎo)入所有自帶的包。用地3-76Y方向的綠色箭頭切換到頂視圖,這樣可以便于我們很快的找到洼地的所在地方,如圖3-77Y方向的綠色在頂視圖中在頂視圖中具、接著再到Project【項(xiàng)目文件欄】找到“StandardAssets”文件夾下的“Water(Proate(BasicDaylightWater【白天光照效果的水模型】到洼地的,并利用場(chǎng)景調(diào)整工具中的縮放工具塊,將視角切換到,如圖3-79所示。然后利用場(chǎng)景調(diào)整工具中的位移工具,水模型調(diào)整到合適的高度,如圖3-80所示。這時(shí)你只需在時(shí),將機(jī)移動(dòng)到洼地這、但這樣的效果略顯單調(diào)了一些,既然是山中泉水我們還得有一些瀑布和濺起的浪花。為了節(jié)約時(shí)間,我們直接在Project【項(xiàng)目文件欄】上方的搜索框輸入字符“waterf”,就可以查出如圖3-81所示所示的材質(zhì)和模型。、在這里面中,“WaterFountain”是一個(gè)噴泉模型,“WaterSurfaceSsh”是一個(gè)后利用場(chǎng)景調(diào)整工具來(lái)調(diào)整它的位置和角度,如圖3-82所示。找到“LocalVelocityZ8Z軸線上的初始噴射速度,然后可以得到如圖3-83所示的效果。1將Z軸的整為82可看到場(chǎng)景中瀑布的水流1拖入“WaterSurface 3WaterSurface 2調(diào)節(jié)“WaterSurfaceSsh“MinSize”和“M1拖入“WaterSurface 3WaterSurface 2調(diào)節(jié)“WaterSurfaceSsh“MinSize”和“M、運(yùn)行一下游戲,然后將鏡頭移動(dòng)到泉水的水面下,如圖3-85所示。大家會(huì)發(fā)現(xiàn),GameObject”——“CreateOther”——“Cube”創(chuàng)建一個(gè)立方體,并運(yùn)用場(chǎng)景3-86所示。(注:運(yùn)用其他形體也可以,其、確保你創(chuàng)建的這個(gè)Cube是被選中狀態(tài),到它的”Inspector”【監(jiān)視面板】中,將“BoxCollider”卷展欄中的“IsTrigger”復(fù)選框打上勾(如果這里不打勾,這個(gè)立方體將作為一個(gè)實(shí)物,當(dāng)機(jī)撞上它時(shí),就像撞上一堵墻,無(wú)法通過(guò)如圖3-87所示。、然后再將“MeshRenderer”卷展欄下的所有復(fù)選框全部點(diǎn)掉,使這個(gè)立方體只作“WaterColler3-87所示。、選中“Tag”的下拉框——>“AddTag…”新添加一個(gè)“WaterColler”的分類,如圖3-88所示。如圖3-89所示。個(gè)可對(duì)象進(jìn)行重新命名,已方便對(duì)其調(diào)用和交互。但有時(shí)候我們需要將一些不同名字的分類,所以我們可以通過(guò)兩種方式來(lái)它。 到“Project【項(xiàng)目文件欄】找到剛才新建的JS privatevardefaultFog=privatevardefaultFogColor=privatevardefaultFogDensity=privatevardefaultSkybox=varnoSkybox:Material;functionOnTriggerStay(hit:{ RenderSettings.fog=true; 為RenderSettings.fogColor=Color(0,0.4,0.7,RenderSettings.fogDensity=0.1;RenderSettings.skybox=noSkybox;}}functionfunctionOnTriggerExit(hit:{定g=defaultFog;RenderSettings.fogColor=defaultFogColor;RenderSettings.fogDensity=defaultFogDensity;RenderSettings.skybox=}}rstController”,該對(duì)象是專門(mén)用于Unity3D的漫游測(cè)試的,在游戲運(yùn)行中可以用方向鍵控制該對(duì)象移動(dòng),用鼠標(biāo)控制機(jī)鏡頭角度的變換。將其拖放到“WaterColler”水洼碰撞體的旁邊,如圖3-90所示。、將完成好的“UnderWaterEffect”拖放給第一人稱游戲?qū)ο笏鞯教炜蘸胁馁|(zhì)對(duì)象“MoonShineSkybox”,把它拖放給“Inspector”【監(jiān)視面板】中的“noSkybox”天空盒材質(zhì)接口,如圖3-91所示。、運(yùn)行一下游戲,將機(jī)移動(dòng)到“WaterColler”水洼碰撞體里面時(shí),就可以看到一片藍(lán)色迷霧的景象了,并且仰望天空時(shí),天空變成了夜晚,如圖3-92所示。但當(dāng)機(jī)

話,請(qǐng)參看4.11.1小節(jié)。Unity3D中運(yùn)行時(shí)間片與接口的簡(jiǎn)單概3D軟件一樣,Unity3D要在計(jì)算機(jī)里面顯示出游戲的動(dòng)畫(huà)畫(huà)面,就必須結(jié)合在了一起。在圖3-94中,筆者畫(huà)出了Unity3D時(shí)間運(yùn)行函數(shù)的關(guān)系。執(zhí)行,如果計(jì)算機(jī)的硬件配置比較高,那么你會(huì)看到Update()里面所執(zhí)行的會(huì)OnDrawGizmos()2DLateUpdate()函數(shù)之后被調(diào)用,但偶爾會(huì)運(yùn)行在Update()之前。ojectSettings”——>“Time”來(lái)修改FixedUpdate()的執(zhí)行頻率。D將大量的與時(shí)間有關(guān)的計(jì)算函數(shù),比方說(shuō)剛體受力作用的運(yùn)動(dòng)等等,都放置到這固定物理時(shí)間軸和圖形渲染時(shí)間軸不同步的問(wèn)題,類似yieldWaitForSeconds()、在菜單欄上選中“Assets”——>“Create>“JavaScript”,在“function{print("Awake"+Time.deltaTime);}function{print("Start"+Time.deltaTime);}function{function{print("Awake"+Time.deltaTime);}function{print("Start"+Time.deltaTime);}function{print("Update"+Time.deltaTime);}functionprint("LateUpdate"+Time.deltaTime);}functionprint("FixedUpdate"+Time.deltaTime);}functionOnGUI()print("GUI"+Time.deltaTime);if(GUI.Button(Rect(10,10,100,50),"Thisisatitle")){}}functionWaitAndPrint() varfirstTime=Time.time;yieldWaitForSecondsprint("WaitAndPrint"+(Time.time-firstTime));}而Time.time是記錄該函數(shù)從開(kāi)始被調(diào)用起,一直到當(dāng)前時(shí)間的總用時(shí)時(shí)間函數(shù)。21、將這段代碼拖拽給Hierarchy【層次欄】中任意一個(gè)對(duì)象,你就會(huì)在器剛擊左下角的控制臺(tái)字符,可將控制臺(tái)面板完全展開(kāi),如圖3-95所示。21Unity3D中的(或稱作組件)除了有著上述良好的時(shí)間層級(jí)關(guān)系,還有著非常強(qiáng)大例如下面用JS寫(xiě)的一個(gè)列子:varAddSpeed=5;functionUpdate(){transform.Translate(0,0,}在菜單欄上選中“varAddSpeed=5;functionUpdate(){transform.Translate(0,0,}Z方向上的初始速度,如果在沒(méi)有其他外力的作用下,物體將Z5的位移。并且當(dāng)你將這段代碼拖拽視面板】中進(jìn)行修改如圖3-96所示。在菜單欄上選中“Assets”——>“Create>“JavaScriptJavaScript組件,varvarcubeGO:Transform;functionUpdate(){varvarcubeGO:Transform;functionUpdate(){}}cubeGO的后面有個(gè)很明顯未定義對(duì)象接口“None(Transform)”,然后我們把想要使之運(yùn)動(dòng)3-98所示。當(dāng)我們運(yùn)行游戲時(shí),只要按下“G”鍵就可以看到Cube作為“cubeGO”的指代對(duì)象,朝著“Z”軸方向運(yùn)動(dòng)了。Unity3dC#Script的Mono8上的,并且根據(jù)自身引擎的開(kāi)發(fā)特質(zhì)進(jìn)行了一定的內(nèi)核修整。所以在Unity3D中使NewBehaviourScript:MonoBehaviour{...}8Mono是一個(gè)由Novell公司(先前是Ximian)主持的項(xiàng)目。該項(xiàng)目的目標(biāo)是創(chuàng)建一系列符合ECMA(Ecma-334和Ecma-335)的.NET工具,包括C#編譯器和共通語(yǔ)言運(yùn)行平臺(tái)。與微軟的.NETFramework不同,Mono項(xiàng)目不僅可以運(yùn)行于Windows系統(tǒng)上,還可以運(yùn)行于Linux,BSD,Unix,MacOSX和Solaris?!獊?lái)自百科usingSystem.Collections;usingUnityEngine;publicclassNewBehaviourScriptusingSystem.Collections;usingUnityEngine;publicclassNewBehaviourScript:MonoBehaviourSomeCoroutineIenumerator的返回類型IEnumeratorSomeCoroutine()nyieldreturn//yieldreturnnewWaitForSeconds}}cript編寫(xiě)質(zhì)優(yōu)秀的Unity3D小游戲,特別對(duì)于一些學(xué)編程語(yǔ)言經(jīng)歷不是太久的朋友,J利用MonoDevelop編輯器來(lái)和Unity3D的開(kāi)始菜單下的Unity3D中找到這個(gè)軟件,如圖3-99所示:9MonoDevelop是個(gè)適用于Linux、MacOSX[1]和Windows[2]的開(kāi)放源代碼集成開(kāi)發(fā)環(huán)境,主要用來(lái)開(kāi)發(fā)Mono與.NETFramework軟件。個(gè)編程語(yǔ)言,其中的UnityScript指的就是JavaScript3-100所示。許多。如圖3-101所示。修改MonoDevelop編輯器為Unity3D事本一樣,如圖3-102所示。所以我們就要在Unity3D中做一些設(shè)置,讓“MonoDevelop”成為默認(rèn)的編輯器。具體框中找到“ExternalScriptEditor”并將它后面的下拉框選中為“Browse…如圖3-103所示:alStudio編輯器的路徑,讓VisualStudio成為Unity3D的默認(rèn)編輯器。)向Unity3D光 :\Maya的.mb和.ma1√√Maya的.mb和.ma1√√√√3DStudioMax的.max1√√√√Cheetah3D的.jas1√√√√Cinema4D的.c4d12√√√√Blender的.blend1√√√√√√√√√√√√√√√√AutodeskFBX的.dae√√√√XSI5的.x1√√√√SketchUp√√Wings√√3DStudio的.3ds√Wavefront的.obj√DrawingInterchangeFiles的.dxf式√“NewProject…”創(chuàng)建一個(gè)新工程項(xiàng)目,在項(xiàng)目路徑中點(diǎn)擊“Browse…”選擇找到我們剛、打開(kāi)3DsMax軟件制作一個(gè)塔模型,并將制作好的模型保存在“Turret”文件夾中的“Assets3-1033DMax中的模型樣圖.Unity3DProject【項(xiàng)目文件欄】看到我們剛才用3DMax導(dǎo)出的模型文件和材質(zhì)貼圖文件了,如圖3-105所示。上找一個(gè)合適的位置,將我們的塔拖拽上去,如圖3-106所示。在場(chǎng)景中修改它。而可以到該模型所在的”Inspector”【監(jiān)視面板】中去修改它的“ScaleF112、但是,筆者并不贊同這樣的模型導(dǎo)入方法。因?yàn)楦鶕?jù)的說(shuō)法,他們建議你將做FBXUnity3DUnity3D中3DMax的軟件環(huán)境下面,做一下導(dǎo)出工作。3DMaxFile【文件】——>exportFBX文件,保存到“Turret”文件夾中的“Assets”【資源】文件夾下面。注意一下彈出的“FBXExport”面板,這里包含了模型動(dòng)畫(huà)、骨骼工具、材質(zhì)等等一系列的導(dǎo)出設(shè)置。如果你沒(méi)有在模型中添入這些東西,就請(qǐng)你將不必要的復(fù)選框點(diǎn)掉,如圖3-108所示。、回到Unity3D的軟件環(huán)境,在Hierarchy【層次欄】中選中原先的塔模型,F(xiàn)BX模型的尺寸。然后將其放置在場(chǎng)景中合適的預(yù)制對(duì)象Prefab光 :\flash的庫(kù)中創(chuàng)建一個(gè)這樣的影片剪輯,但并不把它拖放到舞臺(tái)上顯示,然后用鼠標(biāo)的它,并在它的屬性面板里面將“為ActionScript導(dǎo)出”復(fù)選框打上鉤,這便可菜單欄中點(diǎn)選“Assets”——>“Create>“PrefabProject【項(xiàng)目文件欄】中創(chuàng)建Proje在調(diào)用“newprefab”的地方看到這個(gè)被拖入的物體,并且看見(jiàn)“newprefab”前面的圖標(biāo)3-109所示。預(yù)置類對(duì)象“Prefab”就像一個(gè)空著的盒子,你可以光 :\是不隨著3D視覺(jué)的改變而改變的。這也是由于游戲本身的要求所決定的,比方說(shuō)的生方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用令行界面相比,圖形界面對(duì)于用戶來(lái)說(shuō)在視覺(jué)上Unity3D,它會(huì)自動(dòng)導(dǎo)入上一次的工程項(xiàng)目。為了節(jié)省篇幅,我們還是使用前面的“Turret”工程項(xiàng)目來(lái)做說(shuō)明。假設(shè)我們就現(xiàn)在的項(xiàng)目來(lái)做一個(gè)彈發(fā)射的游戲,想想我們都需要做寫(xiě)什么工作?是不是應(yīng)該在畫(huà)面的一個(gè)角落顯示彈填發(fā)的情況?就像大多數(shù)3D游戲那樣,你的魔法值在使用完畢之后需要一定恢復(fù)時(shí)間?!癆ssets3-110PhotoShop5張。、回到Unity3D軟件環(huán)境中,為了歸類我們?cè)赑roject入的五張拖入文件夾內(nèi)。如圖3-111所示。、在菜單欄中選中“GameObject”——>“CreateOther”——>“GUITexture”創(chuàng)GUISceneUnity3D的圖標(biāo),如3、在Hierarchy【層次欄】選中它之后,來(lái)到它的”Inspector”【監(jiān)視面板】中,點(diǎn)擊Texture后面的圓圈來(lái)改變它的圖標(biāo)為我們剛導(dǎo)入填充圖標(biāo)。再通過(guò)”Inspector”3-1133在場(chǎng)景中看到填充圖12在彈出來(lái)的“SelectTexture”框中選擇填充圖標(biāo)、在菜單欄中選中“GameObject”——>“CreateOther”——>“GUIText”創(chuàng)建GUI文字在圖標(biāo)的旁邊作為說(shuō)明。其輸入的文字、文字大小、文字樣式等等也同樣在它的“Inspector3-114的效果。怎樣自定義Unity3D光 :\現(xiàn),在“GUIText”中并沒(méi)有中文字體庫(kù),但是,這并不能影響我們對(duì)中文作品的開(kāi)發(fā)。U、在菜單欄中選中“GameObject”——>“CreateOther”——>“GUIText”創(chuàng)建一板】和“Game”【動(dòng)畫(huà)面板】看到該文字了,如圖3-115所示。12在彈出的“SelectFont” 3輸入光 :\、給塔的上半部分添加一個(gè)旋轉(zhuǎn)函數(shù),使得塔隨著鼠標(biāo)在X

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論