Mecanim动画系统

Posted LiuChangwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mecanim动画系统相关的知识,希望对你有一定的参考价值。

一、导入模型

        

导入资源之后,找到模型进行相关的设置:

1、Rig

● Animation Type:

  Legacy:适于旧版的动画模型;

  Generic:适于新版的动画模型;

  Humanoid:适于人物模型;

● Avatar Definition:(获取Avatar的方式)

  Create From This Model:从模型中创建;

  Copy From Other Avatar:从其他Avatar中复制;

● optimize game obje:提升Mecanim动画模块的运行性能,但是这个功能会隐蔽角色骨骼。

设置完成以后Configure 应用并调试。

 

2、Model

● Scale Factor:模型大小

● Mesh compression:网格压缩

● Optimize Mesh:优化网格

● Material Naming:给模型导入贴图材质

二、Mecanim的简单应用

1、Animator编辑器介绍

  将角色模型拖入Hierarchy层级面板(或游戏窗口),添加Animator组件关联Animator Controller及添加控制脚本即可使角色动起来。

1) Animator组件如下图:

● Apply Root Motion:

  绑定该组件的GameObject的位置是否可以由动画进行改变(如果存在改变位移的动画)

● Culling Mode:(剔除模式)

  Always Animate:表示即使摄像机看不见也要进行动画播放的更新;

  Cull Update Transform:表示摄像机看不见时停止动画播放但是位置会继续更新;

  Cull Completely:表示摄像机看不见时停止动画的所有更新。

2)Animator编辑器:(将动画片段拖入编辑器并连线如下图)

● Float、Int、Bool、Ttrigger:一个动画片段进入下一个动画片段运行的条件。

● Bool: 适于循环播放的动画,如走或跑等

● Trigger: 适于播放一次的动画,如按一下攻击一次等

3)动画间触发过度的设置如下图:

● Greater:指当Animator编辑器中的New Int 中的数值大于1的时候,就触发条件运行下一个动画。

● Less:小于

● Equals:等于

● NotEqual:不等于

4)Animator 编辑器中动画片段的参数属性:

● Motion:

  表示当前状态对应的Animation Clip;

● Speed:

  表示当前状态的速度,1表示正常速度,后面的Parameter勾上表示使用一个参数来表示当前的速度,同时输入框会变为下拉选择框,我们可以选择指定的参数,参数可以在Parameters面板中配置,其作用就是可以方便的通过代码修改参数的值来达到控制速度的目的,下面的Parameter也一致,就不赘述了。

● Mirror:

  是否将动画沿Y轴进行翻转,一般用来复用动画,比如右手的动画勾选了此项就会变为左手;

● Cycle Offset:播放偏移量;

● Foot IK:是否开启脚部的IK动画(反向动力学),一般关闭,在需要脚部贴合地面的情况时可以开启;

● Write Defaults:动画播放完毕后是否将状态重置为默认状态,一般勾选即可;

● Solo:勾选表示当前过渡为唯一过渡,即当前状态只能过渡到这个项目指向的状态;

● Mute:勾选表示使这个动画过渡关闭,即当前状态不能过渡到这个项目指向的状态;

2、用代码控制上述Animator Controller控制器的实现

public class AnimatorController : MonoBehaviour
{
    private Animator _animator;
    void Start()
    {
        _animator = GetComponent<Animator>();
    }
    void Update()
    {
        InputKey();
    }
    void InputKey()
    {
     //如果按下空格键则“Trigger_Etc”为真      
        if (Input.GetKeyDown(KeyCode.Space))
        {
            _animator.SetTrigger("Trigger_Etc");
        }
        if (Input.GetKey(KeyCode.Q))
        {
            _animator.SetTrigger("Trigger_run");
        }
    }
}

 

以上是关于Mecanim动画系统的主要内容,如果未能解决你的问题,请参考以下文章

Mecanim动画系统

关于Unity中新版动画系统的使用

[Unity3D]Unity4新的动画系统Mecanim

Unity编程Unity动画系统

Mecanim动画

Unity3D之Mecanim动画系统