游戲原型系列 vol.15 3D游戲套件演練 part1
摘要
????相比前一節(jié)這是一節(jié)更加深入的教程,將引導(dǎo)您從使用ProBuilder和PolyBrush建立關(guān)卡到使用3D游戲套件中提供的所有交互式功能和布景功能。大多數(shù)教程步驟都可以用作獨(dú)立的演練,但請參考整個(gè)相關(guān)的教程以獲取更深入的了解。
????如果您想快速起步,請參閱游戲原型系列vol.14期的《快速入門指南》,因?yàn)樗慕坛毯褪纠 J紫?,請按照《快速入門指南》第2步中的說明制作一個(gè)新場景。
1.演練簡介
????本節(jié)將引導(dǎo)您從使用ProBuilder和PolyBrush建立關(guān)卡到使用3D游戲包中的所有可交互功能和布景功能。
????大多數(shù)教程都可以用作獨(dú)立的演練,但請參考整個(gè)相關(guān)的教程以獲取更深入的了解。
2.使用ProBuilder編輯
????您的新場景已經(jīng)有了Ellen可以在其上奔跑的一角-讓我們現(xiàn)在來看一下:
????導(dǎo)航到“ Hierarchy(層次結(jié)構(gòu))” 窗口
????選擇名為Plane 的GameObject

????該平面是使用ProBuilder 創(chuàng)建的,該工具使您可以在Unity中創(chuàng)建和編輯3D對象。由于場景中有ProBuilder網(wǎng)格,因此ProBuilder 窗口已打開。

如果未打開,則可以從頂部菜單中打開它;否則,請打開它。
單擊工具> ProBuilder > ProBuilder窗口

Greyboxing(灰盒)
????灰盒技術(shù)是在場景中創(chuàng)建簡單的形狀或幾何圖形以概述和計(jì)劃您要制作的關(guān)卡的藝術(shù)。在游戲開發(fā)中,這是關(guān)卡設(shè)計(jì)的早期階段,您可以在其中快速制作原型并嘗試想法。ProBuilder 是灰盒的絕佳工具,因此讓我們在場景中創(chuàng)建一個(gè)新形狀:
轉(zhuǎn)到ProBuilder窗口
單擊“ New Shape(新形狀)”旁邊的“ +”號(hào)

這還將打開“ Shape Tool(形狀工具)” 窗口。

該Shape Selector(形狀選擇)下拉菜單,您可以創(chuàng)建許多不同的形狀。

現(xiàn)在,我們將創(chuàng)建一個(gè)Cube,這是默認(rèn)形狀:
選擇Cube(立方體)
將尺寸設(shè)置為3、3、3
單擊構(gòu)建Cube

現(xiàn)在,您已經(jīng)在場景中間構(gòu)建了一個(gè)cube。由于我們的平面比立方體的中心高一點(diǎn),因此它將與平面相交。

您可以使用“ 移動(dòng)工具” 移動(dòng)Cube。單擊場景視圖中的任何箭頭,將其移至所需位置。
您可以使用ProBuilder中的多個(gè)工具來更改立方體的形狀。要了解有關(guān)使用ProBuilder 在Unity內(nèi)部創(chuàng)建3D模型的更多信息,請查看ProBuilder101教程和文檔。
現(xiàn)在,讓我們刪除此Cube:
在“ 層次結(jié)構(gòu)” 窗口中選擇Cube
按鍵盤上的Delete鍵(在Mac 上為Cmd + Backspace)

接下來,我們將繼續(xù)編輯和繪制地平面。
3.建立一個(gè)酸池
PolyBrush
????地面由ProBuilder 平面組成。這些通常是平坦的,但是通過使用PolyBrush,我們可以創(chuàng)建不平坦的表面并繪制紋理以使此Mesh 類似于地面。我們將在地面上浸入水中,在其中可以添加酸液,這對Ellen構(gòu)成危害。
網(wǎng)格:網(wǎng)格由排列在3D空間中的三角形組成,以創(chuàng)建實(shí)體對象的印象。三角形由其三個(gè)角點(diǎn)或頂點(diǎn)定義。?
注意:PolyBrush當(dāng)前處于Beta版,因此使用此工具可能會(huì)遇到一些錯(cuò)誤。
我們可以通過縮放它來使平面變得更大一些:
在層次結(jié)構(gòu)中選擇Plane(平面)
導(dǎo)航到檢查器
將X軸上的比例設(shè)置為2
保持Y軸的比例為1
將Z軸的比例設(shè)置為2

