gamebox

unityとかゲームとか

【arbor第2回】Arbor3(ステートマシン)始めました2【アセット】

※arbor記事一覧はこちら 

 

続きました。
前の記事はこちら

【unity】Arbor3(ステートマシン)始めました1【アセット】 - gamebox

 

本題の前に…
ステートマシン初心者の私がなんとなく考えている事は「ノードの数はそんなに増やしたくないなあ」です。

 

UEのブループリントの様に足し算すらノードを使って計算するようなステートマシンは作りたくない。
(それならプログラム書く)

 

私がステートマシンに求める物は
・状態遷移の可視化
・コンパイル回数の削減
・プログラマーとプランナーの作業分担。双方が作業しやすくなる様な仕組みづくり
です。

 

その為、プログラムの一行1ノードの様なステートマシンではなく、一つの処理の塊(状態が遷移する部分はその限りではない)が一つのノードで表現できないかなあと考えています。

 

こっから本題!


この前提で今回は、arborのスクリプトを書く学習も兼ねて、

FSM挙動:ActivateGameObjectを拡張して、時間でON/OFFできるようにしてみました。
 ・DelayOnTime:ここで指定した時間後にオブジェクトをONにする
 ・DelayOffTime:ここで指定した時間後にオブジェクトをOFFにする
機能を付け足します。

f:id:rgamebox:20190522195452p:plain

元の
ActivateGameObject.csをコピーして、ActivateGameObjectDelay.csを。
インスペクタ拡張のエディター用関数、ActivateGameObjectInspector.csをコピーして、ActivateGameObjectDelayInspector.cs を書きました。

 

ActivateGameObjectDelay.cs

ActivateGameObjectDelayInspector.cs

 

実行結果はこちら。

「デスクリムゾン」の文字が一定時間後に表示されて、一定時間後に消えます。

f:id:rgamebox:20190522200011g:plain

 

このプログラムを書く時にarborのフォーラムに質問したのですが、

作者様に迅速に質問に答えてもらって実装する事ができました。

ありがたい!
https://forum-arbor.caitsithware.com/index.php?language=ja

 

ところで…

これ作ってみたけど、普通にノードで時間待ちしてもいいかもしれないな…

 

続くと思います

 

追記:続きました

【unity】Arbor3(ステートマシン)始めました3【アセット】 - gamebox

 

 

※arbor記事一覧はこちら