[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操作。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值