朱峰社區(qū)首頁(yè) 朱峰社區(qū)

搜索資源 注冊(cè)|登陸

等待

返回 展開(kāi)菜單

UDK創(chuàng)建關(guān)卡初級(jí)教程

3dMAX建;A(chǔ)教程 觀看預(yù)覽

3dMAX建;A(chǔ)教程

包含19節(jié)視頻教程
關(guān)注306.0萬(wàn)

從零基礎(chǔ)學(xué)習(xí)3dmax的建模技術(shù),簡(jiǎn)單易學(xué)的視頻教程,讓你快速掌握3dmax建模技巧,您可以本套教程的學(xué)習(xí)快速掌握3dmax的大部分技術(shù),并能通過(guò)這些技術(shù)適應(yīng)未來(lái)大多數(shù)的工作,通過(guò)幾節(jié)課就找到工作的會(huì)員大有人在,快來(lái)學(xué)習(xí)一下吧!

關(guān)閉

第三章:創(chuàng)建并開(kāi)動(dòng): 手把手創(chuàng)建關(guān)卡
初級(jí)教程

文檔摘要: 由于全書正在完善中,故本節(jié)內(nèi)容可能在全書出版的過(guò)程中發(fā)生變化。

使用Unreal Engine進(jìn)行游戲設(shè)計(jì)是振奮人心的,想象力有多豐富,設(shè)計(jì)就有多精彩。當(dāng)您第一次決定使用Unreal技術(shù)創(chuàng)建一個(gè)游戲時(shí),指尖的能量是無(wú)可抗拒的。 游戲設(shè)計(jì)者的任務(wù),就是抓住這一領(lǐng)域無(wú)限的可能性并縮小其范圍,從而制作出精彩的游戲;但是正如游戲領(lǐng)域中的任何一位專業(yè)人士所言,說(shuō)出從何下手是很困難 的。要做到"正確"!,您需要大量的不同領(lǐng)域的技能。這就是本章中我們?cè)O(shè)計(jì)這個(gè)簡(jiǎn)單的入門級(jí)關(guān)卡的目的,使您能夠盡快掌握UnrealEd使用的各個(gè)方面進(jìn)行關(guān)卡創(chuàng)建的技巧。

本章不對(duì)每個(gè)操作動(dòng)作進(jìn)行深入解釋,而只是提供一個(gè)Unreal編輯器的超級(jí)速成課程,讓您熟悉本書講解的所有操作動(dòng)作。本章還能幫助UnrealEd的早期版本用戶找出Unreal Engine3.0發(fā)行后對(duì)老版本的改進(jìn)之處。

強(qiáng)烈推薦您完整地閱讀本章內(nèi)容,而不是斷章取義地從中間選取一個(gè)指南。請(qǐng)記住,這是一個(gè)入門章節(jié),目的是帶您快速瀏覽UnrealEd,并盡可能多而簡(jiǎn)單地闡釋本書中的所有概念。

注意: 本章指南旨在使讀者能夠大體識(shí)別UnrealEd用戶界面的主要區(qū)域。要深入查看UnrealEd用戶界面,請(qǐng)查看附錄A: UnrealEd用戶手冊(cè)。

指南3.1——?jiǎng)?chuàng)建您的第一個(gè)房間。

1. 運(yùn)行UnrealEd?梢栽诳蓤(zhí)行文件末端添加標(biāo)志"editor"來(lái)運(yùn)行UnrealEd。如果不確定,請(qǐng)參照以下步驟(Windows):

注意: 最終的"目標(biāo)"屬性應(yīng)與此相似:

C:UE3UnrealEngine3BinariesUTGame.exe editor


圖3.1——UnrealEd用戶界面。

2. Generic browser可能隨UnrealEd一起運(yùn)行。若如此,點(diǎn)擊右上角的關(guān)閉按鈕將其關(guān)閉,然后在UnrealEd主菜單中選擇File > New。


圖3.2——主菜單中的"New"(新建)選項(xiàng)。

3. 彈出New Level(新建關(guān)卡)對(duì)話框,從中可以選擇創(chuàng)建一個(gè)添加型或挖空型場(chǎng)景幾何體。選擇"Subtractive"(挖空型),然后點(diǎn)擊OK。這樣就創(chuàng)建了一個(gè)實(shí)心世界(如同我們位于山的中央),從中可以摳出我們的關(guān)卡。


圖3.3——New Level(新關(guān)卡)對(duì)話框。

4. 在屏幕左側(cè)(工具箱內(nèi)),您將看到Cube(立方體)按鈕。 右擊此按鈕。屏幕中央將出現(xiàn)一個(gè)包含各種維度屬性的窗口。


圖3.4——畫刷(brush)構(gòu)建器——"Cube"(立方體)屬性窗口。

5. 分別于X(長(zhǎng))與Y(寬)的屬性鍵入值1024,以及值512 于Z(高)。參見(jiàn)下圖3.5。

點(diǎn)擊"Build"(創(chuàng)建)按鈕,然后在完成時(shí)點(diǎn)擊"Close"(關(guān)閉)按鈕,F(xiàn)在你已經(jīng)設(shè)置出了相應(yīng)造型的紅色畫刷生成器。然而,如果您注意到在一些視口中看不到畫刷,請(qǐng)不用慌張。您可能需要在視口中使用相機(jī)環(huán)繞瀏覽,直到看的見(jiàn)紅色畫刷!


圖3.5——如圖所示在Cube(立方體)屬性窗口中鍵入相應(yīng)值。

注意: 任何未明確告知需要進(jìn)行屬性設(shè)置的保留其默認(rèn)值即可!

6. 從工具箱中(還是位于屏幕左側(cè)),選擇CSG:Subtract按鈕 。這將使用剛才的紅色畫刷的形狀與位置來(lái)創(chuàng)建一個(gè)挖空型畫刷。創(chuàng)建此挖空型畫刷的目的是在我們的實(shí)心世界中"摳"出一個(gè)房間。然而,由于目前我們?cè)陉P(guān)卡中沒(méi)有任何光照,一切還都是漆黑不可見(jiàn)的。

7. 點(diǎn)擊透視視口頂部工具欄中的Unlit按鈕 。這將以不加入任何光源的形式顯示您的關(guān)卡。由于在我們的關(guān)卡中沒(méi)有光源,這是目前為止查看或者開(kāi)展工作的簡(jiǎn)便方法!請(qǐng)隨意轉(zhuǎn)動(dòng)瀏覽透視視口,以查看您的房間。

提示: 按住鼠標(biāo)左鍵拖曳以進(jìn)行物體的前移、后移及旋轉(zhuǎn)。按住鼠標(biāo)右鍵拖曳以旋轉(zhuǎn)相機(jī)。鼠標(biāo)左鍵及右鍵同時(shí)按下拖曳以進(jìn)行物體的向上、向下、向左及向右滑動(dòng)。


圖3.6——第一個(gè)房間的當(dāng)前進(jìn)展。

祝賀您已經(jīng)在一個(gè)Unreal關(guān)卡中創(chuàng)建了第一個(gè)房間!然而現(xiàn)在它看起來(lái)并不怎么樣。在下一篇指南中,我們將現(xiàn)有的房間加點(diǎn)東西并使它變成更加有趣的關(guān)卡!

既然您已經(jīng)知道了如何從關(guān)卡中摳出一個(gè)房間,那么您盡管可以按照相似的流程十分方便地添加更多的房間。然而,為使這些房間相互連通且使關(guān)卡中的幾何體更為簡(jiǎn)潔與有效,您必須特意關(guān)注每個(gè)房間的準(zhǔn)確位置,并確保每個(gè)畫刷精確對(duì)齊。

指南3.2——向您的關(guān)卡添加第二個(gè)房間

1. 在工具箱中右擊"Cylinder"(圓柱體)按鈕 。在Cylinder屬性窗口中,為Z鍵入1024,其它保持默認(rèn)值,如圖3.7所示。點(diǎn)擊"Build"(構(gòu)建)點(diǎn)擊"Close"(關(guān)閉)按鈕完成。這樣紅色畫刷就轉(zhuǎn)變?yōu)橐粋(gè)高六面體。


圖3.7——使用此設(shè)置創(chuàng)建圓柱體畫刷。

2. 在為我們的六面體房間創(chuàng)建一個(gè)挖空型畫刷之前,我們應(yīng)當(dāng)將紅色畫刷擺放恰當(dāng)。所以就要用到平移控件(Translation Widget) ,可以在UnrealEd的主工具欄中找到平移控件。您可以把這個(gè)控件看作是3ds Max和Maya等很多類似3D制作軟件中的平移操縱器。

左鍵點(diǎn)擊紅色畫刷,F(xiàn)在您應(yīng)該注意到不僅畫刷是以大紅色高亮顯示,同時(shí)平移控件也在其內(nèi)部可見(jiàn)。

注意:確保您不僅選取了平移控件,同時(shí)也選取了位于左邊的Show/Use the Widget圖標(biāo) 。若此鍵未激活,控件則不可見(jiàn)。


圖3.8——平移控件。

