Transwiki:掌舵行為

维基教科书,自由的教学读本
跳到导航 跳到搜索

掌舵行為[1][2],是一個讓遊戲中那些漫無目的遊蕩的角色,能夠移動的自然一點的技術.這個技術不使用路徑搜尋演算法、也不牽涉到全局計算,單純使用角色周圍的環境來決定移動的速度與方向.儘管如此,這個技術依舊可以為角色創造自然且相當複雜的移動方式.[3]

基礎移動方式[编辑]

以下先介紹六種基礎的移動方式:尋找、逃跑、抵達、遊蕩、追趕、迴避.

尋找:執行這種移動方式,需要提供角色一個目標,讓角色能夠跟著這個目標走.具體的做法是給每個角色一個速度向量,決定其移動的方向與快慢.當目標出現時,角色會在其與目標連線方向上,增加一個修正的速度向量.這個修正的速度向量加上原先角色的速度向量,會變成最終的速度向量.一段時間後,角色就會漸漸靠近目標.

逃跑:這種移動方式跟尋找相反,是給定一個目標,而角色會遠離這個目標.具體的做法與尋找是一樣的,只是方向不同而已.

抵達:當角色漸漸靠近目標時,需要模擬出漸停的效果.具體的作法是在目標周圍畫一個圈,當角色進入這個圈時,依照一定的距離降低角色的速度,當速度降到零,角色就停下來了.

遊蕩:當需要讓角色隨意的移動時,可以為角色現有的速度向量加上一個隨機的變量,這樣角色就會隨機改變移動方向跟快慢.

追趕:跟尋找很像,都是角色追著某一個目標跑.差別是在尋找時,角色的速度向量是根據目標當前的位置改變,但是在追趕時,角色會預測目標在下一個時間的位置,所以是依照目標未來的位置改變自己的速度向量.

迴避:跟逃跑非常像,都是角色要逃離某一個目標.差別是角色會預測目標在下一個時間的位置,所以是依照目標未來的位置改變自己的速度向量.迴避跟追趕也很像,差別只是方向相反.

進階移動方式[编辑]

除了上述六種基本移動方式外,掌舵行為還包含了以下四種較為進階的移動:碰撞避免、路徑跟隨、領導跟隨、排隊.碰撞避免顧名思義,就是當角色距離某個物體進到一個程度時,為了避免碰望,需要調整角色的速度向量,讓其不至於與這個物體碰撞.路徑跟隨則是指定一條路徑,角色必須要隨著這條路徑前進.領導跟隨指的是,指定某角色為領導,其他角色都要跟著領導走.最後,排隊移動可以利用上述尋找移動跟碰撞避免兩種移動方式組合而成,只要指定一條線,角色就會排好隊,同時避免跟其他角色碰撞.[4]

參考資料[编辑]

  1. gdx-ai: Artificial Intelligence framework for games based on libGDX or not. Features: Steering Behaviors, Formation Motion, Pathfinding, Behavior Trees and Finite State Machines, libgdx, 2017-12-02 [2017-12-02] 
  2. Introduction to Steering Behaviours. [2017-12-02] (英语). 
  3. Understanding Steering Behaviors - Envato Tuts+ Game Development Tutorials. Game Development Envato Tuts+. [2017-11-30]. 
  4. Steering Behaviors For Autonomous Characters.www.red3d.com.於2017年11月30日查閱.