动画系统 Animator

目前正跟随官网 Junior Programmer 课程学习。

前一段时间学习到的一些内容,将分别纪要。

1.动画系统

Junior Programmer 课程的第 3.3 章节左右,开始学习 Unity 的动画系统。

附着于游戏对象之上的 3D 动画是通过一个叫做 Animator 的组件来实现的。

Animator

而 Unity 的 Animator 组件则是用于控制 Mecanim 动画系统的接口。

双击 Animator 组件的 Controller 对应区域,可打开 Animator 控制台,示意如下:

animator controller

这里放置着对应动画的 节点 和 切换关系;

点击连接各动画节点之间的箭头线条,则可以得知动画节点切换的条件,例如:

animator conditions

而后续,我们即是通过调整这些参数,来控制动画系统的切换。

2.动画调用与切换

包括以下几个部分:

2.1 设置默认动画

通过在动画节点上 右键→Set as layer default state 即可将该动画节点,设置为该层级动画的初始状态;

2.2 切换动画节点

切换动画节点的步骤分别为:

  • 获取动画组件 GetComponent<Animator>();
  • 对动画组件上面的参数设置特定值 SetBool()SetInteger() 或者 SetTrigger() 等;

以下为一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//....前略
public class PlayerController : MonoBehaviour
{
//....前略
private Animator playerAnim;

void Start()
{
//获取动画组件
playerAnim = GetComponent<Animator>();
}

void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
//切换动画
playerAnim.SetTrigger("Jump_trig");
}
}

private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("obstacle"))
{
isGameOver = true;
//切换死亡动画
playerAnim.SetBool("Death_b", true);
playerAnim.SetInteger("DeathType_int", 1);
}

}
}

以上。

在 Unity Document 中对 Animator 的描述比较少,但有大量类成员说明,此处并未涉及。

详细了解可参考以下路径:

以上。