Mars-Week6-行为树:非角色控制

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

D5

D5 - 1 关于 抛射物 的一些设置

D5 - 2 蓝图 Life time

D5 - 3 生成特效时旋转

D5 - 4 特效 重置发射器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值