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.有较好的维护性