zoukankan      html  css  js  c++  java
  • 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,发现控制台输出。

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

    这一节我们主要介绍了,如何切换行为树,如何定义变量如何自定义节点,

    如何巡逻,追逐,攻击。

    内容比较多了,故将视觉和听觉监听放在下一节再介绍。

    希望此文能够帮助到您,可以关注我已获得我发布最新的文章的通知。

  • 相关阅读:
    Stanford NLP 第六课: Long Short Term Memory
    Stanford NLP 第五课: RNN Vanishing Gradient Problems Details
    Stanford NLP 第四课 神经网络复习
    Stanford cs224n 第三课: GloVe 代码解读
    Stanford CS224N 第二课: word2vec踩坑经验分享
    秒杀抢购系统优化思路详解
    微服务的事件驱动数据管理方案
    Netty与网络编程
    Netty 学习 一、初识Netty【原创】
    高性能Server---Reactor模型【转载】
  • 原文地址:https://www.cnblogs.com/Fasty/p/9383991.html
Copyright © 2011-2022 走看看