見出し画像

Arbor3BehaviorTreeメモ

Parameter


AnimatorのParameterっぽさがある

Parameterの取得方法も、Animatorのままだと感じてる。
下はTestValue(int)のParameterを取得する時の書き方

[SerializeField]
private BehaviourTree behaviourTree;

private void Start()
{
    Debug.Log(behaviourTree.parameterContainer.GetInt("TestValue"));
}

エディタ上にはSet,Getの設定があるけど、スクリプトから直接変更出来ちゃうからプロパティではないのか…?

ParameterContainer


ParameterContainerコンポーネントをインスペクターからアタッチして、Parameterを書き込む方法もあるらしい。

ただ、GetIntで値を参照してもnullが返ってきて参照出来ないのが謎…
さっきは参照出来たのに…

[SerializeField]
private ParameterContainer parameterContainer;

private void Start()
{
    Debug.Log(parameterContainer.GetInt("TestInt"));
}

AssemblyDefinitionReferencesで参照する必要がある物


参照する必要があるのは画像の通り

AnimationClossFade


Unityにもあるらしくて、スクリプトベースでAnimationの遷移が出来る優れもの。

項目のLayerName,StateName,部分にAnimatorのレイヤーとAnimationの名前を書く事でビヘイビアツリー上でAnimationが再生できる。
Transition Durationを設定することで、Animationが切り替わった時にぱっと切り替わるのではなく、切り替え先のアニメーションと良い感じにつなぎ合わせて切り替えてくれる。(切り替わりの違和感をなくしてくれる感じです)

少しはまった所が上に書いてある項目を設定しただけだと、ビヘイビアツリーの挙動がおかしくなるということ。

画像の様に両方のActionが同時に動いてて、Animationの再生自体が止まってしまった。

解決方法として、Wait Transitionにチェックを入れると解決する。

どこかのドキュメントでこの項目の説明を見た気がするんだけど、思い出せない…。AnimationClossFadeの部分で説明が無くてChatGPTを叩いて聞いた。

動作は下みたいな感じ。

noteってXとかの動画はれないのか…..(貼れた!)

ここから下が10月30日に追記した内容
ClossFadeでAnimatorのステート名を記入しないと駄目なのかなと思ってたけど、設定を変えてAnimatorをアタッチするとステート名がエディタ上のUIに出てくることが分かった。超便利だけど、毎回アタッチするのは面倒だ…


いいなと思ったら応援しよう!