3. 為了確保在編輯器中的所有移動(dòng)是精確的,我們需要檢驗(yàn)一下拖曳網(wǎng)格設(shè)置,因?yàn)檫@控制了當(dāng)我們移動(dòng)對(duì)象時(shí)的對(duì)齊(或者說(shuō)是瞬間跳躍)單位。這些設(shè)置在軟件界面底部的控制臺(tái)欄靠近右下角的地方 可以找到拖曳網(wǎng)格設(shè)置。確認(rèn)該復(fù)選框被選中,且"Drag Grid"設(shè)置為16。若您需要更改拖曳網(wǎng)格設(shè)置,只需點(diǎn)擊鄰接拖曳網(wǎng)格設(shè)置的小黑箭頭,并從菜單中選取16。


圖3.9——拖曳網(wǎng)格設(shè)置菜單。

注意: 通常將"Drag Grid"設(shè)置成打開(kāi)狀態(tài)是個(gè)好習(xí)慣。這能使您在移動(dòng)畫刷時(shí)能準(zhǔn)確的與網(wǎng)格首尾對(duì)齊,以保持關(guān)卡中BSP幾何體的整潔,這極為重要。需要BSP的更多信息,參見(jiàn) 第六章 。

4. 在此步驟中,確認(rèn)你選中了Top(俯)視口(位于界面左上窗口)。將紅色畫刷縮小至完整視圖。確保畫刷已選取,并且能看見(jiàn)平移控件窗口。點(diǎn)擊并拖曳控件窗口上的紅色箭頭(X軸),向上移動(dòng)紅色畫刷以使其最底部距離立方體的頂部?jī)蓚(gè)網(wǎng)格的位置。

由于您的拖曳網(wǎng)格設(shè)置為16,兩個(gè)網(wǎng)格的間距相當(dāng)于立方體與六邊形之間有32個(gè)單位(16 x 2)的空間。 等會(huì)兒這會(huì)變得很重要。


圖3.10——立方體及六面圓柱體于俯視口中正確的放置狀態(tài)。

小技巧:如果您沒(méi)辦法確定立方體與六邊形之間到底應(yīng)該有多少個(gè)單位,您可以使用鼠標(biāo)中鍵沿網(wǎng)格拖曳,這樣就可以看到一個(gè)測(cè)量工具。

5. 接下來(lái),查看Side(側(cè)方)視口(位于界面右上窗口)。您會(huì)注意到圓柱體畫刷的底部低于立方體畫刷的底部。需要對(duì)此進(jìn)行調(diào)整,否則在關(guān)卡中會(huì)產(chǎn)生一個(gè)非常不平整的地面,導(dǎo)致玩家進(jìn)入此圓柱體房間時(shí)會(huì)有一個(gè)門戶大開(kāi)的陷坑!

繼續(xù)查看側(cè)視口,然后使用平移控件中的藍(lán)色箭頭柄沿Z軸向上移動(dòng)圓柱形紅色畫刷,使其底部與立方體房間的底部相平。


圖3.10——注意將兩個(gè)房間的底部對(duì)齊。

6. 在確認(rèn)六邊形房間墻壁與立方體房間墻壁之間的距離為32個(gè)單位,且兩個(gè)房間的底部保持水平之后,點(diǎn)擊CSG: Subtract按鈕 摳出第二個(gè)房間。

7. 在俯視口中使用平移控件移開(kāi)紅色畫刷,以使您可以更容易地從perspective(透視)視口中查看房間。請(qǐng)注意,現(xiàn)在兩個(gè)房間之間沒(méi)有走廊供玩家通過(guò)。


圖3.10——在此可以看到當(dāng)前的兩個(gè)房間。但是如果您仔細(xì)看,將發(fā)現(xiàn)它們沒(méi)有相互連通的。

8. 選擇主菜單中的File——選擇Save Current Level,將您的關(guān)卡保存為PrimerMap_01。

現(xiàn)在關(guān)卡中有兩個(gè)獨(dú)立的房間了,但是此刻我們無(wú)法從一個(gè)房間到達(dá)另一個(gè)房間。在下一篇指南中,我們將在兩個(gè)房間中創(chuàng)建走廊以解決此問(wèn)題。

指南3.3——連接您的房間

1. 如果您已關(guān)閉了剛才的文件,請(qǐng)打開(kāi)在上一指南中保存的PrimerMap_01。現(xiàn)在我們要在兩個(gè)房間中創(chuàng)建走廊以連接這兩個(gè)房間。

2. 右擊立方體按鈕 。 在相應(yīng)屬性欄中鍵入以下值,然后點(diǎn)擊"Build"(構(gòu)建)和"Close"(關(guān)閉)按鈕。

小技巧:您可以在構(gòu)建刷屬性窗口中使用Down Arrow(方向鍵下)來(lái)移動(dòng)輸入?yún)^(qū)域。

3. 在俯視口中,使用平移控件為紅色畫刷定位,使其精確配合立方體和六棱柱房間。確認(rèn)居中紅色畫刷,使其邊緣同時(shí)與兩個(gè)房間都相連,并且水平對(duì)齊(還是在俯視圖中)從而與立方體畫刷的邊緣精確配合,如下圖所示。


圖3.11——本圖顯示了正確對(duì)齊創(chuàng)建走廊的紅色畫刷。

4. 既然紅色畫刷在頂部視圖中已經(jīng)對(duì)齊,您還需要在側(cè)方視圖中將它對(duì)齊。否則,您的走廊底部將會(huì)懸在空中幾英尺的地方!在Front(前方)視口(右下區(qū)域)中,使用平移控件移動(dòng)紅色畫刷,使其底部與兩個(gè)房間的底部相平。

5. 一旦確認(rèn)了紅色畫刷的位置,點(diǎn)擊CSG: Subtract按鈕在兩個(gè)房間中摳出一個(gè)走廊。但是您可能需要將相機(jī)拉入其中一個(gè)房間為了可以在透視視口中看到此走廊。


圖3.12——現(xiàn)在在我們兩個(gè)房間中有一個(gè)走廊了!

制作我們需要的關(guān)卡是一件十分復(fù)雜的事情。然而,如果現(xiàn)在試圖播放此關(guān)卡,我們會(huì)發(fā)現(xiàn)一無(wú)所有!這是因?yàn)楫?dāng)前在關(guān)卡中沒(méi)有任何光照。在下一指南中,我們將通過(guò)在關(guān)卡中添加光源解決此問(wèn)題。

指南3.4——照亮關(guān)卡

1. 如果您已關(guān)閉了剛才的文件,請(qǐng)打開(kāi)在上一指南中保存的PrimerMap_01。

2. 創(chuàng)建光源的方法很多。在本例中,我們將使用簡(jiǎn)單的快捷方法。在俯視口中,按住L鍵然后在立方體房間的中心左擊。這將在房間中央添加一個(gè)光源。

3. 現(xiàn)在,您無(wú)法看到光源的效果。在透視視口工具欄中,點(diǎn)擊Lit(點(diǎn)亮)按鈕 ,這樣您就可以看到光源的樣子了。


圖3.14——現(xiàn)在您可以看到光照的結(jié)果。

4. 選中該光源,按F4鍵,打開(kāi)光源的屬性窗口。該窗口被分為幾個(gè)可展類別。首先,點(diǎn)擊Light(光源)類別。在它之下,您將看到叫LightComponent 的子類別。點(diǎn)擊此子類別將展開(kāi)一長(zhǎng)列屬性,它們會(huì)影響到光源的外觀與行為。


圖3.15——光源屬性窗口。

5. 在LightComponent 子類別的設(shè)置列表中,設(shè)置以下屬性(這些屬性所起作用的技術(shù)性解釋將在 第13章 中進(jìn)行敘述):

完成屬性設(shè)置后,關(guān)閉屬性窗口。

6. 現(xiàn)在我們需要此光源的一個(gè)副本,用來(lái)照亮圓柱體房間。仍然選中此光源,按住Alt鍵,并在俯視圖中使用平移控件將該光源沿X軸向上移動(dòng)到圓柱體房間中央。在您移動(dòng)時(shí)確保按住Alt鍵以產(chǎn)生選中對(duì)象(此光源)的副本。

7. 選中新復(fù)制的光源,按F4鍵打開(kāi)其屬性窗口。如果需要,再次展開(kāi)光源類別,然后展開(kāi)LightComponent 子類別。將 Radius(半徑) 屬性設(shè)置為768。


圖3.16——現(xiàn)在兩個(gè)房間都照亮了。

8. 務(wù)必進(jìn)入主菜單欄的File > Save Current Level,保存您的更改!

現(xiàn)在您的房間已照亮了!這樣,就可以很方便地對(duì)其測(cè)試并環(huán)伺其內(nèi)部進(jìn)行觀察。在下一指南中,我們就要進(jìn)行此操作!

指南3.5——測(cè)試關(guān)卡

1. 如果您已關(guān)閉了剛才的文件,請(qǐng)打開(kāi)在上一指南中保存的PrimerMap_01。

