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 创建一个控制敌人的脚本

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

转载于:https://www.cnblogs.com/weiqiangwaideshijie/p/7161099.html

Unity3D之FSM有限状态机相关推荐

  1. FSM有限状态机学习及Unity3D案例讲解

    引言:近日忙于毕业论文,今天看到涨了3个粉丝,不甚惊喜.遂今日更新FSM有限状态机学习,希望大家共同进步! 开发版本:Unity 2017.1.1f1.VS 2017 适合人群:初学Unity者 一. ...

  2. 游戏 AI 设计之 FSM 有限状态机

    FSM 有限状态机 一.概述 有限状态机(finite-state machine,缩写:FSM)又称有限状态自动机(finite-state automaton,缩写:FSA),简称状态机,是表示有 ...

  3. Unity下FSM有限状态机详解

    FSM有限状态机详解 文章目录 FSM有限状态机详解 FSM的定义 FSM的适用性 FSM的设计分析 状态转换表的使用 状态和条件的标识符Id 条件基类的设计 FSMTrigger 状态基类的设计 F ...

  4. unity3D FSM有限状态机(状态设计模式)

    前言 为了解决游戏过于麻烦的状态转换(人物动画过多),使用有限状态机. 缺点:代码量大 编写 使用多态和Switch new(状态设计模式) 类的介绍 PlyayCtrl:挂载在角色身上的脚本,用来控 ...

  5. Unity FSM(有限状态机)

    先看下效果: FSM ,有限状态机,一个可以枚举出有限个状态,并且这些状态在特定条件下是能够来回切换的. 在游戏中经常看到的一些AI,如敌人巡逻,巡逻过程中看到玩家就追击,追上了就攻击,追不上并且有了 ...

  6. Lua FSM有限状态机的实现

    最近做项目,因为要将游戏的代码基本全部改成lua的,对c#层面的东西基本只要unity的生命周期就可以了.刚开始接触lua,心痒痒,决定上网买了<Lua游戏AI开发指南>看看,决定实现一个 ...

  7. FSM有限状态机-状态图画法

    fsm包含三个组件:状态(必须有).动作(非必须).事件(非必须) 状态:体现当前状态机处在状态,比如,开状态,关状态等,同时状态有一个访问次数/visit的值,这个决定它需要触发多次才能发生状态转移 ...

  8. U3D架构系列之- FSM有限状态机设计五

    在设计五中,我们把事件系统EventSystem实现一下.这个EventSystem类主要实现的是事件的注册,触发,以及分发Event消息的作用.提供接口对外使用的.在这里面为了功能扩展方便用了好多模 ...

  9. FSM有限状态机设计(Logisim)

    第1关:时序逻辑电路的分类 第2关:6进制递增计数器--状态转换组合逻辑设计 实验任务 完成6进制递增计数器的状态转换组合逻辑的设计. 点击生成即可 第3关:6进制递增计数器--输出函数组合逻辑设计 ...

最新文章

  1. Learn Java - Chapter 1 变量(Variables)-数组(Arrays)
  2. 如何理解subplot绘制不规则子图的参数设置
  3. 各种排序总结(六)归并排序
  4. Why manually change will not trigger text determination case 2
  5. java keytool证书工具使用小结
  6. 分布式理论和分布式一致性协议
  7. python-学生管理系统--1框架部分内容以及代码
  8. 48 个 Linux 面试问题和答案
  9. Android 声音采集回声与回声消除
  10. 三星手机刷机后显示无服务器,三星Odin刷机工具连接不上_Odin工具识别不了手机的问题...
  11. 金蝶中间层服务器组件注册使用信任方式,提示:用户名或密码错误
  12. 喜迎国庆 | 图扑数字孪生军演,构建跨域作战体系
  13. 工作站 显卡 测试软件,CineBench R15测试:考验CPU+GPU_工作站移动工作站-中关村在线...
  14. python——合数分解
  15. 【改进和增强Microsoft Office应用程序】ExtendOffice软件产品介绍
  16. Matplotlib可视化菜鸟教程
  17. 屌丝程序员和技术大拿的区别是什么?
  18. 利用matplotlib绘制圆环图的案例
  19. centeros7 安装node
  20. 微信小程序如何使用阿里字体图标(用法非常简单适用web)

热门文章

  1. CVPR2020 | 虚拟举办,这29个教程Tutorial 不容错过!
  2. 叠置分析(涉及结果属性和输入图层属性的关系)
  3. android开发板功能,Android中NFC模块PN532开发板应用/原理图/PCB等全部资料
  4. mvp关联activity生命周期_Android MVP架构从入门到精通-真枪实弹
  5. vscode beautify sass 格式化_最强编辑器 VSCode 系列之插件推荐【不定期更新】
  6. python的for语句写新的字符串_Python:for循环遍历对象,而不是字符串
  7. oracle sql 转小写转大写,OracleSQL金额小写转大写函数
  8. EifficientDet论文笔记
  9. wdcp mysql数据库无法链接_MySQL数据库之阿里云服务器中centos7 解决wdcp中不能远程访问mysql服务的问题...
  10. ES6-set集合应用