※arbor記事一覧はこちら
続きました。
前の記事はこちら
【unity】Arbor3(ステートマシン)始めました1【アセット】 – gamebox
本題の前に…
ステートマシン初心者の私がなんとなく考えている事は「ノードの数はそんなに増やしたくないなあ」です。
UEのブループリントの様に足し算すらノードを使って計算するようなステートマシンは作りたくない。
(それならプログラム書く)
私がステートマシンに求める物は
・状態遷移の可視化
・コンパイル回数の削減
・プログラマーとプランナーの作業分担。双方が作業しやすくなる様な仕組みづくり
です。
その為、プログラムの一行1ノードの様なステートマシンではなく、一つの処理の塊(状態が遷移する部分はその限りではない)が一つのノードで表現できないかなあと考えています。
こっから本題!
この前提で今回は、arborのスクリプトを書く学習も兼ねて、
FSM挙動:ActivateGameObjectを拡張して、時間でON/OFFできるようにしてみました。
・DelayOnTime:ここで指定した時間後にオブジェクトをONにする
・DelayOffTime:ここで指定した時間後にオブジェクトをOFFにする
機能を付け足します。
元の
ActivateGameObject.csをコピーして、ActivateGameObjectDelay.csを。
インスペクタ拡張のエディター用関数、ActivateGameObjectInspector.csをコピーして、ActivateGameObjectDelayInspector.cs を書きました。
ActivateGameObjectDelayInspector.cs
実行結果はこちら。
「デスクリムゾン」の文字が一定時間後に表示されて、一定時間後に消えます。
このプログラムを書く時にarborのフォーラムに質問したのですが、
作者様に迅速に質問に答えてもらって実装する事ができました。
ありがたい!
https://forum-arbor.caitsithware.com/index.php?language=ja
ところで…
これ作ってみたけど、普通にノードで時間待ちしてもいいかもしれないな…
続くと思います
追記:続きました
【unity】Arbor3(ステートマシン)始めました3【アセット】 – gamebox
※arbor記事一覧はこちら
コメント