Blueprints - 虚幻中的行为树(Behavior Tree)
最佳答案 问答题库688位专家为你答疑解惑
一些以前的学习笔记归档;
简单的说,行为树可以让agent(代理,指可以自主活动的游戏角色等)做出决定,可以理解为AI的大脑;
行为树自上而下的从树的根节点(Root节点)开始读取树的结构,直到任务(Tasks)节点,这些任务会被执行并使得AI开始一个行动:
除了Tasks节点,为了基于具体情况来激活不同树分支,在根节点和任务节点之间还存在有其它可以改变执行流动方向的节点;UE4的行为树有4个基础类型的节点:Tasks节点、Composites节点、Decorators节点和Services节点;
Tasks节点包含了AI所需要执行的一个行动的逻辑代码;
Composites节点处在行为树里Tasks节点的上面位置,并且决定Tasks节点执行的顺序:
在说到Decorators节点和Services节点之前,首先要提到UE4行为树的一些特性:
行为树很快的能从根节点(Root节点)到叶节点(Task节点)进行迭代并同时做出决定,这意味着AI的状态转换在一瞬间就可以马上完成,看起来AI就像是马上对事物进行了响应;
但UE4的行为树并非每时每刻从Root节点到Task节点进行迭代,因为每一帧(实际可能并不是每帧,但这里只是为了说明方便)都一路从Root节点开始运行相对比较耗费性能,所以UE4的行为树的执行会停留在当前激活状态的Composite节点和它的子节点上,直到抵达整个序列的末尾或者composite节点收到中止命令;
那么,在只有Tasks节点和Composites节点的行为树中,例如以下情况:
所以,UE4引入了像Decorators节点和Services节点等来处理诸如此类的问题;
Services节点是一种可以附着到一个Composites节点的附加类型节点,用来检测和更新数据来给agent做出决定;
Decorators节点同样也是附着到Composites节点的附加类型节点,用来负责决定它们的子节点是否可以运行;
然后修改上图的行为树,使用上Decorators节点和Services节点:
那么,在修改后,当AI正处在执行闲置状态(Idle)的过程中,忽然Service节点检测到看到了玩家,Idle状态将会中止,会进入Combat的运行状态,不会再有迟钝的表现;
99%的人还看了
相似问题
- 〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性
- Java 算法篇-链表的经典算法:判断回文链表、判断环链表与寻找环入口节点(“龟兔赛跑“算法实现)
- 代码随想录二刷 | 链表 | 删除链表的倒数第N个节点
- 节点导纳矩阵
- bhosts 显示节点 “unreach“ 状态
- 电子电器架构 —— 车载网关边缘节点总线转换
- 〖大前端 - 基础入门三大核心之JS篇㊳〗- DOM访问元素节点
- 第四天||24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II
- CS224W5.1——消息传递和节点分类
- Vue报错解决Error in v-on handler: “Error: 无效的节点选择器:#div1“
猜你感兴趣
版权申明
本文"Blueprints - 虚幻中的行为树(Behavior Tree)":http://eshow365.cn/6-25965-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 14.力扣c++刷题-->有效括号
- 下一篇: 【jvm】虚拟机栈之操作数栈