跳到主要内容

状态机(State Machine)

为您的动画添加智能

状态机概述(State Machine Overview)

状态机是一种以可视化方式连接动画并定义驱动转换逻辑的方法。它们允许您构建可以直接在产品、应用、游戏或网站中实现的交互式动态图形。

状态机为设计师和开发人员之间创建了一个新的协作层次,允许两个团队在开发过程的深层进行迭代,而无需复杂的交接。

Youtube

使用状态机需要设计师和动画师以一种直观、可视化的方式更多地像开发人员一样思考。

每个画板默认至少有一个状态机,但您可以根据需要创建任意数量的状态机。要创建新的状态机,点击动画列表中的加号按钮并选择状态机选项。

状态机的构成(Anatomy of a State Machine)

一个基本的状态机由图表、状态(States)转换(Transitions)输入(Inputs)层(Layers)组成。我们将在本节中探讨这些部分及更多内容。

图表是您添加状态和连接转换的空间。当在动画列表中选择状态机时,它会替代时间轴显示。

状态机图表

图片

状态就是可以在状态机中播放的时间轴动画。通常,这些状态代表您的动画内容所处的某种状态。例如,一个按钮通常有一个空闲状态(按钮静止)、一个悬停状态(鼠标悬停时按钮的样子)和一个点击状态(按钮被点击时的样子)。

图片

状态预览

一旦我们定义了内容的状态,我们就可以用转换将它们连接起来,创建状态机可以在这些不同时间轴之间遵循的逻辑路径。我们正在创建一个地图,状态机可以使用它从一个动画转到下一个动画。

图片

创建转换

输入是设计师和开发人员之间的契约。作为设计师,我们使用它们作为转换发生的规则。例如,我们可以有一个名为 isHovered 的布尔值。该布尔值控制着空闲状态和悬停状态之间的转换。当布尔值为真时,状态机处于悬停状态,当布尔值为假时,状态机处于空闲状态。开发人员在运行时连接这些输入,并定义控制状态机输入的动作,例如定义可以改变 isHovered 布尔值的点击区域。

图片

添加输入和条件

最后,所有状态机至少有一个层。因为在给定的层上只能播放一个动画,如果我们想混合不同的动画或添加额外的交互,我们可以添加多个层。例如,这个状态机有多个层,每一层都有控制这个菜单中一个按钮的逻辑。

图片