2. 在我們真正進(jìn)入關(guān)卡前,我們首先需要編譯它。在編輯Unreal關(guān)卡時(shí),編譯是您要所做最重要的事情之一。它允許UnrealEd將您的幾何體、光源以及其它項(xiàng)目編譯成一個(gè)可運(yùn)行環(huán)境。總而言之,在您測(cè)試一個(gè)關(guān)卡前,您需要將您改變的任何東西重新進(jìn)行編譯。

據(jù)此,只要點(diǎn)擊Build All(編譯所有)按鈕 (主工具欄中),這樣會(huì)一次編譯所有內(nèi)容。對(duì)于編譯一個(gè)如此簡(jiǎn)單的關(guān)卡而言,這應(yīng)該是一個(gè)相對(duì)快速的過(guò)程。但請(qǐng)記住在您重新編譯之前,您可能無(wú)法看到關(guān)卡的精確顯示!


圖3.17——Building Map(正在構(gòu)建地圖)對(duì)話框顯示了您當(dāng)前構(gòu)建操作的進(jìn)度。

3. 一旦全部構(gòu)建完成,就應(yīng)該測(cè)試您的關(guān)卡了。有兩種方法來(lái)測(cè)試關(guān)卡。第一種方法是將一個(gè)PlayerStart(玩家啟動(dòng))actor放置在您所希望玩家進(jìn) 入關(guān)卡的位置。第二種方法是簡(jiǎn)單地點(diǎn)擊關(guān)卡某處(最好在地面上)并告訴UnrealEd,希望從此處開(kāi)始播放關(guān)卡。對(duì)于首次測(cè)試,我們將使用第二種方法。

右擊立方體房間的底部,并從關(guān)聯(lián)菜單中選擇Play From Here(從此播放)。In Editor Game(編輯器內(nèi)運(yùn)行游戲)窗口將出現(xiàn),您可以運(yùn)行關(guān)卡,就像您在游戲中播放它。結(jié)束后,按Esc返回編輯器。

注意: 在底部右擊后,您在點(diǎn)擊Play From Here(從此播放)選項(xiàng)時(shí)可以按住Ctrl。這將使您能夠以旁觀者的身份測(cè)試地圖,這意味著您的相機(jī)可以自由移動(dòng),而不是附著于某一角色身上。

4. 現(xiàn)在我們將使用PlayerStart(玩家啟動(dòng))actor測(cè)試該關(guān)卡。了解玩家進(jìn)入該關(guān)卡的某個(gè)特殊位置,這一點(diǎn)非常重要。右擊關(guān)卡的底部開(kāi)始測(cè)試。從關(guān)聯(lián)菜單中,選擇 Add Actor > Add PlayerStart。

您可以使用平移控件將PlayerStart(玩家啟動(dòng))定位于您鐘愛(ài)的位置。注意到從PlayerStart 圖標(biāo)伸出向外的小箭頭?這使您能夠控制該玩家進(jìn)入關(guān)卡時(shí)的方向。使用Rotation Widget(旋轉(zhuǎn)控件)對(duì)其自由旋轉(zhuǎn),這樣玩家將按照您的意愿,面對(duì)某個(gè)特定方向。


圖3.18——PlayerStart actor已置于關(guān)卡中。

5. 現(xiàn)在進(jìn)入主工具欄的Build(構(gòu)建)菜單并選擇Play Level(播放關(guān)卡),您就可以對(duì)該關(guān)卡進(jìn)行測(cè)試。如果您在此操作前沒(méi)有事先添加入一個(gè)PlayerStart actor,您將會(huì)收到錯(cuò)誤信息。

當(dāng)您完成關(guān)卡測(cè)試后,按Esc返回編輯器。務(wù)必保存您的關(guān)卡!

現(xiàn)在關(guān)卡中的幾何體已經(jīng)建立完畢,也已經(jīng)旋轉(zhuǎn)了一些光源,這樣我們可以瀏覽此關(guān)卡了。但是,當(dāng)前我們看到都只是默認(rèn)材質(zhì),并不娛人耳目。在下一指南中,我們將向關(guān)卡的墻壁,地面以及天花板添加一些材質(zhì),開(kāi)始真正地改變環(huán)境。

指南3.6——向全圖幾何體添加材質(zhì)

1. 如果您已關(guān)閉了剛才的文件,請(qǐng)打開(kāi)在上一指南中保存的PrimerMap_01。

2. 在我們向關(guān)卡添加材質(zhì)之前,我們需要打開(kāi)一個(gè)文件包,該文件包目前包含了在創(chuàng)建關(guān)卡過(guò)程中所需使用的所有材質(zhì)及網(wǎng)格物體。從主菜單欄中選擇View > Browser Windows > Generic 。


圖3.19——進(jìn)入View(視圖)菜單您就能夠找到Generic browser。

3. 在Generic browser內(nèi),從菜單欄選擇File > Open。找到PrimerLevel.upk文件,該文件應(yīng)該已經(jīng)在運(yùn)行Unreal安裝時(shí)從您的DVD復(fù)制到Content/Packages文件夾 中去了。如果還沒(méi)有復(fù)制,此文件包在本書配套DVD的本章中的文件包文件夾中。

一旦打開(kāi)該文件包,它就列在Generic browser左下方的文件包列表中。在它邊上是一個(gè)小的加號(hào)圖標(biāo)。點(diǎn)擊它展開(kāi)文件包,并選擇Materials 組。這將對(duì)您的Generic browser進(jìn)行過(guò)濾,從而只看到PrimerLevel文件包中的材質(zhì)。


圖3.20——在本圖中,您可以看到展開(kāi)了的Generic browser,僅僅顯示所選文件包中的材質(zhì)。

