Mecanim特性
- 针对人形角色提供了一种特殊的工作流,包含Avatar的创建和对肌肉的调节。
- 动画重定向的能力,可以非常方便地把动画从一个角色模型应用到其他角色模型上。
- 提供了可视化Animator视窗,可以直观地通过动画参数Transition(动画过渡线)等管理各个动画间的过度。
Mecanim常用
- Animator:Mecanim动画系统组件
- AnimatorController:动画控制器,控制动画逻辑
- Avatar:将角色的骨骼转化为可识别的一般骨骼或者人形骨骼
Mecanim一般创作步骤
1. 选择到模型源文件查看
2. 将动画模式调整为Mecanim可识别样式 (人类,动画可以复用) (非人类,动画不能复用)
Animation动画样式为
3. Apply应用到模型
4. (若为对勾显示则骨骼匹配成功,若为叉号显示则需要重新匹配)
5. 创建->给到角色上
6. 找到Window下Animator面板将需要的动画拖到面板中即可
需要重新匹配点击->进入此界面
找到->
动画状态机动画切换
此颜色的动画状态,说明此动画为默认动画(此处跳舞为默认动画)
1. 若想实现角色从待机切换到跳舞效果,先将待机动画拖拽到Animator面板(或者右键创建Empty,将右边属性motion选择待机动画)->将待机动画设置为默认动画(在待机动画状态右键选择 )-> 待机动画即为默认动画->在待机动画状态右键选择 ->
2. 添加动画参数
3. 选择动画过渡线设置条件
if(anim){ anime.SetBool("AttackBool",Input.GetKeyDown(KeyCode.Space)); }
Mecanim BlendTree(混合树)
(可实现一个动画状态有多个动画效果,如跑,既可以前跑也可以左右跑)
1. 创建 BlendTree
2. 双击blendTree动画状态
3. 进入此界面,然后点击添加需要的动画->
注意:如果勾选则Threshold数值不能自己调整。
如果需要调整则取消勾选即可。
设置为,此处想通过键盘平行轴返回值控制左右跑动画,则为-1 ,0, 1。
添加AD小数,在BlendTree应用AD
Mecanim BlendTree2D
通过2个动画参数控制动画切换
InputWS InputAD分别对应POSX 与POSY两个数值
Mecanim层设置,用于角色动画混合效果(如:边跑边攻击)
点击此处添加层,可更改Name,通过Weight设置动画权重,Mask控制动画混合位置,并将此层需要的动画拖到面板中。
注意Mask 在Project视窗创建,选择
此处为将腿遮罩,则腿不会播放dance动画,当调节Weight动画权重数值时可看到融合效果(范围从0~1),1为完全融合。
l Weight 权重
权重是指某个动画层在整个动画中的影响,
若权重值为1则此层动画将与整个动画融合
若权重值为0则此层动画与整个动画完全不融合
动画事件
找到角色源文件->找到需要的动画->
此脚本给在角色上,当攻击动画将要播放完时调用AttackBool();
判断动画是否在播放
Animator anim ; int idle = Animator.StringToHash("Base layer.Idle");//默认层的待机动画 AnimatorStateInfo currentBaseStage;//当前播放的动画 void Start () { anim = GetComponent<Animator>(); } void Update () { currentBaseStage = anim.GetCurrentAnimatorStateInfo(0);//当前播放的动画 if (currentBaseStage.nameHash == idle && !anim.IsInTransition(0))//正在播放待机动画,并且没有动画衔接 { anim.SetBool("hit", false); }