第4章 可視化編程工具Bolt_第1頁
第4章 可視化編程工具Bolt_第2頁
第4章 可視化編程工具Bolt_第3頁
第4章 可視化編程工具Bolt_第4頁
第4章 可視化編程工具Bolt_第5頁
已閱讀5頁,還剩61頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章可視化編程工具Bolt

4.1Bolt插件的下載和安裝

.目錄.1.Bolt插件簡介

.2.

Bolt插件的主要工作形式

.3.Bolt插件的下載和安裝

1.

Bolt插件簡介

Bolt插件是Unity平臺上的可視化編程插件,風格上接近于虛幻引擎的藍圖系統,功能十分強大,可以在不編寫

任何代碼的情況下完成大部分的交互和邏輯功能設計。2.

Bolt插件的主要工作形式

Bolt插件采用功能模塊化的方式,功能模塊通過輸入、輸出接口,按照一定的邏輯組織、連接起來,完成一定的功能。Bolt有兩種組織方式,一種是FlowGraph(流圖),一種是StateGraph(狀態圖)FlowGraph適用于通用邏輯的制作,StateGraph適用于角色的智能行為樹、游戲狀態組織等。多個FlowGraph可以組合成一個StateGraph,而FlowGraph和StateGraph也可以互相嵌套,實現完善、復雜的功能。因此,FlowGraph是基礎工具,使用它就可以實現大多數功能。

3.

Bolt插件的下載和安裝

Bolt插件可以在Unity官網的AssetStore中下載/安裝:將下載的unitypackage文件拖入Unity工程;拖入結束后會出現配置窗口,只需全部按照默認選項進行配置即可。其中,第二步配置如右圖,是讓用戶按照自己的喜好來選擇元素的命名方法,可以選擇“HumanNaming”或者“ProgrammerNaming”,區別不大。.謝謝觀看

廣東輕工職業技術學院

數字媒體技術專業第4章可視化編程工具Bolt

4.2FlowGraph工具的應用

.目錄.1使用GetKey模塊進行鍵盤操控的方法

.2使用OnKeyboardInput模塊進行鍵盤控制的方法

本小節通過介紹兩種方法,實現按鍵盤控制物體移動的功能,來學習FlowGraph中模塊的基本用法(1)新建場景,添加一個Cube。這個Cube就是我們的控制目標。(2)選中這個Cube物體,添加一個FlowMachine組件。單擊“New”按鈕,新建一個Macro(宏),為其取名并保存在合適的目錄中。

.方法一(3)單擊“EditGraph”按鈕,打開編輯窗口;此時可以看到Start和Update兩個模塊,它們的功能Start()和Update()函數是一樣的。

.方法一(4)新建模塊的方法有兩種:

一種是在空白處單擊鼠標右鍵,在彈出的快捷菜單中選擇“AddUnit”;

另一種是在已有模塊右邊的空心三角形上按住鼠標左鍵并拖動鼠標來拉出箭頭線條,也會顯示出可選的模塊。方法二

從已有模塊新建功能模塊方法一

新建功能模塊.方法一(5)下面先實現Cube的移動功能。

此功能可以用Transform下面的Translate模塊來實現。在彈出界面的搜索框中輸入“Translate”進行搜索,選擇Translate模塊,如圖所示。.方法一(6)在新添加的Translate模塊中,修改Z軸屬性為0.1,如圖所示,即可實現Cube按每幀移動0.1個單位的速度沿Z軸正方向移動,可以運行場景查看效果。.方法一(7)現在Cube是自動移動的,這一步實現用按鍵控制其移動。

先在模塊之間連線的端點處單擊鼠標右鍵,取消原有的連接;再新建一個GetKey模塊,設置“Key”為“W”,如圖所示。.方法一(8)此時,如果直接連接Translate模塊,并不能達到只有按下W鍵才能移動的目的,而是Cube自動開始移動。

要實現按下W鍵才能移動,必須再添加一個Branch分支模塊,用Branch模塊來判斷是否按下了W鍵。Branch模塊的作用是用True和False形成分支結構,只有按下W鍵后,程序的流程才會執行True的分支。方塊只能自動移動,不受控制添加Branch模塊,實現按鍵判斷.方法一(1)刪除以前步驟中添加的所有模塊,包括Update和Start模塊。

