UE4中Pawn是马甲,Controller是驱动马甲的大脑。 Controller和Pawn相对独立,不一定谁必须有谁。一个Controller至多能控制一个Pawn,一个Pawn至多能被一个Controller控制。
问我为什么不粘代码?不好意思,截图太方便了 ^ _ ^
1.蓝图启动行为树
1)建立行为树与黑板(Behavior Tree、BlackboardData)
此两项放在同一级目录里!否则BTTask里的对BlackBoardData的Data的读写失效等问题。

在行为树中选中要使用的黑板

2)创建AIcontroller,在AIcontroller下执行useblackboard和runbehaviourtree节点

3)创建BP类,一般继承自Pawn或Character
在pawn选项中更改两个选项
Auto Possess AI表示是否AI自行启动,调成该选项后,动态生成与摆放在关卡中的AI都会启动行为树,默认选项仅摆放在关卡中的AI会启动行为树
AI Controler Class中选定当前AI要用的AIController类

2.使用C++直接属性引用得到蓝图中的行为树,并自行控制启动与停止
1)建立C++类的AIController类
建立三个指针变量,行为树组件、黑板组件、行为树

.cpp中需引入组件相关头文件

2)构造函数中创建组件


3)自行构造两个函数,用与启动或停止行为树

4)重写虚函数Posses与UnPosses,设置黑板数据并启动行为树

调用StartBTree与StopBTree方法,为启动与停止行为树,可在适当时候调用,可以适时启动与停止行为树。(可能并不需要?或不该这么做?)
5)创建蓝图子类继承自C++的AIController,选取要使用的行为树

行为树优点
1.结构清晰
2.便于调试
3.适用于成群的AI或大量逻辑行为相似的AI
行为树中的黑板
1.行为树中的核心模块
2.用于支撑行为树中的数据存储和读取
3.相当于我们的草稿纸,我们可以把需要参与逻辑的数据罗列在上面
4.使用方便,数据扩展性强
5.有较好的维护性

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/118722.html