本文主要是介绍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} 自动寻路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!