• Unity3D之FSM有限状态机


    1状态基类FSMstate的创建

    1.1我们首先创建出来俩个全局枚举,用来保存当前状态的ID和转换的条件transition。

     

    1.2 我们所以的状态类给抽象出来一个基类出来,在创建一个字典来保存转换条件所对应的状态ID,定义一个字段来保存当前的状态的ID。这个ID是当前状态类的标识。

      

    1.3 定义俩个方法,用来“添加转换条件”和“删除转换条件”。

     

     1.4 根据转换条件获得状态的ID

     

    1.5 提供本状态的四个逻辑方法

     

    2 状态管理类FSMSystem的创建。用来管理所有的状态。

    2.1 定义字典来保存状态ID对应的状态和当前处于的状态和状态ID

     

    2.2增加俩个“添加状态”和“删除状态”的功能。

     2.3 添加执行状态切换的方法,用来改变当前所处的状态。

     2.4 添加对当前状态调用的行为和切换到下个状态的方法。

       这样我们的FSM差不多就完成了,但是这样比如敌人有俩个状态,分别是“巡逻”状态和一个”追逐“主角的状态。假如敌人当前处于“巡逻”状态,当主角靠近敌人的时候,怎么去切换到“追逐”

    主角的状态呢?通过前面我们知道,状态的切换是通过FSMSystem去管理的,所以我们在FSMState这个基类里面保有对FSMSystem的引用,这样每个状态的切换,就很容易去实现了。

     

    3 下面我们以敌人巡逻,追逐主角的例子来应用我们的状态机。

    3.1 增加一个PartalState类,用来敌人的巡逻。

    3.2 在新建一个”追逐“主角的类

     3.3 创建一个控制敌人的脚本

    这样我们的敌人的建议的状态机就完成了。

  • 相关阅读:
    PIE SDK SFIM融合
    PIE SDK PCA融合
    c# 粘贴复制
    dev gridview 单元格值拖拽替换
    sql 行数据找出最大的及所有数据最大的
    mvc 登陆界面+后台代码
    mvc控制器返回操作结果封装
    Java 未来行情到底如何,来看看各界人士是怎么说的
    Java工程师修炼之路(校招总结)
    ​为什么我会选择走 Java 这条路?
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/7161099.html
Copyright © 2020-2023  润新知