RAIN{INDIE} 自动寻路

2024-02-19 20:58
文章标签 自动 寻路 rain indie

本文主要是介绍RAIN{INDIE} 自动寻路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     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

 

 

 

 

 

 

 

这篇关于RAIN{INDIE} 自动寻路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/725947

相关文章

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Spring使用@Retryable实现自动重试机制

《Spring使用@Retryable实现自动重试机制》在微服务架构中,服务之间的调用可能会因为一些暂时性的错误而失败,例如网络波动、数据库连接超时或第三方服务不可用等,在本文中,我们将介绍如何在Sp... 目录引言1. 什么是 @Retryable?2. 如何在 Spring 中使用 @Retryable

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e