3.Animatorで分岐する - Morijellyfish-org/UnityAnimationGuide GitHub Wiki

Animatorの掃除

Animator.controllerを開き、Animation_Aのステートを削除します。
その後右クリックして Create State > Empty から新しいステートを作成します、下の画像の様になっていれば大丈夫です。

image

NewStateだと名前がわかりにくいので、適当な名前を付けてあげて下さい。今回はBranchとします。
命名はInspectorから出来ます。

Animationの追加

Animation_A.anim,Animation_B.animをD&Dで追加します。

Branchを右クリックしてMakeTransitionを選択し、Animation_A,Animation_Bと接続します。
Animation_A,Animation_BからExitへもそれぞれ接続します。 次の画像の様になっていれば大丈夫です。

Tip

ステートの位置は基本的に挙動に影響を与えませんが、整頓する事で見やすくなります。

image

Parametersの追加

Animatorウィンドウ左上のLayers / ParametersのParametersを選択し、プラスボタン '+' からBoolを選択し、値を追加します。
値の名はBackとします。下の画像のようになっている事を確認して下さい。

image

分岐の追加

Branchステートを選択し、InspectorウィンドウのTransitionsに条件を付けていきます。
Branch->Animation_Aを選択し、Conditionsを追加します、Back : falseとします。
Branch->Animation_Bを選択し、Conditionsを追加します、Back : trueとします。
どちらのTransitionも、HasExitTimeのチェックを外してください。

動作の確認をします、Animatorウィンドウが見える状態でSceneを実行する事で、何が再生されているか等がわかります。
ParametersのBackのチェックを外して実行するとAnimation_A、チェックを付けて実行するとAnimation_Bが再生される事を確認できたら完了です。

Animation_Bの中身を作る

Animation_Bの中身が存在しないので、作りましょう。Cubeを選択して、Animationウィンドウを見るとAnimation_Aの編集画面が開きます。
しかし編集したいのはAnimation_Bなので、それを開く手順から説明します。
Previewの下にあるAniamtion_Aのプルダウンを選択すると、適用されているAnimatorが持つAnimationの一覧が出てきます、これを使ってAnimation_Bを選択する事で他のAnimationを編集する事が出来ます。

image

内容はPosition.zを0から-1にするものにして、後ろに進む振舞をさせます、LoopTimeの設定と補完の設定を忘れないようにしてください。

外部からのParametersへのアクセス

このParameters/Backの値を使う事で、再生するAnimationを切り替えられるようになりました。外部から切り替える事で、ゲーム等でもこの機能を活用する事が出来ます。

VisualScriptingであれば以下のように

image

C#であれば以下のように

Animator animator;
void Start()
{
    animator = GetComponent<Animator>();
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        animator.SetBool("Back", !animator.GetBool("Back"));
    }
}

する事で、Animatorが持つ値の入出力が可能です。 詳細は公式のドキュメントを参照して下さい。

AnyStateを使った分岐

しかし現在の移動分岐は、それぞれのAnimationが再生し終わるのを待つため、1秒単位でしか切り替わりません、そこでAnyStateを使った分岐を紹介します。
Transitionを下の画像のようにつないで、それぞれAnyState->Animation_A,AnyState->Animation_Bに条件を指定する事で機能します。

image

これによってSettings/TransitionDurationを最小単位として高頻度での更新を行う事が出来ます。

⚠️ **GitHub.com Fallback** ⚠️