UE4的AI行为树基础知识

1.前言

        在制作游戏时,会制作敌人、怪物、NPC等不被玩家所操作的对象,那么制作这些对象,就需要通过使用AI行为树来为他们编写各自的一些行为逻辑,比如敌人会寻找主角并攻击、怪物会在自己的领域巡逻等等。

2.组件说明

  • NavMeshBoundsVolume:导航网格体边界体积,用作导航寻路,会自动计算可到达的位置,避开障碍物,可在项目设置中设置静态计算还是动态计算,动态计算是在运行过程中实时计算的,比较耗费性能,一般情况就使用静态。
  • AIController:AI的控制类,可添加AI的一些感知组件、视力感知、听力感知等等。通过感知组件,可以做很多不同的行为,需要在AI中设置编写好的AIController
  • BlackBoardData:黑板,设置一些行为树用到的成员数据
  • BehavirTree:行为树,编写AI行为,需要在AIController中运行写好的行为树(绑定)。树的结构,从根开始往下执行,执行顺序是从上到下,从左到右
    • Composites:合成器节点
      • Selector:选择器合成节点。从左到右执行子项,如果其中一个子项执行成功则终止,如果子项成功,则选择器成功,如果全部失败,则失败
      • Sequence:序列合成节点。从左到右执行子项,其中一个子项执行失败则序列失败,停止执行。序列的全部子节点执行成功,序列成功
      • Simple Parallel:并行执行任务节点
    • Decorator:装饰器,相当于条件判断,通过给合成器添加不同的条件,来确定是否执行该合成器
    • Task:任务,也是行为树的叶子节点,具体的行为逻辑,在执行完一个任务之后,需要给任务标记完成执行

3.简单的AI例子

         使用UE4的TPS示例进行制作,做一个AI在地图中随机移动,看到玩家后朝玩家移动

  1. 创建导航网格体边界体积

     

    1. 在左侧“放置Actor”面板中,将组件拖拽到场景中,并调整缩放,填满地板区域,按P键可以查看导航网格体的绿色区域
  2. 创建AI蓝图
    1. 将小白人的蓝图类拷贝一份,放到我们自己的文件夹中,并起名AI_BP,并删除蓝图中的所有逻辑,同时删除摄像机组件,将细节面板中将Pawn类别下的自动控制玩家改成“已禁用”
  3. 创建AIController
    1. 新建蓝图类,在“所有类”中搜索AIController,并创建蓝图,名为AIController_BP
    2. 打开蓝图,在左侧添加AI感知组件(AIPerception)
    3. 我们这个例子中只用AI的视力感知,所以需要设置使用哪个感知,选中AIPerception,在细节面板中,AI感知类别下面的感官配置,添加一个元素,选择AI视力配置
    4. 可以配置不同的感官配置,伤害、视力、听力、触摸等等,这里我们只用视力
    5. 点开Sense,可以配置视力感知的一些参数,还需要在归属(阵营)检测上勾选中立方,这个阵营可使用C++进行重写,不同游戏有不同的设置
    6. 打开事件图表,添加感知事件更新的逻辑
  4. 创建黑板
    1. 在资源管理器中右键-人工智能-黑板,创建一个黑板,并命名为AI_BB
    2. 打开黑板,添加一个布尔变量,isFindPlayer
  5. 创建AI行为树
    1. 在资源管理器中右键-人工智能-行为树,创建一个行为树,并命名为AI_BT
    2. 打开行为树,从根节点的黄色区域,按住左键拖拽出来,创建Selector合成器
    3. 从Selector黄色区域,拉出两个Sequencer
    4. 右键Sequencer,创建装饰器,选择Blackboard
    5. 选中黑板装饰器,右侧细节面板-黑板-键查询,分别选择已设置和未设置,黑板键选择我们在黑板中定义的isFindPlayer
  6. 创建任务
    1. 在行为树界面的上方菜单,点击新建任务,选择BTTask_BlueprintBase,创建两个任务,分别为AI_Random_Move_Task和AI_Find_Player_Task
    2. 打开AI_Random_Move_Task,在任务中做一个AI的随机移动
      1. 在左侧-图表-函数处,选择重载“接收执行”
      2. 在增加AI移动逻辑
    3. 打开AI_Find_Player_Task,在任务中做一个朝着玩家移动
      1. 和随机移动逻辑相同,将从导航网格中找点,改成使用当前玩家的位置点
  7. 将任务放到对应Sequencer下
    1. 从Sequencer黄色区域,拖拽连线,从Task中选择我们刚才写好的两个任务
    2. 添加找玩家的任务
    3. 添加随机移动的任务,并添加一个5秒等待时长
  8. 绑定行为树,在AI中绑定AIController
    1. 需要在AIController中运行我们的行为树
    2. 在AI_BP中,将控制改成我们写好的AIController
  9. 运行
    1. 将AI拖拽到场景中,运行就可以看到AI的随机移动,在看到玩家时会跟随玩家移动

4.总结

        制作了一个简单的AI移动,来学习AI制作的基础流程和基础知识,后续逐渐深入的学习AI

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
UE4(Unreal Engine 4)是一款功能强大的游戏开发引擎,其中包括了行为树编辑器,可以帮助开发者快速、灵活地创建和编辑游戏角色的行为。 UE4行为树编辑器是一个可视化的工具,可以让开发者通过拖拽、连接和调整节点来构建角色的行为逻辑。行为树是一种树形结构,由各种节点组成,每个节点代表一个行为或条件。开发者可以在编辑器中创建不同类型的节点,例如选择节点、序列节点、并行节点等,来表达角色的行为流程。节点之间可以通过连接线进行连接,形成一个完整的行为树。 在行为树编辑器中,开发者可以自定义节点的行为和参数。例如,可以为节点添加自定义的脚本或代码,来实现更复杂的行为逻辑。同时,还可以设置节点的优先级、执行顺序和条件,以及在不同情况下的跳转路径,来控制角色的行为流程。 行为树编辑器还提供了一些常用的节点模板,例如移动、攻击、闲置等,开发者可以直接使用这些模板节点,然后根据自己的需求进行参数和行为的调整。此外,行为树编辑器还支持多个角色之间的共享行为,可以实现多个角色共用同一套行为逻辑。 总之,UE4的自定义行为树编辑器为开发者提供了一个强大的工具,可以快速构建和编辑游戏角色的行为逻辑。无论是简单的行为还是复杂的逻辑,都可以借助行为树编辑器来实现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值