我尝试过几种有限状态机的实现,如使用谓词来间接转换状态机从一个状态到另一个状态,或是状态机自己转换到其他状态,我不确定有限状态机应该如何使用。目前我只是认为它是协调状态的一个工具,但我不确定它应该有多少权力,也不确定外部影响应该有多少。例如,我正在工作的一个项目中,实体可以在屏幕外继续存在,模拟执行任务并移动,甚至当它们没有被渲染时也可以。可能我有LOD1或类似的渲染级别,它是通过确定实体是否足够接近摄像机来渲染来确定的,但当它没有被渲染时,它可能处于一个状态,如未渲染状态或未渲染行进状态,但当它被渲染时,状态机会通过在实体的渲染方法中简单地执行statemachine.changestate(new state)来更改当前状态。然而,大多数其他状态,如巡逻状态->攻击状态。如果在巡逻状态中发现了什么,它会自己转换为攻击状态。对于我来说,这感觉是不一致的。我正在努力工作一个大型项目,但我目前还不确定如何做,所以我无法建立一个定义明确的架构,目前我只是尝试着做,如果它不工作,我就去学习为什么。我不确定我的当前方法是否完全错误。它确实可以工作,我也不确定是否应该感到满意。理想情况下,模拟状态将非常轻量级,并且可能甚至不需要状态机来驱动它们,而是使用Level2LODSimController或类似的控制器,并且实体将设置一个活动控制器,这个控制器将由一个中心系统更新。然而,我也不确定这种方法是否更好。同时,我希望大部分的模拟工作都通过并行任务来完成,这就是为什么我目前还不确定任何具体的方法。
有限状态机的规则?
评论 (0)