GAS 与动画系统对接

三层对接点

层 做什么 工具
流程层 播放蒙太奇、等播放完成 PlayMontageAndWait
时机层 动画播到关键帧 → 通知 GA AnimNotifyState_PlayGameplayEvent
表现层 属性变化 → 驱动动画状态 状态机标签(State.*)→ 动画蓝图

时机层:蒙太奇 Notify 三种用法

  1. 只在蓝图里用:Notify 名字 → 动画蓝图里 AnimNotify_<名字> 事件(适合纯表现);
  2. GameplayEvent:Notify 发事件标签 → GA 接(推荐,规则结算走这条);
  3. 自定义 NotifyState:复杂需求(如"该帧段内每一帧伤害"可用自定义 NotifyState 持续触发事件)。

表现层:让动画状态受 GAS Tag 控制

动画蓝图的"状态机切换"用 GAS 标签驱动:

动画蓝图 Event Blueprint Update Animation
  → GetAbilitySystemComponent → HasMatchingGameplayTag("State.Stunned")
  → 变量 bStunned → 状态机切换到"眩晕"状态

死亡、眩晕、移动 … 所有"规则状态"由 GAS 管理,动画层只读标签。这与第 1 本"规则在上、表现在下"是一致的。

常见坑:Root Motion 与 GA

播带 Root Motion 的蒙太奇时,被范围内的微小移动打断/取消 AbilityTask 会造成"角色卡住"。处理: - 用 PlayMontageAndWait 的取消时确保蒙太奇也停(框架处理); - Root Motion 与位移技能用 AbilityTask_ApplyRootMotion*(引擎自带),更可靠。

本章小结

  • 三层对接:Task 播流程、Notify 定时机、标签驱动动画状态。
  • 规则状态(眩晕/死亡)由 GAS 标签唯一维护,动画蓝图只读。
  • Root Motion 位移优先用框架 Task,少手搓。