狀態圖 (State Machine) ,是類似於本文章要介紹的主軸: 有限狀態機 (Finite-State Automation),有限的意思是有限個數的狀態以及有限個狀態之間轉移動作的行為,有限狀態機也常被用於數學模型。
這個看似很專業的名詞,可以拿出 Unity 的動畫狀態機來形容,在做角色動畫的時候,會使用這樣的狀態機去設定角色目前要播放哪一組動畫。
比方說 Unity 2D 遊戲有提供一組 Unity Chan! 免費素材,上面有這個角色的不同狀態。
以變數的角度來說,現在有一組 目前狀態
變數,目前狀態變數,決定下方狀態機圖應該處於哪個位置。
如果現在狀態是 閒置 (Idle)
,角色就會一直播放閒置的動畫,如果正在 跑步 (Running)
,就會播放跑步動畫,如果從高處平台 下降 (Airbone)
,就會播放相應的動畫。
箭頭的意思,是現在狀態會如何轉移出去,比方說空降後鍵盤不動了,就會往閒置的動畫播放,如果空降後還是繼續跑步,就會轉到 Running 跑步
動畫去。
使用狀態圖來表示的話,繪圖就會有事件進入點,請參考下圖。
初始進入點
是整個狀態的入口; 任何狀態也可能是進入點,不過這裡的任何狀態,表示的是如果 目前狀態變數
被切換到 瀕死動畫
,那整個動畫的順序就會改為從上面繼續做。
而 離開
,不在循環的狀態機之中,如果被切換到這個狀態,就會直接結束整個狀態機週期。
狀態機的連線也可以使用 function 名稱附註在此狀態可以執行哪些 Funtion 以切換。
有限狀態機的運算不一定是封閉的,封閉性可延伸閱讀確定有限狀態機 (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/