弱い接続について
Posted: 2018/08/07 07:23
わたしは村人の会話の処理をArborで作成しております。
プレイヤーが話かけると村人の状態に応じて反応するシステムです。
動作するFSMはつくれたのですが、いくつかアドバイスを頂けると助かります。
基本処理と特殊処理にわかれており、まず特殊処理が行われるか判定します。
特殊処理が行われた場合は基本処理をスキップし、逆に特殊処理を行わなかった場合は基本処理を行います。
この処理が下記のFSMになります。
●FSM1
このFSMは村人それぞれがコンポーネントで持っております。
工夫した点として動的にStateMachineを切り替えられるようにSubStateMachineReferenceのFlexible版の『FlexibleSubStateMachineReference』を作成しました。
下記のFSMは『FlexibleSubStateMachineReference』で実行されるキャラごとの特殊処理内の一例です。
●FSM2
会話している村人を取得するための方法として、参照元のParameterContainerからデータを取得できるようにしました。
『OwnerBehaviourGameObjectCalculator』で参照元のGameObjectの取得、
『DynamicParamaterContainerCalculater』で文字列からパラメータを取得できるようにしました。
特にアドバイスを頂きたいのはこの部分なのですが、見ての通りひとつのパラメータに対して複数のoutputを定義しています。
今回はGameObjectだけ取得できればいいのですが、後々の汎用性を考えて他の型でもOutputできるようにと考えての実装です。
上記のことを踏まえて
①今回のような制約の弱い接続がもしすでに実装されていたら教えていただけますか?
もし、ない場合に要望できますでしょうか?
Ⅰ、どんなInputSlotにでも接続できるOutputSlot
Ⅱ、ParameterContainerのパラメータを文字列で取得できる。また、設定できる
②もし他にもっとよさそうな方法があればアドバイス頂けないでしょうか
FSM2では呼び出し元に想定しているParameterContainerがあるという前提をもとに作成したものですが、
逆に呼び出し先に想定しているParameterContainerがあるという前提に作ったものも試しに作ってみました。
●FSM3
●FSM4
呼び出し先で制約の強い接続ができたのは良いですが、呼び出し元のoutputの部分が微妙な感じです。
どちらももう少しうまくできそうな気がしているのですが、私の力ではここまでが限界でした。
長々と申し訳ございません。
どうぞよろしくお願いいたします。
プレイヤーが話かけると村人の状態に応じて反応するシステムです。
動作するFSMはつくれたのですが、いくつかアドバイスを頂けると助かります。
基本処理と特殊処理にわかれており、まず特殊処理が行われるか判定します。
特殊処理が行われた場合は基本処理をスキップし、逆に特殊処理を行わなかった場合は基本処理を行います。
この処理が下記のFSMになります。
●FSM1
このFSMは村人それぞれがコンポーネントで持っております。
工夫した点として動的にStateMachineを切り替えられるようにSubStateMachineReferenceのFlexible版の『FlexibleSubStateMachineReference』を作成しました。
下記のFSMは『FlexibleSubStateMachineReference』で実行されるキャラごとの特殊処理内の一例です。
●FSM2
会話している村人を取得するための方法として、参照元のParameterContainerからデータを取得できるようにしました。
『OwnerBehaviourGameObjectCalculator』で参照元のGameObjectの取得、
『DynamicParamaterContainerCalculater』で文字列からパラメータを取得できるようにしました。
特にアドバイスを頂きたいのはこの部分なのですが、見ての通りひとつのパラメータに対して複数のoutputを定義しています。
今回はGameObjectだけ取得できればいいのですが、後々の汎用性を考えて他の型でもOutputできるようにと考えての実装です。
上記のことを踏まえて
①今回のような制約の弱い接続がもしすでに実装されていたら教えていただけますか?
もし、ない場合に要望できますでしょうか?
Ⅰ、どんなInputSlotにでも接続できるOutputSlot
Ⅱ、ParameterContainerのパラメータを文字列で取得できる。また、設定できる
②もし他にもっとよさそうな方法があればアドバイス頂けないでしょうか
FSM2では呼び出し元に想定しているParameterContainerがあるという前提をもとに作成したものですが、
逆に呼び出し先に想定しているParameterContainerがあるという前提に作ったものも試しに作ってみました。
●FSM3
●FSM4
呼び出し先で制約の強い接続ができたのは良いですが、呼び出し元のoutputの部分が微妙な感じです。
どちらももう少しうまくできそうな気がしているのですが、私の力ではここまでが限界でした。
長々と申し訳ございません。
どうぞよろしくお願いいたします。