Unity动画系统

Unity动画系统知识点(简易)

本文是学习文,其中转载某些文章,如有侵权,联系删除。
学习要点:
Unity动画系统_第1张图片

1.动画的分类
游戏物体的基础动画设置,UGUI设置的按钮状态,2D游戏Sprite动画,Root Motion设置 人物模型动画设置

1.1:UGUI的按钮动画:
Unity动画系统_第2张图片Unity动画系统_第3张图片
Transition:控制按钮的效果。
Node:没有过渡效果

Color Tint:颜色过渡效果,使用颜色来调整效果
Unity动画系统_第4张图片
Sprite Swap:图片过渡效果,使用Sprite精灵来制作按钮效果
Unity动画系统_第5张图片
Animation:动画效果
Unity动画系统_第6张图片
选择Animation,然后像普通动画设置一样为Button的四种状态设置动画,Normal.Hightllight,Pressed ,Disable.

2…动画组件
Animation:
在这里插入图片描述
Samples:帧数,设置动画在一秒钟之内播放的帧数,数值越大,动画的播放速度越快,反之越小
Add Property ; 属性,添加动画属性值
时间刻度:0代表秒数,25代表帧数
六个按钮依次的效果:预览动画组件,录制动画。
                跳转到开始帧,跳转到上一关键帧,播放动画,跳转到一个关键帧,跳转到最后一帧
0代表的是当前的帧数
Unity动画系统_第7张图片
影响动画的三方向的位置,修改的位置是同步进行的
在这里插入图片描述
可以为游戏物体的三个组件进行动画制作
在这里插入图片描述
在Animation组件的底部有两个属性值,一个属Dopesheet(摄影表),另一个是Curves(曲线),两种不同制作动画的方式
Dopesheet: 摄影表是通过断点来设置动画属性。
Curves : 调整曲线的变化来修改动画的基准值。

2.模型知识点
常见的模型格式:.fbx(FilmBox软件), .max(3Dmax), .maya(玛雅软件)
常见的贴图格式:.Tga(Tagged Graphics)
常见材质格式:.mat(mat格式是max的材质库的格式,可以通过材质编辑器打开)。
对于新版本的Unity 导入模型导致贴图丢失的问题,模型本身的材质球可能无法修改,我们可以修改源材质球的贴图,
然后重新导入到模型当中,在下图中的位置重新为模型导入材质球
Unity动画系统_第8张图片
3.模型的的三种动画导入设置
Unity动画系统_第9张图片
Aniamtion Type: 模型动画的三种类型

 None:   将模型设置为没有动画

Leacy:   将模型设置一般模式,在该状态下,模型本身只能使用Animation组件来播放动画,无法通过动画状态机来控制动画

Geneic:  将模型动画设置为通用模式,在该状态下的模型可以通过动画状态机来控制动画,在该状态下,无法通过动画来改变模型的运动

Humanoid: 将模型动画设置为人形状态,若多个模型使用的是同一套人形骨骼,那么模型之间的动画是可以通用的,并且,在该状态下,
         可以通过动画来修改人物的运动。(可以使用动画的重定向)




3.骨骼映射,Avatar的创建 在模型动画类型中选择 Humanoid 类型,然后点击Configure,实现模型骨骼的映射

Unity动画系统_第10张图片
绿色代表的是必须的骨骼节点,灰色代表的是不必要的骨骼节点
Unity动画系统_第11张图片
Loop match :代表的是循环动画头尾的匹配程度,绿色代表匹配程度良好,黄色代表需要头尾匹配不佳,红色代表不匹配
Bake Into Pose :模型在播放动画时,可能会影响到模型本身的Rotation, 勾选这个可以将模型的动作对角度的影响烘焙到模型
        本身身上,就不会对模型的角度产生影响。
动画重定向:
“重定向就是把A角色做的动画用到B角色上。如果A和B两个角色的骨骼结构完全一样,那动画可以直接重用。但是如果A和B的骨骼结构不一样,但是是Humanoid类型的,可以使用Unity中的Retargeting系统.
PS :具体内容可以参照:Root Motion


3.Animatior 类
StringToHash把参数字符串转换成ID:设置动画的时候,Animator.setFloat(“Speed”,1)
我们可以先把动画参数字符串转化为ID值

public float AniimatorID = Animator.StringToHash("Speed");  //将动画字符串转化为ID值

AnimationClip an = ani.runtimeAnimatorController.animationClips[0];
//获取该animator的所有的clips,后边的下标可以获取指定索引值的clip,

下标是根据加入的前后顺序 去判断的,这个是不区分层级,不区分动画的状态
animator.GetCurrentAnimatorClipInfo(0);

//参数是表示层级,获取当前层级播放的动画,返回一个数组,
只有在获取到的是blendtree的时候数组长度才会是>1的(blendtree中正在播放的动画有几个这个长度就是几)

ani.GetCurrentAnimatorStateInfo(0);
//参数是表示层级,返回的当前层级正在播放的动画的状态机

Animator.MatchTarget(Vector3 matchPosition, Quaternion matchRotation, AvatarTarget targetBodyPart, MatchTargetWeightMask weightMask, float startNormalizedTime);
方法详解: MatchTarget


4.Avatar Mask:骨骼遮罩:
常用于动画混合
当只希望动画只影响人物模型特定位置的时候就要使用骨骼遮罩,减少动画对其他骨骼关节的影响
首先我们先了解,动画骨骼遮罩常用的地方.
Unity动画系统_第12张图片
Weight : 代表某个动画层的权重,权重为0,该层动画不对模型产生影响,权重为1时,将产生最大(100%)影响。
Mask: 动画遮罩,骨骼遮罩。
Blending,该层动画与其他层动画的混合方式,包括Override(复写方式,即取不同层动画的中间值)和additive(直接叠加)。
Sync,同步。同步是本层动画直接同步其他层动画状态之间的逻辑状态,一般需要选取同步源。同步之后需要给本层的动画状态添加动画剪辑。
IK Pass即本层动画是否支持IK动画,设计IK动画必须勾选该选项
在Asset下创建一个文件夹,在文件夹下创建一个骨骼遮罩
Unity动画系统_第13张图片
PS:骨骼遮罩的详情:骨骼遮罩


5.IK动画
Ik:动画详解

6.TimeLine动画:
TimeLine动画1
TimeLine动画 2
TimeLine动画 3
PS:当人物模型动画对TimeLine位置产生影响时,人物模型初始的播放位置在初始位Vector3(0,0,0);
可以给人物模型添加一个骨骼去控制动画,从而让Timeline不对模型的位移产生影响。

你可能感兴趣的:(Unity动画系统)