UE4 AI(行为树)

发表于2018-01-31
评论0 9.4k浏览


行为树是一种在游戏中常用的实现AI的方式,单纯用蓝图也可以构成复杂的AI,而行为树算是AI的规范化,也比较直观明朗,因此这篇主要给大家讲解行为树的使用,先说一下其中几个简单的概念。


AIController->和playcontroller一样,只不过AIController负责管理的是AI,也称AI控制器。

Blackboard->黑板,就跟以前上学时用的黑板一样,他的作用就是用来标记关键值,为AI存储或者提取相关记忆。

Behavior Tree->行为树,从黑板里读取关键值,做出决定和执行。

Animation BluePrints->动画蓝图 配合行为树调用,之后详细讲。

Task->任务 

Services ->常用于检查和更新黑板.

NavMeshBoundsVolume->导航


例子就选官方的第三人称模板吧。

拉出NavMeshBoundsVolume,导航网格,按下P键可以看到场景变成绿色,证明构建成功,图示中的LinkeProxy表示连接跳跃,Modifier表示修正,具体用法可以自己实验。



第二步,创建AIPawn,AIController以及行为树和黑板,任务Task等,(Task的创建是由蓝图继承Task类创建的,其他的右键创建)为了方便我把文件放一起。



在AIController跑起行为树,并将自己创建的AIController替换到要执行的AI上。




黑板里面增加一个变量TargetLoc,用来储存AI移动的目标坐标,这里就只做AI随机行走。



Task(Idle)里面的设置,蓝图如图内解释,记得最后要执行完成函数,变量Idle是用来储存要移动的目标点坐标,储存进黑板里刚刚设置的变量TargetLoc,在行为树里用来给其他函数进行调用。



关于行为树里面的设置



这里说下两个节点

Selector 从左到右在其子项中运行,直到其中一个成功才返回。

Sequence 从左到右在其子项中运行,直到其中一个失败返回。

这样行为树的意思就是执行下来从左往右,先Idle执行随机目标点的储存,然后等待5S,接着进行MoveTo移动,MoveTo函数的坐标点调用使用的就是黑板里刚存储的TargetLoc



行为树里也封装了许多有用的函数,就不一一讲了,关于动画蓝图等之后有时间再讲。

简单的Demo完成了,接着就去场景跑吧。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引