SuperAPI AI 工具集

bevy-animation-graph

设计与创作

查看项目

更新于 10-16 12:41

技能介绍

用途:当多个动画剪辑需要混合、叠加或遮罩时使用本技能;单剪辑播放仍归 bevy-animation。

主要能力:AnimationGraph 描述剪辑如何混合;add_clip 添加剪辑节点,add_blend 添加混合节点,add_clip_with_mask 用 u64 遮罩(0 表示无遮罩),add_additive_blend 插入 AnimationNodeType::Add 叠加层。AnimationGraphHandle 指向同一实体上 AnimationPlayer 使用的图,AnimationTransitions 在节点间交叉淡化。权重通过播放器上的 ActiveAnimation::set_weight 控制,需先 play。评估仍走动画播放器系统,不要再加第二个播放器。

使用方式:先在 Assets<AnimationGraph> 中构建图,通过 Commands 插入资源保存句柄与节点索引;再给实体插入 AnimationGraphHandle 与 AnimationTransitions::new(),然后 player.play(节点).repeat();同步权重时用 player.animation_mut(节点) 获取 ActiveAnimation 后 set_weight;交叉淡化用 AnimationTransitions::play(&mut player, 节点, Duration),例如 Duration::from_millis(180)。依赖为 bevy = "0.20"。

适用场景:角色 locomotion 的走路/跑步权重混合、叠加层与骨骼遮罩混合、需按权重插值的过渡。

限制:Bevy 中没有 AnimationTree、BlendSpace 或场景树状态机类型;图的持久化用 SerializedAnimationGraph 加 ron;1D/2D 混合空间不属于 AnimationGraph,需用节点权重实现。游戏玩法模式属于 bevy-state-machines,不是动画图。两个无序系统不得同时可变查询同一组件,需用 .chain() 或拆分。不得编造未文档化的 API 或第三方 crate。