4. 在透視視口中,引導(dǎo)相機(jī)使其位于立方體房間中。然后,使用鼠標(biāo)左鍵,點(diǎn)擊該房間的一面墻。注意墻已變?yōu)樗{(lán)色。這表示該表面已選中。

按住Ctrl鍵的同時(shí),點(diǎn)擊立方體房間的所有墻壁及天花板,就能同時(shí)選中它們,以及走廊的所有表面,但請(qǐng)排除地面。


圖3.21——立方體房間的墻壁當(dāng)前已選中。

5. 返回Generic Browser,點(diǎn)擊mat_wall_plates材質(zhì)。這將會(huì)使該材質(zhì)應(yīng)用于所有的選中表面上。如果您現(xiàn)在隨便點(diǎn)擊其中一面墻壁,就會(huì)在透視視口中取消對(duì)所有表面的選取,這樣就能看到材質(zhì)應(yīng)用的效果了。


圖3.22——第一個(gè)材質(zhì)現(xiàn)在已應(yīng)用于立方體房間的墻壁上。

6. 選擇立方體房間的地面,并在Generic browser中點(diǎn)擊 mat_wall_screws ,將其應(yīng)用于地面。也將此材料應(yīng)用于走廊的地面。

7. 進(jìn)入圓柱體房間,并選擇所有的墻壁以及天花板。您可以只選擇一面墻壁,然后按下Shift-B作為快捷鍵選擇所有與此畫刷一致的表面。然后,按住Ctrl并點(diǎn)擊地面取消選對(duì)它的選取,只保留墻壁與天花板的選取。

一旦選中這些表面,進(jìn)入Generic browser并點(diǎn)擊 mat_stone_mossy 材質(zhì)將其應(yīng)用于表面之上。

8. 使用您學(xué)得的技巧,將 mat_stone_dark 材質(zhì)應(yīng)用于圓柱體房間的地面上。


圖3.23——已應(yīng)用材質(zhì)的圓柱體房間。

9. 測(cè)試您的關(guān)卡,結(jié)束時(shí)請(qǐng)務(wù)必保存!

我們的關(guān)卡正在開(kāi)始真正成型!有了墻壁,有光源開(kāi)始發(fā)光,而且我們還在墻壁上添加了一些"畫"。然而,總體看上去仍然是乏味的。我們需要在關(guān)卡中放置一些東西,為它添加更多的特性。在下一指南中,我們將開(kāi)始用靜態(tài)網(wǎng)格物體豐富我們的關(guān)卡,這些靜態(tài)網(wǎng)格物體是從外部3D應(yīng) 用程序如3ds Max 或者M(jìn)aya構(gòu)建的模型。據(jù)此目的,這些網(wǎng)格物體創(chuàng)建完成了。如果您想獲得更多關(guān)于創(chuàng)建靜態(tài)網(wǎng)格物體的知識(shí),請(qǐng)參見(jiàn) DVD中包含的靜態(tài)網(wǎng)格物體創(chuàng)建教學(xué)視頻 。 關(guān)于靜態(tài)網(wǎng)格物體的技術(shù)信息,請(qǐng)查閱 第XX章: 靜態(tài)網(wǎng)格物體 。

指南3.7——在關(guān)卡中放置靜態(tài)網(wǎng)格物體

1. 如果您已關(guān)閉了剛才的文件,請(qǐng)打開(kāi)在上一指南中保存的PrimerMap_01。

2.選擇View > Browser Windows > Generic。確保您已經(jīng)加載PrimerLevel.pkg文件,該文件包含在教材相關(guān)DVD中的本章的文件包文件夾中。

從Generic browser左邊的文件包列表中,確保您已經(jīng)展開(kāi)PrimerLevel 文件包,這樣您就可以看到它內(nèi)部的Meshes(網(wǎng)格物體)組。

3. 點(diǎn)擊PrimerLevel 文件包中的Meshes(網(wǎng)格物體)組, 您將看到該文件包中所有的靜態(tài)網(wǎng)格物體出現(xiàn)在瀏覽器中,F(xiàn)在我們將其中一個(gè)網(wǎng)格物體放置于場(chǎng)景中。點(diǎn)擊瀏覽器中的 sm_pipe_straight 網(wǎng)格物體。要將該網(wǎng)格物體放置于關(guān)卡中,必須在瀏覽器中選中。


圖3.24——Meshes(網(wǎng)格物體)類別被選中,Generic browser將只顯示包含在文件包中的靜態(tài)網(wǎng)格物體。

4. 在透視視口中,引導(dǎo)相機(jī)進(jìn)入大的立方體房間。右擊靠近墻壁的地面(具體是哪面墻沒(méi)有關(guān)系,雖然之后可能需要對(duì)一些對(duì)象進(jìn)行旋轉(zhuǎn)調(diào)整,使其面向房間中心)并從關(guān)聯(lián)菜單中選擇以下內(nèi)容: Add Actor > Add StaticMesh: StaticMesh PrimerLevel.Meshes.sm_pipe_straight 。放置選中的靜態(tài)網(wǎng)格物體于鼠標(biāo)右擊的位置。確保在俯視口中該網(wǎng)格物體距離墻壁大約32個(gè)單位(兩個(gè)網(wǎng)格的距離);如有需要,用平移控件移動(dòng)該網(wǎng)格物體。

注意: 根據(jù)您當(dāng)前在Generic browser中選中的靜態(tài)網(wǎng)格物體的不同,關(guān)聯(lián)菜單中的Add StaticMesh: 選項(xiàng)將發(fā)生改變。


圖3.25——第一個(gè)靜態(tài)網(wǎng)格物體已放置,看上去是一根從地面豎起的垂直管道。

5. 接下來(lái),在Generic browser中選擇 sm_pipe_joint mesh 。調(diào)整您的透視相機(jī)位,可以看到剛剛添加的垂直管道的頂部,以便于置放。右擊該網(wǎng)格物體末端的上表面并從關(guān)聯(lián)菜單中選擇 Add Actor > Add StaticMesh: StaticMesh PrimerLevel.Meshes.sm_pipe_joint 。將一個(gè)小的接頭網(wǎng)格物體放置在管道的最頂部。

如有需要,在俯視口(左上區(qū)域)中移動(dòng)該接頭網(wǎng)格物體,確保它與管道網(wǎng)格物體對(duì)齊。您可能還需要在側(cè)視口或者前方視口中確認(rèn)該接頭網(wǎng)格物體是否正好垂直放置在管道頂端。


圖3.26——在此您可以看到接頭網(wǎng)格物體已正確放置于垂直管道網(wǎng)格物體的頂端。

6. 在Generic browser中選擇 sm_pipe_corner 靜態(tài)網(wǎng)格物體,右擊您剛剛添加的靜態(tài)網(wǎng)格物體的頂部,并從關(guān)聯(lián)菜單中選擇 Add Actor > Add StaticMesh: StaticMesh PrimerLevel.Meshes.sm_pipe_corner 將此靜態(tài)網(wǎng)格物體添加到地圖中。

該網(wǎng)格物體應(yīng)該正好出現(xiàn)在接頭網(wǎng)格物體的頂部,盡管您可能需要旋轉(zhuǎn)使其背朝墻壁。要進(jìn)行此操作,選擇位于工具欄中的旋轉(zhuǎn)控件 。然后,只要拖曳藍(lán)色旋轉(zhuǎn)軸(Z 軸) 旋轉(zhuǎn)該網(wǎng)格物體,直至它指向房間內(nèi)部。

注意: 按住Ctrl,您能夠全選三個(gè)網(wǎng)格物體,然后將它們作為一個(gè)整體進(jìn)行旋轉(zhuǎn)。

小技巧: 敲擊空格鍵,可以在平移,旋轉(zhuǎn)及縮放控件之間切換!

7. 如果您立刻點(diǎn)擊Build All(編譯所有)按鈕 , 您將注意管道網(wǎng)格物體還沒(méi)有影子。這是因?yàn)殛幱笆腔趕urface-by-surface(面到面)計(jì)算的,而網(wǎng)格物體后墻壁表面的陰影分辨率不夠銳利。主要是因?yàn)殛幱吧⑸溥^(guò)多而無(wú)法再將其表現(xiàn)出來(lái),F(xiàn)在需要進(jìn)行如下修改:首先點(diǎn)擊網(wǎng)格物體后面的墻壁,使其藍(lán)色高亮顯示, 然后按下F5鍵, 打開(kāi)Surface Properties(表面屬性)對(duì)話框。


圖3.27——當(dāng)您按下F5鍵時(shí),Surface Properties(表面屬性)對(duì)話框就出現(xiàn)了。

8. 在Surface Properties(表面屬性)對(duì)話框中,找到Lighting(光照)組,然后從Lightmap Resolution(光源影射分辨率)下拉框中,選擇值8.0。這將銳化管道網(wǎng)格物體后的陰影,使其可見(jiàn)。完成后點(diǎn)擊"Build All"(編譯所有)按鈕 查看效果。


圖3.28——在此您可以看到Lightmap Resolution(光源影射分辨率)下拉框展開(kāi)了。

Lightmap Resolution(光源影射分辨率)屬性看上去有反常識(shí),因?yàn)槟x擇的值越小,陰影就越銳利。思考一下以Unreal單位數(shù)值計(jì)算的單點(diǎn)陰影的數(shù)值。因此較小的數(shù)值將加強(qiáng)陰影。同時(shí),更少的陰影點(diǎn)要求放置更多的點(diǎn)去創(chuàng)建一個(gè)連續(xù)的陰影。這就意味著較低的Lightmap Resolution(光源影射分辨率)設(shè)置要求更高的處理能力并可能拖慢您的關(guān)卡性能。一定要小心不要對(duì)過(guò)多的表面進(jìn)行此操作!

9. 現(xiàn)在可以測(cè)試您的關(guān)卡。完成時(shí)請(qǐng)務(wù)必保存您的工作!此外,如果愿意,您可以隨意添加該網(wǎng)格物體的多個(gè)副本,用一系列連通的管道來(lái)豐富您的空間。


圖3.29——請(qǐng)注意管道后的陰影現(xiàn)在已經(jīng)可見(jiàn)。

我們已經(jīng)將第一個(gè)靜態(tài)網(wǎng)格物體放置在關(guān)卡中,但是我們可以做得更好。在一個(gè)真實(shí)關(guān)卡中,您通常會(huì)放置許多靜態(tài)網(wǎng)格物體貫穿于整個(gè)場(chǎng)景。通常的想法是:您的關(guān)卡的基本布局部分用世界幾何物體創(chuàng)建,而實(shí)際的豐富細(xì)節(jié)及組裝的對(duì)象都用靜態(tài)網(wǎng)格物體創(chuàng)建。自然,您可以在您的關(guān)卡中有上百個(gè)靜態(tài)網(wǎng)格物體。然而, 基于靜態(tài)網(wǎng)格物體是如何計(jì)算的性質(zhì),同一網(wǎng)格物體的多個(gè)實(shí)例僅僅比一個(gè)實(shí)例對(duì)處理能力的要求略微提高。這意味著您可以在一個(gè)關(guān)卡中放置一個(gè)網(wǎng)格物體的很多備份而不會(huì)為您的電腦帶來(lái)巨大的開(kāi)銷。

我們還有更多的一些網(wǎng)格物體。在下一指南中,我們會(huì)將剩下的靜態(tài)網(wǎng)格物體放置在關(guān)卡中,包括當(dāng)我們接近時(shí)就會(huì)打開(kāi)的門。

指南3.8——添加走廊網(wǎng)格物體

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01,F(xiàn)在我們將添加走廊網(wǎng)格物體,用來(lái)包圍分隔兩個(gè)房間的門。

2. 打開(kāi)Generic browser,展開(kāi)PrimerLevel文件包,并選擇Meshes組。點(diǎn)擊sm_doorway靜態(tài)網(wǎng)格物體。

3. 在透視視口中,在兩個(gè)房間當(dāng)中的走廊中間點(diǎn)右鍵 。從關(guān)聯(lián)菜單中選擇以下內(nèi)容: Add Actor > Add StaticMesh: StaticMesh PrimerLevel.Meshes.sm_doorway 。將走廊網(wǎng)格物體放置于走廊中,可能需要對(duì)齊。在前視口中使用平移控件走廊網(wǎng)格物體與走廊完全貼合。同時(shí)在透視視口中務(wù)必確認(rèn)與之對(duì)齊。

注意: 如果您是在不同方向創(chuàng)建了房間,即在俯視口中查看時(shí),它是邊到邊而不是由上到下的移動(dòng),那么您可能需要通過(guò)使用旋轉(zhuǎn)控件來(lái)旋轉(zhuǎn)走廊網(wǎng)格物體90度,使其與走廊完全貼合。


