首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UE4学习笔记(七): AI

UE4学习笔记(七): AI

作者头像
逍遥剑客
发布2018-05-21 16:08:46
9530
发布2018-05-21 16:08:46
举报

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上显示出来:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年12月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档