Page 1 of 1

ステートのリンクに、パラメータを設定出来る機能がほしい

Posted: 2018/07/30 01:01
by kkk
ステートマシンにて、ステートのリンクにパラメーターを設定して、接続先に渡す機能がほしいです。
(もしくはそのような機能はありますか?)
例えば、A, B, Move ステートがあるとして、AからMove に接続する場合は、MoveのSpeedが1、BからMoveに接続する場合はSpeedが2と、パラメータのみ変えたい場合が多々あります。今だと、Speed1とSpeed2のMoveステートを作るか、ステート移行する前に、Moveに何らかの方法で直接Speedを設定するしか無いので、複雑化してしまいます。よろしくおねがいします。

Re: ステートのリンクに、パラメータを設定出来る機能がほしい

Posted: 2018/07/30 01:23
by caitsithware
ご要望ありがとうございます。

データの受け渡しについては、現状、ParameterContainerを介すかデータフローに流す方法があります。

ParameterContianer

マニュアル : ParameterContainer

例:
  • Aステートに入った時に、CalcParameterなどを使用してSpeedパラメータに1を設定。
  • Bステートに入った時に、CalcParameterなどを使用してSpeedパラメータに2を設定。
  • MoveステートではFlexibleFloatで宣言したSpeedフィールドにSpeedパラメータを設定。
データフロー

マニュアル : データフロー

例:
  • Aステートから遷移する直前にOutputSlotFloatに1を出力し遷移。
  • Bステートから遷移する直前にOutputSlotFloatに2を出力し遷移。
  • MoveステートではInputSlotFloatの配列を持たせ、InputSlotFloat.updatedTimeを比較して一番新しいデータを使用する。
  • グラフ上で、AステートとBステートからの出力スロットをMoveステートの入力スロットに接続
補足として、こちらは複数の出力を1つの入力に接続する機能がないため、厳密には非推奨な手法となっています。
あくまで参考程度にしてください。

もしこれらの方法で問題があるようでしたら検討いたします。

Re: ステートのリンクに、パラメータを設定出来る機能がほしい

Posted: 2018/07/30 02:27
by kkk
返答ありがとうございます。
たしかにその方法でパラメータ設定可能ですが、移行先でのみ使う変数(クラス変数など)を、リンクでパラメータ設定できれば、便利かと思いました。

ステートが増えてしまいますが、現状でも
A -> A用設定ステート -> Move
B -> B用設定ステート -> Move
なら、スクリプトをいじらなくても設定できそうなので、そちらで対応してみます。

よろしくおねがいします。

Re: ステートのリンクに、パラメータを設定出来る機能がほしい

Posted: 2018/07/30 02:43
by caitsithware
お返事ありがとうございます。

最終的には、便利かどうかは設定方法によるかと思いますが、
結局のところ、「どのパラメータにどんな値をどう設定するか」という課題がまずありますので、
現在のCalcParameterと設定機能的には同じとなり、単純に設定用にCalcParameterを追加しないといけないのが面倒、という話にも思えます。

ひとまず設定できる機能があるという点、スクリプトを自由にカスタマイズできる点を考慮すると、
StateLinkにまでパラメータ設定の固有の機能までは必要ないと思いますがどうでしょうか?

Re: ステートのリンクに、パラメータを設定出来る機能がほしい

Posted: 2018/07/30 03:29
by kkk
設定に、CalcParameterを追加して 接続先にも何かしらの処理が必要になるなら、現状と同じになるので必要性は低そうです。
何もいじらず、接続先の変数を変更できるのであれば、あるなら便利ですね。
現状でもなんとかなるので、可能であればってレベルで大丈夫です。

ありがとうございました。

Re: ステートのリンクに、パラメータを設定出来る機能がほしい

Posted: 2018/07/30 03:48
by caitsithware
今後の拡張性も考え、遷移時処理用スクリプトをStateLinkに持たせられるようにする
(そこにCalcParameterと同等のスクリプトも組み込みで提供)
ということであれば最大限の便利さを提供できそうですが、

そうではなく、単にStateLinkにパラメータを設定できるだけの機能があるとCalcParameter追加する手間が省けて便利
(逆に言うと遷移時スクリプト機能はいらない)
という話であれば、申し訳ありませんが、現状の方法での対応をお願いいたします。

また、処理+遷移用スクリプトを作成し、遷移前にパラメータを設定するようにするのはいかがでしょうか。
処理ごとにスクリプトを書く手間はありますが、1度作ってしまえばCalcParameterを毎度追加する手間よりかは楽になるかと思います。

もしスクリプトの作成方法やパラメータへの設定方法がわからないなどありましたら
質問フォーラムで聞いていただければ可能な限りサポートいたしますのでよろしくお願いいたします。