栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

[Unity3D]Node-Canvas入门案例

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Unity3D]Node-Canvas入门案例

NodeCanvas是完整的基于节点的 Unity 视觉行为创作框架,能够在直观的视觉节点编辑器中创建高级 AI 行为和逻辑,能够在游戏中为角色或npc配置相应的ai行为。详细内容可以参考官方文档。

本文给出一个node-canvas的入门案例,用于快速理解node-canvas的使用方法。

例子 小球追逐方块

这个例子是Node_Canvas的一个简单应用,使用了包括行为树中的action、condition、sequence以及filter等元件,通过这个demo的学习入门node-canvas。

首先将node-canvas插件所需要的包导入到工程,直接拖动整个文件夹放入建立好的工程下的package文件夹中即可自动导入,在使用过程中就能够直接使用这个包中的内容。

在SampleScene中插入所需要的物体,如cubu和sphere等。

对所需要加入行为树的物件使用Add Component,加入Behaviour Tree Owner,这个操作会默认加入两个部件即Behaviour Tree Owner和Blackboard,之后的编程都会在blackboard上进行。加入好后,点击Behaviour Tree Owner下的CREATE NEW,并点击bound,则会创建可编辑的canvas。

 这个例子将会实现在平板上放置一个方块以及多个小球,玩家可移动方块,当方块进入到小球的辐射范围的时候,小球将会跟踪方块;当方块走出小球的辐射范围时,小球将会回到他最初的位置。

首先为方块设置其行为树。方块的行为树非常简单,功能为在键盘上输入上下左右控制方块的移动。行为树只需要一个action部件,其中加入get input axis和input move函数,get input axis中为Save XAs 和 Save YAs添加自定义参数,在input move中将Strafe和Forward分别设置为Save XAs 和 Save YAs。这个操作之后方块可以被操控移动。

之后设置小球的行为树。可以先编辑完一个小球然后复制多个,每个小球的行为都是独立的,且其中的设置都是相同的。

上图为一个小球的行为树。

最顶层的箭头标志为Sequencer ,其作用为按从高优先级到低优先级(从左到右)的顺序执行其子节点。

标志为问号的部件为Binary Selector,他会根据程序内的布尔值选择进行哪一个子节点。在本程序中设置了一个触发器(trigger),即当方块进入小球的辐射范围时触发True值,离开辐射范围时,触发Flase值。下图为Selector的动作设置,需要将其设置为dynamic,这样才能够及时反馈场景中是否触发条件。同时需要将Check Type改为Trigger Stay,钩上Specified Tag Only,将Object Tag选为Player。这里还需要将小方块的Tag也设置为Player(在inspector中),同时把所有的方块和球的Collider中isTrigger的属性钩上,才能够触发。

漏斗形的部件为Filter,其作用为按特定的Numbers次数或每特定的时间量(如Cooldown)过滤对其子节点的访问,默认情况下,如果将其过滤,则关于其父节点,该节点将被视为“不活动”,取消选择该选项并返回失败。

过滤器的叶子节点设置如下

增加Set Variable方法,在Value A中新建一个(0,0,0)的坐标,然后在变量列表中添加一个表示其本身位置的position变量,操作为Add Variable -> Bound(self) -> Transform -> Position:Vector3。并将Value B设置为这个Position,则这个Action将会执行为StartPosition赋值Position的操作。

Selector的两个叶子节点,分别执行寻找对象物体以及回到初始位置的操作,此处与原视频不相同(可能由于包版本不同的原因),原视频使用的是move to target方法,而此处使用的是seek方法,但本质是相同的。

每个Action添加一个Debug Log 方法用于显示执行该操作的提示以及一个寻路方法,具体设置如下图所示。其中的Player为方块,而StartPosition为在filter的叶子节点中所设置的小球的初始位置。

*如果以上操作后无法实现小球追逐方块,可以尝试对plane平板删除其Mesh Collider并添加Box Collider,并对其进行Bake操作。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号