简单的有限状态机Unity独家写法(呸~厚颜无耻之人)
博主不是一个会写博客的人,也不会去扫盲什么事有限状态机,但凡会用百度的同学自己搜一下大把大神文章给你们拜读,这里我介绍的是最最最简单的有限状态机写法,当然也是看别人的代码学习来的。
最最最简单的有限状态机就是利用一系列的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独家写法(呸~厚颜无耻之人)相关推荐
- Unity单例模式写法
Unity单例模式写法 看到一篇文章总结的,想转载一波 单例一:最简单最常用的写法 A - 继承于MonoBehaviour public class Singleton : MonoBehaviou ...
- 《游戏人工智能编程》学习笔记二——简单的有限状态机
1.有限状态机的定义 定义:一个有限状态机是一个设备,或是一个设备模型,具有有限数量的状态,它可以在任何给定的时间根据输入进行操作,使得从一个状态变换到另一个状态,或者是促使一个输出或者一种行为的发生 ...
- Unity 3D 创建简单的几何模型 || Unity 3D Assets 游戏资源目录管理
Unity 3D 创建简单的几何模型 Unity 3D 是一个强大的游戏开发引擎.在游戏开发中使用的模型常常是从外部导入的,Unity 3D 为了方便游戏开发者快速创建模型,提供了一些简单的几何模型, ...
- Unity 工具 之 图集根据切割为一张张单张图片的简单封装(Unity 自带 SpritePackage 打包图集的性能优化)
Unity 工具 之 图集根据切割为一张张单张图片的简单封装(Unity 自带 SpritePackage 打包图集的性能优化) 目录 一.简单介绍 二.实现原理 三.注意事项 四.实现步骤 五.关键 ...
- Ugurgallen只是使用ps的简单拼贴技术,却刺痛42万人的心!
Ugurgallen只是使用ps的简单拼贴技术,却刺痛42万人的心!网上疯传的知名博主Ugurgallen通过两种生活的拼贴和对比,展示一个真实存在的世界!ps是一款功能强大的图片编辑处理软件,使用非 ...
- 【游戏设计模式】之三 状态模式、有限状态机 Unity版本实现
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/52824776 作者:毛星云(浅 ...
- 状态模式、有限状态机 Unity版本实现
游戏开发过程中,各种游戏状态的切换无处不在.但很多时候,简单粗暴的if else加标志位的方式并不能很地道地解决状态复杂变换的问题,这时,就可以运用到状态模式以及状态机来高效地完成任务.状态模式与状态 ...
- 【游戏设计模式】之三 状态模式 有限状态机 Unity版本实现
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/52824776 作者:毛星 ...
- 简单工厂模式 - Unity
文章目录 简单工厂模式 结构 实现 - Unity 利与弊 简单工厂模式 工厂模式分为三种 简单工厂 工厂方法 抽象工厂 简单工厂模式是这三种中最简单的,也是后两种的基础. 简单工厂模式不在 GoF ...
最新文章
- 4g8核支持多少php进程,服务器8核16g内存,同时有1000多人在抢红包,有502怎么办?...
- 公司网络问题----------网络设备老化的问题
- winner or loser
- mysql 在时间上加120s_sqlserver日期推算(年,季度,月,星期推算)
- yuv格式转换是那个组织定义的_AI 如何赋能摄像机?这场沙龙为你解锁“软件定义”新概念...
- 452. 用最少数量的箭引爆气球(贪心算法+思路+详解)07
- 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人
- 英文数据集txt_YOLOv5在建筑工地中安全帽佩戴检测的应用(已开源+数据集)
- java终结方法_Java终结任务:Callable和Future
- HTML5+CSS期末大作业:明星主页介绍(7页) 简约个人网页制作 大学生个人网页设计模板 学生个人博客网页成品 简单个人网站作品下载 静态HTML CSS个人网页作业源代码
- EMQ优特云-贵阳娃哈哈生产基地物联网能耗监控项目回顾与展望
- 操作系统实验一 添加内核模块
- 【Linux常用指令】grep命令常见用法
- Activiti工作流知识点:
- 华为模拟器dhcp中继
- Bootstrap轮播插件,代码步骤
- 推荐系统3--FM和FFM
- 关于字体和字体微调(Hinting )的知识
- 欧盟委员会将批准微软收购Skype的交易
- 华为19级工程师三年心血终成趣谈网络协议文档(附清华大牛视频讲解和课件)
热门文章
- 【WinForm】打印机编辑打印内容并实现双排打印
- 【王道考研】操作系统 笔记 第一章
- ❤️❤️马上安排!闺女想在游戏里成为【超人】,Python游戏开发模块Pygame系列之【跳跃的小球】❤️❤️源码
- 飞塔防火墙VOIP ALG参数导致SIP外呼无声音的坑
- Docker 映射端口telnet不通
- 计算机网络系统不可用,网络连接不可用,小编教你电脑网络连接不可用怎么办...
- 中职高二学生计算机学情分析,高二学生学习数学的学情分析.doc
- Linux面板体验与推荐 AMH、AppNode、WDAP、宝塔
- C语言--- 什么是位域?
- IE无法上网,远程计算机或设备将不接受连接,其他浏览器可用