如何充分利用Unity Animator中的中断



游戏中的哇效果不仅可以通过意外的机制或绘图仪来实现,而且可以通过动画来实现-在移动项目中,后者通常会受到特别的重视。 因此,我决定在Unity Animator上分享有趣的材料翻译。 内部-关于动画过渡的优先级和状态之间的能力切换。

Unity Animator中的中断机制几乎不值得使用教程和文档,因此许多人只是停止学习它。 仅凭经验,我才知道使用中断的方式和标志。

本文分为三个部分:

  • 在第一篇中,我将告诉您什么是中断,存在什么类型以及如何更好地使用它们。
  • 第二个是关于指示需要中断的迹象。 看一下Animator,看看如何替换不必要的过渡。
  • 在第三篇中,我们将讨论如何在Animator中组织作品并防止其不受控制地增长。 对于大型团队来说尤其如此,在大型团队中,有多个人参与同一动画师。



第1部分:什么是“中断”?


中断是Unity Animator的一项功能,可让您停止动画从一种状态到另一种状态的过渡,以便移至第三种状态。

这是允许您从不完全过渡到所需状态执行混合的唯一方法。 有了它,您就不会依赖于状态的急剧变化,甚至不会依赖于任何国家的过渡。 我将在后面详细解释。

中断有几种基本类型:



现状

如果从某个状态提供了几个转换,并且在其中一个转换期间启动了另一个转换,则将从当前点开始执行切换,如图所示:



下一个州

下一州的工作方式类似于当前州。 但是在这里,Animator将分析从下一个状态开始的过渡,而从当前状态开始的过渡仍然有效。



当前状态,然后是下一个状态(首先,当前状态,然后是下一个)

在这里的某个地方,人们对理论感到无聊,并且对该主题失去了兴趣。 等一下 这将使您在Animator方面的技能达到新的水平。

掌握了当前状态和下一状态后,您一定会理解第三种类型,因为这是它们的组合。 在其中,Animator将逐帧分析当前过渡,以搜索可以从初始状态执行的其他过渡。 如果未找到它们,Animator将分析下一个状态以寻找合适的过渡。 同时,在执行上一个过渡的过程中切换到新过渡时,Animator的行为将与上述示例完全相同。

下一个状态,然后当前状态(第一个下一个状态,然后当前)

一切都像第三种类型,只有分析顺序相反。

有序中断



对于每个状态,都设置了转换的优先级(从上到下),如下所示:



如果之前您不知道为什么要拖动此列表中的组件-瞧! 在这里,您可以对过渡优先级进行排名。

选中“有序中断”时,只有当新过渡的优先级高于当前正在进行的过渡的优先级时,Animator才会中断。 过渡在此列表中的位置越高,其优先级就越高。

第2部分:如何确定在哪里打破


使用中断时,最难确定确切的使用时间。 在某些情况下,它们是必需的-随着时间的流逝,您开始注意到它。

考虑最明显的例子。 熟悉的模式?



一切归结为任何国家。 对不对

不行

这是第一个迹象,表明您的大多数过渡都最好通过中断来完成。 在特殊情况下,任何国家的过渡都享有生命权,但是大多数人在确实需要中断(您猜对了)时才使用它们。

当前状态中断模式:



通常,仅在第一个状态已经开始时才创建任何状态,以用于过渡到第二个状态。 算了 使用中断。

另一个例子:我们有一个从FirstState到SecondState的过渡,但是未设置Exit Time,过渡时间为0,并且指定了条件。 中断将理想地解决此问题。 您不能转向任何状态,因为它已经被经常使用,并且通过将其添加到SecondState中,可以激活这种情况下不需要的状态。

下一状态中断模式:



通常情况下,过渡时间与完全疯狂的退出时间和过渡条件有关。 正确设置中断,您将更容易实现相同的目标。 如您所见,通常会在需要中断的地方找到任何状态。

请记住,您可以从两个相同的状态添加多个转换,以成功使用中断。

通常,所有其他模式是上述示例的组合。

中断的典型情况:

在某些情况下,中断是最好的出路。 在Animator中进行一些练习,您可以轻松地学习注意它们。

a)下一个动作应立即触发动画。

这在动作游戏中经常发生,因为有很多输入,您需要快速采取以下动作。

例如,人们经常使用“任何状态”转换(或具有不同配置的多个转换)来平滑地从双跳过渡到急速过渡。

必须映射所有可能的动作,设置事件的持续时间,并将其添加到状态和转换中。 然后设置中断以正确地从一个事件切换到另一个事件。

b)动画已经开始,但是情况已经改变,我们需要继续进行不同的动画序列。

UI Animators通常会发生这种情况,在其中您可以跳过某些菜单项,并且子菜单可以显示在其他所有菜单的顶部。

人们通常将多个Animator添加到同一对象,并设置其包含/停用条件,以便跳过一个动画并开始另一个动画。 这是值得使用中断的另一个示例。

c)您需要退出当前动画链。

中断可以相互连接-您会得到一系列中断,这些中断将导致您进入新的链。 在这种情况下,所有状态都将正确,及时地完成。 在这里,您可以使用下一个状态中断。

第3部分:Animator中的所有内容都应该清楚


与Animator一起工作是一种特殊的艺术。 实践越多,进步就越明显。 清晰一致的工作流程始终会对结果产生积极影响。

为避免在Animator中产生混淆,建议如下:

  1. 使用子状态机并尝试规避向内部状态的转换。 正确的子状态机可独立处理输入和输出,使用将流向内引导的转换,并知道如何处理结果。 这样,您可以避免在Animator中工作时遇到严重问题。
  2. 尽可能少使用任何状态。 考虑一下这是否真的必要。 与您的同事联系。 并且只有在每个人都同意的情况下,才使用“任何状态”转换。
  3. 如果您觉得您的Animator看上去比现在更容易-整理一下。 这是磨练技能的最佳方法。

Source: https://habr.com/ru/post/zh-CN470499/


All Articles