MRが楽しい

MRやVRについて学習したことを書き残す

Unityで基本変形(移動・回転・スケール)のアニメーションを作成する その5(アニメーションを任意のタイミングで実行する)

本日は Unity の技術調査枠です。
基本変形(移動・回転・スケール)のアニメーションを作成する方法についてまとめます。
今回はアニメーションを任意のタイミングで実行する方法です。

前回記事

以下の記事の続きになります。
bluebirdofoz.hatenablog.com

アニメーション任意のタイミングで実行する

任意のタイミングでアニメーションを実行するにはアニメーションコントローラに State を定義する必要があります。
前回記事で作成したアニメーションコントローラを編集するため、controller ファイルを選択して[Animator]画面を開きます。

前回記事で自動作成したアニメーションコントローラにはアニメーションへの自動遷移が既に設定されています。
任意のタイミングでアニメーションを実行するため、以下の通りコントローラを修正する必要があります。
1.最初はアニメーション無しの待機状態に遷移する
2.トリガーに応じてアニメーションの状態に遷移する

待機状態を作成する

まず、最初に遷移するアニメーション無しの待機状態を作成します。
作成済みのアニメーションの State を 右クリック -> Delete で削除します。

次に 右クリック -> Create State -> Empty で新しい状態を作成します。

State が作成出来たら分かりやすい名前に変更します。今回は[WaitState]としました。
Motion は[None]のままにしておきます。[None]はアニメーション無しの設定です。

アニメーションの実行状態と遷移を作成する

同じ手順でもう一つ State を作成します。
こちらは Motion に実行したいアニメーションを設定します。こちらは[CubeAnimation]と名付けました。

次にアニメーションを実行するトリガーを作成します。
[Animator]画面の[Parameters]タブを開き、[+]ボタンから[Trigger]を選択して追加します。

作成されたトリガーの名称を設定します。
指定した名称はコード上で利用するため、綴り誤りに注意します。今回は[AnimTrigger]としました。

State 間を結ぶ遷移を作成します。[WaitState]上で右クリックして[Make Transition]を選択します。
遷移を示す線が表示されるので[CubeAnimation]と接続します。

作成したトランザクションの線を選択し、遷移のトリガーを設定します。
[+]ボタンをクリックし、先ほど作成した[AnimTrigger]を設定します。

これでアニメーションコントローラの修正は完了です。

アニメーションを操作するスクリプトを作成する

次に任意のタイミングでアニメーションを実行するスクリプトを作成します。

以下のようなキーボードの[Z]キーでトリガーを実行するコードを作成しました。
・KickTrigger.cs

using UnityEngine;

[RequireComponent(typeof(Animator))] 
public class KickTrigger : MonoBehaviour {
    /// <summary>
    /// Animatorコンポーネント
    /// </summary>
    [SerializeField]
    private Animator animator;

    /// <summary>
    /// 参照の設定
    /// </summary>
    void Reset () {
        // Animatorコンポーネントの取得
        animator = GetComponent<Animator>();
    }

    /// <summary>
    /// 定期実行
    /// </summary>
    void Update()
    {
        // Zキー押下で実行する
        if (Input.GetKey(KeyCode.Z))
        {
            // トリガーを実行する
            animator.SetTrigger("AnimTrigger");
        }
    }
}

スクリプトをアニメーションコントローラを持つ Animator コンポーネントを持つオブジェクトに設定します。

動作確認

Unity の[再生]ボタンをクリックし、動作確認を行います。

キーボードの[Z]キーを押下したタイミングでアニメーションが開始すれば成功です。