讓我們打開PolyBrush 窗口并開始編輯:
轉(zhuǎn)到工具> PolyBrush > PolyBush窗口


注意:PolyBrush當(dāng)前處于Beta版,因此布局可能會(huì)更改。
選擇Plane;
在PolyBrush窗口中單擊“Push/Pull”圖標(biāo)

選擇平面,然后將其懸停在“場景視圖”中
無論您將鼠標(biāo)移到哪里,“Push/Pull”小控件都將出現(xiàn)。

左鍵單擊以通過向上拖動(dòng)頂點(diǎn)來升高地面
或按住Ctrl并單擊鼠標(biāo)左鍵以通過向下壓頂點(diǎn)降低地面
現(xiàn)在您已經(jīng)知道了基本知識(shí),使用Ctrl +左鍵單擊在平面上創(chuàng)建一個(gè)小傾斜角開始形成一個(gè)池。這不需要太深。
完成編輯后,再次單擊“Push/Pull”圖標(biāo)以取消選擇工具。

您應(yīng)該具有類似以下內(nèi)容。

有關(guān)PolyBrush及其使用方法的更多信息,請?jiān)L問教程和文檔。
目前,讓我們繼續(xù)制造第一個(gè)危險(xiǎn)。
添加酸池
要找到Acid,我們需要導(dǎo)航到Project窗口。這是所有預(yù)制件和工具的存儲(chǔ)位置:
轉(zhuǎn)到Assets> 3D GameKit > Prefabs(預(yù)制件)>Interactables(可交互對象)
左鍵單擊并將“ Acid Prefab”拖動(dòng)到層次結(jié)構(gòu)中
酸池將出現(xiàn)在場景中的某處。在Unity中,可以通過“框架選擇”快速找到對象:
在層次結(jié)構(gòu)中選擇Acid
將鼠標(biāo)懸停在“場景”視圖中
在鍵盤上按F
這將在“場景”視圖中找到并構(gòu)圖“Acid”。

目前,酸池太大,因此我們將其縮小一點(diǎn):
選擇“Acid”后,按“鍵盤”上的“縮放”工具
單擊并拖動(dòng)中間的白色框以使酸變小

酸池也處于錯(cuò)誤的位置。使用“移動(dòng)工具”(選擇“Acid”并按W)將“Acid”放置在平面下方,使其略微窺視池所在的位置。

您可以繼續(xù)定位和縮放“Acid”,直到獲得所需的結(jié)果。
提示:酸池只需要大于池中的空間即可。
按“播放”并測試您的場景,以檢查您冒泡的酸池。

注意:通過3DGamekit 工具欄菜單創(chuàng)建新場景時(shí),它將添加一個(gè)默認(rèn)的DeathVolume 區(qū)域,該區(qū)域的大小非常大,以允許您有足夠的編輯空間。降低低于此的地形時(shí)要小心,因?yàn)榘瑐悤?huì)在進(jìn)入時(shí)死亡。

頂視圖-默認(rèn)關(guān)卡的Death Volume

側(cè)視圖-默認(rèn)級(jí)別Death Volume
增加死亡體
目前,埃倫(Ellen)可以在酸浴中而不會(huì)受傷,這沒有太大危害。

為了使酸池能夠殺死艾倫(對不起艾倫),當(dāng)她走進(jìn)時(shí):
在層次結(jié)構(gòu)中選擇Acid
在檢查器中,單擊“ 添加組件”。
在搜索框中輸入“death”
選擇Death Volume腳本

這會(huì)將“Death Volume”腳本添加到“Acid”中。這是我們制作的腳本,用于指示游戲使Ellen失去所有血量。

按播放并測試您的關(guān)卡。嘗試進(jìn)入酸池,艾倫會(huì)死掉,并在不久后重生。
?
4.使用Polybrush進(jìn)行頂點(diǎn)著色
PolyBrush提供了一個(gè)非常有用的3D美工功能,稱為“ 頂點(diǎn)著色” ,該功能使您可以在頂點(diǎn)(連接在一起以構(gòu)成曲面的點(diǎn))上繪制,而不是直接在GameObject的表面上繪制。
類似于使用“Push/Pull”功能創(chuàng)建“酸池”和“死亡體積”,繪畫將使用頂點(diǎn)在整個(gè)表面上繪畫。屏幕截圖中突出顯示了頂點(diǎn),線條表示它們之間的多邊形邊。

