UE任意固定巡邏點往返邏輯解析
我在Arpg系列AI行為樹的部分講解了一個固定巡邏的方法,有些同學(xué)反映看不太懂,邏輯太復(fù)雜,那么今天我就用專欄文章的形式對里面的點做一些解析。 在這套方法里,我們要實現(xiàn)的是NPC可以按照任意設(shè)置的固定點進行巡邏,并且還能按照原路返回初始點,如此反復(fù)
首先是執(zhí)行巡邏邏輯,這塊很簡單,如果能成功cast轉(zhuǎn)化敵人藍圖就執(zhí)行開始巡邏,失敗的話行為樹執(zhí)行就失敗
接下來我們要設(shè)置巡邏點,巡邏點是一個數(shù)組,我們在NPC的面板里可以任意添加地圖中設(shè)置好的巡邏點,在設(shè)置巡邏點功能里,獲取設(shè)置好的巡邏點,根據(jù)巡邏點序列這個黑板值來獲取巡邏點數(shù)組當(dāng)中對應(yīng)序號的對象,獲取他的位置,將位置向量投射到導(dǎo)航,作為行為樹的巡邏目的地
我們在到達一個巡邏點后要增加當(dāng)前巡邏的序列值,好獲取巡邏點數(shù)組下一個巡邏點,所以制作一個增加巡邏點序列的功能來增加這個序列值,比如
巡邏點有5個,我們從1(數(shù)組序號0,因為數(shù)組序號是從0開始代表第一個)出發(fā)到2(序號1),然后序號+1,獲取下一個巡邏點對象(序號2),依此類推,直到走到第五個點(序號4)。
這個是正常巡邏的順序,我們到達最后一個巡邏點開始按照原路返回,這個時候巡邏點序列是
反過來
的,所以要開始做
減法
比如我們從第五個點(序號4)走到第四個點(序號3),
序號-1,走向下一個逆向的巡邏點(序號2),最后走回序號0
接下來是開始巡邏的邏輯內(nèi)容 首先,我們要判斷當(dāng)前npc是走正向巡邏(數(shù)組序號0到n)還是走逆向巡邏(數(shù)組序號n到0)
所以一開始我們先判斷當(dāng)前AI的巡邏點序列(序號)是不是等于0 如果等于0,證明走的是正向巡邏路線,我們開始設(shè)置巡邏點(獲取巡邏點的向量,好讓NPC向目標移動),走到下一個巡邏點后
增加巡邏序列號
,以便讓NPC知道下一個巡邏點是哪個,此時我們設(shè)置一個
布爾值“正向”
來標注此時走的是正向巡邏
如果不為0,那么此時NPC可能走正向,也可能在走逆向,打個比方,現(xiàn)在有5個巡邏點,此時
NPC在3這個點上,他可能從3走到4,也可能從3走向2
我們就通過前面的“正向”布爾值來判斷是正向還是逆向 如果逆向,那么就減少巡邏點序號,往2個方向走,并設(shè)置正向布爾值為false 如果“正向”布爾值為真,那么也有兩種情況
a. 此時npc已經(jīng)走到巡邏點盡頭,要開始掉頭了,怎么判斷巡邏到頭了呢,就是通過獲取巡邏點數(shù)組長度
長度是否等于序號,等于就證明走到最后一個巡邏點要開始掉頭了 b.
沒有走到巡邏點盡頭
,不會掉頭,繼續(xù)往前走,執(zhí)行增加巡邏點序列的那條分支
簡單說就是我從0開始走,走正向,+1,走到1,再+1走到2,+1走到3,再+1,沒有可走的了,我開始判斷
3是否為盡頭,看我巡邏點數(shù)量和當(dāng)前巡邏點序號,相等,是盡頭了,我開始掉頭逆向走,-1走到2,-1走到1,再-1走到0,又走到0了我又開始掉頭了,開始正向走,如此反復(fù)
我現(xiàn)在在2,我是走正向還是逆向?npc不知道,你要告訴他,通過正向布爾值判斷,為true,我往3走,為false我往1走
可以添加任意巡邏點,根據(jù)巡邏點序號進行反復(fù)巡邏