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に切り替えられます。
キー入力に限らず好きなタイミングでアニメーションを切り替えられます。