[Unity动画]06.子状态机

时间:2023-03-09 14:19:38
[Unity动画]06.子状态机

参考链接:

https://www.jianshu.com/p/6b1db3d060ac?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

子状态机,就是在状态机里面,再创建一个新的状态机,这个新的状态机就叫子状态机。

1.创建一个子状态机

右击Animator窗口的空白区域->Create Sub-State Machine,这里我将其命名为Die,然后双击点进去。可以看到,在子状态机中同样存在三种状态,Entry/Exit/Any State,这三种状态是属于子状态机的,而非父状态机。而这里的(Up)Base Layer指的是父状态机,这样就保证了子状态机里面的状态能够与父状态机进行交互。

[Unity动画]06.子状态机

2.进入子状态机

拖入一个Dying动画进去,此时Entry会连接到Dying,表示该子状态机的默认状态是Dying。接着回到父状态机,将Idle连接子状态机,此时会出现选择,连接子状态机 or 连接子状态机里的状态。连接子状态机,实际上相当于连接子状态机中的Entry状态。这两种情况都可以试着去连一下,如果是Idle->Die,则在子状态机中,是Entry跳到Dying;如果是Idle->Dying,则在子状态机中,是(Up)Base Layer跳到Dying。

[Unity动画]06.子状态机

[Unity动画]06.子状态机

3.退出子状态机

退出子状态机的方法有两种。

一是通过子状态机的Exit状态退出。Die状态机退出后,会回到父状态机,因为没有可以跳的状态,所以重新回到父状态机中的Entry状态。

[Unity动画]06.子状态机

二是通过连接父状态机。如下,子状态机中的Dying连接父状态机中的Run,Die状态机退出后,会回到父状态机,然后跳到Run。

[Unity动画]06.子状态机

[Unity动画]06.子状态机