美文网首页
分层状态机-Sub State

分层状态机-Sub State

作者: JJJJJJJJJJC | 来源:发表于2019-07-15 23:24 被阅读0次

State

  • 不用说了.转换到谁就是谁.

State转换到Exit

  • 如果Exit是顶级.那么状态会转换到default state.
  • 如果Exit是大状态机里的.那么就根据大状态机的转换来转换.如果大状态机没条件转换或没有任何 转换.那么会 转换 到最初的default state.
  • 所以避免transition到Exit.应该尽量 转换 到具体的某个state或大state.

State转换到大状态机

  • 如果大状态机里的Entry有Make Transition有连接并且条件成功.则转换到目标状态.
  • 否则转换到Entry连接的Set StateMachine Default State默认目标.

大状态机转换到其他State

  • 大状态连到State。但是大状态.A没连。大状态机.A不会转换到State。

Entry

  • Set StateMachine Default State设置默认状态.如果Make Transition没有或条件不成立.则执行连接的默认状态.
  • Make Transition相比Entry的StateMachine Default State会优先考虑Make Transition所连接的状态。(除了Base Layer最顶层的第一次运行)

Any State

  • 真·任意状态都会转换到目标状态.只要条件成立.无视是否在同个大状态中.
  • Has ExitTime该是怎样的还是怎样的.
  • 如果想限制仅在同个大状态中才会Any State转换.则需要2个条件加脚本的协助.其中一个条件为bool.通过脚本的进入来设为true.退设为false.
  • 如果条件一直成立.则会一直转换到目标状态.一直触发脚本的Enter/Exit.这里要小心.

StateMachineBehaviour

  • 最顶层的先进入. 退出也是最顶层的先退出.更新也是.也就是说所有函数都是顶层先运行.
  • 当状态发生转换时.上层-顶层都会出发Exit和Enter函数事件.
  • Exit事件并不能非常准确的被调用.

状态过渡虽然可以让动画平滑.并且在期间随时可以转换.但是,过渡期间没完成,下个状态是不能转换都另外一个状态的.即使条件成立,没有退出时间.



如果运动1运行到2.5秒(50%一半)的时候,转换到运动2。那么运动2的比例是从5秒(50%也是一半)开始.
但是,如果不同时间是0。动画可以动5秒。如果不同时间是1。那么动画可以动10秒。如果在运行到一半时不同时间转成1,那么动画时长自然是5 x 0.5+10 x 0.5=7.5s

关于SMB:进入混合树。只会触发一次Enter。小树中的小状态转换不会触发Enter和Exit.

State连接中的"或"条件

  • 由于可以重复多次连接..每次连接用不同的条件就能形成"或"运算条件

相关文章

网友评论

      本文标题:分层状态机-Sub State

      本文链接:https://www.haomeiwen.com/subject/chsokctx.html