UE4引擎中可以实现简单AI的方式有很多,行为树是其中比较常用也很实用的AI控制方式,在官网的学习文档中也有最简单的目标跟踪AI操作教程,笔者在这里只作简单介绍。
AIController->和playcontroller一样,但区别于玩家控制器,AIController负责管理的是AI,也称AI控制器。
Blackboard->黑板,作用是用来标记关键值,为AI存储或者提取相关记忆。
Behavior Tree->行为树,从黑板里读取关键值,做出决定和执行。
Animation BluePrints->动画蓝图 配合行为树调用,之后详细讲。
Task->任务
Services ->常用于检查和更新黑板.
NavMeshBoundsVolume->导航
拉出NavMeshBoundsVolume,导航网格,按下P键可以看到场景变成绿色,证明构建成功。导航网格是AI行为中必不可少的,在其范围内是AI可以执行相关行为的地方,而出了这范围就无法再生效。图示中的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完成了,接着就去场景跑吧。