虛幻引擎(UE4)游戲技術(shù)基礎(chǔ) 課件 第5章 藍(lán)圖基礎(chǔ)_第1頁
虛幻引擎(UE4)游戲技術(shù)基礎(chǔ) 課件 第5章 藍(lán)圖基礎(chǔ)_第2頁
虛幻引擎(UE4)游戲技術(shù)基礎(chǔ) 課件 第5章 藍(lán)圖基礎(chǔ)_第3頁
虛幻引擎(UE4)游戲技術(shù)基礎(chǔ) 課件 第5章 藍(lán)圖基礎(chǔ)_第4頁
虛幻引擎(UE4)游戲技術(shù)基礎(chǔ) 課件 第5章 藍(lán)圖基礎(chǔ)_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

藍(lán)圖基礎(chǔ)PART01什么是藍(lán)圖?什么是藍(lán)圖?藍(lán)圖是可視化腳本編輯藍(lán)圖的過程就是程序員編輯程序的過程什么是藍(lán)圖?把藍(lán)圖看作是內(nèi)容的容器它可以容納組件。在藍(lán)圖中可以包含許多基本的組件,這些組件稱為component。例如,汽車是個(gè)藍(lán)圖系統(tǒng),其中包含許多個(gè)組件。它可以保存腳本。在藍(lán)圖中,會(huì)包含許多腳本。一個(gè)系統(tǒng)由許多個(gè)組件組成,這只是由一堆組件組成的系統(tǒng)。而腳本則會(huì)定義各個(gè)組件之間的關(guān)系以及觸發(fā)時(shí)機(jī)等。例如一扇門,由門框,門和門把手組成,需要定義一個(gè)腳本,當(dāng)我們靠近門時(shí),門能夠自動(dòng)打開,遠(yuǎn)離門時(shí)門會(huì)關(guān)閉。它可以保存數(shù)據(jù)編譯的面向?qū)ο罂梢暬_本語言綁定到UE4現(xiàn)有的框架類層次結(jié)構(gòu)中藍(lán)圖完全嵌入到UE4中去通過將節(jié)點(diǎn)和連接串在一起并立即查看結(jié)果來工作藍(lán)圖類型藍(lán)圖類型關(guān)卡藍(lán)圖—最常用的藍(lán)圖類型,每個(gè)關(guān)卡只有一個(gè)藍(lán)圖。藍(lán)圖類—藍(lán)圖類則是更加模塊化,一個(gè)關(guān)卡包含多個(gè)藍(lán)圖類。

