目录
Animation 动画系统
Animation是老版的动画系统,新版的动画系统是Animator
组件参数:
- Animation:这个是当前默认播放动画片段;
- Animations:是Animation数组,可以放多个animation动画片段;
- Play Auto:是否自动播放;
编辑Animation动画:
通过Animation组件播放动画:
帧事件触发:
动画文件的设置
动画文件或模型文件是以fbx格式存在project目录里的。
模型的设置:
Model选项:
- Scale Factor:模型比例缩放,一般都是0.01,如果所在工程不一样则以工程设置为主;
- 其他参数一般不动。
Rig选项:
AnimationType:
- Legacy:老版动画系统;如果使用Animation组件进行播放,需要将动作切换到Legacy;
- Generic:通用设置;游戏中一般非人类的模型动作可以选这个;
- Humanoid:新版动画系统人类;当选择此选项之后,会要求定义Avatar文件,动作文件可以使用其他模型的Avatar文件;
Animation选项:
有时候给我们的多个动画是放在一个长动画里的,需要根据帧数将各个动画分出来。
也有可能拿到的是如下图中分好的动画文件:
在剪切动画时,需要检查右侧的灯的颜色;绿色灯代表匹配的很好,黄色灯匹配的一般,红色灯代表没有匹配上(匹配是指动画第一帧和动画最后一帧是否匹配):
Animator 动画系统
1、Animator Controller文件:
AnyState:任意状态;常用作播放死亡状态,不管当前角色在播放什么状态,都可以被杀死然后播放死亡动作;
Entry/Exit:进入状态机和退出状态机,进入状态机默认连接默认状态动画;
Idle:橙色(名字可以改),一般是默认动画,一般播放待机动画;
Run:一般状态(名字可以改)
2、状态机的层和参数:
Layer:动画状态机中还可以嵌套一个动画状态机;
Paramters:状态切换参数(int float bool trigger);
3、动画状态切换:
Solo:动画切换优先;
Mute:动画切换禁止;
Has Exit time :勾选上会在切换动画时上一动作结束后再播放下一动画
Setting:
- ExitTime:动作切换上一动作退出时间;
- Fixed Duration/Transtion Duration:动作切换时间长度;
- Transtion offset:下一动作所在上一动作比例;(动手测试下);
- Interruption sources:打断动画切换来源:
conditions:切换动作参数,参数是paramers里面定义的,条件可以使大于、等于、不等于、小于
4、Animator组件:
Controller:AnimatorController文件;
Avatar:放骨骼文件;
Apply Root motion:如果勾选代表使用动画中的位移;如果当前游戏物体上的代码组件中有OnAnimatorMove内置函数,位移就受代码控制;
Update Mode:有三种更新模式:正常更新、物理更新、不受时间缩放影响;
Culling Mode:三种剔除模式:
- Always Animate 始终有动画;
- Cull Update Transforms 当摄像机没有渲染该物体,就会停止部分Transform相关功能;
- cull' Completely 当摄像机没有渲染该物体,整个动画都不会被渲染;
5、代码操作 Animator:
Navigation 寻路系统
1、Navigation 可行区域烘培:
烘培前需要先将地面和静态物体设置成 navigation static,然后用Bake选项即可自动生成可行区域
- AgentRadius:烘焙路径可行区域和非可行区域的间隔;
- AgentHeight:烘焙路径时当高度小于这个值的地方,就是不可行区域;
- Max Slope:最大可行区域的坡度;
- Step Height:最大台阶高度;
- Drop Height:下落高度;
- Jump Distance:最大跳跃距离;
烘培后现实如下:
要实现从低点到高点的跳跃:
2、NavMeshAgent 寻路组件:
- Agent Type:代理类型,一般默认;
- Base offset:组件的竖直方向的偏移量;
- Speed:速度;
- Agular Speed:角速度;
- Acceleration:加速度(加速度是矢量,有大小有方向,在加速时是加速度,减速时是减速的加速度);
- StoppingDistance:距离目标点多远就停止(速度不能太快,加速度不能太小,否则跟目标点距离等于stoppingdistance时停不下来)
- Radiu:寻路组件半径;
- Height:寻路组件高度;
- Quality:寻路精细度,速度越快对寻路精细度要求越高;
- Priority:寻路权重(0-99,值越小优先级越高,优先级低的游戏寻路组件需要绕着他走);
- Auto traverse off mesh Link:是否支持off mesh link功能;
- Auto repath :自动重新规划路径;
- Area Mask:区域覆盖,当前寻路组件没有覆盖的区域,即使有时可行区域,对当前这个组件来说也是不可行区域;
BlendTree 混合树
1、AnimatorController 1D混合树:
创建:
Parameter:控制当前混合树的参数;
三个蓝色三角形区域,代表的是三个动画的权重;
Threshold:阈值(-1-0 运行的是向左走动画权重越来越低,直走权重越来越高,0-1运行的是直走权重越来越低,向右走的权重越来越高);
Automate Threshold:是否自动计算;通过动画片段的动画位移来计算的阈值,我们一般使用自己设置的;
2、2D混合树:
2D 混合树细分为三种类型:
- 2DsimpleDirection:在同一方向上不能有多个动画片段;
- 2DFreeform Directional:在同一方向上可以有多个动画片段;
- 2Dfreeform Cartesian:不是在方向上操作的动画片段;
- 2DFreeform Directional:在同一方向上可以有多个动画片段;
2D 的 Parameters 有两个参数,分别控制两个轴;
其他动画相关概念
多Layer层动画状态机 与 动画层融合 avatar mask;
IK动画(逆向动画);
动画状态机重写;
动画重定向;