UE4的角色控制体系——AI行为树
学习路线总结回顾
学习规划图回顾
学期总结
在学期初的规划中指定了一个学习路线,其中骨骼和动作还没有系统的学习(由于电脑配置不够太懒了),关于学习渲染部分那知识欠缺的可确实太多了,还需要学习许多计算机图形学的基础知识,以及一台GPU性能比较好的电脑,所以图形渲染部分还很欠缺。
虚幻引擎其他的部分如蓝图类碰撞事件等都学的七七八八了,算是特别特别特别浅显的学了一点引擎知识,也按计划参与了一个简单项目的编写:基于虚幻引擎4的核磁共振波谱法NMR虚拟仿真实验(可供下载)
经过了这个学期的学习,收获了许多东西吧。无论是对于自身发展来说,还是对于团队协作来说,第一部分已有叙述就不再赘述了。
以下是软件部分内容截图:
UE4的角色控制体系——AI行为树
前言介绍
在日常的游戏中,我们作为玩家往往会控制一个角色。但是场景里除了你控制的玩家角色还有许多许多AI,他们也有相应的动作比如:追着你!
而这些动作,也需要后台的逻辑实现,那么这些逻辑被封装在哪里呢?在每一个AI类的逻辑里嘛?
接下来就分为C++代码和蓝图代码(虚幻4引擎自带的可视化编程工具)分别来分析这项技术
演示效果
其中包括随机漫游寻找敌人,感知到敌人后,自动跟踪并攻击!
实现原理
总览
(下图是虚幻引擎官网给出的角色的管道图),其中出现了几个用红色圆圈圈起来的就是角色体系比较重要的几个部分包括Controller(子类有AIController和PlayerController)、Pawn(子类有Character)。
各主要组件介绍
- AIController(相对于AI的头)
AIController相对于人的头,头上有眼睛、耳朵(视觉和听觉感知系统,后文再介绍),同时脑袋里也有大脑(BlackBoard,用于存储数据)和小脑(BehaviorTree行为树,用于控制行动)
- AIPerception(视觉感知组件,相对于AI的眼睛)
- BlackBoard 数据黑板
一个数据存储区,与AI行为树相关联,相对于存储大脑(BlackBoard)要给小脑(BehaviorTree)传输的数据
- BehaviorTree AI行为树
一个逻辑执行树,其中包括节点Sequence和Selector,分别的作用为顺序执行和选择执行,执行的为每一件子任务,子任务控制AI的运动逻辑
实现步骤(蓝图表现形式)
1.先创建一个AIController类
2.给AIController(大脑类)装一个眼睛(视觉感知组件AIPerception)
3.将身体和大脑关联上
4.书写AI要执行的子任务
5.将子任务与AI行为树关联(让小脑来执行这些任务)
6.经过了以上几步的绑定,就是一个完整的AI了,由两部分组成:中央控制器和角色类(相对于大脑和身体),后文中加粗部分代表着Controller相关的类和组件(代表着整个AI的头的组成)AIPerception负责感知环境(相对于眼睛观察环境)、BlackBoard负责存储感知到的数据(相对于眼睛看到的数据传输给大脑)、BehaviorTree负责根据BlackBoard存储的数据来做出相应的反应指令(相对于小脑处理大脑信息)、最后再由character根据行为树的指令做出相应的运动(AI的身体)。
实现步骤(C++表现形式)
好像之前C盘爆了,把VS卸载了。。。。。以后有机会再补吧,其实函数都差不多,蓝图已经把所有函数都表现出来了。