添加OnKeyboardInput模塊并修改屬性,如圖所示。該模塊屬于Event事件類別,起到偵聽用戶鍵盤輸入事件的作用。.方法二(2)再添加和前面步驟中一樣的Translate模塊,修改Z軸屬性為0.1,即可實現同樣的功能。使用OnKeyboardInput模塊實現移動功能,如圖所示。.方法二.謝謝觀看

廣東輕工職業技術學院

數字媒體技術專業第4章可視化編程工具Bolt

4.3Bolt常用模塊介紹

.目錄.1UnityAPI功能模塊.2邏輯功能模塊

Bolt主要依靠各種功能模塊來實現功能。所以,了解常用的功能模塊是使用Bolt的基礎。.3數據模塊

.4自定義數據變量(1)

Transform是UnityAPI中非常重要的類,可實現關于物體空間操作的功能。Bolt中Transform類別的功能模塊如圖所示。

1.

UnityAPI功能模塊——Transform類

(2)

Translate模塊常用功能有:

實現物體的移動、旋轉、朝向、查找層級結構的上下級關系等(3)舉例:目標跟蹤功能

如圖所示,圖中的邏輯結構使用了朝向模塊LookAt,設定了一個球體“Sphere”作為目標,通過每一幀都“LookAt”目標,實現了物體跟蹤指向目標的功能。1.UnityAPI功能模塊——Transform類

(1)

GameObject類承擔了所有關于游戲對象的操作,Bolt中GameObject類的功能模塊如圖所示。1.UnityAPI功能模塊——GameObject類

(2)

舉例:下圖中的邏輯結構使用了GameObject類中的SetName模塊來修改物體名稱為“NewName”。又使用了SetActive模塊來修改物體的顯示狀態,“Value”復選框沒有勾選,表示將該物體的顯示狀態調整為False,該物體被隱藏。所以該邏輯結構整體的功能就是等到用戶按下C鍵后,修改游戲對象的名稱為“NewName”,并隱藏該物體。1.UnityAPI功能模塊——GameObject類

(1)

Events類是關于事件處理的功能模塊,如圖所示可以看出,與前兩個類不同,Events類里面又分了很多小類。例如,在前面已經使用過的OnKeyboardInput模塊,就是Input小類中的功能模塊。1.UnityAPI功能模塊——Events類

(2)

Events類中的OnTriggerEnter功能模塊如圖所示,圖中的邏輯結構使用了Events類中的OnTriggerEnter功能模塊來處理物體碰撞的觸發器事件。當有碰撞事件發生的時候,就通過Collider獲取觸發碰撞的物體,并使用Destroy模塊將該物體刪除。1.UnityAPI功能模塊——Events類

(1)邏輯功能模塊主要有兩種,一種是Control類,包含if條件判斷、for循環和while循環等內容;另一種是Logic類,包含大于、小于、與、或、非等邏輯判斷。2.

邏輯功能模塊

(2)舉例:使用Less(邏輯小于)和Branch(分支)模塊實現條件判斷和分支處理功能。下圖中的邏輯結構使用了Less、Branch這兩個邏輯功能模塊來進行數值大小的比較,以及比較結果的處理。具體的功能是,使用GetPosition和GetZ模塊獲取物體的Z軸坐標值,使用Less模塊判斷該值是否小于1。如果該值小于1則為True,就使用SetActive模塊將物體隱藏;如果該值不小于1則為False,就使用SetActive模塊讓物體保持顯示狀態。2.

邏輯功能模塊

(1)數據是所有計算的基礎。Bolt中對于所有的數據類型都有對應的模塊支持,例如,基礎類型Integer整數模塊和String字符串模塊、復合數據類型List模塊以及Unity中特殊的數據類型Vector3模塊等。這些模塊分散在多個類中,用搜索的方式可以更方便地找到它們。

3.

數據模塊

(2)在邏輯流程里,數據的使用方式千變萬化,數據模塊的使用方式也靈活多變,需要根據具體情況選擇合適的方式。例如,同樣是設定物體的坐標,有時是直接設定具體的數值,有時又需要將其設置為另外一個物體的坐標值。

3.數據模塊

(3)舉例:如圖所示,最右邊的SetPosition模塊用來設定物體的坐標,數據類型是Vector3,所以它的左邊用CreateVector3模塊創建一個Vector3數據來和它對接。這個Vector3數據中的X和Y都以Float模塊提供的具體數字2.5為值,而Z則表示通過GetPosition模塊和GetZ模塊來獲取“Sphere”物體的Position中的Z軸坐標值。整個過程通過OnKeyboardInput模塊觸發。3.數據模塊

