博主不是一个会写博客的人,也不会去扫盲什么事有限状态机,但凡会用百度的同学自己搜一下大把大神文章给你们拜读,这里我介绍的是最最最简单的有限状态机写法,当然也是看别人的代码学习来的。
最最最简单的有限状态机就是利用一系列的switch-case语句写的,简单粗暴不容易维护,但是针对只有几个状态的模型就非常实用了。
现在给大家安利的是利用Unity协程的方式实现有限状态机,废话不多说,上码~

 private string locoState = "Locomotion_Stand";
void Start(){//起一个协程,处理动画状态机StartCoroutine(AnimationStateMachine());}

上面试有限状态机的入口。

 IEnumerator AnimationStateMachine(){//根据locoState不同的状态来处理,调用相关的函数while (Application.isPlaying){yield return StartCoroutine(locoState);}}

这个就是用来调用不同状态的处理单元,相当于switch语句那种结构体,

  IEnumerator Locomotion_Stand(){do{UpdateAnimationBlend();yield return new WaitForSeconds(0);} while (agent.remainingDistance == 0);//未到达目标点,转到下一个状态Locomotion_MovelocoState = "Locomotion_Move";yield return null;}
  IEnumerator Locomotion_Move(){do{UpdateAnimationBlend();yield return new WaitForSeconds(0);//角色处于OffMeshLink,根据不同的地点,选择不同动画if (agent.isOnOffMeshLink){locoState = SelectLinkAnimation();yield break;}} while (agent.remainingDistance != 0);//已经到达目标点,状态转为StandlocoState = "Locomotion_Stand";yield return null;}

这里面利用的原理是 用这个协程方法AnimationStateMachine()循环调用协程,而不同的状态就是不同的协程,当状态切换时就在当前状态里给locoState 赋值,AnimationStateMachine()协程会根据不同locoState 调用不同协程

简单的有限状态机Unity独家写法(呸~厚颜无耻之人)相关推荐

  1. Unity单例模式写法

    Unity单例模式写法 看到一篇文章总结的,想转载一波 单例一:最简单最常用的写法 A - 继承于MonoBehaviour public class Singleton : MonoBehaviou ...

  2. 《游戏人工智能编程》学习笔记二——简单的有限状态机

    1.有限状态机的定义 定义:一个有限状态机是一个设备,或是一个设备模型,具有有限数量的状态,它可以在任何给定的时间根据输入进行操作,使得从一个状态变换到另一个状态,或者是促使一个输出或者一种行为的发生 ...

  3. Unity 3D 创建简单的几何模型 || Unity 3D Assets 游戏资源目录管理

    Unity 3D 创建简单的几何模型 Unity 3D 是一个强大的游戏开发引擎.在游戏开发中使用的模型常常是从外部导入的,Unity 3D 为了方便游戏开发者快速创建模型,提供了一些简单的几何模型, ...

  4. Unity 工具 之 图集根据切割为一张张单张图片的简单封装(Unity 自带 SpritePackage 打包图集的性能优化)

    Unity 工具 之 图集根据切割为一张张单张图片的简单封装(Unity 自带 SpritePackage 打包图集的性能优化) 目录 一.简单介绍 二.实现原理 三.注意事项 四.实现步骤 五.关键 ...

  5. Ugurgallen只是使用ps的简单拼贴技术,却刺痛42万人的心!

    Ugurgallen只是使用ps的简单拼贴技术,却刺痛42万人的心!网上疯传的知名博主Ugurgallen通过两种生活的拼贴和对比,展示一个真实存在的世界!ps是一款功能强大的图片编辑处理软件,使用非 ...

  6. 【游戏设计模式】之三 状态模式、有限状态机 Unity版本实现

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/52824776 作者:毛星云(浅 ...

  7. 状态模式、有限状态机 Unity版本实现

    游戏开发过程中,各种游戏状态的切换无处不在.但很多时候,简单粗暴的if else加标志位的方式并不能很地道地解决状态复杂变换的问题,这时,就可以运用到状态模式以及状态机来高效地完成任务.状态模式与状态 ...

  8. 【游戏设计模式】之三 状态模式 有限状态机 Unity版本实现

     本系列文章由@浅墨_毛星云 出品,转载请注明出处.    文章链接: http://blog.csdn.net/poem_qianmo/article/details/52824776  作者:毛星 ...

  9. 简单工厂模式 - Unity

    文章目录 简单工厂模式 结构 实现 - Unity 利与弊 简单工厂模式 工厂模式分为三种 简单工厂 工厂方法 抽象工厂 简单工厂模式是这三种中最简单的,也是后两种的基础. 简单工厂模式不在 GoF ...

最新文章

  1. 4g8核支持多少php进程,服务器8核16g内存,同时有1000多人在抢红包,有502怎么办?...
  2. 公司网络问题----------网络设备老化的问题
  3. winner or loser
  4. mysql 在时间上加120s_sqlserver日期推算(年,季度,月,星期推算)
  5. yuv格式转换是那个组织定义的_AI 如何赋能摄像机?这场沙龙为你解锁“软件定义”新概念...
  6. 452. 用最少数量的箭引爆气球(贪心算法+思路+详解)07
  7. 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人
  8. 英文数据集txt_YOLOv5在建筑工地中安全帽佩戴检测的应用(已开源+数据集)
  9. java终结方法_Java终结任务:Callable和Future
  10. HTML5+CSS期末大作业:明星主页介绍(7页) 简约个人网页制作 大学生个人网页设计模板 学生个人博客网页成品 简单个人网站作品下载 静态HTML CSS个人网页作业源代码
  11. EMQ优特云-贵阳娃哈哈生产基地物联网能耗监控项目回顾与展望
  12. 操作系统实验一 添加内核模块
  13. 【Linux常用指令】grep命令常见用法
  14. Activiti工作流知识点:
  15. 华为模拟器dhcp中继
  16. Bootstrap轮播插件,代码步骤
  17. 推荐系统3--FM和FFM
  18. 关于字体和字体微调(Hinting )的知识
  19. 欧盟委员会将批准微软收购Skype的交易
  20. 华为19级工程师三年心血终成趣谈网络协议文档(附清华大牛视频讲解和课件)

热门文章

  1. 【WinForm】打印机编辑打印内容并实现双排打印
  2. 【王道考研】操作系统 笔记 第一章
  3. ❤️❤️马上安排!闺女想在游戏里成为【超人】,Python游戏开发模块Pygame系列之【跳跃的小球】❤️❤️源码
  4. 飞塔防火墙VOIP ALG参数导致SIP外呼无声音的坑
  5. Docker 映射端口telnet不通
  6. 计算机网络系统不可用,网络连接不可用,小编教你电脑网络连接不可用怎么办...
  7. 中职高二学生计算机学情分析,高二学生学习数学的学情分析.doc
  8. Linux面板体验与推荐 AMH、AppNode、WDAP、宝塔
  9. C语言--- 什么是位域?
  10. IE无法上网,远程计算机或设备将不接受连接,其他浏览器可用