Animator Layers:分层混合实现独立动画叠加

Animator Layers:分层混合实现独立动画叠加
开场老张上周接了个 TPS 项目,主角要一边跑一边换弹,还要一边换弹一边挥手打招呼。他头铁,用单个 Animator Controller 的 Base Layer 硬写:Run 状态里塞 Reload 又塞 Wave,转移条件互相打架,写到凌晨三点,最后跑起来浑身抽搐——下半身想抬腿,上半身想抬枪,单一状态机同一时刻只能处于一个状态,两个意图挤在一个状态机里,只能给你表演"鬼畜"。问题的根源是用错了抽象:单一状态机建模的是"角色此刻在做什么"(互斥),而"边跑边开枪"是两个正交的意图(并行)。Animator Layers 就是为并行意图准备的机制:每一层是一台独立的小型状态机,各自跑各自的,最后 Unity 在骨骼层面把各层的姿态按权重和遮罩混合成一个最终姿势。这篇文章把这套"分身术"从概念讲到混合数学,再落到工程配置与坑点。一、Animator Layers 核心概念1.1 层是什么:调音台视角把 Animator Controller 比作一台调音台,Layer 就是调音台上的独立通道:每个通道播放自己的音源(状态机),推子(Weight)控制该通道音量,最后混到同一个扬声器(角色骨骼)上。Unity 默认创建Base Layer,权重恒为 1,放 Run、Idle、Jump 这类全身动作。后续每层有三个关键参数:Weight(权重):0~1,该层姿态对最终骨骼姿势的贡献比例。Avatar Mask(遮罩)

最新新闻

日新闻

周新闻

月新闻