创建一个蓝图类角色,命名PlayerChar。
新建文件夹命名AI,新建蓝图类角色,命名AIChar。
新建蓝图类,搜索AIController,创建AIController蓝图类,命名AICharController。
进入AIChar蓝图类,点击类默认值,右侧细节面板,AI控制器类选择AICharController。
进入AICharController蓝图类,创建事件开始运行事件,连接运行行为树。
创建行为树,命名为BT_AI。
创建黑板,命名为BB_AI。
打开行为树BT_AI,右侧细节面板黑板资产选择BB_AI。
打开黑板BB_AI,点击新建,选择Object。
命名为PlayerCharValue,基类选择PlayerChar。
打开行为树BT_AI,在根节点下拉创建Sequence节点,再在Sequence节点下拉创建Selector节点。
点击上方的新建装饰器。
返回到内容页,刚才的新建装饰器生成一个新的文件,命名为FindPlayer。
进入FindPlayer文件,点击左侧函数中的重载,选择执行条件检查AI。
Perform Condition Check AI引脚拉出 对象的多球体检测。
Controlled Pawn引脚拉出 获取Actor位置。
获取Actor位置的Return Value一条引脚连接对象的多球体检测Start,另一条引脚连接向量+整型,值为1,引脚连接对象的多球体检测End。
连接对象的多球体检测Radius值设置1000,下面的Object Typr提升为变量,变量命名为ObjectType,右侧细节面板添加默认值,选择Pawn。
连接对象的多球体检测的 Draw Debug Type选择针时时长,Out Hits引脚连接For Each Loop with Break,For Each Loop with Break的Array Element引脚连接中断命中结果。
中断命中结果的Hit Actor连接类型转换为PlayerChar的Object,For Each Loop with Break的Loop Body引脚也连接类型转换为PlayerChar,类型转换为PlayerChar引脚连接将黑板值设为对象。
将黑板值设为对象的Key提升为变量,命名为TargetActor,勾选可编辑实例。
For Each Loop with Break的Completed引脚连接返回节点,勾选Return Value。
打开行为树BT_AI,右键Selector,点击添加装饰器,搜索find player,点击。
Selector节点下拉创建Sequence节点,右键添加装饰器,选择Blackboard。
Sequence节点下拉,点击Tasks,展开选择Move To。
Sequence节点下拉,点击Tasks,展开选择Wait,等待时间选择1秒。
FindPlayer的Sequence节点下拉,创建Sequence节点,右键选择添加装饰器,选择Blackboard。
点击Blackboard Based Condition,右侧细节面板键查询选择未设置。
进入AICharController蓝图类,运行行为树的BTAsset资产选择BT_AI行为树。
主页左侧选择体积,点击导航网格体边界诶体积,放置到关卡中,范围覆盖整个关卡。
把AIChar和PlayerChar放入关卡,运行,进入AI范围就会跟随玩家了。