前言

在前面的教程中我们已经基本实现了路径导航和障碍物规避。

但是这样我们并没有让我们的角色学会思考,他只是机械的去完成一些步骤,这并不能体现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 插件基本使用(二)的更多相关文章

  1. Unity Rain Ai 插件基本使用(一)

    1.下载安装Rain 插件 原先可以在unity的Asset Stroe 下载到,但是现在Rain 的开发公司因为人工智能的发展,公司得到投资,所以下架了rain插件. 所以我给出网盘链接 链接:ht ...

  2. Unity时钟定时器插件——Vision Timer源码分析之二

      Unity时钟定时器插件——Vision Timer源码分析之二 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面的已经介绍了vp_T ...

  3. Unity的NGUI插件篇——入场效果

    Unity的NGUI插件篇--入场效果 入场效果 入场效果须要借助于NGUI提供的TweenPosition类来完毕.为了说明此类的用法.本节将使会解说两个演示样例.本文选自  大学霸 <NGU ...

  4. Unity时钟定时器插件

    Unity时钟定时器插件 http://dsqiu.iteye.com/blog/2020603https://github.com/joserocha3/KillerCircles/blob/67a ...

  5. 记录一个Unity播放器插件的开发

    背景 公司最近在做VR直播平台,VR开发我们用到了Unity,而在Unity中播放视频就需要一款视频插件,我们调研了几个视频插件,记录两个,如下: Unity视频插件调研 网上搜了搜,最流行的有以下两 ...

  6. Curved UI - VR Ready Solution To Bend Warp Your Canvas 1.7,1.8,2.2,2.3 四种版本压缩包(Unity UGUI曲面插件),可以兼容VRTK

    Curved UI - VR Ready Solution To Bend Warp Your Canvas 1.7,1.8,2.2,2.3 四种版本压缩包(Unity UGUI曲面插件) 可以兼容V ...

  7. Android插件化(二):使用DexClassLoader动态载入assets中的apk

    Android插件化(二):使用DexClassLoader动态载入assets中的apk 简单介绍 上一篇博客讲到.我们能够使用MultiDex.java载入离线的apk文件.须要注意的是,apk中 ...

  8. 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

    标题:从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11155 ...

  9. 微信小程序——表单验证插件WxValidate的二次封装(二)

    在上一篇博客<微信小程序——仿jqueryValidate表单验证插件WxValidate的二次封装>中,我将WxValidate做了再次封装,简化了初始规则数据的构造,但是当有错误时页面 ...

随机推荐

  1. Ubuntu16.04的图形化界面无法启动问题

    昨晚在 Ubuntu 下试图安装笔记本触控板的驱动的时候,突然 Ubuntu 的图形化界面不见了,尝试了 Ctrl + Alt + F1.F2.F3...无果,又在一些博客的指导下尝试在命令行使用 s ...

  2. DB2读取CLOB字段-was报错:操作无效:已关闭 Lob。 ERRORCODE=-4470, SQLSTATE=null

    DB2读取CLOB字段-was报错:操作无效:已关闭 Lob. ERRORCODE=-4470, SQLSTATE=null 解决方法,在WAS中要用的数据源里面配置连个定制属性: progressi ...

  3. 2019第十二届全国大学生信息安全实践创新赛线上赛Writeup

    本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html  未经允许不得转载! 1.MISC-签到 下载附件后,看到readme.txt打开后提 ...

  4. vue api学习之nextTick的理解

    对于 Vue.nextTick 方法,之前没有听说过,突然听到别人提起,貌似作用挺大.以下为学习心得.官方文档上这样定义:在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法, ...

  5. 动态将ASPX生成HTML网页并将网页导出PDF

    1.首先要找到wnvhtmlconvert.dll这个文件,并引入项目中. 2.Server.Execute("pos.aspx?id=" + ids); 执行相应的aspx网页 ...

  6. 小E浅谈丨区块链治理真的是一个设计问题吗?

    在2018年6月28日Zcon0论坛上,“区块链治理”这个话题掀起了大神们对未来区块链治理和区块链发展的一系列的畅想. (从左至右,分别为:Valkenburgh,Zooko,Jill, Vitali ...

  7. 【转】一文掌握 Linux 性能分析之网络篇

    [转]一文掌握 Linux 性能分析之网络篇 比较宽泛地讲,网络方向的性能分析既包括主机测的网络配置查看.监控,又包括网络链路上的包转发时延.吞吐量.带宽等指标分析.包括但不限于以下分析工具: pin ...

  8. MVC 前端页面ViewData参数名不区分大小写

    项目中实际应用: 后台赋值时传的是:ViewData["CheckedSystemMenu"], 前台取值时:ViewData["checkedsystemmenu&qu ...

  9. nginx,作为前端的你会多少?

    --现在阅读的你,如果是个FE,相信你不是个纯切图仔.反之,如果是,该进阶了,老铁! 前端的我们,已经不仅仅是做页面,写样式了,我们还需要会做相关的服务器部署.废话不多说,下面就从前端的角度来讲以下n ...

  10. LeetCode 7. Reverse Integer(c语言版)

    题目: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123Output: 321 Ex ...