圖3.30——正確放置關(guān)卡中的走廊網(wǎng)格物體。

4. 點(diǎn)擊"Build All"(編譯所有)按鈕 ,確認(rèn)您的關(guān)卡顯示出正確的光照及陰影。

5. 保存并測(cè)試您的地圖。

注意: 我們還沒(méi)有在走廊中放置能夠打開(kāi)與關(guān)閉的真實(shí)的門。不要因?yàn)橐呀?jīng)放置了一個(gè)靜態(tài)網(wǎng)格物體而試圖跳到下一步驟!稍后我們將使用不同的actor類型創(chuàng)建一個(gè)真實(shí)的門,該actor類型能夠產(chǎn)生真實(shí)門的動(dòng)畫!

現(xiàn)在我們已經(jīng)將所有的靜態(tài)網(wǎng)格物體放置此簡(jiǎn)單關(guān)卡中。下面我們將在走廊中添加一些簡(jiǎn)單的重點(diǎn)光照,使得需要發(fā)光的區(qū)域看上去確實(shí)是在發(fā)光。目前,它們僅僅依靠材質(zhì)的發(fā)光效果發(fā)出橙色光,但是在關(guān)卡中還沒(méi)有任何光源的存在。如果希望它們發(fā)光,我們必須通過(guò)有策略地放置一些重點(diǎn)光源"模擬出"該效果。

指南3.9——在走廊網(wǎng)格物體周圍放置重點(diǎn)光照

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01,F(xiàn)在我們將添加走廊網(wǎng)格物體,它用來(lái)包圍隔開(kāi)兩個(gè)房間的門周圍。

2. 在透視視口中,引導(dǎo)相機(jī)使您靠近走廊網(wǎng)格物體。接下去,在按住L鍵的同時(shí),左擊走廊網(wǎng)格物體左上角的發(fā)光橙色楔狀物體。這將在該形狀的表面創(chuàng)建一個(gè)新的光源。


圖3.31——您的第一束重點(diǎn)光源就位。

3. 使用平移控件,將該光源移離走廊網(wǎng)格物體幾個(gè)單位。精確并不是真正考慮的因素,所以只要將其拉出,使得該圖標(biāo)不是正好位于表面上,但是不要太遠(yuǎn),這樣光照效果會(huì)被破壞。大約32個(gè)單位應(yīng)該夠了。

4.保持該光源被選中,按 F4打開(kāi)屬性窗口。展開(kāi)Light標(biāo)簽與LightComponent 類別,然后設(shè)置以下屬性:

5. 按住Alt,使用平移控件復(fù)制出一個(gè)副本并移動(dòng)其平移穿過(guò)走廊到另一邊, 這樣就在相反的發(fā)光楔狀物前創(chuàng)建了一個(gè)光源副本。

6. 按住Ctrl并將兩束新光源一起選中,然后,按住Alt的同時(shí),將它們向下拖曳,同時(shí)在底部楔狀物前創(chuàng)建兩個(gè)的副本。


圖3.32——現(xiàn)在您可以看到該光源的全部四個(gè)副本。

7. 現(xiàn)在,再次按住Ctrl并選擇上面的兩束光源,這樣您就選中了所有的四束光源。然后再次按住Alt,在俯視口中移動(dòng)光源穿越走廊,在走廊相對(duì)的一邊創(chuàng)建光源的四個(gè)副本。

8. 點(diǎn)擊Build All"(編譯所有) 按鈕,為新光源重新計(jì)算光照。然后測(cè)試并保存您的地圖。

重點(diǎn)光源是逼真的關(guān)卡中的一個(gè)重要方面。在關(guān)卡中恰當(dāng)運(yùn)用能夠產(chǎn)生光暈效果的材質(zhì)發(fā)光,是強(qiáng)而有力的工具。然而,添加光源創(chuàng)建實(shí)際的照明可以使您的關(guān)卡看上去更接近于現(xiàn)實(shí)。在接下去的幾個(gè)指南中, 我們將通過(guò)以蒸氣形式粒子效果,來(lái)豐富現(xiàn)有的關(guān)卡!

粒子是一種可以在空間中創(chuàng)建各類效果的點(diǎn),其效果可以從蒸氣、煙霧、火焰、灰塵甚至到碎片!粒子設(shè)置在Unreal中可以非常簡(jiǎn)單,也可以變得異常復(fù)雜。但是,在此入門章節(jié)中,我們只講解最基礎(chǔ)的東西,并把所有的深入討論保留到 第X章: 粒子效果中 。

指南3.10——?jiǎng)?chuàng)建您的第一個(gè)粒子發(fā)射器

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01,F(xiàn)在是用一些粒子效果來(lái)裝飾我們的關(guān)卡的時(shí)間了!

注意: 隨著您逐步深入本指南,請(qǐng)記住,在很多時(shí)候您可能看到的不是粒子的真實(shí)樣子。在您能夠開(kāi)始查看效果前,需要添加和設(shè)置許多屬性。事實(shí)上,只到深入到下一指南之前,您可能根本不會(huì)真正地看到任何粒子效果!

2. 打開(kāi)Generic browser,右擊預(yù)覽窗口的空白區(qū)域。打開(kāi)一個(gè)對(duì)象創(chuàng)建關(guān)聯(lián)菜單,從中選擇" New ParticleSystem "(新建粒子系統(tǒng)),然后New Object(新建對(duì)象)對(duì)話框出現(xiàn)了。


圖3.33——具有關(guān)聯(lián)菜單的預(yù)覽區(qū)域。

3. 在"新建對(duì)象"對(duì)話框中,確認(rèn)作為文件包名PrimerLevel可見(jiàn),然后鍵入Emitters作為組名稱,以及part_steam作為名稱。完成后點(diǎn)擊OK。


圖3.34——已填入合適字段的"New Object"(新建對(duì)象)對(duì)話框。

UnrealCascade (簡(jiǎn)稱為Cascade) 粒子系統(tǒng)編輯器將出現(xiàn), 您的新粒子系統(tǒng)已經(jīng)加載完畢并可以開(kāi)始編輯。要深入查看Cascade 界面,請(qǐng)參閱 UnrealEd 用戶手冊(cè) 。


圖3.35——Cascade粒子編輯器界面。

4. 右擊Emitter列表 (Cascade 編輯器右上黑色區(qū)域) 并從關(guān)聯(lián)菜單中選擇New ParticleSpriteEmitter。出現(xiàn)一個(gè)新的粒子發(fā)射器節(jié)點(diǎn)。這是真正將粒子發(fā)射至我們關(guān)卡中的對(duì)象,而且也是我們?cè)趧?chuàng)建各種效果時(shí)必須編輯的對(duì)象。


圖3.36——一個(gè)新的粒子發(fā)射器已經(jīng)就緒并可以進(jìn)行編輯了。

5. 在發(fā)射器列表頂部點(diǎn)擊選中粒子發(fā)射器節(jié)點(diǎn)。變?yōu)槌壬硎颈贿x中,您還將注意到它的屬性出現(xiàn)在Cascade編輯器左下的屬性區(qū)域內(nèi)。我們將開(kāi)始向發(fā)射器添加材質(zhì)。

在Cascade窗口的屬性區(qū)域點(diǎn)擊材質(zhì)特性,并點(diǎn)擊"Show Generic Browser"(顯示Generic Browser)按鈕 顯示Generic browser。展開(kāi)PrimerLevel文件包,并選擇mat_steam材質(zhì)。返回Cascade編輯器,點(diǎn)擊"Use Current Selection in Browser"(使用瀏覽器當(dāng)前已選項(xiàng))按鈕 將該材質(zhì)應(yīng)用于您的粒子。


圖3.37——在本圖中您可以看到Use(使用)按鈕被高亮顯示。

6. 我們需要在發(fā)射器上設(shè)置各類屬性,以獲得預(yù)期效果。在屬性區(qū)域,展開(kāi)RequiredModule類別,并進(jìn)行如下操作:

7.您需要保存目前的進(jìn)展。但是,您只是更改文件包,而不是地圖。您可以打開(kāi)Generic Browser,選擇PrimerLevel文件包,并從瀏覽器的菜單欄中選擇File > Save……完成此操作。

我們現(xiàn)在已經(jīng)創(chuàng)建了發(fā)射器,但是為了獲得預(yù)期效果,還需要設(shè)置許多屬性。在粒子系統(tǒng)中有很多屬性可供選擇,然而我們必須添加需要應(yīng)用于發(fā)射器各種屬性。如果對(duì)一個(gè)發(fā)射器應(yīng)用全部的屬性,其屬性列表的長(zhǎng)度將無(wú)法控制!在Unreal中,在粒子系統(tǒng)上執(zhí)行特定功能的屬性組被稱為模塊。有些模塊已經(jīng)存在于默認(rèn)的粒子系統(tǒng)中,其它的則需要添加。在下一指南中我們將設(shè)置發(fā)射器中的默認(rèn)模塊,之后我們將添加新模塊。

指南3.11——建立基本發(fā)射器模塊

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01。

