如何防止统一状态机中的大量转换?

How prevent large amount of transitions in unity state machine?

我有一个具有四种状态的统一状态机:空闲左侧、空闲向上、空闲向下和空闲右侧。

为了在这些状态之间转换,我必须创建 12 个转换。 (白色箭头)。这看起来已经很笨重了,但现在我需要再添加 4 个状态:运行 向上,运行 向下,运行 向左和 运行 向右。

这是否意味着我最终得到 8 个状态和 24 个状态转换 运行?这对我来说似乎很笨拙。如果以后需要更改怎么办?

我知道我可以通过代码转换,但这似乎不是推荐的工作方式。

animaor.Play("runningright");

处理多个状态的推荐方法是什么?

正如@Uri Popov 所说,您应该考虑使用 "Blend Trees"。他们在那里是出于同样的目的。帮助混合多个相似的动画。例如,走路和 运行 动画在某种程度上很相似,它们都取决于角色的移动速度。

查看以下链接以了解有关混合树的更多信息。这些只是基本的,但一定会帮助您解决问题。

  1. Unity - Manual: Blend Trees
  2. Blend Trees - Unity Official Tutorials
  3. When to use a blend tree vs state machine for animations(gamedev.stackexchange 上的另一个问题)