小结与练习
小结
本章从零构建了 Bevy 动画系统的完整认知:
AnimationClip存储动画曲线,每条曲线通过AnimatableCurve+animated_field!定义属性随时间的变化AnimationGraph用 DAG 描述多个片段的混合关系,支持 Blend(归一化混合)和 Add(叠加混合)两种节点AnimationPlayer控制播放——play、start、stop、pause_all、resume_all、adjust_speeds等AnimationTransitions实现交叉淡入淡出,适合状态机式的动画切换AnimationEvent在动画时间线上插入事件,通过 Observer 机制响应- 动画遮罩 用位域控制哪些骨骼受哪个片段影响,实现上下半身独立动画
- 动画目标通过
AnimationTargetId(UUID)定位,AnimatedBy链接到播放器实体
Bevy 的动画系统还在快速演进——AnimationTransitions 的文档标注为"临时 API",未来可能被更完整的状态机取代。但核心概念(Clip、Graph、Player)已经稳定,值得深入掌握。
练习
变速播放:在 Listing 30-6 的基础上,用上下箭头调整动画播放速度(
ActiveAnimation::set_speed),让角色走得更快或更慢。动画事件触发特效:修改 Listing 30-4,在脚步事件触发时用
Commands在脚部位置 spawn 一个临时粒子(简单的立方体即可,1 秒后 despawn)。三路混合:创建一个
AnimationGraph,把 idle、walk、run 三个片段分别挂到权重为 1.0 的节点上,然后在系统里根据一个f32值(0.0 = idle,0.5 = walk,1.0 = run)动态调整三个片段的权重,实现速度驱动的动画混合。