????剛開始時(shí)這可能很奇怪,因?yàn)槟赡芟M軌蛑苯釉诒砻嫔线M(jìn)行繪制,而使用頂點(diǎn)繪制時(shí),它需要沿著表面邊緣將頂點(diǎn)和最近的頂點(diǎn)“融合”在它們之間的顏色/紋理。
????這是由材質(zhì)處理的,這些材質(zhì)利用著色器(腳本)將紋理(位圖圖像)分組并在GameObject上進(jìn)行渲染。有關(guān)這些主題的詳細(xì)說明,請轉(zhuǎn)到手冊的“ 材質(zhì),明暗器和紋理”頁面。
????為了說明這一點(diǎn),讓我們直接開始繪畫!
繪畫與材質(zhì)
????使用工具包更早地創(chuàng)建場景時(shí),已經(jīng)在平面上創(chuàng)建了著色器材質(zhì)。在以下步驟中,您將看到它是如何創(chuàng)建的,并深入研究了組成視覺樣式和材質(zhì)的元素。
????讓我們從設(shè)置基本平面并附加材質(zhì)開始。
????除非已經(jīng)打開,否則從工具> ProBuilder> ProBuilder窗口打開ProBuilder。

????從ProBuilder窗口中選擇“新形狀”

????在“Shape Selector(形狀)”窗口中,從下拉列表中選擇“Plane(平面)”

這將在附加了一些默認(rèn)值的場景視圖中添加一個(gè)平面,將其放置在先前創(chuàng)建的默認(rèn)平面旁邊。要看起來像演示中的那個(gè),在ProBuilder窗口中將Plane值設(shè)置為:
寬:20
高:20
寬度段:10
高度段:10

在檢查器視圖中設(shè)置以下內(nèi)容
位置:X:-30 Y:0 Z:-10
????這應(yīng)該將平面放置在關(guān)卡中生成的現(xiàn)有平面之外,如果不能使用這些值完美對齊,請根據(jù)需要進(jìn)行調(diào)整。

????返回到“ 形狀”工具窗口,然后單擊“ Build Plane(構(gòu)建平面)”
????查看Inspector,您可以看到當(dāng)前連接的著色器只是Standard Vertex Color ,它將顯示為灰色。

????要更改此設(shè)置,您可以添加已在3D Gamekit中創(chuàng)建的材質(zhì)。要找到這些內(nèi)容,您可以使用有用的“Search by Type(按類型搜索)” 按鈕

????在項(xiàng)目視圖中,從顯示的下拉菜單中選擇材質(zhì)。

????????這將更新“ 項(xiàng)目” 視圖以顯示項(xiàng)目中的所有材質(zhì)。

????在3D Gamekit中,附加到主平面的默認(rèn)材質(zhì)為Default_Ground_Mat,讓我們進(jìn)一步過濾結(jié)果。
在搜索字段中的t:Material文本旁邊鍵入default_ground_mat。

將Default_Ground_Mat.mat 從“項(xiàng)目”視圖拖放到“場景視圖”中的“平面”上,以向其中添加材質(zhì)。

????注意,在檢查器中,材質(zhì)現(xiàn)已更新為Default_Ground_Mat

????現(xiàn)在,您可以使用該材質(zhì)在平面上繪畫。
????轉(zhuǎn)到Tools> Polybrush> Polybrush窗口

選擇“ Polybrush” 窗口頂部的“ Paint Vertex Colors(繪制頂點(diǎn)顏色)” 選項(xiàng)卡

注意,如何在平面表面上平鋪紋理,左側(cè)為默認(rèn)圖案,右側(cè)為頂點(diǎn)繪制版本。

要查看當(dāng)前映射的紋理,請?jiān)凇?項(xiàng)目” 視圖中轉(zhuǎn)到“ Assets”>“ 3DGamekit”>“Art”>“Texture”>“Environment”>“Ground” 。
提示:但是,要更快地導(dǎo)航到那里,可以使用Default_Ground_Mat Shader,單擊“材質(zhì)”預(yù)覽旁邊的箭頭并選擇一種紋理,這兩種方法都將帶您到“項(xiàng)目”視圖中的正確文件夾。?

要開始繪制新平面,請從“ Polybrush” 窗口中選擇“ Red” 顏料以設(shè)置“ Brush Color(畫筆顏色)”。

