D1
D1 - 1 行为树文件准备
- 创建AIController
- BP_EnemyXinFei 选择创建的 AIController
- 创建 行为树 和 黑板
D1 - 2 行为树合成器
- 控制器上关联行为树
- 行为树关联黑板
D1 - 2 - 1 Selector And Sequence
- selector
- 关于解释
D1 - 3 行为树任务
D1 - 3 - 1 创建任务
- 创建任务
- 编辑任务 , 任务中不能直接选择黑板中的变量.
- black_board
- 任务指定黑板的变量名称.
D1 - 4 AI视野
D1 - 4 - 1 优化旋转
- 使用控制器方向进行选择
D1 - 4 - 2 编辑行为树,追踪目标
- 行为树
- 黑板创建Object变量.
- 行为树任务
D1 - 4 - 3 视野检测
- 添加AI感觉观能
- " 开启监听 , 按小键盘1234可以开启和关闭.
- AIPerception
绿色 : Sight Radius : 发现范围
粉色 : Lose Sight Radius : 丢失范围
PeripheraVisionHalfAngleDegree : 角度
Detection By Affiliation : 阵营
Enemies : 敌对关系
Neutrals : 中立关系
FriendLies : 友军关系
D1 - 5 AI视野检测
- On Targe Perception Update , 进入或离开检测范围应用.
- Stimulus
D1 - 5 - 1 条件添加-装饰器-blackboard
- 黑板添加boolean 变量
- AIController
D1 - 6 AI 任务切换
- 行为树装饰器条件设置
NodeName : 条件判断名
只有当条件为 true 才会往下走 , 也就是说 如果 Key Query 为 IsSet 的时候 当 Blackboard Key 为 true 的时候会向下执行. 如果 Key Query 为 Is not Set 的时候 当 Blackboard Key 为 false 的时候会向下执行.
- Notify Observer
- On Value Change : 当值发射变化的时候.
- On Result Change : 当结果发生变化的时候.
- 观察终止
- Self 停止自己
-
- Both : 停止同级和所有
- Lower Priority : 停止右侧
- 整体
- 这里我们来解释一下啊到底怎么回事啊 , 现在的问题就是当我们玩家角色进入角色的感知范围的时候 , 黑板的变量值会改变为 true , 但是不会立即执行左侧(Wait),而是会当右侧执行完毕后再执行左侧.分情况来讨论一下 : false => true 执行 selector01,直接打断 selector02的动作.
当PlayerCharacter 出范围 , 左侧会等待5秒完成后,才会执行selector02.??? ok 目前来说只能这么理解了擦.
D1 - 7 行为树装饰器
- 修改 Move to 的 黑板变量.
- AIController_EnemyXinFei : 给黑板的变量赋值.
- 离开检测范围停止追击
绿:bool => true , chasePawn 设置为 PlayerCharacter.
蓝:bool => false , chasePawn 设置为null.
- BehaviorTree
这里解释一下观察终止设置为 Both 的原因.
当 false ==> true (进入)的时候 , 第一帧立即终止1,2(立刻停止巡逻),第二帧之后进入追击.
当 true ==> false (离开)的时候,第一帧立即终止1,2(立即停止追击),因为 为false 所以 selector 选择2,第二帧进入Wander状态.
D1 - 8 AI攻击逻辑
D1 - 8 - 1 创建父级AI蓝图类
- 将现有的AI类的父类设置为 BP_AIBase
D1 - 8 - 2 创建攻击行为树任务
- 赋予父类集成的蒙太奇变量具体的值.
- 创建行为树攻击动画
- 编辑行为树攻击
D1 - 8 - 3 攻击时转向
- 移动组件
D1 - 9 ClassContent
- 禁用混出 , 正常不禁用混出的时候当蒙太奇停止播放的时候会回复原来状态.
D2
D2 - 0 Class Content
- 鼠标点击移动
- 死亡溶解材质函数
- 配置噪声节点
- 与材质球进行运算
D2 - 0 - 1 创建动态材质实例应用溶解效果
- 创建材质函数
- BP_AIWereWolf
- 死亡
D2 - 1 AI血量
- BP_Bullet
- AnimNotify_SpawnBullet
或者
- BP_AIBase : 承受伤害
D2 - 2 AIUI逻辑
- BP_AIBase
D2 - 2 - 1 添加AIUI
- 创建UI文件
- BP_AIBase 添加 Widget 组件.
设置 Widget Class
- 调整位置和尺寸
- 改为屏幕模式
D2 - 2 - 2 计算血条百分百
- 绑定 UI 进度条 Percent
- BP_AIBase
D2 - 3 AI死亡任务
D2 - 3 - 1 AI HP Progress 在 world 模式下调整旋转,模拟3DUI.
- BP_AIBase
D2 - 3 - 2 死亡
- BP_AIBase
- Behavior_Tree
- BlackBoard
- 死亡后处理逻辑
D2 - 4 AI死亡逻辑
- 动画序列提升为变量
- 子类赋予变量
- BP_AIBase : 死亡后停止 event tick , 血条跟随视角旋转.
D2 - 4 - 1 Spawn AI From Class
死亡后再次生成敌人
D2 - 5 AI死亡逻辑α
D2 - 5 - 1受伤还击
- AI_Controller
- BP_AIBase : 受伤后发现(攻击敌人)
D2 - 6 AI Perception
- Player_Tag
- AIController
- 行为树
- Blackboard
D3
D3 - 1 关于停止蒙太奇
- 假如敌人死亡的时候应该停止当前蒙太奇,播放死亡动画蒙太奇.
D3 - 2 定时器
- Set Timer by Event
- Set Timer by Function name
D3 - 关于纯函数
- 将函数设置为纯函数,可以无前置逻辑线.
D3 - 3 关于准心变色
D3 - 3 - 1 准心变色
D4
D4 - 1 关于数据导入与导出
-
创建结构体
- 创建表格
- 如果有需要用文件路径的变量先添加一个
- 导出
- 添加或者修改值
- 修改后保存为CSV格式
- 在虚幻中导入
- Reimport : 修改文件后,点击Reimport 即可修改,无需重新再次导入.
D4 - 1 - 2 遍历数据图表
D4 - 2 表示技能冷却的材质
- 上下
- 旋转
D4 - 3 技能冷却
D4 - 3 - 1 UI_SkiLLIcon
- 函数 : SetCDTime
D4 - 3 - 2 UI_MainUI
- BP_PlayerCharacter