RAIN{INDIE} 自动寻路

2023-11-19

     Unity游戏中有较多的自动寻路插件,看过几个,大同小异。而RAIN中的Behavior Tree感觉很好,听名字就知道很条理。
     下面,就用它做个简单的寻路小例子。

 

     首先,导入RAIN的包,结构如下:

 

在使用的过程当中还会产生几个文件夹用来存放Editor生成的Tree和临时文件等。

      接下来创建几个简单的游戏对象,大致如下: 


 

 简单布置了一下场景,  蓝色的胶囊体代表Player, 箱子(MoveTarget)是我们要移动到的位置,地面是一个Plane。现在要做的就是让Player移动到目标位置MoveTarget。在Unity中实现这个功能很简单,但如果让Player主动去发现箱子,并走到箱子面前就不如RAIN Editor简单了,AI就是让Player具有人能发现事物的功能。
        在RAIN中,已经定义好了视觉、触觉、嗅觉、味觉等,我们这里就用视觉来实现这个功能。


       我们先给箱子作一个标记,标记自己是一个箱子。选中箱子,在RAIN菜单下选择Creat Entity,创建实体,并做如下图设置:


 
在Select Type中选择可视化单位Visual Aspects。  Aspect Name是此箱子的标记,我们起名字为box,RAIN Mind需要用它来发现东西,包括其它模拟感官功能。

     接下来就要设置主要的Player了。选中Player,RAIN菜单中选择Create AI。经过这一步,Player已经有了一个子GameObject——AI:


 

 在这里可以给Player设置变量,Mind,运动,Animation,Navigation,感官等。

选中倒数第二项类似眼睛的图标,在这里我们赋予Player视觉能力,在Add Sensor中选择视觉:

 

这样Player就能模拟人的视觉了(可以看到场景有的箱子,如果加入的是食物以及嗅觉,便可以觅食了)。

由于我们这个例子中并没有使用Path(可以自己了解,其实跟Navigation差不多),所以我们需要关掉有效路径请求选项:


 

接下来最重要的一步,选中第二项,点击下面Open Behavior Editor,打开Behavior Editor的编辑窗口,输入名称,点击OK:


 
 我们选中root,右键,Create--Actions--Detect,创建一个感觉结点,并作如下的设置:


 

 Aspect这里需要使用双引号,(e打头的也可以定义表达式,是特殊项),是要找box(之前在实体处定义,需要统一名称)。Aspect Variable,我理解为是在这个Tree中的临时变量,其它以后结点可以调用。。此处是把发现的box放在名为findBox的临时变量当中。Repeat,我们选择Until Success,表示直到发现box目标才执行下一个结点。

接下来,就定义所谓的下一个结点。我们找到目标后要让Player向Box寻路,所以在root上右键,Create,Actions,Move,并作如下设置:

 

MoveTarget是要填写移动到的标记点,这里我们填写得到的box信息,当然这个也可以直接写坐标点(10.0,0.0,10.0)。。

做完上面的步骤我们的龙已经画完了,接下来就是点睛了,这时我们可以关掉Behavior Tree的编辑窗口。没有错的话在项目Assets下已经生成了AI目录,我们在其中的BehaviorTrees文件夹下可以看到我们生成的文件(过程中Tree的编辑是自动保存的)。

打开之前的AI的Mind选项,将这个文件拖过来:



 
点击Play,看看有没有效果呢。

 

如果Player并没有移动到Target,试着看一下Player的可视范围:



 如果box是在Player的可视范围之外,那Player是不能看到box的,Player只能看到那么远。。。

其它的原因就请按照步骤,仔细找找吧,另可以点击这里下载工程文件。由于我的Unity版本是4.3.4.f1,低版本的朋友可能是无法使用的,请注意。
 
文章永久链接:

http://751401909.iteye.com/blog/2017143

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RAIN{INDIE} 自动寻路 的相关文章

  • LeetCode每日刷题:多数元素

    题目 给定一个大小为 n 的数组 找到其中的多数元素 多数元素是指在数组中出现次数 大于 n 2 的元素 你可以假设数组是非空的 并且给定的数组总是存在多数元素 解题思路 通过Hashmap的方法来解答 通过Hashmap来统计每个元素的个

