Page 1 of 1

FSMの他のオブジェクトへの使い回し

Posted: 2016/05/12 23:29
by hassy
あるモデル(ゲームオブジェクト)につけたFSMを、別のモデルに使いまわしたいのですが、例えばCalcAnimatorParameterで参照しているAnimatorは、当然付け替える先のモデルのAnimator(中身はもともとのFSMと同じもの)を参照するようにさせたいのですが、どのようにすれば実現できるでしょうか?
(例えば、赤ゴブリンにつけたFSMを、同じAnimatorをもつ青ゴブリンにコピペして敵キャラを量産するイメージです)

Re: FSMの他のオブジェクトへの使い回し

Posted: 2016/05/13 09:47
by caitsithware
使いまわしたいゲームオブジェクトをまるごと複製するだけでArborFSMからの参照先が複製したゲームオブジェクトに切り替わるので、そのまま使いまわしできるようになっています。
(この場合にモデルを置き換えるには、メッシュやボーン用のゲームオブジェクトをごそっと入れ替えてAnimatorコンポーネントの設定も適宜変更していただければできます)

Re: FSMの他のオブジェクトへの使い回し

Posted: 2016/05/18 22:15
by hassy
回答ありがとうございます、たしかにそのやり方で複製できますが、後々になって大元のFSMに修正があった場合(たとえばAIの修正による挙動の追加)、コピーしたもの全てに同じ修正を施すか、もしくは新しく修正したFSMにメッシュやボーンの入れ替えて量産という作業を再度繰り返すか、といった必要が出てくることを懸念しています。
たとえば素のスクリプトでFSMを構築した場合、大元のスクリプトの修正が全ての敵キャラに反映される、それと同様の簡単な修正、管理、更新をArborを使って行うことは可能でしょうか?

Re: FSMの他のオブジェクトへの使い回し

Posted: 2016/05/19 13:45
by caitsithware
現在組み込まれているStateBehaviourのみで共通インスタンスのArborFSMを使いまわすとなると、AIとAnimator用FSMプレファブとキャラモデルプレファブ、キャラ実体化用FSMが必要になるかと思います。
  • AI兼Animator用はキャラのメッシュやボーン用オブジェクトを削除した状態のゲームオブジェクトで、これをプレファブにしておきます。
    AIに変更を加えたくなった場合はこちらのFSMを変更するだけでOKです。
  • キャラモデルはメッシュとボーンをひとまとめにしておきプレファブ化。
  • キャラ実体化用FSMで、必要なAIプレファブを実体化し、そのAI直下にモデルも実体化。
主な流れはこんな感じでしょうか。

また、StateBehaviourは自由に拡張可能なので、Animatorを参照する際は子オブジェクトから探してくるようなスクリプトを用意し、AI直下にAnimator付きのモデルをそのまま実体化、というほうが楽かもしれません。

Re: FSMの他のオブジェクトへの使い回し

Posted: 2016/05/19 20:30
by hassy
ありがとうございます、
回答いただいたアイディアをもとに作ってみます。