這將允許您使用映射的紋理進(jìn)行繪制,在這種情況下,可以使用Moss_Albedo 紋理在頂點(diǎn)上進(jìn)行繪制。
通過在場景視圖中使用畫筆小控件,將其移至平面上的頂點(diǎn),您可以在編輯器中實(shí)時(shí)看到紋理混合,以使其永久化,只需單擊即可。

如果要添加一些MuddyGround 紋理開關(guān)“ 畫筆顏色” 為藍(lán)色和具有SmallStone 紋理的MuddyGround ,則在“ 調(diào)色板” 中將“ 畫筆顏色” 切換為綠色。這會(huì)給您表面上的多種變化。

????現(xiàn)在該輪到您發(fā)揮畫筆的創(chuàng)意了!結(jié)合使用“Push/Pull”,調(diào)整筆刷大小和“筆刷著色”紋理,您可以創(chuàng)建各種已繪制的網(wǎng)格物體。
????提示:要嘗試不同的顏色,可以在編輯器中實(shí)時(shí)預(yù)覽它們,以查看3D Gamekit中應(yīng)用的不同紋理和混合。
從對象中刪除ProBuilder腳本
在場景中使用ProBuilder創(chuàng)建的對象時(shí),最好在完成編輯后刪除Probuilder腳本,以防止游戲中不必要的開銷。它從場景中單獨(dú)選擇的對象或所有ProBuilder對象中刪除腳本。
單擊工具> ProBuilder>操作,然后選擇全部刪除或僅從單獨(dú)選擇的對象中刪除。

該動(dòng)作是永久性的,因此請確保在進(jìn)行此操作之前已對網(wǎng)格和頂點(diǎn)繪制進(jìn)行了所有必要的更改,編輯器會(huì)在完成該動(dòng)作之前向您發(fā)出警告。
5.使用環(huán)境預(yù)制件
????我們?yōu)槟鷺?gòu)建了“關(guān)卡形體”,可以放置在您想要的位置。這些可以在Prefabs > Environment中找到。

例如,讓我們將一個(gè)巖石模型拖到場景中:
在“ 項(xiàng)目” 窗口中,轉(zhuǎn)到“ 預(yù)制件” >“ 環(huán)境” >“ Rock(巖石)”
單擊CliffBig01
在檢查器底部的“ 預(yù)覽窗口”中預(yù)覽此模型

左鍵單擊并在“預(yù)覽窗口”中拖動(dòng)模型以旋轉(zhuǎn)模型并從不同角度查看模型。
提示:如果看不到此窗口,請單擊檢查器底部的灰色欄,然后將鼠標(biāo)向上拖動(dòng)。
性能說明
在旋轉(zhuǎn)模型時(shí),您會(huì)看到模型的某些部分丟失了。這是正?,F(xiàn)象,因?yàn)楹芏鄮缀螆D形都缺少背面。這樣可以使較大的場景表現(xiàn)更好,并阻止它們降低計(jì)算機(jī)的速度。

????添加到場景中的幾何圖形和特效越多,計(jì)算機(jī)需要處理的內(nèi)容就越多。在某些機(jī)器上,這可能是大量的幾何圖形和效果,而在其他機(jī)器上,它可能很小。建立關(guān)卡時(shí)請記住這一點(diǎn),如果按Play時(shí)計(jì)算機(jī)開始變慢,則可能需要?jiǎng)h除一些幾何體。
????我們使用了類似上述的一些技術(shù),以使您能夠盡可能多地構(gòu)建。該項(xiàng)目將自動(dòng)檢測計(jì)算機(jī)的硬件,并確定您可以看到多少幾何形狀和效果以及它們的詳細(xì)程度,類似于PC游戲如何根據(jù)計(jì)算機(jī)更改設(shè)置。如果您需要重置這些設(shè)置或它們不會(huì)自動(dòng)設(shè)置,請轉(zhuǎn)到“ Kit Tools(工具包工具)”>“Auto Detect Quality Settings(自動(dòng)檢測質(zhì)量設(shè)置)” 。

