Unityでアニメーションを作成・切り替える方法

投稿者: | 2019-11-03


Cubeに複数のアニメーションを付けて、スクリプトでアニメーションを切り替えます。

まずアニメーションをつけたいオブジェクトを選択した状態で、AnimationタブからCreateをクリックして、新規アニメーションの名前をつけて保存しましょう。

これで空のアニメーションが作成され、同時にこのCubeにAnimatorコンポーネントが付きます。

Animationタブの方にタイムラインのようなものが作られているので、Add Propertyからどの値を変化させるかを選びます。

オブジェクトの位置や回転、大きさといった要素が選べます。+をクリックすると追加されます。

まずは、オブジェクトの位置と回転、色にアニメーションをつけてみます。

アニメーションを付けるには、タイムライン上の白い縦線を、値を設定したい時点に移動し、録画ボタンを押した後に値を変えます。

例えばこの時点で録画ボタンを押して、オブジェクトを移動させると、Positionのところにひし形の印(キーフレーム)が付きます。

録画ボタンをもう一度押すと確定します。ここで再生ボタンを押すと、キーフレームの値に向かってなめらかにアニメーションが作られていることがわかります。

最初と最後で初期値に戻りますね。録画ボタンを押している間にCubeを動かしても、Cubeの元の位置は変わりません。

他の時点にもキーフレームを作ってみます。今度は回転も同時に変えてみます。

もちろん回転だけを変えてもいいです。

オブジェクトの動きだけでなく、マテリアルの色も変えられます。

Create New Clip…で新しいアニメーションを作れるので、2つ目のアニメーションを作ります。

アニメーションを切り替える

作ったアニメーションを切り替えるには、アニメーターコントローラーを開きます。AnimatorコンポーネントのControllerをダブルクリックするか、Animatorタブに切り替えます。

アニメーターコントローラーでは右側にステートと呼ばれるいくつかの長方形の物体が見えます。

重要なのは緑色のEntryと書かれたステートと、今作ったアニメーションと同じ名前がつけられた、オレンジとグレーのステートです。
ゲームが開始されると緑のステートからすぐにオレンジのステートに遷移し、現在のステートに設定されているアニメーションが再生されます。

オレンジのステートをクリックすると、Motionに最初に作ったアニメーションがアタッチされているのがわかります。

今回は、キー入力などの合図でオレンジとグレーのステートの間を行き来させます。他のステートへ遷移させるには、出発点となるステートを右クリックしてMake Transitionで矢印を出し、次のステートをクリックしてTransition(遷移)を完成させます。

これは一方向の矢印なので、反対方向からもやります。

矢印をクリックすると、遷移に関する設定がインスペクタ上でできます。

Conditionsというところで、遷移の条件を設定できます。

条件にはアニメーターコントローラーで設定するパラメーターを使います。Parametersで+ボタンから新しいパラメーターを作り、名前をつけます。

今回はBoolを使用しました。

矢印のインスペクタのConditionsで+ボタンをクリックし、今作ったパラメータを選びtrueになったら遷移するように設定します。

Has Exit Timeがオンだと条件を満たすだけでなく、設定した時間が立ってから遷移するので、今回はチェックを外します。

もう一方の矢印ではfalseを選びます。

パラメータの状態はスクリプトで変更します。Cubeに新しいスクリプトをつけます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class cubeScript : MonoBehaviour
{

    Animator cubeAnimator;

    // Start is called before the first frame update
    void Start()
    {
        cubeAnimator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            cubeAnimator.SetBool("cubeAnim",!cubeAnimator.GetBool("cubeAnim"));
        }
    }
}

キーボードのFキーが押されると、SetBoolメソッドでパラメータに値がセットされます。GetBoolメソッドで現在の状態を取得できるので、それにNOTを付けてセットすることで、今のパラメータがtrueならfalse、falseならtrueに切り替えられます。
キー入力に限らず好きなタイミングでアニメーションを切り替えられます。

コメントを残す

メールアドレスが公開されることはありません。