https://blog.theknightsofunity.com/finite-state-machine-part-1/
有限状态机[第1部分]
有限状态机可能是所有开发人员在开始使用Unity开发游戏的几年中至少听到过一次。
到底什么是有限状态机?好吧,有很多要讲的内容,这就是为什么我们至少要做三个部分。基本上,有限状态机(FSM)是一种自动化发挥作用的设计模式。通常在AI实现中用于某些行为。即:步行,进攻,空转等。FSM也可以在NPC中实现,并且在开放世界RPG中最常见。
让我们将FSM视为监督者:
现在,监督者将检查AI的状态。AI会根据状态做出反应。此外,取决于AI的类型(无论是飞行类型,地面类型还是游泳类型),AI都会执行的动作。在这种情况下,FSM告诉AI他处于“巡逻状态”,并将告诉AI“从A步行到B”。除非状态发生变化,否则AI只会从A转到B。
要更改状态,首先我们必须有一个条件。在左图中,AI看到了玩家,并告诉了监督者。现在,监督者将更改AI的状态,并将开始攻击。
同样,由于玩家不在视线范围内,因此AI重新开始巡逻。
从这些制作不佳的工程图中可以看出,每个状态在更改为其他状态之前都有其条件。
让我们看下面的图。
这是正常AI的状态图。红线表示状态更改所需的条件为假。该图非常简单。如果AI到达目的地,它将处于空闲状态,反之亦然。如果他看到敌人,它将开始进攻。FSM现在可以处理状态之间的所有转换,并帮助AI执行该状态可用的操作。
现在,让我们分解一下FSM系统。
主要的FSM系统-这将是控制AI状态并检查状态之间条件的人。主FSM将包含所有状态,并将处理来自
- FSM动作的事件调用。
- FSM状态–确定AI的当前状态,并包含所有放置在AI上的操作。
- FSM动作–这将是AI在特定状态下AI会执行的动作。
现在我们将如何做?让我们将所有内容都绘制出来。
这将是我们FSM的循环。首先,我们初始化FSM,创建状态,创建动作并将它们全部映射在一起。映射它们之后,我们现在将启动FSM并指示AI将开始的状态。现在,AI将更改为特定状态,FSM将初始化动作,对其进行更新,直到动作完成,并发送一个指示动作完成的事件。最后,FSM将返回并更改状态。
另一件会导致状态改变的事情是当一个事件在AI逻辑之外被调用时。就像我们创建指挥官并告诉所有士兵停止移动时一样。
至此,我们的FSM教程的第一部分结束了。我希望我已经向您很好地解释了FSM。如果仍然不了解,可能您需要首先查看实际运行中的所有内容,并亲自扫描所有内容。这就是我学到的。
在下一部分中,我们将首先再次讨论一些简单的现实FSM实现,??并且我们将从头开始编写整个FSM引擎脚本!