Mecanim动画系统:方便的实现人型动画的设置和重用、方便的实现动画剪辑的设置、可视化的动画控制界面、对动画播放的精确控制;
Rig面板:AnimationType动画类型:None 没有动画、Legacy 旧版动画、Generic 新版通用型动画(非人型)、Humanoid 新版人型动画;骨骼创建方式:Create From Model通过模型创建、Copy From Other Avatar拷贝其他骨骼;配置骨骼:必须匹配的骨骼(实线圆圈)、可选匹配的骨骼(虚线圆圈);
Animation面板:Position,Rotation,Scale误差;Clip动画剪辑设置:增加、删除、重命名、设置起始帧、设置结束帧、动画循环Loop Time、姿势循环、循环偏移量、BakeIntoPose烘焙进姿势、BakedUpon烘焙基准、Offset偏移量量、Mirror镜像;
Animator组件:Controller 动画控制器器(动画状态机)、Avatar 骨骼、Apply Root Motion 应用根动作
Animator类:SetFloat/Int/Bool/Trigger:设置动画状态机参数(Float,Int,Bool,Trigger);GetFloat/Int/Bool:获取动画状态机参数(Float,Int,Bool);GetCurrentAnimatorStateInfo:获取当前层动画状态信息、IsName、IsTag;StringToHash(静态方法)将一个字符串转换为哈希ID;
动画层:
动画层设置:Weight权重 该层动画执行的比例、Mask遮罩 该层动画可以控制身体的哪些部分、IK Pass支持IK动画;动画遮罩设置:遮罩设置、IK反向动力学遮罩;
IK动画:
打开IK Pass、IK部位、左手、右手、左脚、右脚、眼镜LookAt
代码实现:
animator.SetIKPositionWeight animator.SetIKRotationWeight animator.SetIKPosition animator.SetIKRotation
动画事件:
1.函数必须是public 2.方法必须是放置在该人物对象身上的脚本组件中 3.参数只能增加一个,且参数类型只能是Float,Int,String,Object之一 4.添加了帧事件,必须要在代码里声明事件方法,否则报错。
Animation :旧版动画组件,需要手动添加
添加完组件后到下图设置:
拉动物体就能修改数值;
代码:
调用动画:
导入的模型:
Wrap Mode:在这儿修改动画的循环方式
Quaternion:四元数
rotation的类型就是四元数
LookRotation:看向某个物体
Quaternion.LookRotation();
有些模型需要选择新版人型动画:
Curves :曲线 Events :事件
Animator:新版动画组件,点击模型就能看到
融合数:可以放两个或多个状态
双击融合数进入新的界面:
使用代码完成融合数里两个动画的切换
新版人形动画:
动画覆盖:同时做两个动作,跟融合不一样
可以控制部分区域骨骼做出不同的动作
代码控制不同的动作
反向动力学:
Inverse kinematics
一种通过先确定子骨骼的位置,然后反求推导出其所在骨骼链上n级父骨骼位置,从而确定整条骨骼链的方法。
在前向动力学系统中,每一个子关节的位置、方向都是由父关节所支配的。在电脑动画软件的发展初期,关节动画都是正向链接系统,它的特点是软件开发容易,最致命的弱点便是工作效率太低。
与前向动力学正好相反,反向动力学是依据某些子关节的最终位置、角度,来反求出整个骨架的形态。它的特点是工作效率高,大大减少了需要手动控制的关节数目,缺点是求解方程组需要耗费较多的计算机资源,在关节数增多的时候尤其明显。
拓展:Audio Source-声音组件
声音:发声组件 AudioSource ; 声音选项:2D声音 没有位置概念,在哪都能听到;3D声音有位置概念,只有距离声音较近地方才能听到。
声音文件: AudioClip;
发声方式:
当前对象挂载了了AudioSource组件,并且AudioSource中有声音片段,执行播放方法。通常用于单个声音片段播放
不不需要挂载AudioSource组件,直接通过静态方法在某一位置播放某一声音片段通常用于多个声音片段播放
原理:新建一个空对象,挂载AudioSource组件,添加指定声音片段,播放之后,自动销毁。
缺点:耗CPU调度,耗内存。
静态方法:PlayClipAtPoint(AudioClip,Vector3)
Invoke:
功能:隔一段时间之后,执行一个方法
参数:方法名称(String) 时间间隔(float)
音乐组件翻译
END