随机推荐

  • HbuilderX运行uni-app开发的微信小程序

    HbuilderX运行uni app开发的微信小程序 Hbuilder下载地址 https www dcloud io hbuilderx html 当咱们创建了个uni app项目后 将整个项目用HbuilderX打开 记住一定是项目的根
  • BLE Mesh中广播包类型Mesh Beacon、Mesh Message、PB-ADV,以及代理的PB-GATT

    在BLE Mesh中常用于数据通信的几种方式 Mesh Beacon Mesh Message PB ADV PB GATT 前三种是广播类型 最后一种是基于代理走BLE连接的一种数据通信 广播包种类 广播包类型 Mesh Beacon 0
  • Python3,为了无损压缩gif动图,我不得不写了一个压缩神器,真香。

    gif动图无损压缩 1 引言 2 代码实战 2 1 模块介绍 2 2 安装 2 3 代码示例 3 总结 1 引言 小屌丝 鱼哥 求助 求助 求助 小鱼 你这是告诉我 重要的事情 说三遍吗 小屌丝 你可以这么理解 小鱼 好吧 什么事情 这么慌
  • Java获取当前时间前3分钟

    获取当前时间前3分钟 param stuff return public String getCurrentTime SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd HH mm ss
  • Java面试——从JVM角度比较equals和==的区别

    1 Java中数据类型分类 1 1 基本数据类型 又称为原始数据类型 byte short char int long float double boolean 他们之间的比较应该使用 比较的是他们的值 1 2 复合数据类型 当复合数据类型
  • android 检测是否模拟器,Android全面检测设备是否模拟器

    前言 前段时间工作有个需求 要求检测App是否在模拟器环境下运行 就像在有些手机游戏上可以看到这个功能 乍一看蛮简单的 后来我查了一下资料 然后头都大了 这多亏了国内pc端模拟器的发展 现在市面上的模拟器越来越多 也越来越 逼真 了 模拟器
  • Android修改Eclipse 中的Default debug keystore路径

    打开系统属性 gt 环境变量 gt 在 系统变量 那一个GroupBox下面选择 新建 gt 变量名为 ANDROID SDK HOME 注意 这个变量名不能改变 只能是这个名字 然后 把变量值改为你想把AVD所在的 android 文件夹
  • Ray Tracing in One Weekend01无法查看ppm的问题及一个C++字符缓冲传参引发的bug

    最近在学习光线追踪的经典教程 lt
  • AWS服务器,如何设置成密码登录

    公司一直有AWS服务器 但是每次启动的实例都是通过秘钥进行登录的 这里写个文章说明一下 如何将秘钥登录的服务器修改成密码登录 1 在新服务器中 创建root账户的密码 使用命令 sudo passwd root 按照步骤进行设置 2 设置完
  • 跨境独立站引流怎么做?必看的高转化教学

    熟悉跨境外贸的小伙伴应该清楚 不同于国内消费者习惯于在购物平台消费 国外买家大多喜欢登录品牌独立网站 独立站 进行购物 这也是许多跨境小伙伴入局独立站的原因之一 但是 即使你拥有一个精美的网站 如果没有足够的流量它也不会取得成功 因此 辛苦
  • 手把手实现语义分割项目

    手把手视频讲解 代码讲解 1 如何实现输入 完全免费解析直达 致力干货分享 2 如何实现模型 完全免费解析直达 致力干货分享 3 如何实现输出 完全免费解析直达 致力干货分享 截图如下 基础知识必备 Pytorch数据加载顺序 使用pyto
  • cf体验服老显示与服务器出现异常,穿越火线体验服出现网络异常

    我女神是taylor 回答数 4 被采纳数 133 2019 04 29 12 44 53 一天朋友求救说自己的机器无法运行游戏了 我询问具体情况 他刚买了一块赛扬 850 装上后DF3 DF1都不能玩了 二话没说拿起我的工具包就直奔现场
  • IT运维管理体系建设规划

    更多专业文档请访问 www itilzj com 公众号回复 218 获取高清pdf版本 福利 圈子构建 学习资料获取 1000 份重磅材料已分享 ITIL4 PPT教材 试题 视频 信息化 IT运维管理各类文档解决方案报告等 ITIL 培
  • HTML+CSS制作网页推广界面

    今天这个网页 其实用以前的基本方法也可以做出来 在这里主要是用到了CSS3的新特性font face以及fontawesome的应用 HTML部分 这一部分的主要框架如下图 黑色的div里面存放的是英文 h3和p标记存放的相应的文字 紫色的
  • 模型选择,深度学习常用定理,单层感知器实现多元输入一元输出的线性回归问题

    前言 这是补的昨天的学习内容总结 算下来有两天没更了 那两天 第一天我上午做了一上午实验 晚上开了一晚上的大创组会 收获也颇丰 第二天我码了一点代码 后来发现matlab有工具箱能直接预测 又试了下工具箱 因为内容较为简单 便没有写一篇总结
  • Linux终端连接工具-MobaXterm

    一 下载安装 1 下载地址 MobaXterm Xserver with SSH telnet RDP VNC and X11 Download 这里我下载的是左侧的免费版本 已经足够日志工作中查看日志了 二 基本操作 1 连接服务器 下载
  • GPIO引脚的模式设置:开漏、推挽、拉高、拉低、中断输入、串行通信、模拟输入输出、容错输入、PWM输出。过零检测介绍。

    开漏输出 软件 将GPIO口设置为开漏输出模式 可以实现开漏输出控制方式 输出电平只能被拉低 而不能被拉高 在使用开漏输出时 需要外部接上一个上拉电阻 将输出电平拉高到高电平 开漏输出常用于驱动I2C总线 LED灯等场景中 硬件设置为开漏输
  • a标签加入单击事件 屏蔽href跳转页面

    本文转载至 http blog 163 com huang qy blog static 615601452012101411625600 我们常用的在a标签中有点击事件 1 a href javascript js method 这是我们
  • Java 方法

    方法概述 方法 Method 是将具有独立功能的代码块组织成为一个整体 使其具有特殊功能的代码集 方法必须先创建才可以使用 该过程称为方法定义 方法创建后并不是直接运行的 需要手动使用后才执行 该过程称为方法调用 方法的定义和调用 格式 1
  • RAIN{INDIE} 自动寻路

    Unity游戏中有较多的自动寻路插件 看过几个 大同小异 而RAIN中的Behavior Tree感觉很好 听名字就知道很条理 下面 就用它做个简单的寻路小例子 首先 导入RAIN的包 结构如下 在使用的过程当中还会产生几个文件夹用来存放E