# ABP_TestChar ## 基本信息 - **类型**: AnimBlueprint (AnimInstance) - **父类**: AnimInstance - **源文件**: /Game/Blueprints/Anim/ABP_TestChar.ABP_TestChar - **模块**: Content/Blueprints/Anim ## 功能概述 测试角色的动画蓝图,为 BP_NewChar/BP_TestChar 提供动画驱动。持有 5 个动画参数:As Character(角色引用)、Speed(速度)、Random(随机值)、TargetRandom(目标随机值)、IsFloating(是否浮空)。通过 AnimGraph 驱动混合空间 BS_Walk_Run 实现移动动画。 ## 设计用意 为测试角色提供基础动画控制,将移动速度映射到行走/奔跑混合空间,并通过 Random/TargetRandom 参数增加动画变化的随机性。 ## 职责范围 - 计算和更新 Speed、Random、IsFloating 等动画参数 - 通过 AnimGraph 驱动 BlendSpace 和动画序列 - 通过 EventGraph(3 事件, 28 节点)处理动画事件逻辑 ## 项目内依赖 | 依赖项 | 关系 | 源文件 | |--------|------|--------| | 绑定好5 | 引用(骨骼网格体) | /Game/Arts/mx/Elsa/绑定好5 | | 绑定好_Skeleton | 引用(骨骼) | /Game/Arts/mx/Elsa/绑定好_Skeleton | | BS_Walk_Run | 引用(混合空间) | /Game/Blueprints/Anim/BS_Walk_Run | | MOB1_Walk_F_Jump_RU_Air_IPC | 引用(动画序列) | /Game/Arts/动画/3/跳跃/MOB1_Walk_F_Jump_RU_Air_IPC | ## 外部视角 ABP_TestChar 是 AnimInstance 的动画蓝图子类,从外部调用者视角: **动画参数(蓝图可读写,外部可通过 Get/Set 节点访问)** - `As Character`(Character*)— 绑定的角色引用 - `Speed`(double)— 移动速度,驱动 BlendSpace 混合 - `Random` / `TargetRandom`(double)— 随机值及目标,用于增加动画变化的随机性 - `IsFloating`(bool)— 是否浮空状态 **核心行为** - AnimGraph 驱动 BS_Walk_Run 混合空间实现行走/奔跑动画混合 - EventGraph 处理动画事件逻辑,更新上述参数 **EventGraph 事件** | 事件 | 类型 | 触发时机 | 行为 | |------|------|----------|------| | `事件蓝图开始播放` | 原生覆盖 (BeginPlay) | 动画蓝图初始化时 | 获取 Pawn 拥有者 → Cast 到 Character → 存入 As Character 变量 → 设置定时器 5 秒循环触发 RandomIdle | | `事件蓝图更新动画` | 原生覆盖 (Tick) | 每帧 | 验证 As Character 有效 → 获取速度 → 计算向量长度 → 更新 Speed 参数 → FInterpTo 插值 Random → 获取 Z 轴速度绝对值 → 判断 > 阈值 → 更新 IsFloating | | `RandomIdle` | 自定义事件 | 定时器循环触发 | 生成 0-4 随机整数 → 切换设置 TargetRandom(0/50/75/100)→ Tick 中 Random 向 TargetRandom 插值 | **外部交互方式** - 在 BP_NewChar / BP_TestChar 的动画蓝图插槽中指定 - 外部系统通过 AnimInstance 引用读取/修改动画参数以控制角色动画表现 ## 使用方法 ABP_TestChar 在项目中的典型调用流程: - **动画驱动流程** — 角色移动 → 引擎更新动画蓝图 Tick → 获取角色速度 → 计算向量长度 → 更新 Speed 参数 → AnimGraph 将 Speed 输入 BS_Walk_Run 混合空间 → 驱动骨骼姿势 - **随机空闲动画流程** — 5 秒定时器触发 RandomIdle → 随机选择 TargetRandom(0-4 档位)→ Tick 中 FInterpTo 平滑过渡 → 影响 BlendSpace 混合位置 → 实现随机空闲姿态变化 - **浮空检测流程** — Tick 获取 Z 轴速度 → 绝对值 > 阈值 → 设置 IsFloating=true → AnimGraph 切换到跳跃动画序列 ## 用例 | 引用方 | 路径 | 用途 | |--------|------|------| | BP_TestChar | `/Game/Blueprints/BP_TestChar` | 作为动画蓝图,驱动角色移动动画 | | BP_NewChar | `/Game/Blueprints/BP_NewChar` | 作为动画蓝图,驱动实验性角色动画 |