(1)Bolt除了提供各種數據模塊,還支持自定義數據變量,使用其可以靈活地實現復雜功能。(2)和編程語言中的一樣,Bolt中的自定義變量也會區分作用范圍。打開任意一個FlowGraph,將界面最大化,自定義變量的作用范圍如圖所示。4.

自定義數據變量(3)從上頁圖可以看到,Bolt定義了5種自定義變量的作用范圍,從左到右范圍逐漸擴大。Graph:變量只在當前FlowGraph中使用。Object:變量可以在物體的各個FlowGraph中使用。Scene:變量可以在場景的任意FlowGraph中使用。App:變量可以在工程應用里的任意FlowGraph中使用。Saved:變量持久保存在設備上,退出工程應用后,再次打開還可以繼續使用變量。4.

自定義數據變量(4)添加自定義數據變量的方法有兩種,一種方法是直接上上頁圖中的“+”按鈕,另一種方法是在物體上添加Variables組件,再單擊組件對應的“+”按鈕。接著選擇具體的數據類型,并填入初始值即可。自定義數據變量如下圖所示,其中包含一個Float類型的speed變量,初始值為0;還包含一個Boolean類型的isWalk變量,因為“Value”復選框是被勾選了的,所以初始值為True。4.

自定義數據變量(5)對于自定義數據變量的獲取(Get)和賦值(Set),可以在選擇模塊的界面中輸入變量的名稱進行搜索,即可看到“Get”和“Set”的模塊選項。變量isWalk的Get模塊和Set模塊如下面2個圖片所示。4.

自定義數據變量.謝謝觀看

廣東輕工職業技術學院

數字媒體技術專業第4章可視化編程工具Bolt

4.4操作實例1:犀牛模型的動畫控制

.目錄.1犀牛模型的動畫片段和動畫控制器解析.2使用Bolt操控犀牛模型的運動

涉及動畫的場景,一般都需要使用動畫控制器。動畫控制器是常見的,只要有動畫的應用,基本都會用到它。本節使用一個帶動畫的犀牛模型來演示使用Bolt控制動畫控制器的方法。(1)

犀牛模型的4個動畫片段如圖所示,分別是attack、die、run和walk1.

犀牛模型的動畫片段和動畫控制器解析

(2)

犀牛模型的動畫控制器如圖所示,默認動作是walk,walk動作和attack動作可以互相轉換,從任何動作狀態都可以轉換到die動作。1.

犀牛模型的動畫片段和動畫控制器解析

(3)

動作轉換依靠“attack”和“die”這兩個Trigger類型的參數來實現,如圖所示。run動作在本例中沒有用到。1.

犀牛模型的動畫片段和動畫控制器解析

現在的犀牛模型是“原地踏步”,下面來實現兩個主要功能。一是實現第三人稱的控制方式,即通過按下鍵盤上的上、下、左、右方向鍵,控制犀牛模型的前進、后退和轉向;二是通過按鍵,實現犀牛模型的attack動作和die動作的調用。2.

使用Bolt操控犀牛模型的運動

(1)

將犀牛模型從Project面板中拖入場景,為其添加Bolt的FlowMachine組件,單擊“New”按鈕,新建一個Macro。(2)先實現犀牛模型的前進、后退和轉向;打開FlowMachine組件的編輯窗口,參考4.2節,使用OnKeyboardInput模塊實現鍵盤控制;前進功能和后退功能會使用Translate模塊,前進功能所使用的Translate模塊的Z軸數值為0.1,后退功能所使用的Translate模塊的Z軸數值則為-0.1。2.

使用Bolt操控犀牛模型的運動

(3)前進功能和后退功能的模塊組合如左所示。實現轉向使用Rotate模塊,根據左、右轉向,分別修改Y軸的歐拉角數值為1和-1。轉向功能的模塊組合如右圖所示。2.

使用Bolt操控犀牛模型的運動

(4)動畫控制器中Trigger類型動作轉換,是通過Animator的SetTrigger模塊實現的。添加OnKeyboardInput模塊和SetTrigger模塊,如圖所示,即可實現按下Space鍵,完成walk動作到attack動作的轉換。2.

使用Bolt操控犀牛模型的運動

(5)對于die動作,可以模擬真實游戲中游戲角色血量減少到0以后再觸發。邏輯圖如圖所示。2.

使用Bolt操控犀牛模型的運動

