Unity3d 使用行为树进行玩家移动的想法有多好?

Unity3d 使用行为树进行玩家移动的想法有多好?,unity3d,design-patterns,architecture,behavior,behavior-tree,Unity3d,Design Patterns,Architecture,Behavior,Behavior Tree,我开发了一个团结的游戏。现在我实现了一个玩家跑酷(运动)系统,所以我试着选择一种模式,这将帮助我长期保持体系结构的整洁,并轻松添加新的状态。 我试着使用状态机模式,但我意识到,它越来越多 所以我放弃了这个解决方案,决定使用行为树模式。但现在我开始注意到,这种体系结构正在越来越深入,并行状态的条件变得难以控制。我认为这不是创建球员跑酷(运动)系统的最佳方式 所以我的问题是:有没有更好的方法来创建玩家移动系统,以及使用行为树有多困难?也许行为树中有我没有注意到的陷阱我正在搜索一种体系结构,这种体系结

我开发了一个团结的游戏。现在我实现了一个玩家跑酷(运动)系统,所以我试着选择一种模式,这将帮助我长期保持体系结构的整洁,并轻松添加新的状态。 我试着使用状态机模式,但我意识到,它越来越多

所以我放弃了这个解决方案,决定使用行为树模式。但现在我开始注意到,这种体系结构正在越来越深入,并行状态的条件变得难以控制。我认为这不是创建球员跑酷(运动)系统的最佳方式

所以我的问题是:有没有更好的方法来创建玩家移动系统,以及使用行为树有多困难?也许行为树中有我没有注意到的陷阱我正在搜索一种体系结构,这种体系结构允许我根据条件执行并行状态(或模拟),并且易于维护。

我的原型现在看起来是这样的(不要注意获取密钥,这只是架构的一个快速计划):
使用行为树编码的行为模型过于严格,很容易给您带来麻烦。FSM(有限状态机)是游戏中最简单、更完整、更灵活的架构。行为树可以适应NPC典型的简单大脑功能,但绝对不能适应人类驱动的玩家。

用行为树编码的行为模型过于严格,很容易让你陷入麻烦。FSM(有限状态机)是游戏中最简单、更完整、更灵活的架构。行为树可以适应NPC典型的简单大脑功能,但绝对不能适应人类驱动的玩家。

有一篇非常好的文章让你深入了解行为树。 行为树在各个方面都优于FSM。它是可扩展的,并且在逻辑上易于阅读。

有一篇非常好的文章可以让您深入了解行为树。 行为树在各个方面都优于FSM。它是可扩展的,并且在逻辑上易于阅读。

我在FSM方面遇到的问题是:1。如果我有两种状态,例如“水平移动”和“跳跃”,那么如果我想在空中水平移动,那么我需要创建第三种状态,如“在空中水平移动”。这只是一个例子,但由于我的游戏中有很多状态,这些中间状态将成为一个问题。(我读到下推自动机在某种程度上解决了我的问题,但我并没有深入研究)2。例如,我仅将此FSM用于移动(如行走、奔跑、跳跃、滑动等),但最近我需要为作战系统创建FSM,并且我需要创建条件“如果玩家手持重斧头,他不能跳跃”。所以我需要同步这两个状态机。我认为,有这么多州,这将很困难。或者您是否建议任何特定的FSM实现?您必须构建一个状态机,该状态机反过来利用Mecaim状态机来管理动画,可能带有根运动转换以获得更好的真实感:这并不容易,需要大量工作和数千行代码。对于复杂的玩家控制器,我最终使用了资产商店中的Opsive Ultimate Character Controller,原因很简单,因为随着时间的推移,维护一个非常复杂的控制器的成本对于我的小工作室来说无法扩展。谢谢你的回答。我决定,行为树将不会是最好的方式为球员。我将尝试使用animator/animancer,因此我将保持与我的架构进展情况的联系。如果我有两种状态,例如“水平移动”和“跳跃”,那么如果我想在空中水平移动,那么我需要创建第三种状态,如“在空中水平移动”。这只是一个例子,但由于我的游戏中有很多状态,这些中间状态将成为一个问题。(我读到下推自动机在某种程度上解决了我的问题,但我并没有深入研究)2。例如,我仅将此FSM用于移动(如行走、奔跑、跳跃、滑动等),但最近我需要为作战系统创建FSM,并且我需要创建条件“如果玩家手持重斧头,他不能跳跃”。所以我需要同步这两个状态机。我认为,有这么多州,这将很困难。或者您是否建议任何特定的FSM实现?您必须构建一个状态机,该状态机反过来利用Mecaim状态机来管理动画,可能带有根运动转换以获得更好的真实感:这并不容易,需要大量工作和数千行代码。对于复杂的玩家控制器,我最终使用了资产商店中的Opsive Ultimate Character Controller,原因很简单,因为随着时间的推移,维护一个非常复杂的控制器的成本对于我的小工作室来说无法扩展。谢谢你的回答。我决定,行为树将不会是最好的方式为球员。我将尝试使用animator/animancer,因此我将保持与我的架构进展情况的联系。