SubStateMachineの戻りのリンクを拡張したい

ここは、Arbor開発者への要望を行うためのフォーラムです。
要望に必要な項目は以下の通りです。
  • Arborを使って何をしようとしているか。
  • 具体的にどこが不便で困っているか。
  • 改善するにはどうすればよいか。
注意点:
  • 詳しい状況がわからない要望については答えられません。
  • ユーザー様のプロジェクトの仕様上の固有の問題に対する要望については答えられません。
  • Unityの仕様上の問題に対する要望には答えられません。

This is a forum for requesting Arbor developers.
The items required for the request are as follows.
  • What are you trying to do with Arbor?
  • Specifically, where are you inconvenient and in trouble?
  • What should I do to improve?
Attention point:
  • We can not answer requests that do not know the detailed situation.
  • We can not answer your request for specific problems in the specification of your project.
  • We can not answer your request on Unity's specification issues.

Forum rules
要望に必要な項目は以下の通りです。
  • Arborを使って何をしようとしているか。
  • 具体的にどこが不便で困っているか。
  • 改善するにはどうすればよいか。
注意点:
  • 詳しい状況がわからない要望については答えられません。
  • ユーザー様のプロジェクトの仕様上の固有の問題に対する要望については答えられません。
  • Unityの仕様上の問題に対する要望には答えられません。

The items required for the request are as follows.
  • What are you trying to do with Arbor?
  • Specifically, where are you inconvenient and in trouble?
  • What should I do to improve?
Attention point:
  • We can not answer requests that do not know the detailed situation.
  • We can not answer your request for specific problems in the specification of your project.
  • We can not answer your request on Unity's specification issues.
kag
Posts: 35
Joined: 2017/05/19 08:28

SubStateMachineの戻りのリンクを拡張したい

Post by kag » 2019/11/07 01:57

いつもお世話になっております。

現在SubStateMachineの戻りのリンクがSuccessとFailureしかないため、
TriggerTransitionを使ってみました。
TriggerTransitionを使用すればParentGraphで分岐できなくはないのですが、常駐ステートに同名のMessageを持つTriggerTransitionがあるとそちらが優先されてしまい、SubStateMachineを呼んでいるNodeにあるTriggerTransitionのTransition TimingをLate Update Overwriteにしないと
意図したとおりに動きませんでした。
※現実的には同名のMessage名を設定することはほぼないのですが、複数人で作っていると被ることはあり得るので…。

そこで、EndStateMachineのように専用のStateで、呼び出したNodeにしか届かないSendTriggerのような機能を標準で用意して頂けると助かります。
もしくは、SubStateMachineのリンクを拡張できてそれを子から疎結合的に呼び出せる(結局は名前文字列になるのでしょうが)ような仕組みであれば、よりスッキリすると思います。

ご検討のほど、よろしくお願いいたします。

添付ファイル
TriggerTest.jpg
・親FSMです。
SubStateノードのTriggerTransitionのTransition TimingをLate Update OverwriteにするとTest1に、 Late Update Dont OverwriteにするとTest2に遷移します。

SubTriggerTest.jpg
・子FSMです。
SendTriigerをSelfにしてもRootGraphにしても挙動が変わりませんでした。
Attachments
SubTriggerTest.jpg
SubTriggerTest.jpg (238.75 KiB) Viewed 22 times
TriggerTest.jpg
TriggerTest.jpg (370.52 KiB) Viewed 22 times

User avatar
caitsithware
管理人
Posts: 307
Joined: 2015/08/17 12:41

Re: SubStateMachineの戻りのリンクを拡張したい

Post by caitsithware » 2019/11/07 02:38

ご要望ありがとうございます。

SubStateMachine内の処理結果によって親グラフ側をより柔軟に分岐させたい、ということですね。
でしたら、以下のような形で子から親に値を受け渡しできますので、渡された値を元に分岐するのが良いかと思います。
  • 子グラフに出力可能なパラメータを追加。
  • EndStateMachineが行われる前までにCalcParameter等で値を設定。
  • 親グラフ側のSubStateMachineで追加したパラメータを引数リストに追加。
  • パラメータをデータフローに出力し、SubStateMachineからの遷移先で判定して分岐。
子グラフ側:押したボタン別にButtonパラメータ(int)に値を設定しEndStateMachine。
ChildGraph.png
ChildGraph.png (175.89 KiB) Viewed 20 times
親グラフ側:受け取ったButtonパラメータ(int)を出力し、遷移先で値を比較して分岐。
ParentGraph.png
ParentGraph.png (124.72 KiB) Viewed 20 times
また、EndStateMachineにSuccessとFailureしかない理由としましては、BehaviourTreeの子グラフとしてFSMを使用している場合、アクションノードの成否にも使用するためとなっています。
親もFSM前提の組み込みスクリプトも用意するとなると逆に混乱のもとにもなりそうです。
パラメータによる値の受け渡しもできますので、SubStateMachine/EndStateMachineの拡張については対応見送りにさせていただきたいです。

SendTriggerを常駐ステートに送らない機能については、特に問題なく対応できそうですので検討いたします。

kag
Posts: 35
Joined: 2017/05/19 08:28

Re: SubStateMachineの戻りのリンクを拡張したい

Post by kag » 2019/11/07 03:29

ご検討ありがとうございます。

パラメータを介した分岐方法を丁寧に教えていただき助かります。
これが使えるときには使いたいと思います。

ただ、見た目のわかりやすさという点で同じノードで分岐したいので、常駐ステートに通知されないSendTriggerにも期待したいと思います。
ありがとうございました。

Post Reply