(6)依照流程圖,首先需要添加兩個自定義變量,一個表示犀牛的血量值,命名為LifePoint,假設初始值為10;一個表示攻擊值,命名為DamagePoint,假設初始值為3。Bolt中的變量組件如圖所示,這里的兩個變量都為整型,即圖中的Integer類型。2.

使用Bolt操控犀牛模型的運動

(7)流程圖中的“受到攻擊”,可以用OnKeyboardInput模塊模擬;“相減”使用Subtract模塊模擬;“小于等于零”的判斷使用LessOrEqual模塊模擬;判斷結果的分支結構,則使用Branch模塊模擬。

模擬減少血量來調用die動作的FlowMachine結構,如圖所示。2.

使用Bolt操控犀牛模型的運動

.謝謝觀看

廣東輕工職業技術學院

數字媒體技術專業第4章可視化編程工具Bolt

4.5操作實例2:技能冷卻UI動畫制作

.目錄.1UI構建解析.2使用Bolt實現冷卻動畫

技能冷卻UI動畫是游戲中常見的一種效果,如圖所示,當某種條件達成后,就以一定的速度在UI圖標上展現一個順時針或者逆時針的圖片陰影旋轉消失動畫。本節通過實現該功能來演示Bolt關于UI的操作方法。(1)

UI的具體功能決定了它的層次結構。本例中技能冷卻UI的表現形式是:鼠標指針劃入圖標時,圖標四周出現一個提示框;鼠標指針劃出圖標時,提示框消失;鼠標單擊圖標,出現技能冷卻UI動畫。技能冷卻圖標的各種狀態,如圖所示。1.

UI構建解析

鼠標指針劃出狀態

鼠標指針劃入狀態

技能冷卻狀態(2)因為有這樣的狀態變化,所以這個UI需要3張圖,一張是正常的圖標,一張是邊框圖,還有一張是覆蓋在圖標上的黑色圖。其中邊框圖和黑色圖都是具有Alpha通道的帶透明度的圖片。技能冷卻圖標的層級結構如圖所示。在默認的正常狀態下,將“BorderImage”和“BufferImage”2張圖片都先隱藏起來。1.

UI構建解析

(1)在正常狀態的物體上,也就是在上頁圖中的“IconImage”物體上,添加FlowMachine組件,單擊“New”按鈕,新建一個Macro。單擊“EditGraph”按鈕打開FlowMachine的編輯窗口。2.

使用Bolt實現冷卻動畫(2)添加Events類里的OnPointerEnter和OnPointerExit功能模塊,以獲取鼠標指針劃入事件和鼠標指針劃出事件。與它們對接的都是SetActive模塊,利用“Value”屬性的不同賦值,實現對“BorderImage”物體,也就是邊框圖片的隱藏或顯示。提示框的功能實現如圖所示。2.

使用Bolt實現冷卻動畫(3)要實現UI圖片陰影旋轉消失的技能冷卻效果,需要先修改UI的Image組件屬性。單擊層級結構中的“BufferImage”物體,按圖所示,對Image組件進行修改。其中,“ImageType”屬性改為“Filled”,“FillMethod”屬性選擇“Radial360”,這樣圖片就是以圖片中心為原點,采用360°旋轉的形式進行填充。配合設置“FillAmount”屬性的數值,就能決定填充的范圍。1代表360°,全部填充;0代表0°,全部無填充。下面主要介紹通過Bolt來修改“FillAmount”屬性。2.

使用Bolt實現冷卻動畫(4)根據前面說明的操作過程,先總結出技能冷卻操作的流程。實現技能冷卻效果的流程圖如圖所示。2.

使用Bolt實現冷卻動畫(5)仔細觀察上頁的流程圖,會發現鼠標單擊事件的發生是瞬間的,而圖片填充屬性“FillAmount”的減少是一個會持續一段時間的過程,每一幀都將“FillAmount”減去上一幀的時間間隔“Time.DeltaTime”,而一幀的時間間隔是一個很小的數字。2.

使用Bolt實現冷卻動畫(6)在邏輯上,一個瞬間發生的事件只能觸發一個過程的開始,但不能維持一個過程的持續。要維持一個持續過程,需要另外定義一個布爾類型的變量來作為中間溝通的橋梁。假設這個變量名稱為“isStart”,則修改后的流程變為兩個部分,修改后的實現技能冷卻效果的流程圖,如下頁圖所示。鼠標單擊事件只影響布爾類型變量isStart的值,而isStart變量決定了

溫馨提示

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

評論

0/150

提交評論