Unity学习笔记:Animator和Animation

Animator内只要满足动画的连接条件就会像该动画切换

—————————————————————————————————————————————

Animator属性中的参数


Root  勾选后可以使模型匹配网格(实际用途是使物体在拥有角色控制器时勾选受到重力效果)

Update Mode是否收到系统设置的时间设置
Normal 正常
Animate Physics 雾:使能够使自身位移的动画适用刚体效果(和受力有关时尽量勾选)
Unscaled Time:忽略系统时间设置

Culling Mode渲染效果
Always Animate在任何情况下播放动画
Cull Udate Transform在未进入摄像机不播放一切
Cull Completely在未进入摄像机不播放动画

—————————————————————————————————————————————

Animator面板操作

层级操作:

层级操作的作用是将两个动画混合例如面部表情或者蹲下开枪,可以复制父层级并勾选子层适应父层时间,然后在子层中把想要组合的动画的位置的动画替换成想要被组合的动画,完成组合动画

对其他层级的影响:

Weight设定层级的优先级,优先级越高混合时占有模型身体的比重越大
Mask引入一个AnimatorMask遮罩,可以在遮罩中引入骨骼并设定不受动作影响的身体部位
Blending:混合属性
Override覆盖上一层(中和) Addtive累加(都生效)
Sync复制上一层层级的所有动画和执行条件

Timing (被复制层勾选)勾选时使自身动画适应父动画的时间

Source Layers 复制哪个层级

IK Pass 允许使用IK动画

—————————————————————————————————————————————

Animator 混合树: 混合树的作用是添加多个动画并在切换执行时更加流畅,多用于走路切跑步,可以在Blend Tree中添加切换动画,并在右面设定切换条件,例如数值在0 1时切换两个,或在2D坐标中切换四个。(切换效果比在Animator面板中直接切换好很多)

动画的值:X位置,Y位置(如果是一维控制就是进图条上的位置),动画播放速度,镜像翻转。

2D Simple Directional:最好应用在2D平面的个个角上都有点的情况下,点的分布非常的分散,但只适用于均速直线移动
2D Freeform Directional自由:和上面大体相似,但是适用与在同一方向上进行变速直线运动(突然变快或然变慢)
2D Freeform Cartesian笛卡尔:适用于在前进的过程出现转弯,适合进行变速曲线运动,非直线前进时应用较多

Animator运行规则:在运行开始时优先从Entry(绿色)中默认无任何条件移动并执行橙色线指向的橙色动画(如果在运行不执行任何动画请指向一个空动画),然后根据条件判断执行的方向,动画播放只会根据箭头方向单项前进(可以设定两根线,双向箭头)在有箭头指向目标动画并且满足动画执行条件才会执行到目标动画,而后停留在目标动画进行等待,等待其他动画满足条件时移动。

在面板左侧选择Parameters选项并在里面新建需要在代码中赋值的判断条件然后在Animator面板中选择连接动画的线,然后选择属性中的Conditions属性中的加号添加属性,并规定值,当添加的属性等于规定的值的时候执行动画,添加的属性值不设定时为初始值(动画播放只能通过箭头单项前进)

—————————————————————————————————————————————
Animator 面板上单个动画的属性


Mation 动画名字
Speed 动画播放速度(1为正常)
Mirror 镜像(理论上的水平翻转)
CycleOfset 动画偏移
Foot IK 适用脚部的IK动画
Write Defults 勾选后使用动画自身的属性对自己进行的更改(大多数情况勾选)

—————————————————————————————————————————————

Transitions连线
↓↓只适用于向外指出去的箭头↓↓
Solo 只有该通道有效(无法前进到别的动画)
Mute 堵塞联通动画的通道

—————————————————————————————————————————————

(没名字)动画面板上线的属性
Has Exit Time 勾选后前一个动作完成后才能切换到下一个动作(不勾选条件满足立刻切换)

动画面板设置两个动作之间切换的过度动作(显得不僵硬)(理论上设定时间越长过度动作时间越长)

float条件 Greate 大于 Less 小于  Equals

Exit Time过度动作前的动作的持续时间
Transition Duratio 过度动作的时间
Transition Duratio 过度动作的偏移

—————————————————————————————————————————————
----------代码部分-------------

Animator.GetLayerIndex(string)返回一个int,将层级的名字传进去,能得到一个层级的位置索引。

Animator.SetLayerWeight(int,float)传入两个参数,第一个是层级的索引,第二个是改变的值,将传入第一个参数的层级的weight属性改为传入的第二个参数的值。

Animator.SetBool(string,bool)写入面板中规定的值,第一个参数是被写入的变量的名字,第二个参数是写入的内容。

Animation动画事件:可以在帧数动画面板上右击相关帧数并添加一个事件,然后在属性面板指定自己在脚本中写好的方法,然后当动画执行到指定帧数时可以执行事件中保存的方法

