Unity Rain Ai 插件基本使用(二)
前言
在前面的教程中我們已經基本實現了路徑導航和障礙物規避。
但是這樣我們並沒有讓我們的角色學會思考,他只是機械的去完成一些步驟,這並不能體現Rain插件的智能。
一個角色他應該有多個不同的狀態,待機,巡邏,發現,追逐,攻擊等等。並且能夠思考,自己反應自己的行為。
狀態之間的轉換需要信號,就像我們現實世界中,信號來源是視覺和聽覺。
那我們可不可以為AI角色也添加視覺和聽覺呢?
答案:當然是可以的,為了讓我們的角色更加智能,就讓我們來實現這個功能吧。
場景準備
我布置的場景如下
綠色膠囊體:玩家
紅色小球:敵人
敵人會沿著我布置的場景中的路徑做pingpong運動(巡邏)
註意:我們為所有的墻(障礙物)設置層級:wall,在導航網格的屬性中設置要計算碰撞的層級。(因為在場景中如果有花草或其他我們不希望進行碰撞的物體,我們就不應該計算導航)
行為樹切換
在我們開始之前,我們要知道如何在rain中進行行為樹切換,我們打開敵人的Ai,
選擇燈泡這個選項,這裏叫做內存,在rain中你需要保存的變量在這裏聲明。
我們添加一個string 類型的變量model並賦值為patrol
創建一個基本的行為樹MyAi_01
創建一個總的行為樹MyAi
將默認SEQ(順序)節點改為PAR(parallel)並行節點。
並使用Constraint節點,進行判斷
為當前行為樹綁定MyAi_01行為樹
在大腦思考模式中指定行為樹
運行我們發現在給行為樹中我們已經通過constraint節點判斷,將MyAi_01行為樹綁定到了當前行為樹。
這樣我們可以為角色制定多套Ai,在一定條件下進行選擇和轉換。
為敵人添加視覺
在我們的敵人上打開rain,在眼睛圖標下添加 監視器(註意此時我們添加視覺監視器)
添加後我們發現我們的敵人多了綠色的2個環
這個環的範圍就是我們敵人的視覺範圍
此時我們可以在檢視面板調節視覺的範圍參數
Range :半徑
Horizontal Angle:水平角
Vertical Angle:垂直角
我們調節參數模擬出敵人的視覺範圍。(此時我規定z軸為敵人的正面)
現在我們來給玩家添加信號(在rain中,叫做實體Entity)
選擇player如圖添加
添加視覺信號,添加後可以在面板上看到
為MyAi_01行為樹添加上根據路徑巡邏,運行如圖,已經能夠切換行為樹並根據model執行。
追逐行為的實現
創建一個導航目標,並掛載到玩家的物體上。
創建一個行為樹MyAi_02 用作追逐行為樹,並設置目標。
在MyAi總行為樹上添加該子行為樹,並如上設置。model為pursuit
現在我們就可以在2個狀態間轉換了。如圖所示:
增加攻擊狀態(使用自定義腳本)
創建攻擊行為樹MyAi_03
創建一個Custom Action 節點,並創建一個自定義腳本Test
打開Test我們看到,它繼承於RAINAction,並實現了超類的幾個方法。
using RAIN.Action; using RAIN.Core; [RAINAction] public class Test : RAINAction {
//在該節點開始執行時調用 public override void Start(RAIN.Core.AI ai) {
//添加一個Debug信息 Debug.Log("Attack!!"); base.Start(ai); } //返回此操作成功還是失敗 public override ActionResult Execute(RAIN.Core.AI ai) { return ActionResult.SUCCESS; } //在該節點停止時調用 public override void Stop(RAIN.Core.AI ai) { base.Stop(ai); } }
運行並切換model到attack,發現控制臺輸出。
我們的自定義節點已經被執行。
這一節我們主要介紹了,如何切換行為樹,如何定義變量如何自定義節點,
如何巡邏,追逐,攻擊。
內容比較多了,故將視覺和聽覺監聽放在下一節再介紹。
希望此文能夠幫助到您,可以關註我已獲得我發布最新的文章的通知。
Unity Rain Ai 插件基本使用(二)