Unity学习笔记之动画系统

目录

Animation 动画系统

动画文件的设置

Animator 动画系统 

BlendTree 混合树

其他动画相关概念


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:

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:不是在方向上操作的动画片段;

2D 的 Parameters 有两个参数,分别控制两个轴;

其他动画相关概念

多Layer层动画状态机 与 动画层融合 avatar mask;

IK动画(逆向动画);

动画状态机重写;

动画重定向;

猜你喜欢

转载自blog.csdn.net/qq_63122730/article/details/131885422