????如果要手動(dòng)更改這些設(shè)置,然后查看設(shè)置明細(xì),請轉(zhuǎn)到Edit(編輯)>Project Settings(項(xiàng)目設(shè)置)>Quality(品質(zhì))。這將打開檢查器中的信息,供您根據(jù)需要進(jìn)行調(diào)整。
LOD(細(xì)節(jié)級(jí)別)Level of Detail
我們用來提高性能的另一種技術(shù)是使用LOD組。LOD 代表“詳細(xì)程度” 。當(dāng)物體遠(yuǎn)離相機(jī)時(shí),將顯示低細(xì)節(jié)網(wǎng)格,并且不會(huì)注意到差異。這是因?yàn)榫哂懈唵螏缀涡螤畹木W(wǎng)格對硬件的要求較低。
讓我們以CliffBig01 為例。
將CliffBig01 拖到“場景”視圖中
在“ 層次結(jié)構(gòu)”中,單擊CliffBig01 旁邊的箭頭以顯示其子級(jí)。

????單擊每個(gè)子項(xiàng),并在場景視圖中觀看它們的變化;

????在這里,我們可以看到細(xì)節(jié)的變化,我們將每個(gè)網(wǎng)格設(shè)置為在距相機(jī)不同距離處顯示。
單擊CliffBig01 旁邊的箭頭將其折疊
確保選中了CliffBig01
在檢查器中,查看“ LOD組”組件

????在這里,您可以看到將在距相機(jī)多少距離處顯示哪些模型。您無需更改這些設(shè)置,因?yàn)槲覀円呀?jīng)為您設(shè)置了所有設(shè)置。LOD組距離會(huì)根據(jù)為您自動(dòng)選擇的質(zhì)量設(shè)置而有所不同。
????有關(guān)LOD組的更多信息,請參閱LOD相關(guān)的文檔
6.巖石和植被畫家
為了進(jìn)一步完善您的場景,我們創(chuàng)建了Rock Painter和Vegetation Painter。這些工具可讓您放置具有不同大小和旋轉(zhuǎn)度的植被和巖石,同時(shí)使其與您要繪畫的表面對齊。
使用這些工具;
在層次結(jié)構(gòu)中,找到VegetationPainter
單擊箭頭展開其子級(jí)

點(diǎn)擊GroundCover
將鼠標(biāo)懸停在“ 場景視圖”中的地面上
左鍵單擊以在您需要的地方放置一些草墊。

????您可以更改要執(zhí)行此操作的對象的類型。
導(dǎo)航到檢查器
在“ Instance Painter” 組件中,Painter中有每個(gè)預(yù)制件的數(shù)個(gè)圖片。

所選的預(yù)制件將為灰色
單擊突出顯示的白色框,以選擇要使用的預(yù)制件。
畫家的控件可以在“ ?Instance Painter” 組件的頂部找到,以下是一些入門的控件:
左鍵單擊:噴涂
Ctrl(Cmd)+左鍵單擊:刪除
Alt +滾動(dòng):增加畫筆大小
空格鍵:隨機(jī)分配位置和旋轉(zhuǎn)
您在其上繪畫的任何對象都將被存儲(chǔ)為“父集的子集”。例如;
導(dǎo)航到層次結(jié)構(gòu)
展開GroundCover

????涂裝中該類型的每個(gè)對象都將作為子集存儲(chǔ)在這里。您也可以單擊它們以單獨(dú)編輯和放置它們。
????涂裝小植被,中植被和大型植被的過程相同

????繪畫巖石的方法相同。
在層次結(jié)構(gòu)中找到RockPainter
單擊箭頭展開其子級(jí)
點(diǎn)擊RocksSmall
將鼠標(biāo)懸停在所需區(qū)域上以放置巖石,然后單擊以放置。

這些工具可幫助您快速繪制關(guān)卡。可以找到這些文件并將其放置在從Prefabs文件夾中拖入預(yù)制件的傳統(tǒng)方式中。
轉(zhuǎn)到項(xiàng)目窗口
轉(zhuǎn)到Assets> 3DGameKit > Prefabs> Environment
????在這里,您可以找到Rocks ,VegetationSmall ,VegetationMedium ,VegetationLarge的文件夾。

????您可以單擊任意一個(gè)并將其拖動(dòng)到“ 場景視圖”中,以將其放置在關(guān)卡中。請注意,以這種方式拖動(dòng)對象時(shí),位置,旋轉(zhuǎn)度和大小不會(huì)隨機(jī)化。
????繼續(xù)在場景中放置對象。別忘了偶爾按一下Play 來測試游戲關(guān)卡,看看游戲中的情況如何。
????在以下各節(jié)中,我們創(chuàng)建了一個(gè)小型環(huán)境來向您展示游戲機(jī)制。祝你玩得開心,并在您的關(guān)卡建設(shè)中發(fā)揮創(chuàng)意!

