欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:UE4

柚子快報邀請碼778899分享:UE4

http://yzkb.51969.com/

聲明:學習筆記。

在?行為樹快速入門指南?中,你將學會如何創(chuàng)建一個敵方AI,該AI看到玩家后會做出反應并展開追逐。當玩家離開視線后,AI將在幾秒鐘后(這可根據(jù)你的需求進行調整)放棄追逐,并在場景中隨機移動,再次看到玩家時便會繼續(xù)追逐。

閱讀完本指南后,你將了解以下系統(tǒng):?

藍圖可視化腳本(Blueprint Visual Scripting) AI控制器(AI Controllers) 黑板(Blackboard) 行為樹(Behavior Trees) 行為樹服務節(jié)點(Behavior Tree Services) 行為樹裝飾器節(jié)點(Behavior Tree Decorators) 行為樹任務節(jié)點(Behavior Tree Tasks)

操作步驟 一、我們將用需要的資產(chǎn)來設置項目,使AI角色在場景中活動。?

1、新建第三人稱模板游戲項目?

2、打開面板,右鍵單擊?ThirdPersonBP?文件夾,創(chuàng)建一個名為?AI?的?新文件夾。

3、在?ThirdPersonBP > Blueprints?文件夾中,將?ThirdPersonCharacter?拖到?AI?文件夾上,然后選擇?復制到此處(Copy Here)。

4、在?AI?文件夾中,基于?AIController?類創(chuàng)建一個新的?藍圖類。將?AIController?藍圖命名為?Enemy_Controller,將?ThirdPersonCharacter?藍圖命名為?Enemy_Character。

5、打開?Enemy_Character,從圖表中刪除所有腳本。選擇?角色移動(Character Movement)?組件,然后在?細節(jié)(Details)?面板中將?最大行走速度(Max Walk Speed)?設置為?120.0。

當AI角色(AI Character)進行巡邏且并未追逐玩家時,這會降低它們在場景中的移動速度。

6、從工具欄中選擇?默認類(Class Defaults),然后在?細節(jié)(Details)?面板中,將?Enemy_Controller?分配為?AI控制器類(AI Controller Class)。

我們將會把AI放入場景,如果要在該場景加載后生成AI,則需要把?自動控制AI(Auto Possess AI)?設置改為?已生成(Spawned)。

7、將?Enemy_Character?從?內容瀏覽器拖入關卡。?在?放置Actor(Place Actors)?面板中,把?導航網(wǎng)格體邊界體積(Nav Mesh Bounds Volume)?拖入關卡。

8、選中?尋路網(wǎng)格體邊界體積(Nav Mesh Bounds Volume)?后,按下?R?縮放體積,封裝整個關卡。

這將生成尋路網(wǎng)格體,使我們的AI角色能夠在場景中移動。你可以按下?P?鍵打開或關閉視口中尋路網(wǎng)格體的顯示(綠色區(qū)域表示可導航的位置)。

二、黑板設置

我們將創(chuàng)建?黑板?資產(chǎn),它本質上是AI的大腦。我們希望AI知道的任何信息都會有一個能夠引用的?黑板鍵。我們將創(chuàng)建用于玩家的鍵,用于控制AI是否能看到玩家,以及AI不追逐玩家時可以移動到的位置。

1、在?AI(Artificial Intelligence)?下,選擇?黑板(Blackboard)?并將其命名為?BB_Enemy。

2、雙擊打開黑板,單擊?創(chuàng)建新鍵(New Key)?按鈕并選擇?Object。黑板?資產(chǎn)由兩個面板組成,黑板(Blackboard)?使你能夠添加并對?黑板鍵(要監(jiān)控的變量)進行跟蹤,通過?黑板細節(jié)(Blackboard Details)?能夠命名和指定鍵的類型。

3、針對?Object?鍵,輸入?EnemyActor?作為?條目名稱,輸入?Actor?作為?基類。