c++就是藍(lán)圖和藍(lán)圖就是c++藍(lán)圖就是基于c++代碼構(gòu)建的,藍(lán)圖的底層就是c++可以在c++中打開/編輯藍(lán)圖藍(lán)圖可以和c++一起配合使用藍(lán)圖類型UE4中常見的類PART02創(chuàng)建藍(lán)圖創(chuàng)建藍(lán)圖類方法在資源管理器中點(diǎn)擊AddNew直接選擇BlueprintClass創(chuàng)建直接在ContentBrowser(內(nèi)容瀏覽器)中右鍵創(chuàng)建一個(gè)空的藍(lán)圖類注:關(guān)卡藍(lán)圖似乎只能通過Blueprints工具的OpenBlueprintClass打開。藍(lán)圖編輯UI界面藍(lán)圖工具欄藍(lán)圖中可編輯的內(nèi)容藍(lán)圖相關(guān)的其他功能藍(lán)圖函數(shù)庫中可以定義若干個(gè)函數(shù),這些函數(shù)都是全局函數(shù),可以在任意藍(lán)圖中直接調(diào)用。藍(lán)圖宏庫一種藍(lán)圖類快捷方式,可添加至其它藍(lán)圖的藍(lán)圖宏節(jié)點(diǎn)庫??梢詢?chǔ)存常用節(jié)點(diǎn)序列用以快速執(zhí)行和數(shù)據(jù)傳輸所需的輸入和輸出。藍(lán)圖接口是一個(gè)或多個(gè)函數(shù)的集合,可添加至其它藍(lán)圖。枚舉就是一種參數(shù)列表。結(jié)構(gòu)是不同變量類型的集合。PART03事件事件種類和創(chuàng)建方法EventBeginPlay(事件開始運(yùn)行):是游戲開始時(shí)將通過在所有Actor上觸發(fā)此事件。例如:使用它打印字符事件Tick:程序運(yùn)行中每一幀刷新一次按下鍵盤按鍵事件,如按下1鍵輸出YES,松開1鍵輸出NO。事件種類和創(chuàng)建方法自定義事件:當(dāng)滿足條件時(shí)執(zhí)行旳事件。自定義事件要通過一個(gè)條件來驅(qū)動(dòng)這個(gè)事件,如使用一個(gè)判斷節(jié)點(diǎn)或按下1鍵時(shí)驅(qū)動(dòng)自定義事件。事件種類和創(chuàng)建方法通過在項(xiàng)目設(shè)置的輸入中的操作映射和軸映射來定義事件操作映射:一般打拳,蹲下,起跳的動(dòng)作使用操作映射軸映射:一般一些汽車游戲,第三人稱游戲控制對象移動(dòng)使用軸映射例:在操作映射中定義一個(gè)事件Input,通過1鍵來控制。在藍(lán)圖中找出input事件來進(jìn)行節(jié)點(diǎn)連接開關(guān)門的控制1鍵控制門開啟2鍵控制門關(guān)閉時(shí)間軸控制門開關(guān)的時(shí)間,添加一個(gè)浮點(diǎn)數(shù)制作一個(gè)時(shí)間過度通過插值來控制門旋轉(zhuǎn)的角度,繞z軸旋轉(zhuǎn)90度設(shè)置角度和目標(biāo)方法一:通過按鍵1、2來控制門的開關(guān)開關(guān)門的控制方法二:通過碰撞來控制,先給門添加一個(gè)碰撞盒,然后把按鍵1、2改為當(dāng)對象與碰撞盒重疊或遠(yuǎn)離碰撞盒時(shí)控制門的開關(guān)。PART04變量變量定義變量:是計(jì)算機(jī)語言中存儲(chǔ)計(jì)算結(jié)果或等表示抽象的概念。就是保存了各種值的“器皿”,它可以存放一個(gè)值或引用世界中的一個(gè)Object或Actor的屬性。創(chuàng)建變量:在“我的藍(lán)圖”中“變量”單擊“+”號(hào)后,添加了名為“NewVar”的項(xiàng)目。這就是新生成的變量。變量類型布爾型(Boolean):只有兩個(gè)值ture和false。一般用于數(shù)據(jù)的判斷。字節(jié)型(Byte):數(shù)據(jù)變量,用來表示0~255的整數(shù)值。整型(Integer):32位整型。整形(Integer64):64位整型,能存儲(chǔ)更大的數(shù)。浮點(diǎn)型(Float):32位單精度浮點(diǎn)型,UE4中默認(rèn)保留小數(shù)點(diǎn)后6位。UE4中只有Float類型沒有Double類型。變量類型字符串型(String):用于設(shè)置動(dòng)態(tài)字符串,可對字符串進(jìn)行增刪改查等操作命名(Name):表示對象的唯一標(biāo)識(shí)名稱,不區(qū)分大小寫,確定默認(rèn)值之后一般不可修改,全局字符串表中存儲(chǔ),在內(nèi)存中使用起來比String效率更高文本(Test):是字符串的加強(qiáng)版,長度不限,通常儲(chǔ)存一段文字。向量(Vector):三維向量,默認(rèn)類型為float的x,y和z值,表示物體的位置變量類型旋轉(zhuǎn)體(Rotator):三維旋轉(zhuǎn)向量,包含x,y和z值,表示物體的旋轉(zhuǎn)變換(Transfrom):代表變換數(shù)據(jù),它包括平移(三維位置)、旋轉(zhuǎn)及縮放。變量基礎(chǔ)應(yīng)用通過獲取和設(shè)置變量調(diào)整燈光的強(qiáng)度和顏色

第一步,創(chuàng)建一個(gè)變量,NewVar浮點(diǎn)類型。

第二步,創(chuàng)建一個(gè)聚光源,獲取其變量。

第三步,設(shè)置變量燈光強(qiáng)度和顏色。

第四步,將顏色組件提升為變量LightColor。

第五步,編輯,并運(yùn)行。

