游戲中常見的幾種追蹤算法
所謂追蹤,相對(duì)于另外一個(gè)角色來說是逃跑,首先需要做出追和逃跑的決策判斷。1.坐標(biāo)追蹤
也是最基本追逐方式,他根據(jù)要追蹤對(duì)象的坐標(biāo)來修改追蹤者的坐標(biāo),使兩者的距離逐漸縮短。
一個(gè)簡(jiǎn)單的例子:
Point m_pPrey; /// 被追蹤者
Point m_pAtta; /// 追蹤者
對(duì)于追蹤者來說: 新位置 = 舊位置 + XY速度 ;

2

3

4

5

6

7

8

9

10

2.視線追蹤
視線追蹤方式,主要是描述每一時(shí)刻都追蹤者會(huì)沿著被追逐者之間的直線方向運(yùn)動(dòng)。如圖所示:
通過圖可以更好描述此問題,此問題的求解關(guān)鍵在于求出連接追蹤者與獵物之間的直線,可以通過向量知道:2個(gè)向量想減即可得到。
可以分別用追蹤者與獵物的位置坐標(biāo)構(gòu)造出兩個(gè)向量,假設(shè)b 代表追蹤者位置向量,a 代表獵物位置向量。做向量減法a-b 便得到了向量c,將c 的起點(diǎn)置于追蹤者的位置上,就得到了一條指向獵物的向量c. 此時(shí),令:
追蹤者X 方向速度 / 追蹤者Y 方向速度 = c 向量x 軸分量/ c 向量y 軸分量 .即可求解。
3.攔截追蹤
所謂攔截追蹤,如果考慮的是被追逐的目標(biāo)太遠(yuǎn),如果2者速度一樣,或者相差不大,有可能很難追上,玩過實(shí)況足球的都知道,如果采用上面的2中追逐方式,可能錯(cuò)過最佳的防守位置。下面是攔截追蹤的一個(gè)示例圖:
對(duì)于追蹤者來說,他只需要知道被追蹤者的位置,方向與速度,講會(huì)計(jì)算一個(gè)最佳的攔截位置。然后你會(huì)發(fā)現(xiàn)這只是一個(gè)簡(jiǎn)單的追蹤問題。且需要的時(shí)間t最少。
整個(gè)3種追蹤的源碼代碼 以及 demo都共享:
/Files/expter/chase.rar
下一篇通過實(shí)例demo來記錄學(xué)習(xí)的聚類算法:
posted on 2009-10-09 23:57 expter 閱讀(4859) 評(píng)論(2) 編輯 收藏 引用 所屬分類: 算法與數(shù)據(jù)結(jié)構(gòu) 、Ai