4、添加另一個?鍵, 將?鍵類型?設置為?布爾,并命名為?HasLineOfSight。這將用于記錄AI是否能看到玩家。

5、添加另一個?鍵(Key), 將?鍵類型?設置為?向量,并命名為?巡邏位置(PatrolLocation)。

這將被用來記錄AI不追逐玩家時可以移動到的關卡位置。

在?黑板?上設置好需要跟蹤的內容后,下一步我們將對我們的?行為樹?進行布局。

三、行為樹布局

通過在?行為樹?中布局出AI可能進入的狀態(tài),有助于你了解進入這些狀態(tài)需要創(chuàng)建何種類型的邏輯和規(guī)則。

1、在?內容瀏覽器?中,單擊?新增(Add New),在?AI(Artificial Intelligence)?下,選擇?行為樹(Behavior Tree)?并將其命名為?BT_Enemy。

2、打開?BT_Enemy?,并將?BB_Enemy?指定為?黑板資產(chǎn)。

行為樹?由三個面板組成:可以在?行為樹(Behavior Tree)?圖表面板直觀地布局定義行為的分支和節(jié)點;可以在?細節(jié)(Details)?面板定義節(jié)點的屬性;可以在?黑板(Blackboard)?面板看到游戲運行時的?黑板鍵?及其當前值,這對調試非常有用。

3、在圖表中,單擊鼠標左鍵并拖出?根(Root)?節(jié)點,然后添加一個?選擇器(Selector)?節(jié)點。

合成(Composites)?節(jié)點是流控制的一種形式,決定了與其相連的子分支的執(zhí)行方式。

4、針對?選擇器?節(jié)點,在細節(jié)(Details)面板中將?節(jié)點名稱(Node Name)?更改為?AI Root。?

重命名圖表中的節(jié)點是一個很好的方法,可以很容易地從較高層面識別節(jié)點所完成的操作。在本例中,我們將其命名為?AI Root,因為這是行為樹真正的"根",它將在子分支之間切換。創(chuàng)建行為樹時自動添加的默認根節(jié)點,可用于配置行為樹的屬性并指定它所使用的黑板資產(chǎn)。?

5、單擊左鍵并拖出?AI Root,添加一個名為?Chase Player?的?序列?節(jié)點。

此處使用了序列節(jié)點,因為我們打算告訴AI完成一系列動作:旋轉朝向玩家,改變移動速度,然后移動并追逐玩家。

6、單擊左鍵并拖出?AI Root,添加一個名為?Patrol?的?序列?節(jié)點

對于AI,我們將使用?序列?節(jié)點在地圖中找到一個隨機位置,移動到該位置,然后在該位置等待一段時間,最后再重復該過程來尋找新位置。

你可能還會注意到節(jié)點右上角的數(shù)字,它表示操作的順序。行為樹?會從左到右和自上而下執(zhí)行,因此節(jié)點的排列很重要。對AI最重要的動作通常應該放在左邊,而次要的動作(或退卻行為)應該放在右邊。子分支會以相同的方式執(zhí)行,如果任何子分支失敗,整個分支將會停止執(zhí)行,導致失敗并返回上級樹。舉例而言,如果?追逐玩家(Chase Player)?節(jié)點失敗,它將返回至上級?AI根(AI Root),然后轉變?yōu)?巡邏?節(jié)點。

7、從?AI Root?連出引線,然后在?巡邏(Patrol)?右側添加?等待(Wait)?任務節(jié)點,并將?等待時間(Wait Time)?設置為?1.0。

你可以看到這個節(jié)點是紫色的,表示它是一個?任務?節(jié)點。任務節(jié)點是你希望?行為樹?執(zhí)行的具體操作。如果某種原因使?行為樹?讓Chase Player或Patrol節(jié)點皆運行失敗,那么?等待(Wait)任務節(jié)點將接管事件。

8、從Chase Player?追逐玩家?節(jié)點連出引線并添加?旋轉至面向黑板條目(Rotate to Face BBEntry)?節(jié)點。?

