UE4学习笔记(七): AI

本文深入探讨了UE4中AI控制与BehaviorTree的使用,包括Character与Controller的作用,Blueprint的引入,以及BehaviorTree的基本概念如Blackboard、Selector、Sequencer和SimpleParallel等,展示了如何在不编写代码的情况下实现AI行为,并强调了调试过程中的便利性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NavMesh, 这个一个Demo看不出有什么优缺点, 编辑起来到是很方便


角色控制, 与UE3一样, 还是Character+Controller的方式, Character(Pawn)负责表现, Controller负责行为. 对于AI来说, 是派生AIController来实现自定义的AI行为

与UE3不同的地方, 一是Blueprint可以代替很多原来脚本所做的事情. 另外, UE3中更多的是依赖脚本中的内建状态机(state)进行AI行为控制, UE4则引入了BehaviourTree


基本的运作思路是: AIController里在Blackboard中记录一些数据状态什么的, 然后运行一个BehaviourTree, BT中的各个结点根据相关条件控制流程分支, 运行相应的Task

基中有几个概念:

  • Blackboard: 保存了AIController实例及BT所需要的数据, 可以看做是一个在BP之间共享数据的地方, 可以通过Key-Value的方式进行查询/修改
  • Selector: 按顺序运行每个子结点, 直到某个结果是success, 然后返回success. 如果全失败了, 则返回failure
  • Sequencer: 按顺序运行每个子结点, 成功了则运行下一个. 子结点全部成功则返回success, 有一个失败就返回failure
  • Simple Parallel: 可以在执行一个Task的过程中同时执行另一个分支, 可以在Task执行完后选择是取消另一个分支还是等待其执行完
  • Task: 传统BT概念中的Leaf结点, 就是实际要做的事情
  • Decorator: 可能叫"conditional"(条件)更好理解一些, 就是相当于if(xxx){}
  • Service: 通常是跟Blackboard交互的, 运行到当前分支就会执行
总体用下就是可以在不写代码的基础上, 完整地实现一套AI. 由于BP的存在, 自定义的子结点也可以通过拖结点的方式实现, 降低了对程序员的依赖. Blackboard的应用是一个亮点, 数据交互和状态管理方便多了. 由于在BP中可以用事件的方式触发BT, 相对于传统的BT性能也会好一些. 最方便的就是调试了, 当前走到哪个分支都会在BT上显示出来:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值