—————————————————————————————————————————————

3DSMAX模型调节

Model模型

Meshes 模型网格

Scale Factor 调节模型相对于3DSMAX与Unity的大小比例(0.1就是Unity中的模型是3DSMAX中模型的十分之一大小)
Use File Scale勾选时模型缩放固定的大小(缩小原文件大小)
MeshCompression网格压缩 网格在压缩后会略微改变网格大小,使文件大小变小,但文件会变得略微模糊,材质效果会降低。 Off 不压缩  Low略微压缩  Mediue正常压缩  High使劲压缩
Read/Write Enabled 可以通过代码拆分网格(被破坏)(勾选时可以拆分,不勾选可以节省开销)
Optimiz Mesh优化网 勾选时避免重复的网格构筑(尽量勾选,优化性能)
Import BlendShapes允许模型适用自身制作时设定的BlendShaps属性
Generate Colliders自动绘制网格碰撞器,雾:但应当尽量避免移动?
Keep Quads勾选时可以将在同一个面上的多个网格三角形尽可能的组成一个大的多边形。雾:减少性能开销?
Weld Vertices共享网格顶点,勾选时如果顶点中有重合的部分,则将那些顶点合并,减少性能开销,但是在物体分集时不勾选(水果削皮,爆衣,砸东西掉渣)
Swap UVs交换网格的UV通道,如果模型中使用漫反射(雾:带有法线贴图?)则勾选。
Generate Lightmap光照烘焙相关,如果场景中具有光照则尽量勾选,-_-||

Normals&Tangents 计算法线  法线生效后会提升物体的光泽度和凹凸感
Normals 是否具有法线效果
None 不具有法线效果
Import 导入文件中默认的法线
Calculate 自动在物体上每个位置添加法线

Materials 纹理材质渲染
Import Materials 纹理设置

—————————————————————————————————————————————

Rig适用动画

Animation Type 动画类型
None 无任何动画
Legacy 老版动画
Generic 非人型动画(任何非人物体)
Humanoid 人形动画
Avatar Defintion 骨骼适用模型
选项一:适用自身模型
选项二:适用其他模型
选项二可以自己修改骨骼动画,尽量避免(技术不足)

—————————————————————————————————————————————

Animations 动画(可将不同模型拖拽进入改变模特的模型)

Anim Compression是否对动画的帧数进行压缩
Off 不进行压缩
Keyframe Reduction减少模型的帧数,剔除多余帧
Opimal 由Unity自动对帧数进行截取

Rotation Error 对动作中的角度旋转进行一个矫正
Position Error 对动作中的位置移动进行一个矫正
Rotation Error 对动作中的大小变换进行一个矫正
(当模型的动作对Transfrom的改变太过明显时可以略微进行矫正)

Clips添加裁剪动画(可以对动作集合进行裁剪)
Length 调节动画的播放片段,可以舍弃开头末尾的动画之使用中间。
Start 开始位置    End结束位置
Loop Time 循环播放
Loop Pose 无缝衔接(循环时使尾帧和首帧的动作更好的衔接)
CycOffset 动画播放帧数和设定帧数的偏移量(值越大模型动的就越快于设定多少)
Additiv*****添加一个帧

Curves 在你的动画中添加一个标记,可以在动画播放到不同帧数时指定一个变量不同的值,可以用代码来获得变量来根据他的值来进行判断操作(类似于读取动画当前播放到的帧数)并在读取Aniimator面板上创建一个名字与Cyrves中标记相同名字的float变量

Evebts添加动画事件
+号按钮 添加一个帧 在该帧时设定运行的方法 然后到达该帧时执行设定好的方法(代码必须在播放动画的物体上)。

Mask 遮罩
能够使物体的某一部分不收动画影像(忍者跑)

Motion
Root Motion Node 根节点
让物体的某个部位随着身上的某个部位移动而随之移动(让不动的部位动)
Input Musage 错误播报

—————————————————————————————————————————————
IK动画
在Animator的层级中设定IK pass来使该层级的动画变为IK动画

--------------代码部分------------
void OnAnimator(int) 也可以不带参数
系统自带的函数在IK动画执行时执行,参数是当前IK动画的层级。
Animator.SetIKHintPosition(AvatarIKHint枚举,Vector3)包含四个枚举类,使身体的参数部位随着参数2的移动并带动身体进行IK动画。
Animator.SetIKPositionWeight(AvatarIKHint枚举,float)设定参数一身体部位对于目标位置的偏移程度(偏移程度为参数二)如果参数二为1则贴在物体上,如果为0就是还原自身动画模型,如果缓慢从1变为0就是部位从物体位置缓慢的收回来,反之则为伸过去。

你可能感兴趣的:(Unity,C#)