昨天由於策划的要求,要在項目的最后加個自動尋路的功能,跑去研究了下自動尋路的插件。不多說,上操作
首先在尋路的游戲物體上加上seeker、AI Lerp這兩個腳本,注意要給target賦值。
之后給目標位置加一個Target Move組件,同樣的也需要給target賦值,並勾選下兩個參數。
最后創建一個空物體,添加Atart path組件,添加graphs並設置width和Depth,這個時候只能看到一條橫線,要更改rotation,具體更改的參數入下圖所示,你的障礙物是哪一層就將collision testing的mask設置為哪一層。
學習鏈接:
http://blog.csdn.net/jjiss318/article/details/41408559
使用心得:真實得到的路徑會七拐八拐,改變障礙物層使之只有一條路
如果想要不繪制尋路曲線,不勾選下面參數
如果想要不讓其一開始移動,不勾選下面參數(注意canSearch參數一定要勾選上)
如果想要一定條件滿足后開始自動尋路,修改AILerp腳本中的startHasRun = true;並調用Init();
CalculateNextPosition(out direction):能夠得到計算的下一個點的世界坐標
項目中有個需求是需要根據當前變化的位置播放上下左右方向的動畫,所以在得到計算的下一個點的坐標根據坐標改變的是2D坐標系的X還是Y值判斷方向,但是在這個過程中會有一點的抖動,原因是它計算的值中間出現不正常的變化,比如當前一直改變的是Y值,中間會變化一下X值(只變一下,特別坑爹),播放的動畫就會變化,因此出現抖動
解決方案:判斷兩次坐標XY的變化>0.2(一次是0.1)
if (lastPos.x - transform.localPosition.x > 0.1f) { name = "zuo"; } else if (transform.localPosition.x -lastPos.x > 0.1f) { name = "you"; } else if (transform.localPosition.y -lastPos.y > 0.1f) { name = "bei"; } else if (lastPos.y - transform.localPosition.y > 0.1f) { name = "zheng"; }