遊戲常用算法1-視線追蹤算法

遊戲常用算法1-視線追蹤算法

在遊戲中我們常常看到這樣一種情況,敵人死死盯着目標不放,好像非常的智能。如在《三國無雙》中,當角色進入敵人的領地之後,敵人就會想你奔襲而來,攔也攔不住。這是怎麼做到的呢。有一種簡答的遊戲算法視線追蹤算法,主角A座標,敵人B座標。A到哪,B也跟到哪,如圖所示

                                                                                                                                  

圖1

A(x1,y1) ,B (x2,y2),這樣就可以得到敵人追擊主角的路線,BA(x1-x2,y1,-y2),這樣實現了追蹤敵人目的,可是這是最好的嗎?不,你不感覺這樣很突兀嗎,B的方向突變很快,因爲重心點事B,而不是A,這樣處於一種被動的情況,而實際是A主角是被動的追擊的,跟實際情況不相符,我們換一種思路。以A爲圓心,B就可以把握全局,決定運動的方向,而不是被動式的跟着跑。哪怎麼實現呢。

有一種解決的該類問題算法,且讓我娓娓道來。這涉及到向量計算。不要看到數學就頭暈。很簡單的,高中我們就學過。向量是什麼呢,有方向有大小的。如 ------------> 他就是長這樣,還記得嗎。這個有什麼呢。這個要放到我們的問題中才有用,不然一點用處都沒有。我們不是要【 B ------->A 】嗎,這個就可以表示BA的向量,只要能確定AB的位置,我就可以找到BA的一條路徑,這條路徑就是追蹤路線。那怎麼找出呢。

我們的界面座標位置是根據座標軸XY確定的,那麼就可以在座標軸上找到AB的座標,如圖顯示。

 

圖2

A的向量(x1y1)B的向量(x2y2),那A->B的向量座標就是AB(x1-x2,y1-y2),所以A追蹤B的路線就是向量ABAB的舉例就是,根據勾股定理得到向量AB 長度  ,把AB標準化就是AB( (x1-x1)/Leny1-y1/Len,這樣整個算法就顯示出來了。只要給出AB的座標就可以實現追蹤。在真實的遊戲開發中,我們還要考慮速度、摩擦力還有使用的交通工具等,大家在選擇算法的時候,應該根據實際情況合理選擇,後面還繼續分享A*算法常用的遊戲算法。敬請期待!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章