2. 我們從對(duì)已添加于粒子系統(tǒng)的基本模塊設(shè)置其屬性開(kāi)始。在發(fā)射器列表(Emitter List)(仍然位于右上區(qū)域),點(diǎn)擊Lifetime模塊。該模塊的屬性將出現(xiàn)于左下屬性區(qū)域內(nèi)。在Distribution(分布)類別下設(shè)置以下屬性:


圖3.38——屬性區(qū)域所見(jiàn)的Lifetime(生命期)屬性。

3. 返回Emitter List,選擇Initial Size(初始大。┠K,并在分布特性中設(shè)置以下屬性:


圖3.39——"Properties"(屬性)區(qū)域中所見(jiàn)的"Initial Size"(初始大。⿲傩浴

注意: 當(dāng)您執(zhí)行此步驟時(shí),您將在預(yù)覽窗口中看到粒子系統(tǒng)開(kāi)始出現(xiàn)了!

4. 現(xiàn)在選擇"Initial Velocity"(初速度)模塊,并設(shè)置如下屬性:

5. 保存您的文件包。

現(xiàn)在我們的基本模塊已經(jīng)設(shè)置完成,但是要達(dá)到預(yù)期效果,所需要的不僅僅發(fā)射器附帶的基本模塊。在下一指南中,我們將向我們的粒子系統(tǒng)添加一些模塊,并為每一模塊建立相應(yīng)的屬性。

指南3.12——增添附加發(fā)射器模塊

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01。

2. 現(xiàn)在我們將添加第一個(gè)模塊。在Emitter列表中,右擊Initial Velocity模塊下的空白處。從關(guān)聯(lián)菜單中選擇 SubUV > SubImage Index 。把SubImage Index模塊添加到列表中。確保選中新建模塊,然后在Properties區(qū)域,設(shè)置如下屬性:


圖3.40——在此您可以看到已添加了DistributionFloatConstantCurve。

3. 返回Emitter列表,右擊SubImage Index模塊下的空白處。從關(guān)聯(lián)菜單中選擇Size > Size By Life。添加一個(gè)新的Size By Life模塊于列表中。

注意: 當(dāng)您進(jìn)行此操作時(shí),將注意到在預(yù)覽窗口中的粒子消失了。不用著急,這完全正常。因?yàn)楝F(xiàn)存的粒子還未被指定大小。

4. 與SubImage Index的操作一樣,點(diǎn)擊Distribution類別,然后點(diǎn)擊"Create A new Object"(新建對(duì)象)按鈕 。從關(guān)聯(lián)菜單中選擇 DistributionVectorConstantCurve 。像之前一樣,現(xiàn)在已經(jīng)創(chuàng)建了一個(gè)內(nèi)部曲線,控制了于其生命周期內(nèi)粒子從一個(gè)尺寸至另一尺寸的流動(dòng)方式。這次的曲線變得復(fù)雜得多,帶有更多的點(diǎn)。

在Distribution類別中,完成下列步驟:

注意: 當(dāng)您完成這些步驟,可以看到您的粒子系統(tǒng)又在預(yù)覽窗口中開(kāi)始工作了。


圖3.41——Cascade中所見(jiàn)的蒸氣粒子系統(tǒng)的最終狀態(tài)。

5. 現(xiàn)在您可以關(guān)閉Cascade窗口。保存當(dāng)前的文件包進(jìn)度。

至此您已經(jīng)創(chuàng)建了粒子發(fā)射器, 盡管目前它還不在您的關(guān)卡中。這是創(chuàng)建粒子的標(biāo)準(zhǔn)工作流;您將使用Cascade窗口創(chuàng)建您預(yù)期的效果類型。當(dāng)您完成后,發(fā)射器已放置于關(guān)卡中,以真正將效果添加于關(guān)卡中。在下一指南中,將完整進(jìn)行此操作。

指南3.13——將蒸氣發(fā)射器置于關(guān)卡中

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01。

2. 在Generic browser中,打開(kāi)PrimerLevel文件包并選擇Emitters組。現(xiàn)在您應(yīng)該在預(yù)覽窗口中看到 part_steam emitter 。確保選中之。

3. 在透視視口中,右擊現(xiàn)在指向房間內(nèi)的管道拐角末端。從關(guān)聯(lián)菜單中選擇 Add Actor > Add Emitter: part_steam ,將此發(fā)射器放置于關(guān)卡中。


圖3.42——發(fā)射器圖標(biāo)就是五個(gè)緊鄰的小點(diǎn)。

4. 此時(shí),您可能無(wú)法在視口中看到發(fā)射器的效果。您可以點(diǎn)擊位于視口工具欄最左側(cè)的"Real Time"(實(shí)時(shí)演算)按鈕 來(lái)解決此問(wèn)題。


圖3.43——現(xiàn)在我們的管道網(wǎng)格物體看來(lái)正在釋放蒸氣!

5. 保存并測(cè)試您的關(guān)卡。作為一項(xiàng)挑戰(zhàn),看看您是否能夠調(diào)整粒子系統(tǒng)的必要值,使得蒸氣能從管道向外噴出并上升!在此給出一個(gè)提示;您可以從Initial Velocity模塊開(kāi)始!如果您做出任何更改,務(wù)必保存您的文件包!

為創(chuàng)建一個(gè)如此基本的關(guān)卡我們走了很長(zhǎng)的一段路,但是在結(jié)束前,仍然有許多元素要添加。下一步驟是在走廊中添加一扇能夠真正打開(kāi)與關(guān)閉的門。這將用 到Matinee(如果您使用過(guò)老版本的Unreal,可能會(huì)在創(chuàng)建游戲中影片及腳本序列時(shí)記起它)以及Kismet,Unreal Engine 3.0中的新型可視事件腳本系統(tǒng)。

指南3.14——添加一個(gè)InterpActor(Mover)與觸發(fā)

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01。

2.創(chuàng)建穿越關(guān)卡移動(dòng)的對(duì)象的第一個(gè)步驟是添加適當(dāng)?shù)木W(wǎng)格物體。然而,不是將它添加為不會(huì)運(yùn)動(dòng)的靜態(tài)網(wǎng)格物體,我們將其添加為 "Interpolation actor"(通常稱為"mover")。使其通過(guò)使用Matinee系統(tǒng)中指定的動(dòng)畫達(dá)到在空間中移動(dòng)的目的。 在Generic browser中展開(kāi)PrimerLevel軟件包并選擇Meshes組。

在Generic browser中展開(kāi)PrimerLevel軟件包并選擇Meshes組。


圖3.44——PrimerLevel文件包中所有的網(wǎng)格物體都顯示了出來(lái)。

3. 選擇 sm_door 網(wǎng)格物體。在透視視口中,右擊走廊內(nèi)或者附近的地面并從關(guān)聯(lián)菜單中選擇Add Actor > Add InterpActor: StaticMesh PrimerLevel.Meshes.sm_door。這將賂您的地圖添加一個(gè)InterpActor而不是靜態(tài)網(wǎng)格物體。

4. 在俯、前方和側(cè)視口中分別使用平移控件,確保門網(wǎng)格物體與走廊正確對(duì)齊。需要時(shí)使用旋轉(zhuǎn)控件將門旋轉(zhuǎn)90度。


圖3.45——走廊網(wǎng)格物體已正確放置。

5. 為了使其表現(xiàn)正常而不出現(xiàn)問(wèn)題,我們需要對(duì)門進(jìn)行一些設(shè)置。在您的視口中選中門mover的情況下,按下F4并進(jìn)行如下設(shè)置:

6. 現(xiàn)在我們必須添加引起門打開(kāi)的"開(kāi)關(guān)"。在Unreal中,這樣的開(kāi)關(guān)叫做觸發(fā)器(Triggers)。和光源一樣,它們存在于關(guān)聯(lián)菜單中的Add Actor中。

在門網(wǎng)格物體中央右擊并選擇 Add Actor > Add Trigger 。于關(guān)卡中新建了一個(gè)觸發(fā)器。


圖3.46——在此您可以看見(jiàn)觸發(fā)器已添加至房間中央。

7. 選中Trigger,按F4打開(kāi)觸發(fā)器的屬性窗口(Properties Window)。展開(kāi)Trigger標(biāo)簽,然后展開(kāi)CylinderComponent類別。

將 CollisionHeight (碰撞高度) and CollisionRadius (碰撞半徑) 屬性都設(shè)置為96.0。

8. 選中觸發(fā)器并使其在俯視口中可見(jiàn),按C鍵顯示觸發(fā)器的碰撞幾何體。然后,使用平移控件沿投影視口將觸發(fā)器放置于門的正中央位置。確保碰撞幾何體從門的兩側(cè)都突出來(lái)。

注意: 碰撞幾何體的可見(jiàn)性在每個(gè)視口中都是獨(dú)立的。這意味著如果在一個(gè)視口中按C鍵打開(kāi),而在其它視口中沒(méi)有按C鍵的話,是看不見(jiàn)的?梢酝ㄟ^(guò)再次按下C鍵將其關(guān)閉。


圖3.47——如果正確地放置了觸發(fā)器,其碰撞將會(huì)從門的中央平展出來(lái)。

