1. 程式人生 > >Unity Rain Ai 插件基本使用(二)

Unity Rain Ai 插件基本使用(二)

style 信息 面板 燈泡 ret 繼承 切換 cti 運動

前言

在前面的教程中我們已經基本實現了路徑導航障礙物規避

但是這樣我們並沒有讓我們的角色學會思考,他只是機械的去完成一些步驟,這並不能體現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 插件基本使用(二)