最后可以在細(xì)節(jié)面板中看到這兩個(gè)變量,可改變其數(shù)值來改變燈光的強(qiáng)度和顏色變量基礎(chǔ)應(yīng)用實(shí)現(xiàn)兩個(gè)變量相加在運(yùn)行時(shí)候輸出顯示出來(其他運(yùn)算同理,如+-/*)

第一步,創(chuàng)建兩個(gè)變量,Var_a和Var_b都是浮點(diǎn)類型。

第二步,創(chuàng)建使用浮點(diǎn)+浮點(diǎn)節(jié)點(diǎn)。

第三步,把變量拖拽到事件圖表中設(shè)置為獲取屬性。

第四步,添加輸出節(jié)點(diǎn)print

第五步,連線實(shí)現(xiàn)業(yè)務(wù)流程。

第六步,設(shè)置變量的數(shù)值,編輯,并運(yùn)行查看輸出。PART05流程控制節(jié)點(diǎn)流程控制節(jié)點(diǎn)分支節(jié)點(diǎn)(Branch):Branch類似于ifelse語句,Condition處判斷為真,則從True口輸出。否則,從False口輸出。

例:下圖中A為1,B為2。因A<B,故Condition處判斷為假,從False口輸出。流程控制節(jié)點(diǎn)延遲節(jié)點(diǎn)(Delay)

:可用于計(jì)時(shí)器、倒計(jì)時(shí)器。Duration的值表示將輸出延遲的秒數(shù)。

例:下圖中變量S為0,Duration值為1,開始運(yùn)行時(shí),每1秒都會(huì)進(jìn)行加1的運(yùn)算。由1變2變3,依此類推。流程控制節(jié)點(diǎn)DoOnce(只執(zhí)行一次)

:可用于游戲技能的釋放冷卻。Reset表示重設(shè),相當(dāng)于退回到未執(zhí)行狀態(tài)。StartClosed表示開始時(shí)無法直接執(zhí)行,需重設(shè)后才可執(zhí)行。

例:下圖中,按鍵“2”表示執(zhí)行該節(jié)點(diǎn),最終會(huì)輸出Hello。按鍵“3”表示重設(shè),重設(shè)后才能再次執(zhí)行。StartClosed表示剛開始不能直接按“2”執(zhí)行輸出結(jié)果,需要按“3”重設(shè)后才能執(zhí)行。流程控制節(jié)點(diǎn)DoN(執(zhí)行N次)

:可用于彈匣設(shè)計(jì)。Enter表示輸入,N表示可執(zhí)行的次數(shù),Reset表示重設(shè),Exit表示輸出,Counter表示當(dāng)前執(zhí)行的次數(shù)。

例:下圖中,按“2”會(huì)執(zhí)行,執(zhí)行5次后再按“2”,無法執(zhí)行,需要按“3”重設(shè)后才可重新執(zhí)行。流程控制節(jié)點(diǎn)DoOnceMultiInput(執(zhí)行一次多次輸入輸出)

:類似于switch語句,InOut一一對應(yīng),AIn對應(yīng)AOut,ResetIn對應(yīng)ResetOut。Addpin表示添加輸入輸出對。

例:下圖中,按“1”輸出A,按“z”輸出刷新并進(jìn)行重設(shè)后按“2“輸出B,再按“z”輸出刷新并進(jìn)行重設(shè)后按“3“輸出C。每執(zhí)行一次,就需要重設(shè)一次,才能再次執(zhí)行。流程控制節(jié)點(diǎn)FilpFlop(翻轉(zhuǎn))

:可用于切換狀態(tài)。isA表示從A開始輸出。

例:下圖中,按“1”,輸出A,再按“1”,輸出B。流程控制節(jié)點(diǎn)Gate(門)

:可用于道具的拾取判斷、十進(jìn)制進(jìn)位。Toggie表示切換,可以在Open和Close間切換。StartClosed表示開始時(shí)無法直接輸出,相當(dāng)于Close狀態(tài)。需要切換到Open狀態(tài)才能輸出。

例:下圖中,開始時(shí),無法直接輸出結(jié)果,需要按“1”或“3”切換到Open狀態(tài)才能輸出。流程控制節(jié)點(diǎn)MultiGate(多門):可用于隨機(jī)抽獎(jiǎng)。Reset表示刷新,可重設(shè)輸出次數(shù)為0。IsRandom表示輸出順序隨機(jī)。Loop表示輸出次數(shù)不限。StartIndex表示輸出的起始位置。

例:下圖中,按“1”,隨機(jī)輸出結(jié)果。流程控制節(jié)點(diǎn)RetriggerableDelay(可觸發(fā)延遲):可以防止快速按同一鍵導(dǎo)致的輸出問題。Duration表示按鍵后延遲的秒數(shù)。若在Duration值的時(shí)間內(nèi)按同一鍵,則延遲會(huì)更新,重新延遲。

例:下圖中,按“1”后,延遲0.5秒才會(huì)輸出結(jié)果。若在0.5秒內(nèi)再次按“1”,則會(huì)重新延遲0.5秒再輸出。流程控制節(jié)點(diǎn)Sequence(序列):可以同時(shí)進(jìn)行多個(gè)輸出。then表示輸出端口。輸出端口從then0開始。Addpin表示添加輸出端口。

例:下圖中,按“1”,會(huì)同時(shí)打印Then0和Then1的執(zhí)行結(jié)果。PART06數(shù)組數(shù)組的概念數(shù)組:所謂數(shù)組,是有序的元素序列。若將有限個(gè)類型相同的變量的集合命名,那么這個(gè)名稱為數(shù)組名。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量。數(shù)組的相關(guān)概念數(shù)組在C++中使用英文array表示數(shù)組數(shù)組長度:是指數(shù)組中一共包含多少個(gè)元素。在C++中用英文length表示數(shù)組長度索引:是數(shù)組每個(gè)元素的序列標(biāo)簽,在數(shù)組中索引值是從0開始計(jì)數(shù),在C++中使用Index表示遍歷:遍歷就是將數(shù)組中的所有元素進(jìn)行逐一查看。在C++中使用loop表示數(shù)組的概念數(shù)組常用于游戲中的背包如圖所示如果要訪問背包中的某個(gè)元素在C++的變現(xiàn)方法。例:array[8]如果要將背包的某個(gè)元素進(jìn)行修改,在C++表示方法。例:array[8]==none這樣就代表把索引值為8的元素清空背包中索引為8的物品京就會(huì)被刪除12345678數(shù)組的創(chuàng)建創(chuàng)建的變量MyArray,修改為浮點(diǎn)類型的數(shù)組。只需要在變量類型右側(cè)切換成9宮格圖案的圖標(biāo),編譯后可添加數(shù)組元素。數(shù)組的編輯ADD節(jié)點(diǎn):追加元素在數(shù)組的最后位置,也就是添加新的索引以及對應(yīng)的數(shù)。不管原來的數(shù)組是否存在添加的值都會(huì)在末尾添加。ADDNUIQUE節(jié)點(diǎn):追加元素首先檢測數(shù)組里面是否存在當(dāng)前要添加的元素的值,若存在,則無需操作,若不存在,則添加到數(shù)組的最后面。Insert節(jié)點(diǎn):中間插入新元素最下面的空為整型,要填寫需在第幾個(gè)元素后添加。倒數(shù)第二個(gè)空為要添加的新元素。數(shù)組的編輯移除某個(gè)元素RemoveIndex:移除第幾個(gè)索引的元素RemoveItem:移除所有與你填寫數(shù)組相同的元素查找、搜尋某一元素Find:輸入想要查找的元素,會(huì)輸出元素所在的位置(索引)ContainsItem(包含項(xiàng)目):輸入想要查找的元素,輸出是否存在數(shù)組的編輯重置元素LastIndex:輸出最后一個(gè)元素的索引Resize:清空并返回一個(gè)已輸入的數(shù)組長度(元素總個(gè)數(shù)),每個(gè)元素恢復(fù)其默認(rèn)值數(shù)組遍歷ForEachLoopArrayElement所有的元素值A(chǔ)rrayIndex所有的索引值Completed所有元素遍歷完成后,執(zhí)行此輸出節(jié)點(diǎn)ForEachLoopwithBreak:遇到你想要的元素可暫停遍歷Shuffle:隨機(jī)打亂元素的順序數(shù)組的獲取獲取數(shù)組元素有兩種方法get(acopy):是數(shù)組本身,是得到數(shù)組的一個(gè)復(fù)制品。不會(huì)影響到后面修改元素的值。get(aret):如果對元素的值進(jìn)行修改會(huì)影響到原始數(shù)組的元素。數(shù)組的設(shè)置值給數(shù)組設(shè)置值通過SetArrayElem(設(shè)置陣列元素)節(jié)點(diǎn)實(shí)現(xiàn)。右擊事件圖表找到該節(jié)點(diǎn)添加到事件圖表這中。該節(jié)點(diǎn)有四個(gè)輸入引腳,含義如下:TargetArray:用于連接設(shè)置值的數(shù)組Index:用于規(guī)定設(shè)置項(xiàng)目的編號(hào),這里可以指定編號(hào)的值。即數(shù)組下標(biāo)Item:用于連接設(shè)置的值。將于Item連接的值保存在Index指定的編號(hào)中SizetoFit:如果有項(xiàng)目未使用,就刪除掉,負(fù)責(zé)整理保留使用的項(xiàng)目PART07結(jié)構(gòu)體結(jié)構(gòu)體的概念概念:存儲(chǔ)相同類型或不同類型數(shù)據(jù)的集合創(chuàng)建結(jié)構(gòu)體,添加變量。通過BreakStruct節(jié)點(diǎn)分解結(jié)構(gòu)體,就能訪問到結(jié)構(gòu)體的每個(gè)元素了結(jié)構(gòu)體的概念設(shè)置變量(方法一):右擊選中選擇設(shè)置結(jié)構(gòu)體的成員變量,勾選引腳選項(xiàng)即可更改變量設(shè)置變量(方法二):直接拖拽結(jié)構(gòu)體變量到藍(lán)圖中,選擇設(shè)置變量,更改變量即可結(jié)構(gòu)體創(chuàng)建結(jié)構(gòu)體數(shù)組的創(chuàng)建:在結(jié)構(gòu)體變量類型右側(cè)切換成9宮格圖案的圖標(biāo),編譯后可添加數(shù)組元素。結(jié)構(gòu)體數(shù)組訪問。獲取結(jié)構(gòu)體變量,使用一個(gè)get(acopy)節(jié)點(diǎn)獲取索引為2的字符串。結(jié)構(gòu)體的使用結(jié)構(gòu)體數(shù)組遍歷(同數(shù)組遍歷相同)。使用一個(gè)ForEachLoop節(jié)點(diǎn)遍歷結(jié)構(gòu)體數(shù)組,如下圖。結(jié)構(gòu)體的使用結(jié)構(gòu)體數(shù)組添加元素。不能直接添加元素,要?jiǎng)?chuàng)建結(jié)構(gòu)體MyStruct才可添加元素,添加了字符串ddd,如下圖。結(jié)構(gòu)體的使用結(jié)構(gòu)體數(shù)組改變元素值。通過SetArrayElem(設(shè)置陣列元素)節(jié)點(diǎn)實(shí)現(xiàn),把索引為2里的元素改為了eee,如下圖。結(jié)構(gòu)體的使用結(jié)構(gòu)體的使用兩個(gè)數(shù)組進(jìn)行連接。使用一個(gè)APPEND節(jié)點(diǎn)連接,只會(huì)改變前一個(gè)數(shù)組的長度。如下圖。PART08計(jì)時(shí)器與傳送門計(jì)時(shí)器首先創(chuàng)建一個(gè)藍(lán)圖,選擇Actor類,命名為BP_Time。然后添加文本渲染組件搭建計(jì)時(shí)器計(jì)時(shí)器創(chuàng)建藍(lán)圖改變秒針個(gè)位數(shù)的時(shí)間。創(chuàng)建一個(gè)整型變量Var_S,通過分支節(jié)點(diǎn)來改變秒針個(gè)位數(shù)時(shí)間,每過一秒加1。判斷秒針個(gè)位數(shù)是否大于等于10,若大于等于10則輸出0。計(jì)時(shí)器添加藍(lán)圖改變秒針十位數(shù)的時(shí)間。創(chuàng)建一個(gè)整型變量Var_SS,當(dāng)秒針個(gè)位數(shù)變?yōu)?時(shí),秒針十位數(shù)加1。通過分支節(jié)點(diǎn)來判斷秒針十位數(shù)是否大于等于6,若大于等于6則輸出0。計(jì)時(shí)器添加藍(lán)圖改變分針個(gè)位數(shù)的時(shí)間。創(chuàng)建一個(gè)整型變量Var_M,當(dāng)秒針十位數(shù)變?yōu)?時(shí),分針個(gè)位數(shù)加1。通過分支節(jié)點(diǎn)來判斷分針個(gè)位數(shù)是否大于等于10,若大于等于10則輸出0。計(jì)時(shí)器添加藍(lán)圖改變分針十位數(shù)的時(shí)間。創(chuàng)建一個(gè)整型變量Var_MM,當(dāng)分針個(gè)位數(shù)變?yōu)?時(shí),分針十位數(shù)加1。通過分支節(jié)點(diǎn)來判斷分針十位數(shù)是否大于等于6,若大于等于6則輸出0。傳送門放置一個(gè)門,把門設(shè)置為無碰撞,添加一個(gè)材質(zhì)球改為無光照。在添加一個(gè)場景捕捉2D(以一個(gè)攝像機(jī)的形式對場景進(jìn)行捕捉),在創(chuàng)建一個(gè)畫布渲染目標(biāo),將目標(biāo)直接提供給場景捕捉2D攝像機(jī),渲染目標(biāo)賦予材質(zhì),把材質(zhì)貼賦予門。傳送門添加一個(gè)觸發(fā)盒子放在門前面,在關(guān)卡藍(lán)圖中添加一個(gè)碰撞事件(當(dāng)角色碰到碰撞盒子時(shí)觸發(fā)),獲取第三視角角色,獲取場景捕捉2D的位置獲取位置坐標(biāo)和旋轉(zhuǎn)角度,即當(dāng)角色碰撞到盒子的時(shí)候設(shè)定為場景捕捉器的位置實(shí)現(xiàn)傳送。PART09藍(lán)圖類的繼承藍(lán)圖類的繼承藍(lán)圖類的繼承概念(以軍隊(duì)為例)藍(lán)圖類的繼承材質(zhì)的繼承:可通過鼠標(biāo)右鍵創(chuàng)建材質(zhì)實(shí)例來繼承藍(lán)圖類的繼承:創(chuàng)建一個(gè)藍(lán)圖類命名為BP_a,進(jìn)入藍(lán)圖添加一個(gè)靜態(tài)網(wǎng)格體,添加材質(zhì)。然后右擊面板添加藍(lán)圖類在所有類中選擇BP_a,則BP_b為BP_a的子級(jí),BP_b繼承了BP_a的內(nèi)容。修改父級(jí),子級(jí)會(huì)發(fā)生改變;修改子級(jí),父級(jí)不變。PART10電梯案例電梯案例創(chuàng)建一個(gè)BP_DT藍(lán)圖,創(chuàng)建一個(gè)cubemesh,添加碰撞體盒子boxcollision。創(chuàng)建函數(shù)(gravityfuncation)重力函數(shù)來模擬角色上電梯時(shí)電梯有個(gè)緩沖動(dòng)作——上下運(yùn)動(dòng)。函數(shù)(gravityfuncation)藍(lán)圖獲取BP_DT的高度進(jìn)行判斷,是否等于最高高度。分支節(jié)點(diǎn)判斷true:電梯在最高高度,當(dāng)角色進(jìn)入電梯,電梯向下運(yùn)動(dòng)50米用lerp過度這個(gè)下降和上升的過程,lerp的alpha就是這時(shí)過度曲線。false:電梯不在最高高度,及在最初的位置,角色跳入到電梯電梯觸發(fā)機(jī)制,該過程同樣得用lerp函數(shù)來過度。lerp函數(shù)的alpha值需在外部輸入所以給gravityfuncyion賦予input上alpha變量。電梯案例在電梯藍(lán)圖上給boxcollision添加oncomponentbeginoverlap(box)和oncomponentendoverlap(box)事件,當(dāng)物體與電梯發(fā)生碰撞時(shí)執(zhí)行oncomponentbeginoverlap,先給alpha賦予變量曲線,用timeline函數(shù)編輯合理曲線.執(zhí)行了gravityfunction函數(shù)后也就是alpha曲線結(jié)束后,角色就可以按1鍵使電梯向上.用enableinput鏈接gate(門)按1entergate后,也就是說當(dāng)角色剛上到電梯時(shí)gravity結(jié)束后可以opengate,當(dāng)角色離開電梯時(shí)執(zhí)行oncomponentendoverlap使gate變到close。電梯案例但角色按1時(shí)電梯上升,電梯上升用到setrelativelocation設(shè)置z(高度的變化)而高度的變化用到linetine時(shí)間線和lerp過度實(shí)現(xiàn)上下。事件藍(lán)圖如下PART11藍(lán)圖通信和信息交互藍(lán)圖通信和信息交互藍(lán)圖通信包含信息傳遞、數(shù)據(jù)分享、數(shù)據(jù)引用等一系列數(shù)據(jù)交互的操作。藍(lán)圖通信包含以下幾個(gè):關(guān)卡藍(lán)圖或藍(lán)圖類各自在藍(lán)圖之內(nèi)的信息交互關(guān)卡藍(lán)圖和藍(lán)圖類與場景內(nèi)部的對象的通信藍(lán)圖類之間的信息交互通過中間變量進(jìn)行信息的交互藍(lán)圖類與關(guān)卡藍(lán)圖之間的信息交互遍歷搜索引用藍(lán)圖類藍(lán)圖通信和信息交互關(guān)卡藍(lán)圖或藍(lán)圖類各自在藍(lán)圖之內(nèi)的信息交互。例:在關(guān)卡藍(lán)圖中通過一個(gè)自定義事件,當(dāng)A>B時(shí),執(zhí)行自定義事件打印公式成立。藍(lán)圖通信和信息交互關(guān)卡藍(lán)圖和藍(lán)圖類與場景內(nèi)部的對象的通信。例:新建一個(gè)藍(lán)圖類,創(chuàng)建一個(gè)靜態(tài)模型變量,然后回到關(guān)卡在細(xì)節(jié)面板中用吸管吸取關(guān)卡中的模型,然后獲取變量,打印吸取物體的名字。藍(lán)圖通信和信息交互藍(lán)圖類之間的信息交互例:新建一個(gè)藍(lán)圖類BP_TextA,添加文本渲染器組件,內(nèi)容為TxetA;復(fù)制這個(gè)類命名為BP_TextB,改其內(nèi)容為TxetB;在BP_TextA中新建一個(gè)變量改為BP_TextB,然后再細(xì)節(jié)面板中吸取BP_TextB。在BP_TextB中新建一個(gè)變量為Text,內(nèi)容為好好學(xué)習(xí),天天向上。在BP_TextA藍(lán)圖中打印出藍(lán)圖類BP_TextB的內(nèi)容。藍(lán)圖通信和信息交互通過中間變量進(jìn)行信息的交互通過每個(gè)藍(lán)圖都可以獲取的中間對象Pawn作為中間對象,來操作BP_TestA和BP_TestB的對象。打開ThirdPersonCharacter藍(lán)圖類,添加兩個(gè)公有變量BP_TestA和BP_TestB,類型分別為BP_TestA和BP_TestB。藍(lán)圖通信和信息交互選擇在關(guān)卡地圖上的ThirdPersonCharacter角色對象,綁定其BP_TestA和BP_TestB的引用。在第三人稱人物對象藍(lán)圖類的事件圖表中,通過通用方法獲取Pawn的對象并轉(zhuǎn)化成地圖中的角色對象,從而獲取BP_TestA和BP_TestB對象進(jìn)行操作。藍(lán)圖通信和信息交互藍(lán)圖類與關(guān)卡藍(lán)圖之間的信息交互在關(guān)卡藍(lán)圖中獲取選中的關(guān)卡對象,然后通過時(shí)間軸和旋轉(zhuǎn)來控制對象的旋轉(zhuǎn)。按1鍵后旋轉(zhuǎn)5秒藍(lán)圖通信和信息交互遍歷搜索引用藍(lán)圖類在角色藍(lán)圖類中獲取場景中的所有藍(lán)圖類,選擇BP_A,然后獲取BP_A中的文本內(nèi)容。(這種方法較消耗系統(tǒng)資源)PART12第三人稱角色制作在MAYA中導(dǎo)出模型選中制作好的模型和骨骼,在編輯中選擇‘導(dǎo)出當(dāng)前選擇’,注意要勾選以下選項(xiàng)然后導(dǎo)出即可。在MAYA中導(dǎo)出模型動(dòng)畫導(dǎo)出模型動(dòng)畫選擇模型和骨骼,在編輯中選擇‘導(dǎo)出當(dāng)前選擇’,出來之前導(dǎo)出模型要勾選的,還要把動(dòng)畫和烘焙動(dòng)畫勾選上導(dǎo)出動(dòng)畫前的準(zhǔn)備在導(dǎo)出前將滑塊歸為零,這樣就可以從零幀開始導(dǎo)出選擇骨骼鼠標(biāo)右鍵選擇層級(jí),這樣的話就可以選擇所有的層級(jí)在編輯中選擇關(guān)鍵幀烘焙模擬,進(jìn)行烘焙幀處理,把這段動(dòng)畫bake成每一幀,這樣骨骼就有動(dòng)畫了。(有動(dòng)畫的文件一定要烘焙不然動(dòng)作是導(dǎo)不出去的,如果單單就模型可以不烘焙)將動(dòng)畫文件導(dǎo)入U(xiǎn)E4導(dǎo)入模型時(shí),選擇不創(chuàng)建材質(zhì),不導(dǎo)入紋理,其他的不改變導(dǎo)入模型動(dòng)畫時(shí),選擇骨骼文件,選擇導(dǎo)入動(dòng)畫,不需要導(dǎo)入模型,其他不變。最后對材質(zhì)進(jìn)行賦予。動(dòng)畫混合混合空間:根據(jù)不同的數(shù)值,切換不同的動(dòng)畫效果,從一個(gè)動(dòng)畫過渡到另一個(gè)動(dòng)畫,比如從站立->走->跑。創(chuàng)建混合空間,在Animation下的BlendSpaceID,選擇與動(dòng)畫藍(lán)圖一樣的骨骼雙擊打開Test_BlendSpace,系統(tǒng)默認(rèn)窗口布局中,右下角有資源瀏覽器,選擇站立、走、跑動(dòng)畫,拖入到中間區(qū)域下方位置,按照順序拖入,放在不同的分區(qū)內(nèi),可以通過選中綠色的點(diǎn)左右移動(dòng)觀看動(dòng)畫效果,也可以按住Shift鍵,左右滑動(dòng)觀看效果。設(shè)置水平坐標(biāo)的名稱和最大軸值。動(dòng)畫混合編寫動(dòng)畫藍(lán)圖根據(jù)角色速度觸發(fā)動(dòng)作邏輯在事件圖表設(shè)置兩個(gè)變量IsInair(檢測是否跳躍)和Speed(獲取當(dāng)前速度),獲取角色移動(dòng)速度、獲取移動(dòng)組件,然后判斷角色是否墜落,使用IsValid判斷獲取對象是否有效。動(dòng)畫混合在AnimGraph動(dòng)畫藍(lán)圖中創(chuàng)建狀態(tài)機(jī)雙擊打開創(chuàng)建的動(dòng)畫藍(lán)圖BatmanAnimBlueprint,進(jìn)入動(dòng)畫藍(lán)圖編輯器動(dòng)畫圖表界面,在藍(lán)圖右鍵創(chuàng)建AddNewState(創(chuàng)建狀態(tài)機(jī))節(jié)點(diǎn)重命名為Movement,將兩個(gè)白色小人的圖標(biāo)連線創(chuàng)。動(dòng)畫混合雙擊Movement節(jié)點(diǎn),進(jìn)入狀態(tài)機(jī)內(nèi),該藍(lán)圖內(nèi)初始值有個(gè)Entry節(jié)點(diǎn),狀態(tài)機(jī)從此處開始執(zhí)行,在此界面可以制作多種狀態(tài),通過不同的條件驅(qū)動(dòng)進(jìn)入不同的狀態(tài),藍(lán)圖空白處右鍵創(chuàng)建增加狀態(tài)節(jié)點(diǎn)如圖。動(dòng)畫混合增加狀態(tài)后,雙擊Idle/Run節(jié)點(diǎn)進(jìn)入編輯狀態(tài)界面,進(jìn)行動(dòng)畫的添加,要加入我們制作的動(dòng)畫混合空間。并為其他節(jié)點(diǎn)也添加動(dòng)畫和條件。動(dòng)畫藍(lán)圖拓展:動(dòng)畫藍(lán)圖運(yùn)用:在角色藍(lán)圖中嵌入動(dòng)畫藍(lán)圖,在角色藍(lán)圖中的Mesh選項(xiàng)中Animation加入已有的動(dòng)畫藍(lán)圖。結(jié)構(gòu):動(dòng)畫藍(lán)圖主要分為EnentGraph事件圖,AnimGraph動(dòng)畫圖。EnentGraph:事件圖,在事件圖中每一幀都會(huì)檢測,獲取模型數(shù)據(jù),并將獲取的數(shù)據(jù)賦值給變量。AnimGraph:動(dòng)畫圖,包含狀態(tài)機(jī),狀態(tài)機(jī)根據(jù)變量執(zhí)行對應(yīng)的動(dòng)作。Blendspace:線性混合,復(fù)合節(jié)點(diǎn),根據(jù)不同的數(shù)據(jù),控制模型動(dòng)作之間的切換。變量:動(dòng)畫藍(lán)圖中定義的Variables變量,EnentGraph和AnimGraph中均可以訪問,一般在EnentGraph中設(shè)置變量,在AnimGraph使用變量(也可以從角色藍(lán)圖中獲取變量)。StateMachine:狀態(tài)機(jī),控制狀態(tài)之間的轉(zhuǎn)換,各狀態(tài)機(jī)可以嵌套狀態(tài)機(jī)。動(dòng)畫藍(lán)圖拓展:動(dòng)畫藍(lán)圖線性混合的創(chuàng)建:在文件(Animation)中右鍵Animation->BlendSpace1D,設(shè)置好之后可在動(dòng)畫藍(lán)圖中直接選取加入。在線性混合中設(shè)置后退速度(負(fù)速度),前進(jìn)速度(正速度)AixsSetting:軸向設(shè)定。HorizontalSetting:水平軸設(shè)定,其中可設(shè)置:MaximumAxisValue最大水平移動(dòng)值。Minimum最小水平移動(dòng)值。NumberofGridDivisions:分欄,劃分?jǐn)?shù)值區(qū)間。InterpolationTime:過度時(shí)間,控制兩個(gè)運(yùn)動(dòng)狀態(tài)的切換變量:動(dòng)畫藍(lán)圖中定義的Variables變量,EnentGraph和AnimGraph中均可以訪問,一般在EnentGraph中設(shè)置變量,在AnimGraph使用變量(也可以從角色藍(lán)圖中獲取變量)。創(chuàng)建角色藍(lán)圖和控件創(chuàng)建一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論