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

相关文章

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

python利用backoff实现异常自动重试详解

《python利用backoff实现异常自动重试详解》backoff是一个用于实现重试机制的Python库,通过指数退避或其他策略自动重试失败的操作,下面小编就来和大家详细讲讲如何利用backoff实... 目录1. backoff 库简介2. on_exception 装饰器的原理2.1 核心逻辑2.2

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

使用Python实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你