這個特殊的?任務?節(jié)點使你能夠指定一個想要旋轉并面向的?黑板條目,在本例中此條目是?Enemy Actor(玩家)。添加該節(jié)點后,你會在?細節(jié)(Details)?面板中看到?黑板鍵?將自動設為?EnemyActor,因為它過濾Actor的黑板變量,而且是列表中的第一個變量。如果需要調整成功條件范圍并更改?節(jié)點名稱(Node Name),可對?精度(Precision)?選項進行調整。

這個未設置,會導致

選項中缺少EnemyActor選項。

9、在?工具欄?中,單擊?新建任務(New Task)?按鈕。

除使用內置任務節(jié)點外,你還可以創(chuàng)建和指定自己的自定義任務節(jié)點,可以為這些節(jié)點自定義并定義附加邏輯。該任務節(jié)點將用于改變AI的移動速度,以便它追逐玩家。新建任務節(jié)點時,將自動創(chuàng)建并打開新的?藍圖。

10、在?內容瀏覽器?中,將該新資產(chǎn)重命名為?BTT _ChasePlayer。

創(chuàng)建?任務(Tasks)、裝飾器(Decorators)?或?服務(Service)?節(jié)點時,建議立即對這些新建節(jié)點進行重命名。正確的命名規(guī)則是用創(chuàng)建的資產(chǎn)類型為資產(chǎn)命名添加前綴:BTT?代表行為樹任務節(jié)點,BTD?代表行為樹裝飾器節(jié)點,BTS?代表行為樹服務節(jié)點。?

11、在?BT_Enemy?中,添加?BTT_ChasePlayer?任務,隨后添加?移動至(Move To)。?

我們的新任務目前還沒有邏輯,但隨后將返回來添加改變AI角色移動速度的邏輯,之后AI將移動至(Move To)EnemyActor(玩家)。

12、創(chuàng)建一個新?任務節(jié)點,并將其重命名為?BTT_FindRandomPatrol,然后將其連接到?巡邏(Patrol)?節(jié)點。?

13、添加?移動至(Move To)?任務節(jié)點,并將?黑板鍵?設為?巡邏位置(PatrolLocation)。

?

這將指示AI移動至(Move To)巡邏位置(PatrolLocation),該位置將在BTT_FindRandomPatrol任務中進行設置。?

14、在?移動至(Move To)?后添加?等待(Wait)?任務節(jié)點,設置?等待時間(Wait Time)?為?4.0、隨機偏差(Random Deviation)?為?1.0。?

這會指示AI在巡邏位置(PatrolLocation)等待3-5秒(隨機偏差將在等待時間上+或-1秒)。

我們已經(jīng)完成了?行為樹?的框架。在下一步中,我們將添加AI在巡邏時找到一個隨機的導航位置后改變其移動速度的邏輯,以及確定AI應該在什么時候追逐玩家或進行巡邏的邏輯。

四、任務設置 - 追逐玩家

在這一步中,我們設置了?追逐玩家任務(Chase Player Task),改變AI追逐玩家時的移動速度。

1、在?BTT_ChasePlayer?中點擊右鍵并添加?Event Receive Execute AI?節(jié)點。

當在?行為樹?中激活此任務時將觸發(fā)Event Receive Execute AI節(jié)點。

如果代理是AI控制器,則應該固定選擇AI版本的?Event Receive Execute、Event Receive Abort?和?Event Receive Tick。如果泛型和AI事件版本都已實現(xiàn),則只會調用更合適的版本,這意味著會針對AI調用AI版本,其他情況下會調用泛型版本。

2、Controlled Pawn?引腳后連接?Cast to Enemy_Character?節(jié)點。

在此,我們將使用 Cast 節(jié)點來訪問名為?Enemy_Character?的AI?角色藍圖。

3、在?內容瀏覽器中,打開?Enemy_Character?藍圖,并添加一個名為?更新行走速度(Update Walk Speed)?的?函數(shù)