9. 保存您的關(guān)卡。

我們的InterpActor與觸發(fā)器已經(jīng)放置在關(guān)卡中了。但是,在門進(jìn)行實(shí)際工作前,我們還需要兩個(gè)元素使效果動(dòng)起來(lái):一個(gè)Kismet序列,以及一個(gè)Matinee 序列。從本質(zhì)上說(shuō),Matinee將"偵聽(tīng)"觸發(fā)器的輸入動(dòng)作(在這種情況下,玩家已經(jīng)鍵入了碰撞半徑)。然后Matinee將告訴InterpActor需如何動(dòng)作。然而,整個(gè)信息交換過(guò)程在沒(méi)有Kismet序列的幫助情況下是不可能實(shí)現(xiàn)的。在下一指南中,在您創(chuàng)建第一個(gè)基本序列時(shí),我們將介紹Kismet,用以加入到適當(dāng)?shù)腗atinee動(dòng)畫與其聯(lián)系起來(lái)。

簡(jiǎn)而言之, Kismet就是一個(gè)可視的腳本系統(tǒng),允許您僅通過(guò)連接一系列節(jié)點(diǎn)進(jìn)行聯(lián)網(wǎng)工作,就能夠創(chuàng)建出復(fù)雜的事件。當(dāng)深入到序列中時(shí),您將發(fā)現(xiàn)自己正在創(chuàng)建越來(lái)越復(fù)雜的節(jié)點(diǎn)網(wǎng)絡(luò)。請(qǐng)記住,關(guān)于如何在Kismet中創(chuàng)建各種序列的問(wèn)題可以很容易就發(fā)展成一整本教科書。但是,在本指南中,我們將創(chuàng)建其中最簡(jiǎn)單可行的序列之一。

指南3.15——?jiǎng)?chuàng)建第一個(gè)Kismet序列

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01。

2. 點(diǎn)擊UnrealEd界面頂部主工具欄上的"Open Kismet"(打開(kāi)Kismet)按鈕 ,打開(kāi)UnrealKismet (簡(jiǎn)稱為Kismet)編輯器。我們將在編輯器內(nèi)創(chuàng)建Kismet序列。


圖3.48——Kismet編輯器界面。

3. 確認(rèn)在關(guān)卡中選中觸發(fā)器,然后在主工作空間右擊(占據(jù)Kismet窗口上部的大區(qū)域) 并從關(guān)聯(lián)菜單中選擇 New Event Using Trigger_0 > Touch 。這將新建一個(gè)Touch序列對(duì)象并自動(dòng)關(guān)聯(lián)到Trigger_0中。


圖3.49——一個(gè)新的Touch 序列對(duì)象已經(jīng)創(chuàng)建。

4. 瀏覽Kismet工作空間,調(diào)整Touch序列對(duì)象位于窗口左側(cè)。然后在Touch序列對(duì)象右側(cè)空白區(qū)域右擊并從關(guān)聯(lián)菜單中選擇 New Matinee 。


圖3.50——現(xiàn)在的Matinee序列對(duì)象是可見(jiàn)的,該對(duì)象緊鄰原始Touch序列對(duì)象旁邊。由于這些連接方向?yàn)閺淖蟮接,將它們?duì)齊會(huì)使得連接變得更為容易。

5. 將您的鼠標(biāo)移動(dòng)過(guò)緊鄰Touch 序列對(duì)象上的Touched 輸出屬性柄,使其黃色高亮顯示。然后,按住鼠標(biāo)左鍵拖曳,將來(lái)源于Touch 序列對(duì)象上的Touched 輸出與Matinee 序列對(duì)象的Play輸入屬性用一條"線"來(lái)連接。這意味著Matinee序列將在觸發(fā)器被碰觸時(shí)進(jìn)行"播放"。實(shí)際上,這意味著一旦玩家步入觸發(fā)器的碰撞半徑,門就打開(kāi)了。

6. 使用步驟5中的技巧,將來(lái)自Touch 序列對(duì)象UnTouched輸出特性與Matinee 序列對(duì)象的Reverse 輸入屬性用線連接。此連接設(shè)定后,一旦玩家不再碰觸觸發(fā)器, Matinee動(dòng)畫將倒回(或者回放),F(xiàn)在當(dāng)玩家離開(kāi)時(shí),門會(huì)自動(dòng)關(guān)閉。


圖3.51——被"線接"在一起的兩個(gè)序列對(duì)象。

7. 最后,選擇Trigger_0 Touch序列對(duì)象,并在屬性區(qū)域中將MaxTriggerCount屬性設(shè)置為0。這樣觸發(fā)器能夠進(jìn)行無(wú)數(shù)次觸發(fā),因此使得此門在玩家身后關(guān)閉并在其再次接近時(shí)仍然打開(kāi)。

8. 保存關(guān)卡的當(dāng)前進(jìn)度,F(xiàn)在無(wú)須對(duì)地圖進(jìn)行測(cè)試,因?yàn)闆](méi)有進(jìn)行過(guò)任何可播放的更改。

我們已經(jīng)在關(guān)卡中建立了InterpActor,并通過(guò)使用Kismet設(shè)置一個(gè)序列,使得當(dāng)玩家碰觸觸發(fā)器時(shí),發(fā)生某一事件。然而,我們還沒(méi)有完全設(shè)定具體的發(fā)生事件。在下一指南中,我們將用Matinee來(lái)設(shè)置InterpActor,使得當(dāng)Kismet序列觸發(fā)時(shí),門會(huì)進(jìn)行移動(dòng)。

指南3.16——用Matinee設(shè)置InterpActor

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01。

2. 在Kismet編輯器中,雙擊Matinee對(duì)象。打開(kāi)Matinee編輯器,該編輯器非常類似于一個(gè)非線性視頻編輯器環(huán)境。


圖3.52——Matinee界面。

注意:非常重要!在一個(gè)視口中,確定您已經(jīng)選中了mover (通過(guò)紫色線框可以確認(rèn))。如果您的mover沒(méi)有選中,下一步驟將不能正常進(jìn)行!

3. 右擊Group列表(位于Matinee窗口左上區(qū)域中的寬淺灰色欄)。從關(guān)聯(lián)菜單中,選擇" Add New Group "(新建組)。將彈出一個(gè)命名對(duì)話框,為此組命名為 SteamRoomDoor 。


圖3.53——您可以看到新建組已經(jīng)出現(xiàn)在界面的左上角。

4. 接下去,右擊 SteamRoomDoor 組并從關(guān)聯(lián)菜單中選擇" Add New Movement Track "(新建移動(dòng)軌跡)。


圖3.54——一個(gè)新建行動(dòng)軌跡現(xiàn)在已經(jīng)添加到該組中。

5. 在Matinee窗口中,選擇新建的Movement track。然后,您需要在Matinee軌跡區(qū)域底部運(yùn)行的有數(shù)字覆蓋的灰色條上拖動(dòng),將時(shí)間滑塊設(shè)置為0.0。

注意: 起初您可能看不到時(shí)間滑塊。只要沿標(biāo)尺上的任意位置點(diǎn)擊并拖動(dòng)鼠標(biāo),并確認(rèn)左側(cè)綠色文本隨時(shí)間滑塊的移動(dòng)更新為新位置。結(jié)束時(shí),確保將時(shí)間滑塊設(shè)置回0.000/5.000。


圖3.55——時(shí)間滑塊跨越了軌跡視圖的底部。

時(shí)間滑塊位于0.0時(shí),點(diǎn)擊"Add Key"(添加關(guān)鍵幀)按鈕 ,在此時(shí)間點(diǎn)上設(shè)置一個(gè)關(guān)鍵幀。為了使門具有動(dòng)畫效果,現(xiàn)在我們需要第二個(gè)關(guān)鍵幀。

6. 將時(shí)間滑塊移動(dòng)至1.0并點(diǎn)擊"Add Key"(添加關(guān)鍵幀)按鈕 ,設(shè)置第二個(gè)關(guān)鍵幀。但是,由于第二關(guān)鍵幀只記錄了門的同一位置,而門仍然沒(méi)有運(yùn)動(dòng)。從效果上講,相當(dāng)于我們將門的動(dòng)畫設(shè)置為在1秒鐘內(nèi)保持靜止?fàn)顟B(tài)。


圖3.56——兩個(gè)關(guān)鍵幀以指向朝上的小三角形式出現(xiàn)。

7. 在運(yùn)動(dòng)軌跡位于時(shí)間指數(shù)為1.0時(shí),點(diǎn)擊同一行中的橙色小三角形,選中新建的第二關(guān)鍵幀。在透視視口左下角應(yīng)該有 ADJUST KEY 2 字樣。

在俯視口中,將門向左移動(dòng)128個(gè)單位(如果您的Drag Grid(拖曳網(wǎng)格) 仍然設(shè)置為16,則此距離就是8個(gè)網(wǎng)格),F(xiàn)在您已經(jīng)記錄了第二關(guān)鍵幀的新位置,這樣門的動(dòng)畫就設(shè)置為在1秒鐘內(nèi)進(jìn)行打開(kāi)。


