尋找行為隻是把機車移動到指定點。就像這樣:
首先,通過目标位置和機車位置相減,計算出一個能使機車準确到達目标的期望速度。這個速度向量的含義是“如果想到達目的地,需要以如此方向,移動這般快才行”。
當然,現實不會讓你想去哪兒就能一下子過去的。為此,多嘗試幾次後會找出一個不錯的算法。在這裡,我們通過機關化期望速度并乘以最大速率來實作。這樣做,仍然能得到一個指向目标的向量,其含義則是“不要想着會瞬間移動,以最快速度向正确方向邁進吧。”
有了期望速度,顯然還要考慮機車現有的速度。通過兩者相減,得到一個向量,其含義是“盡最大可能以最大速率面向正确方位。”
這個向量還會疊加給轉向力。記得update函數中,_steeringForce總是被限制在最大力度以内。是以,雖然仍舊沒有朝着想要的準确方向走,卻在最大力度和最大速率的限制下盡了最大的可能。
現在給出尋找行為的一個例子:
這是一個非常簡單的例子。僅僅是讓場景上一個有轉向行為的機車在每幀去尋找滑鼠。試着改變機車的最大速率和最大力度,或者改變其品質(mass)來感受一 下這些因素對轉向行為的影響。同樣也可以試試用一個固定點代替滑鼠,或者更刺激一點,建立另一個機車作為目标。這樣Rendering函數中就會有 類似的代碼:
myStar.seek(new Vector2D(mouseX, mouseY));
myStar.update();
到此,應該已經見識了轉向機車如何尋找滑鼠或者另一輛機車,當對這些工作有了很好的了解後,我們進入下一個行為:避開。