前言:在Unity中的动画有两种:Animation和Animator,而在工作中Animator更常使用,Animation了解就好
一、Animation(老版动画)
1、3个类:Animation、AnimationState、AnimationClip
(1)播放动画:动画对象.Play(动画剪辑名);
(2)淡入淡出当前动画:动画对象.CrossFade(动画剪辑名);
(3)调整动画播放的速度:
<1>动画状态对象=动画对象[动画剪辑名];
<2>动画状态对象.speed=设定的数值(默认值是1);
(4)动画融合:将要播放的动画跟现在的动画进行混合播放,混合程度可以通过权重来进行调节,权重是用来调节动画的混合比例的(通过权重设置两个动画所占的比例,进行融合)
<1>设置一个滑动条用来控制权重的值
//用来给权重的变量名创建滑动条
[Rang(最小的范围值,最大的范围值)]
public float 权重的变量名:
<2>动画对象.Blend(动画剪辑名,权重变量名);
当前动画的默认权重值是1;
我们设置的权重变量是用调节将要播放的动画剪辑的;
当前动画的权重:将要播放的权重=动画混合比例
(5)播放剪辑:
2、代码贴图:
二、Animator(新版动画)
1.Mecanim(动画系统)以及State Machine(状态机)
选中一个模型>>Rig>>Animation Type:
None:无任何动画;
Legacy:旧版Animation动画;
Generic:一般动画(非人型动画)
Humanoid:人形动画
2.人型动画设置:
3.设置Avator:
4.设置动画剪辑:
5.Animator组件:
6.Animator控制器:
7.状态机:
8.设置动画状态:
9.设置过渡条件:
10.Animator类:
11.使用代码控制状态机:
12、如何给人物模型添加动画
人物模型
(1)给每个模型匹配骨骼
选中需要匹配骨骼的模型>>Rig>>Animation Type选为Humanoid,Avatar Definition选为Copy From Other Avatar,Source选为SwatAvatar,Apply
(2)将预设体拖到场景中,系统会自动生成一个Animator组件
(3)创建一个Animator Controller(动画控制器)来控制动画,在工程视图里创建一个动画控制器,将其拖到Animator组件上
(4)打开Animator窗口,找到资源中的动画剪辑,用过渡线连接
(5)选中过渡线,不勾选Has ExitTime,勾选的意思是当前动画播放完,再播放下一个动画
(6)选中我们要循环的动作模型,勾选右边面板中的Animation中的Loop Time
(7)可以通过Animator窗口中的Parameters(参数)作为过渡线是否过渡的条件,在Parameters中设置一个参数,选中过渡线,右边面板中的Conditions(条件),满足则过渡,不满足则不过渡到下一个动画剪辑
(8)如果有多条过渡线,只要有一条过渡线满足条件,就可以过渡到下一个动画剪辑,但那一个过渡线如果有多个条件的话,多个条件必须都满足这条过渡线才能过渡到下一个动画剪辑。(本来这里写了很多的,结果出问题了,就都没有了,重新写的,少多了,心塞=-=)
代码贴图: