【程序新手】Unity动画系统之Animator学习篇

2015年12月10日 11:58 0 点赞 0 评论 更新于 2025-11-21 19:32

一、Mecanim动画系统简介

Mecanim动画系统是Unity中功能强大的动画系统,它采用状态机来控制动画逻辑,能更轻松地实现动画过渡、动画重定向(将一个动画应用到不同的模型上)等功能。

二、模型导入与设置

从网上获取的3D模型FBX文件,通常包含模型的动画文件、模型材质等,是一个完整的资源。以下是具体操作步骤:

  1. 新建Unity工程,将模型文件导入到Assets目录。
  2. 选中模型,在Inspector窗体中进行设置:
    • 在Rig里可以设置动画类型,默认设置为Generic。若要使用Mecanim提供的动画重定向等功能,则需将动画类型设置为Humanoid。
    • 若要设置动画循环播放,勾选Animations里的Loop Time即可。

三、创建动画控制器

准备好模型后,需要创建一个动画控制器Animator Controller。不过,如果使用的是Legacy动画模式(这是Unity 4.0版本前的标准动画模式,功能相对较弱,但使用简单),则不需要创建动画控制器。具体操作如下:

  1. 把模型拖到Scene场景中。
  2. 给模型的Animator组件的Controller指定之前创建的动画控制器。
  3. 若需要使用脚本控制模型位置,取消Apply Root Motion选项。

四、配置Animator窗口

  1. 打开Animator窗口,将之前导入的与模型相关的动画拖入该窗口。
  2. 相关动画操作:
    • 右击选中其中一个动画,选择第二个选项可设置默认初始动画。
    • 选择Make Transition可以建立动画之间的过渡,操作很简单,只需用鼠标拉线连接不同的动画即可。动画过渡到哪个动画取决于具体的游戏需求。

五、按条件控制动画过渡

在游戏中,动画的播放通常是按照逻辑或操作来控制的,例如鼠标左击时希望看到指定的动画。我们可以按条件来过渡动画并使用脚本来控制,具体步骤如下:

  1. 创建参数:在Animator窗体的Parameters选项里,可以创建不同类型的数值,每个数值可以自定义命名。
  2. 设置过渡条件:选中Animator窗体里的某一个动画,在Inspector面板中选中各个Transitions,设置conditions。例如,设置从idle动画过渡到run动画的条件。按照同样的方法重复操作,设置其他动画过渡的条件。

六、代码控制动画过渡

通过编写代码可以控制动画的过渡,具体步骤如下:

  1. 创建脚本并将其添加到模型上,使其作用于模型。
  2. 在脚本中获取动画组件,代码示例为this.GetComponent<Animator>();
  3. 通过动画组件可以获得当前动画状态,并且可以设置动画过渡。以下是一个控制鼠标左击时由idle过渡到攻击动作的代码示例:
    // 示例代码,具体实现可能需要根据实际情况调整
    using UnityEngine;
    

public class AnimationController : MonoBehaviour { private Animator animator;

void Start() { animator = this.GetComponent(); }

void Update() { if (Input.GetMouseButtonDown(0)) { animator.SetTrigger("Attack"); } } }


## 七、判断动画结束并回到idle
在动画播放过程中,可能需要判断攻击动作是否完成,并在攻击完成后回到idle动画。可以通过Animator的事件或状态机的条件来实现,例如在攻击动画的结束帧添加事件,当事件触发时,将动画状态设置为idle。

在整个操作过程中,Unity编辑器在运行时会清晰地展示整个动画流程,方便开发者进行调试和查看。

作者信息

洞悉

洞悉

共发布了 3994 篇文章