• Unity Rain Ai 插件的使用入门


    目录

    1、向指定目标移动

    2、让物体到达我们指定的点

    3、沿着指定路径移动

    4、智能规避障碍物

    5、为AI角色也添加视觉和听觉

    场景准备

    行为树切换

    为敌人添加视觉

    追逐行为的实现

    增加攻击状态(使用自定义脚本)


    1、向指定目标移动

    导入后可以看到在顶部已经有了RAIN:

    首先创建一个地板和一个Ai对象,如图:


    选择要操作的AI对象,创建AI子物体:


    我们可以看到AI子物件上有这么一个组件:

    参数如下:

    AI:当前这个rain 控制器的名字

    Body:所控制的物体

    Mind:思考方式(免费版只有BasicMind)

    Behavior Tree:使用的行为树

    Open Behavior Editor:打开行为树编辑窗口


    2、让物体到达我们指定的点

    打开行为树编辑窗口:

    Behavior Tree :当前的行为树


    我们先创建一棵行为树(点击框,选create),给行为树一个名字(注意不能输入中文):

     rain会为我们创建1个root默认节点(默认是SEQ[依次执行其子节点]):


    创建一个move的子节点:

    我们发现我们缺少一个移动target

    如图创建一个导航目标

    修改导航目标名称为tar1


    我们可以点击这个按钮使tar1沉降到plan上

    在行为树上设置目标(注意:一定要+"")

    face target 就是面向的方向


    为AI物件指定使用的行为树:

    点击运行,我们看到缓缓移动到目标点,且下面行为树,颜色从运行中(黄色)到运行成功(绿色)


    3、沿着指定路径移动

    创建route 路径:


    在创建的route对象上 点击增加新路点,并将Waypoint Route对象改名为Route:


    创建如图所示的行为树:

    注意框住的2个内容,i表示迭代变量(当前路点)


    在move节点中设置对应的目标:

    设置的是pingpong运动,所以会来回往复。

    4、智能规避障碍物

    我们在中间放一个障碍物我们发现它直接穿透了,这不是我们想要的效果。


    创建一个导航网格,使其能包住我们需要运算的场景。


    点击生成网格:

    这样运行后发现,已经可以比较完美的绕开障碍物了。


    5、为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,并实现了超类的几个方法:

    1. using RAIN.Action;
    2. using RAIN.Core;
    3. [RAINAction]
    4. public class Test : RAINAction
    5. {  //在该节点开始执行时调用
    6. public override void Start(RAIN.Core.AI ai)
    7. {    //添加一个Debug信息
    8. Debug.Log("Attack!!");
    9. base.Start(ai);
    10. }
    11.   //返回此操作成功还是失败
    12. public override ActionResult Execute(RAIN.Core.AI ai)
    13. {
    14. return ActionResult.SUCCESS;
    15. }
    16.   //在该节点停止时调用
    17. public override void Stop(RAIN.Core.AI ai)
    18. {
    19. base.Stop(ai);
    20. }
    21. }

    运行并切换 model 到 attack ,发现控制台输出。

    这表示我们的自定义节点已经被执行。

  • 相关阅读:
    Activiti审批流
    WEB安全基础 - - -文件上传
    Java 多线程(四):锁(二)
    Redis主从复制-Redis学习
    uniapp自定义国际化语言uni.chooseImage、picker组件文本错误问题
    项目-云备份
    java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis
    [从0开始机器学习]1.一元一次函数线性回归
    智慧政务大屏建设方案
    基于ProXmoX VE的虚拟化家庭服务器(篇一)—ProXmoX VE 安装及基础配置
  • 原文地址:https://blog.csdn.net/flyTie/article/details/127600178