您的位置:

Unity动画控制器详解

一、Unity动画控制器参数

Unity中的游戏角色一般都需要动画,而动画控制器就是控制这些动画的重要工具。在使用动画控制器前,需要先理解一些参数。

1. 动画状态

动画控制器中,每个状态都对应着一个特定的动画。一个动画控制器通常包含多种状态,其中每个状态都会有其特定的切换条件,并在特定情况下自动进行切换。可以通过点击相应的状态,来修改状态下的动画、默认重复模式、速度、循环模式等参数。

2. 过渡

过渡是指动画状态之间的切换。在Unity中,过渡被称为一个“机器人传输”(Machine Transition),需要定义一个源状态和目标状态,以及一个动态的条件来启动该过渡。可以设置过渡的时间,也可以在触发过渡前插入一个任意的动画片段。

3. 参数

控制器中还有一些通用参数可供使用,比如判断当前是否在地面、是否有武器、和放缩等。这些参数可以用来调整动画控制器的行为,使其更加符合需要,也可以用于状态之间的过渡动作或调整。

二、Unity动画控制器如何复用

Unity动画控制器还可以被复用,这里介绍两种实现方式。

1. Animator Override

Animator Override 允许我们使用一个现有的动画控制器和同类别的不同动画,对模型的不同部分进行配置并应用,将新的动画控制器应用到不同的模型上。这种方法需要在Editor Mode下操作,直接选中动画控制器并复制,然后在对应的模型上粘贴。之后可以针对具体的模型进行编辑,修改需要替换的动画。

2. Animator Controller Layer

Aniimator Controller Layer 中允许多个动画控制器单独工作,因此可以将通用部分抽离出来,复用于不同模型或场景中。这种方法需要创建一个新的动画层,将原有的动画控制器添加到层中,然后通过激活或关闭多个动画层,实现对不同部分进行配置并应用。相比Animator Override,Animator Controller Layer更加灵活方便。

三、Unity动画控制器软件

Unity所提供的Motionbuilder和Maya这两款软件都非常好用,需要多加掌握。

1. Motionbuilder

Motionbuilder是一个功能强大的3D视觉化工具,可以作为一个全功能的游戏动画开发工具,方便地进行三维建模、动画制作、后期剪辑等操作。其直观方便的用户界面、方便的导入和导出操作以及实时预览让动画控制器开发变得快捷高效。

2. Maya

相比Motionbuilder,Maya是一个更加专业、复杂的3D视觉化工具。Maya所提供的精确、细致且充满创意的控制还有其海量的插件和工具,使其成为一个非常有用的动画控制器开发工具,可以用于游戏动画、影视特效等多个领域。同时,由于其复杂性,使用Maya需要较高的技术门槛。

四、Unity动画控制器合并

在开发过程中,人物动画会被拆分成许多小动作,每个小动作都有其独立的动画状态机,为了便于管理,可以将不同的动画控制器合并成一个。具体实现方法为,打开Unity编辑器,按下快捷键Ctrl+Z调用Undo / Redo面板,找到最初的动画,并找到Inspect面板,复制Animator Controller组件,创建新的控制器状态机,并将其粘贴到新的状态机中。

五、Unity动画控制器窗口

Unity的Animator窗口是动画控制器重要的编辑工具。按下快捷键Ctrl+6可以打开该窗口,并快速了解动画状态机的状态切换、转换器、动画片段和参数。

1. 窗口快捷键

新增状态:Ctrl + Up或Ctrl+Down

新增转换器:Ctrl+Click

快速折叠/扩展所有状态:Alt+Click

快速折叠/扩展某个状态:Ctrl+Alt+Click

2. 窗口视图

Animator窗口视图包括状态机、状态、转换器、动画片段和参数控件。状态机视图包括机器人传输,转换器和状态。在状态机视图中,状态代表特定的动画。状态中包含多个动画片段,可用于配置动画的播放顺序和使用循环或反向等模式。转换器包括滑动、事件和条件转换器。每个转换器都有其独特的约束条件,控制状态的切换。参数控件可以让我们定义全局参数:例如生命值、速度、位置等。

六、Unity动画控制器是状态机吗

Unity中的动画控制器可以被看作是一种有向图(DAG),其中状态代表节点,转换器代表边。每个状态都有特定的条件,当满足条件时,可以切换到相应的状态。与状态机相似,每个状态只有一个活动状态。因此,Unity的动画控制器可以被认为是一个具有状态机功能的一种有向图。

七、Unity动画控制器必须要骨骼吗

Unity的动画控制器并不需要必须绑定骨骼。但是,在非骨骼动画中,需要使用Mecanim方式,即在控制器参数控件中使用Non Humanoid和Humanoid两种类型。其中,Humanoid对骨骼系统提供了更好的支持。

八、Unity动画控制器有几个初始状态

每个动画控制器至少有一个初始状态。之后,可以添加进一步的状态或设置状态的切换条件。一个动画控制器可以是任何数量的状态,具体数量取决于动画的复杂程度。

九、Unity动画控制器怎么用

使用Unity动画控制器开发动画控制器时,需要遵循一定的步骤。

1. 建立状态机

如果需要对一个角色进行控制动画,则需要先建立一个状态机。该状态机用于存储所有的动画和相关的信息。

2. 设置动画的运作模式

选择一个适当的运作模式,使得动画和游戏适应度更好。

3. 添加动画状态

需要添加相应动画的状态,每个状态都对应特定的动画。为新动画状态命名。

4. 关联参数

在创建新的状态时创建相应的参数。这些参数可以用于动画的转换。

5. 测试动画

在将动画添加到状态并将参数关联后,可以测试动画是否正常运行。

十、Unity动画控制器快捷键选取

1. Inspector

Ctrl+C:复制选中的组件

Ctrl+D:复制选中的组件

Ctrl+V:粘贴选中的组件

Ctrl+Shift+V:创建一个新的组件作为选择的项目的子结构

Ctrl+Z:撤销最近的操作

Ctrl+Shift+Z:撤销的前进版本

Ctrl+Shift+Click:打开新的面板并向其中添加选择的组件

2. Hierarchy视图

Ctrl+A:选择所有物体

Ctrl+C:复制选中的物体

Ctrl+D:复制选中的物体

Delete:删除选中的物体

Ctrl+Shift+:展开所选对象

Ctrl+Shift++ Shift+:折叠所选对象

3. Scene视图

Ctrl+A:选择所有物体

Ctrl+C:复制选中的物体

Ctrl+D:复制选中的物体

Delete:删除选中的物体

多个选择的组合:wasd移动

Shift + 1:2d视图

Shift + 2:3d视图

Shift + 3:跟随对象视图

Shift + F:切换自由视图或旋转视图

Alt:切换视图工具和选择工具


// 示例代码

[SerializeField] Animator animator;

void Start()
{
    animator.SetFloat("Speed", 1.0f); // 设置动画播放速度
}

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        animator.SetBool("Jump", true); // 设置跳跃状态
    }
    else 
    {
        animator.SetBool("Jump", false);
    }
}