該函數(shù)將從我們的行為樹中調用,并將用于修改AI的移動速度。

從技術角度而言,我們可以在追逐玩家任務(Chase Player Task)中訪問Cast節(jié)點之后的?角色移動(Character Movement)?組件,并在任務節(jié)點中調整移動速度,但讓行為樹直接改變子對象的屬性并不是推薦的最佳做法。相反,我們可以讓行為樹在角色內部調用一個函數(shù),然后進行所需的修改。?

4、在?更新行走速度(Update Walk Speed)?函數(shù)的?細節(jié)(Details)?面板中,添加名為?新行走速度(NewWalkSpeed)?的?浮點?輸入。?

5、將?角色移動(CharacterMovement)?組件拖離"組件(Component)"選項卡,然后使用?設置最大行走速度(Set Max Walk Speed)?進行如下連接。

從行為樹調用這個函數(shù)時,我們可以傳遞一個數(shù)值作為新的速度。

6、回到?BTT_ChasePlayer?任務節(jié)點內,從?作為敵人角色(As Enemy Character)?節(jié)點調用?更新行走速度(Update Walk Speed)?函數(shù)并設置為?500.0,然后按下圖進行連接。

如果看不到已創(chuàng)建的?更新行走速度(Update Walk Speed)?函數(shù)?你可能需要先?編譯?Enemy_Character?藍圖,然后才能將其添加到?追逐玩家任務(Chase Player Task)?中。

7、在?更新行走速度(Update Walk Speed)?之后,添加兩個?結束執(zhí)行(Finish Execute)?節(jié)點,并按下圖進行連接。

我們成功將其投射到Enemy_Character后,我們在此將該任務標記為成功結束。如果被控制的Pawn不是Enemy_Character,我們需要處理這種情況,所以我們將任務標記為不成功,將任務中止。

8、右鍵單擊?新行走速度(New Walk Speed)?引腳,然后將其提升為變量,并命名為?追逐速度(ChaseSpeed)。

9、必須啟用?追逐速度(ChaseSpeed)?的?實例可編輯(Instance Editable)。

將?最大行走速度(Max Walk Speed)?的數(shù)值提升為?實例可編輯(Instance Editable)?變量后,我們便可以從藍圖外部對其進行設置,并將該值作為?行為樹?的內部屬性進行調用。

我們現(xiàn)在可以很輕松地改變被發(fā)送至?Enemy_Character?藍圖的?追逐速度(Chase Speed)?數(shù)值,以便調整AI追逐玩家的速度。

我們完成了?追逐玩家任務(Chase Player Task),下一步我們將設置?尋找隨機巡邏任務(Find Random Patrol Task)?邏輯,讓AI獲得可前往的隨機位置。?

五、任務設置 - 尋找隨機巡邏

在這一步中,我們將設置?尋找隨機巡邏任務(Find Random Patrol Task),AI沒有追逐玩家時就會移動到一個隨機位置。

應用藍圖行為樹任務節(jié)點是一種快速迭代的明智方法。但是如果需要考慮性能問題,那么你可以決定轉移至本地行為樹任務節(jié)點。

1、在?BTT_FindRandomPatrol?中,使用?Event Receive Execute AI?和?Cast to Enemy_Character

