用行為樹來制作AI是非常方便的,今天就給大家簡單介紹一下行為樹的強大之處。
所用插件 Behavior Designer v1.421
最開始 我使用過Rain插件,不過用過Behavior Designer后感覺界面更為直觀,更容易設計出AI
新建一個項目,先導入該插件
新建一個Cube,命名為Floor,作為本場景的地板,Scale設置為(20, 0.1, 20),Tag設置為Floor
創建一個Capsule,命名為Player,Tag設置為Player,添加一個簡單的Player腳本控制移動
using UnityEngine; using System.Collections; public class Player : MonoBehaviour { public float speed = 5; private float _x; private float _z; void Update () { _x = Input.GetAxis("Horizontal") * Time.deltaTime * speed; _z = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.position += new Vector3(_x, 0, _z); } }
導入怪物的模型,並設置好其狀態機,我只簡單設置攻擊、站立和行走3種狀態
在場景中拖出一個實例,命名為Monster
基本場景已經搭建好了,現在簡單介紹一下行為樹的組件
大致來說行為樹有4種節點
Actions是行為節點,能執行一定動作
Log就是一個行為節點,能執行一個Log操作,在Inspector面板設置輸出的Text
執行結果:
Decorators是裝飾節點,能修飾子節點
Repeater就是一個裝飾節點,它修飾后子節點不斷循環
執行結果:
Composites該節點能決定子節點執行的順序
Return Failure是一個裝飾節點,它的作用是讓子節點無論如何返回Failure
Parallel是平行節點,它會讓子節點都正常執行,無論有沒有節點返回Failure,事實上如果沒有平行節點,右邊的Log是不能執行的,
因為默認是從左到右順序執行,有一個返回Failure則跳出子節點,可在下一個例子順序節點看出
這次把平行節點改成順序節點,右方行為節點就執行不了了,因為左邊返回Failure跳出了子節點
Conditionals是判斷節點,配合Composites中的Selector使用
Selector和Conditionals配合使用類似if elseif else的效果
若是第一個判斷節點返回成功,則不繼續運行,相當於if執行成功
若是第一個返回失敗,第二個返回成功,則相當於elseif
若是兩個都返回失敗,則會執行最后一個Log,相當於else
行為樹由四種節點組成,每種節點其實默認都提供了大量節點,這里沒辦法一一介紹,需要自己細細研究,
這一次先到這里,下一次會介紹如何自定義節點並創建一棵完整的行為樹
美しきもの:http://music.163.com/#/song?id=22782025