godot-statecharts
nodeベースでstateを表現
state nodeの配下にtransition Nodeを配置
transitionは複数定義可能
transtionにはどのeventに反応するかを設定
eventは文字列ベース
ただしEditor UIでは既存eventならドロップダウンメニューから選択可能
複数定義の場合は上から順にtransitionを評価。
最初に合致したtranstionを発動
条件式等でevent+反応する条件を追加可能
Guard property
eventと組み合わせることで複雑な条件のtranstionを作成できる
automatic transitoinを組み合わせると何のeventがなくてもtransitionが発生する
automatic transtitionとGuardを組み合わせるとGuard条件式だけで遷移するtranstionも作れる
automatic transitionは何かしらのイベント発生のときしか評価されない点は注意
毎フレーム 評価しているわけではない
eventを発行することでtranstion
StateChart.send_event(event:String)
Transitoin.take()をつかうと直接遷移を発生させる。
state遷移時、またはstate時に実行されるメソッドはシグナルにフックさせる
例えばstate実行に何かしたい場合は毎フレームシグナルを飛ばすことで実現しているっぽい
state_physics_processing
stet_procerssing
stateの並列を表現つかえるのが特徴
stateノードごと並行して関数を実行できるからだろう
state遷移の遅延実行機能も少し面白い
StateChartSerializerを使うとStateを保存できる
https://www.youtube.com/watch?v=E9h9VnbPGuw