2、在?作為敵人角色(As Enemy Character?之后調用?更新行走速度(Update Walk Speed),并將?新行走速度(New Walk Speed)?提升為一個變量,命名為?巡邏速度(Patrol Speed),設置步驟如下:

勾選可編輯實例,默認值125.我們在此處降低了敵人巡邏時的移動速度。

3、在?Controlled Pawn?之后連出引線,連接Get Actor Location,然后設置?GetRandomReachablePointInRadius,其?返回數(shù)值?需連接至一個?分支藍圖節(jié)點。

4、使用以下設置將?GetRandomReachablePointInRadius?上的?半徑?提升為變量PatrolRadius,勾選可編輯實例,編譯后,默認值設為1000.

此處我們在敵人角色當前位置的1000個單位內尋找一個隨機位置。我們還要使用分支節(jié)點,處理無法找到要移動到的隨機點這種極端情況。

5、在?隨機位置(Random Location)?引腳后連出引線,使用?設置黑板數(shù)值作為向量(Set Blackboard Value as Vector),并將?鍵(Key)?提升為名為?巡邏位置(PatrolLocation)?的變量。

6、使用另一個?設置黑板數(shù)值作為向量(Set Blackboard Value as Vector)?節(jié)點,設置該?數(shù)值?的來源為?Get Actor Location。

7、繼續(xù)上一步,如下所示連接兩個節(jié)點,使得?結束執(zhí)行(Finish Execute)?被標記為?成功(Success)。

如果敵人找到了一個要前往的隨機位置,它將作為要前往的位置被存儲在黑板中。如果找不到位置,它將使用當前位置,并在嘗試新位置之前保持不動。我們還需要對受控Pawn不是Enemy_Character的極端情況進行處理。

8、從?Cast?節(jié)點的?Cast Failed?引腳連出引線,使用?結束執(zhí)行(Finish Execute)節(jié)點,將?成功(Success)?禁用。

如果受控Pawn不是Enemy_Character,此任務將被標記為不成功并被中止。

我們已完成?尋找隨機巡邏任務(Find Random Patrol Task)。在下一步中,我們將學習更多關于?裝飾器節(jié)點?的知識,以及它們如何被用作條件語句、如何設置AI控制器。

六、AI控制器設置

在這一步中,我們將在AI控制器內部進行設置,為最后一步做準備,設置一個?裝飾器節(jié)點?來決定進入?行為樹?的哪個分支。?

1、在?內容瀏覽器?中打開?Enemy_Controller?藍圖,添加一個?Event On Possess?節(jié)點

2、從?Event On Possess?連出引線,添加一個?運行行為樹(Run Behavior Tree)?節(jié)點,將其?BTAsset?設為?BT_Enemy。

運行行為樹?節(jié)點是以AI控制器類藍圖為目標的情境函數(shù)調用,使你能夠執(zhí)行指定的?行為樹 資產(chǎn)。

3、在?組件(Components)?窗口中單擊?+添加組件(Add Component),搜索并添加?AI感知組件(AIPerception Component)

4、AI感知組件(AIPerception Component)?用于在?AI感知系統(tǒng)(AI Perception System)?中創(chuàng)建一個刺激監(jiān)聽器,收集可以響應的已注冊刺激(本例中我們可以使用視覺)。這將使我們能夠確定AI何時能實際看到玩家,并做出相應的反應。

使用?按歸屬檢測檢測(Detection by Affiliation)?屬性可以建立基于團隊的AI,與相同歸屬的隊友并肩作戰(zhàn),攻擊敵方成員。默認情況下?Actor?不會被指定歸屬,會被視為中立。

目前,你還不能通過藍圖分配歸屬,因此為了檢測玩家,我們要啟用?檢測中立方(Detect Neutral)?標簽。另外一種方法是使用?Actor標簽(Actor Tagging)?來確定哪個角色是玩家,并強制AI角色只追逐被標記為玩家的Actor。

5、在?AI感知(AIPerception)?的?事件(Events)?部分,點擊?On Target Perception Updated?旁邊的?+?符號。

6、在圖表中?On Target Perception Updated?后連出引線,添加一個?Actor Has Tag?節(jié)點,將?Tag?設為?玩家。?

7、從?刺激(Stimulus)?引腳,添加?Break AIStimulus?節(jié)點。

8、添加?分支?節(jié)點,將其?條件(Condition)?按照下圖進行設置。

此處我們檢查該Actor是否被成功感知,以及該Actor是否擁有玩家標簽。?你可以選擇?Break AIStimulus?節(jié)點,在?細節(jié)(Details)?面板中,使用?隱藏未連接的引腳(Hide Unconnected Pins),隱藏所有未連接的引腳,使你的圖表看起來與上圖相似。

9、從該?分支?的?False?連出引線,使用?按事件設置定時器(Set Timer by Event),將其?時間(Time)設為?4.0。

10、右鍵單擊將?時間(Time)?提升為變量,并將其命名為?Line Of Sight Timer。

該變量和指定的數(shù)值將決定AI在多長時間后將放棄追逐玩家,并在此時執(zhí)行附加的事件。

11、右鍵單擊?按事件設置定時器(Set Timer by Event)?的?返回數(shù)值(Return Value),將其提升為名為?敵人計時器(EnemyTimer)?的變量。

這通過?句柄(Handle)?的方式保存對定時器(Timer)的引用。該句柄可以通過腳本調用,從而使自身無效,并清除任何相關事件(防止相關事件被執(zhí)行)。我們可以在稍后當AI在Line of Sight Timer耗盡之前再次看到玩家時使用該節(jié)點,這可以防止AI讓玩家離開視野并放棄追逐。?

12、創(chuàng)建一個?自定義事件,并將其命名為?StartEnemyTimer,然后將其連接至?按事件設置定時器(Set Timer by Event)?的?事件(Event)引腳。

13、單擊右鍵,然后在?變量 > AI?下,添加一個?獲取黑板(Get Blackboard)?節(jié)點。

14、在?黑板(Blackboard)?后連出引線,使用?Set Value as Bool?和?Set Value as Object,并按如下所示進行連接。?

這使我們能夠更新用新數(shù)值定義的?黑板鍵。

15、右鍵單擊并將兩個?鍵名(Key Name)?分別提升為名為?HasLineOfSight?和?EnemyActor?的?變量。?

16、編譯?藍圖,并將兩個?鍵名(Key Name)?的?默認值?分別設置為?HasLineOfSight?和?EnemyActor。?

17、斷開?分支?的?True,使用?Get EnemyTimer,然后使用?Clear and Invalidate Timer by Handle。

當AI看到玩家時,它將清除Line Of Sight Timer,直到它再次讓玩家離開視線(新的Line Of Sight Timer將從這里開始)。

18、復制并粘貼?黑板?節(jié)點,如圖對?將數(shù)值設置為(Set Value as)?節(jié)點和?鍵名(Key Name)?節(jié)點進行設置。?

19、在?Set Value as Bool?節(jié)點上啟用?Bool Value,并將?Actor**引腳拖至?Object Value**,如圖所示。

這會把?Has Line Of Sight?的?黑板鍵數(shù)值(Blackboard Key Values)?設為?True,并把?EnemyActor?設置為被我們感知的?Actor(我們已將其設置為只有玩家才能使其觸發(fā))。

千萬注意默認值為鍵值。

20、單擊?編譯(Compile)?進行編譯,然后關閉藍圖。

七、裝飾器及最終設置

在最后部分,我們會調整玩家角色和敵人角色藍圖上的一些設置。我們還會在?行為樹?中設置?裝飾器節(jié)點,它將根據(jù)特定條件決定我們可以進入哪個分支。

1、在?內容瀏覽器?中的?內容 > 第三人稱藍圖 > 藍圖(Content > ThirdPersonBP > Blueprints)下,打開?第三人稱角色(ThirdPersonCharacter)?藍圖。在?細節(jié)(Details)?面板中,查找并添加?標簽,并設置為?玩家。?

2、打開?AI?文件夾中的?Enemy_Character?藍圖。?在?細節(jié)(Details)?面板中查找?旋轉(Rotation)?并啟用?使用控制器旋轉Yaw(Use Controller Rotation Yaw)。

這會使AI在從我們的?行為樹?調用?旋轉至面向黑板條目(Rotate to face BB entry)?時進行正確旋轉。

3、打開?BT_Enemy,右鍵單擊?追逐玩家(Chase Player),然后在?添加裝飾器..(Add Decorator..)?下選擇?黑板(Blackboard)。?

4、參數(shù)設置如下:

將觀察者終止(Observer aborts)?設為?兩者(Both)** 將?黑板鍵(Blackboard Key)?設為?HasLineOfSIght 將?節(jié)點名稱(Node Name)?設為?Has Line of Sight?

我們在此說明,當?HasLineOfSight?的數(shù)值為?已設置(Is Set)?(或為true)時,會執(zhí)行這個?追逐玩家(Chase Player)?分支。觀察者終止(Observer aborts)?中設置為?兩者(Both)?意味著當我們分配的?黑板鍵?改變時,中止本身(追逐玩家)和任何低優(yōu)先級的任務。這意味著,當?HasLineOfSight?的數(shù)值改變且未設置時,其將中止自身(追逐玩家),此時將執(zhí)行下一個分支(巡邏)。當?HasLineOfSight?數(shù)值再次變成?已設置(Is Set)?時,觀察者將中止優(yōu)先級較低的任務,并使?追逐玩家(Chase Player)?分支能夠再次被執(zhí)行。?

5、編譯?并關閉?行為樹,然后在編輯器中?運行。

八、最終結果

你現(xiàn)在可以對AI進行測試,它看到你的時候便會尾隨著你。

當你走出AI的視野后,它仍然會嘗試追蹤并重新讓你進入視線。輸入?Line Of Sight Timer?數(shù)值后,它將放棄追逐,返回巡邏狀態(tài)。

你可以在運行時觀察?行為樹?的運行情況,看它如何在不同的分支之間切換。當你在進行游戲的時候,也可以在?行為樹?中觀察這些變量,以了解AI當前的數(shù)值。

九、自行設置!

現(xiàn)在你的AI角色將追逐玩家,如果在特定的時間之后沒有看到玩家,它會返回巡邏狀態(tài),你可以嘗試在?行為樹?中添加以下元素!

在?行為樹?中,向兩個?移動至(Move To)?任務節(jié)點添加新的?服務?節(jié)點,該服務集成了優(yōu)先于它的?任務?節(jié)點的功能。

我們最初的?行為樹?使用了一個單獨的?任務?節(jié)點調整移動速度(在追逐玩家的情況下)和尋找一個隨機的巡邏位置并降低移動速度(在巡邏的情況下)。將這些轉換為附加到?移動至任務(Move To Task)?的?服務?節(jié)點。 提示:服務?節(jié)點中的腳本類似于每個?任務?節(jié)點中的腳本,但是你最好使用?Event Receive Activation AI,而不使用?Event Receive Execute AI。因為它們是?服務?節(jié)點,所以你也不需要?結束執(zhí)行(Finish Execute)** 節(jié)點。 不要使用隨機巡邏點來移動。創(chuàng)建一個?巡邏路徑藍圖,其中包含一個?數(shù)組變量的向量數(shù)值,AI可以在這些向量之間移動。

提示:循環(huán)并獲取數(shù)組中的下一個條目,從而在各個位置之間移動AI,然后根據(jù)數(shù)組中的當前條目更新?黑板鍵?的數(shù)值?巡邏位置(PatrolLocation)。 當玩家走出視線后,將AI移動到玩家最后已知的位置,而不是獲取玩家的當前位置。

提示:在?轉向和追逐玩家(Turning and Chasing the Player)?的?移動至(Move To)?命令中,你需要指定一個位置,而不是使用?EnemyActor,因為它當前被設為獲取?EnemyActor?的位置(它會獲取玩家的當前位置)。 當AI追上玩家后,為其增加攻擊功能。

提示:添加一個新的?合成?節(jié)點作為?轉向和追逐玩家(Turning and Chasing the Player)?的?后臺任務(Background Task)。當AI追上玩家后,為其增加攻擊動畫的?任務?節(jié)點。

柚子快報邀請碼778899分享:UE4

http://yzkb.51969.com/

好文閱讀

評論可見,查看隱藏內容

本文內容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉載請注明,如有侵權,聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18891790.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