如何防止统一状态机中的大量转换?
How prevent large amount of transitions in unity state machine?
我有一个具有四种状态的统一状态机:空闲左侧、空闲向上、空闲向下和空闲右侧。
为了在这些状态之间转换,我必须创建 12 个转换。 (白色箭头)。这看起来已经很笨重了,但现在我需要再添加 4 个状态:运行 向上,运行 向下,运行 向左和 运行 向右。
这是否意味着我最终得到 8 个状态和 24 个状态转换 运行?这对我来说似乎很笨拙。如果以后需要更改怎么办?
我知道我可以通过代码转换,但这似乎不是推荐的工作方式。
animaor.Play("runningright");
处理多个状态的推荐方法是什么?
正如@Uri Popov 所说,您应该考虑使用 "Blend Trees"。他们在那里是出于同样的目的。帮助混合多个相似的动画。例如,走路和 运行 动画在某种程度上很相似,它们都取决于角色的移动速度。
查看以下链接以了解有关混合树的更多信息。这些只是基本的,但一定会帮助您解决问题。
- Unity - Manual: Blend Trees
- Blend Trees - Unity Official Tutorials
- When to use a blend tree vs state machine for animations(gamedev.stackexchange 上的另一个问题)
我有一个具有四种状态的统一状态机:空闲左侧、空闲向上、空闲向下和空闲右侧。
为了在这些状态之间转换,我必须创建 12 个转换。 (白色箭头)。这看起来已经很笨重了,但现在我需要再添加 4 个状态:运行 向上,运行 向下,运行 向左和 运行 向右。
这是否意味着我最终得到 8 个状态和 24 个状态转换 运行?这对我来说似乎很笨拙。如果以后需要更改怎么办?
我知道我可以通过代码转换,但这似乎不是推荐的工作方式。
animaor.Play("runningright");
处理多个状态的推荐方法是什么?
正如@Uri Popov 所说,您应该考虑使用 "Blend Trees"。他们在那里是出于同样的目的。帮助混合多个相似的动画。例如,走路和 运行 动画在某种程度上很相似,它们都取决于角色的移动速度。
查看以下链接以了解有关混合树的更多信息。这些只是基本的,但一定会帮助您解决问题。
- Unity - Manual: Blend Trees
- Blend Trees - Unity Official Tutorials
- When to use a blend tree vs state machine for animations(gamedev.stackexchange 上的另一个问题)