圖3.57——在此透視視口的截圖中,您可以看到門已經(jīng)被移動(dòng)到打開(kāi)位置。注意左下角的提示,我們正在調(diào)整第二關(guān)鍵幀.

8. 保存您的地圖并進(jìn)行測(cè)試。現(xiàn)在門在您接近的時(shí)候打開(kāi),而在離開(kāi)的時(shí)候則關(guān)閉。如果您移動(dòng)得過(guò)快,會(huì)發(fā)現(xiàn)門仍然會(huì)阻止您進(jìn)入,直至其完全打開(kāi)為止。

現(xiàn)在我們的門在關(guān)卡中已經(jīng)能起作用了。對(duì)于使用過(guò)老版本的Unreal用戶而言,僅僅為了把門打開(kāi)這一簡(jiǎn)單動(dòng)作就費(fèi)了九牛二虎之力,但是此新系統(tǒng)對(duì)比老版本的優(yōu)勢(shì)在于,它可以提供多種新的功能。而且,一旦您學(xué)會(huì)此工作流,對(duì)mover的設(shè)置將會(huì)是小菜一碟了。

在下一指南中,我們進(jìn)一步通過(guò)添加一些能與玩家互動(dòng)的動(dòng)態(tài)對(duì)象,并根據(jù)對(duì)現(xiàn)實(shí)世界中物理現(xiàn)象的模擬推倒它們。這是一個(gè)兩步走的過(guò)程。首先,我們將設(shè)置物理對(duì)象,然后再對(duì)其應(yīng)用一個(gè)物理材質(zhì),此物理材質(zhì)控制其對(duì)象對(duì)外部作用力的反應(yīng)方式。

指南3.17——?jiǎng)?chuàng)建物理對(duì)象

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01。

2. 在Generic browser中,展開(kāi)PrimerLevel文件包并打開(kāi)Meshes組。在Generic browser中選擇 sm_crate 網(wǎng)格物體。

3. 在透視視口中瀏覽立方體形房間,然后右擊地面某一點(diǎn)并選擇 Add Actor > Add RigidBody: StaticMesh Basic_Room.Meshes.sm_crate 。將箱子作為剛體添加,此箱子是一個(gè)特殊的actor,可以對(duì)外部作用力做出反應(yīng)。


圖3.58——關(guān)聯(lián)菜單中的添加剛性物體選項(xiàng)。

4. 按住Alt,使用平移控件復(fù)制出第一個(gè)網(wǎng)格物體副本并將其緊貼原始物體安放。重復(fù)該過(guò)程直至產(chǎn)生四個(gè)盒子相鄰成直線,如下圖所示。


5. 使用相同技巧選取前三個(gè)盒子,復(fù)制出三個(gè)排成直線的盒子,置于第一行頂部。然后再重復(fù)復(fù)制第二行的前兩個(gè)盒子,之后是單獨(dú)的一個(gè)盒子。如圖所示創(chuàng)建一個(gè)由10個(gè)盒子組成的金字塔。


圖3.59——盒子以金字塔形堆放。注意對(duì)一些盒子進(jìn)行單獨(dú)旋轉(zhuǎn),使得此堆放更具個(gè)性。

6. 完成該金字塔的建立后,選中所有的箱子并將它們作為一個(gè)整體進(jìn)行移動(dòng)和/或旋轉(zhuǎn),使其位于走廊前方,以阻擋玩家進(jìn)入圓柱體房間。

7. 保存您的關(guān)卡。

既然我們已經(jīng)放置了物理對(duì)象,我們需要控制其對(duì)外力作用的反應(yīng),比如玩家與其發(fā)生碰撞或者移動(dòng)它們時(shí)的作用力。在下一指南中,我們將應(yīng)用一些實(shí)際控制剛性物體的物理材質(zhì)。

指南3.18——?jiǎng)?chuàng)建并應(yīng)用一個(gè)物理材質(zhì)

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01。

2. 打開(kāi)Generic browser。在預(yù)覽窗口的空白區(qū)域右擊, 并從關(guān)聯(lián)菜單中"New PhysicalMaterial"(新建物理材質(zhì))。打開(kāi)"New Object"(新建對(duì)象)對(duì)話框。鍵入下列值:


圖3.60——正確設(shè)置"New Object"(新建對(duì)象)對(duì)話框。

3. 這將創(chuàng)建一個(gè)新的物理材質(zhì)并顯示當(dāng)前屬性進(jìn)行編輯。從中設(shè)置以下值:

4. 確認(rèn)在Generic browser中仍然選中physMat_crate材質(zhì), 然后在透視視口中全選10個(gè)箱子。按F4打開(kāi)其屬性窗口。設(shè)置以下值:


圖3.61——現(xiàn)在能夠在關(guān)卡中與箱子進(jìn)行物理互動(dòng)!

5. 保存您的文件包,然后保存并測(cè)試您的地圖。走向箱子并按住鼠標(biāo)右鍵,您可以舉起這些箱子。如果您快速移動(dòng)鼠標(biāo)并在中途放開(kāi)鼠標(biāo)右鍵,就可以將盒子拋出房間!盡情享受樂(lè)趣吧!

既然我們已經(jīng)在關(guān)卡中放置了一些物理對(duì)象,那么只需再添加一項(xiàng)效果就可以完成我們這一簡(jiǎn)易的關(guān)卡設(shè)計(jì)了。我們將放置一些高度霧效果,以賦予關(guān)卡一種朦朧的感覺(jué)。

指南3.16——將高度霧添加至關(guān)卡中

1. 繼續(xù)上一指南,或打開(kāi)在上一指南中保存的PrimerMap_01。

2. 在主菜單欄中選擇View > Browser Windows > Actor Classes。打開(kāi)Actor類瀏覽器,向您列出一個(gè)完整的可用于關(guān)卡中的所有actor列表。


圖3.62——Actor類瀏覽器界面。

3. 在Actor類瀏覽器中,展開(kāi)Info并選擇HeightFog。

4. 右擊立方體形房間的地面并從關(guān)聯(lián)菜單中選擇"Add HeightFog Here"(在此添加高度霧)。在點(diǎn)擊的位置放置高度霧。

5. 雙擊HeightFog actor圖標(biāo)打開(kāi)其屬性窗口,然后進(jìn)行以下操作:


圖3.63——HeightFog 屬性窗口。

6. 使用平移控件將HeightFog actor移動(dòng)至您希望的霧化起始高度。將它移動(dòng)到屋頂將會(huì)使得整個(gè)房間充滿霧;蛘呖梢允蛊渫A粲诳拷孛娴牡胤健U(qǐng)隨意調(diào)整密度。


圖3.64——請(qǐng)注意HeightFog圖標(biāo)處于真實(shí)霧的頂部。將它向上移動(dòng)將增加霧化等級(jí)。

7. 保存并測(cè)試您的關(guān)卡。

這樣,您的基本關(guān)卡就完成了。但是本章為何在此停止了?本章末尾的幾個(gè)指南已經(jīng)向您展示了很多東西,只要您對(duì)生活中觀察到的事物進(jìn)行實(shí)驗(yàn),您就已經(jīng)能夠創(chuàng)建出一些引人入勝的關(guān)卡了!

圖3.65——這就是我們的測(cè)試關(guān)卡,只是單純依照本章教程所述的一系列元素制作出來(lái)的。

貫穿本書剩余的部分,我們將進(jìn)一步擴(kuò)展與補(bǔ)充本章所陳述的概念。然而請(qǐng)記住,本指南中學(xué)得的所有技巧都是至關(guān)重要的,它們能使大家加快對(duì)本書剩余章節(jié)的理解步伐。

,
朱峰社區(qū)三維動(dòng)畫出爐 朱峰社區(qū)三維動(dòng)畫出爐

朱峰社區(qū)網(wǎng)頁(yè)版
朱峰社區(qū)網(wǎng)頁(yè)版(手機(jī)掃描-分享-添加到屏幕)


朱峰社區(qū)公眾號(hào)
朱峰社區(qū)微信公眾號(hào)(微信掃一掃-關(guān)注)

資源說(shuō)明圖文教程無(wú)法下載,只能觀看圖片和文字。
版權(quán)規(guī)則本站圖文皆來(lái)自互聯(lián)網(wǎng)共享資源,如涉及到版權(quán)請(qǐng)查看版權(quán)規(guī)則。本平臺(tái)提供圖文僅可用于個(gè)人學(xué)習(xí),如用于商業(yè)請(qǐng)購(gòu)買正版。您必須遵守的版權(quán)規(guī)則

未知用戶

未知用戶

2005-2024 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號(hào)-1
2005-2024 ZhuFeng Community All Rights Reserved

VIP

朱峰社區(qū)微信公眾號(hào)

回頂部

1.復(fù)制文本發(fā)給您的QQ好友或群、微信等;好友點(diǎn)擊鏈接以后,轉(zhuǎn)發(fā)就成功了。 2.如朋友點(diǎn)擊您的鏈接,您需要需刷新一下才行;同一個(gè)好友僅能點(diǎn)擊一次。
購(gòu)買VIP,觀看所有收費(fèi)教程!