iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
自我挑戰組

後端工程師與圖的修練系列 第 8

狀態流程圖與有限狀態機

狀態圖 (State Machine) ,是類似於本文章要介紹的主軸: 有限狀態機 (Finite-State Automation),有限的意思是有限個數的狀態以及有限個狀態之間轉移動作的行為,有限狀態機也常被用於數學模型。

這個看似很專業的名詞,可以拿出 Unity 的動畫狀態機來形容,在做角色動畫的時候,會使用這樣的狀態機去設定角色目前要播放哪一組動畫。

比方說 Unity 2D 遊戲有提供一組 Unity Chan! 免費素材,上面有這個角色的不同狀態。

https://ithelp.ithome.com.tw/upload/images/20210918/20092753mTskQKtpmM.png

以變數的角度來說,現在有一組 目前狀態 變數,目前狀態變數,決定下方狀態機圖應該處於哪個位置。

https://ithelp.ithome.com.tw/upload/images/20210918/20092753tHJ79QCb3h.png

如果現在狀態是 閒置 (Idle),角色就會一直播放閒置的動畫,如果正在 跑步 (Running),就會播放跑步動畫,如果從高處平台 下降 (Airbone),就會播放相應的動畫。

箭頭的意思,是現在狀態會如何轉移出去,比方說空降後鍵盤不動了,就會往閒置的動畫播放,如果空降後還是繼續跑步,就會轉到 Running 跑步 動畫去。

使用狀態圖來表示的話,繪圖就會有事件進入點,請參考下圖。

https://ithelp.ithome.com.tw/upload/images/20210918/20092753hCC1EXbyn0.png

初始進入點 是整個狀態的入口; 任何狀態也可能是進入點,不過這裡的任何狀態,表示的是如果 目前狀態變數 被切換到 瀕死動畫,那整個動畫的順序就會改為從上面繼續做。

離開,不在循環的狀態機之中,如果被切換到這個狀態,就會直接結束整個狀態機週期。

狀態機的連線也可以使用 function 名稱附註在此狀態可以執行哪些 Funtion 以切換。

https://ithelp.ithome.com.tw/upload/images/20210918/20092753xIBYzsrCZH.png

Remark

有限狀態機的運算不一定是封閉的,封閉性可延伸閱讀確定有限狀態機 (deterministic finite automation)。

References:
[1] https://zh.codeprj.com/blog/5782c51.html
[2] https://goodlucknetlife.com/unitychan-sword-attack/
[3] https://docs.unity3d.com/420/Documentation/Manual/MecanimAnimationSystem.html
[4] https://terryjryeh.blogspot.com/2019/03/uml-statechart-diagrams-10.html
[5] https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-state-machine-diagram/


上一篇
協作圖
下一篇
資料表集合與文氏圖
系列文
後端工程師與圖的修練31

尚未有邦友留言

立即登入留言