目次

050 スプライトアニメーションの切り替え

概要

Unityの機能であるMecanim を使って立ち(Stand) / 走る(Run)の2つのアニメーションを切り替えます。 事前に二つ以上のアニメーションが作成済みであること。 アニメーションの作り方は049 スプライトアニメーションの表示参照。

Animation Controllerの設定

Animation Controllerはアニメーションファイル(.anim)作成時に自動で作成されます。

Animation Controller選択すると構造やパラメータが表示されます。(Animation View)

オレンジ色になっている「Stand」が最初に再生されるデフォルトのアニメーションです。 この「Stand」や「Run」をAnimation State と呼びます。

アニメーションの遷移データをつくる

「Stand」のAnimation Stateを右クリック → Make Transition で遷移先を指定する矢印が現れます。 この状態で遷移先の「Run」Animation State を選択して関連付けます。

再生するとアニメーションが「Stand」から「Run」へと遷移します。

アニメーションが遷移する条件を付ける

遷移先をした矢印をクリックしてInspectorのConditionsから条件を設定できます。 初期設定はExit Time: 1.00となっていたので一定時間経過した後Runアニメーションに遷移していました。 キーボードの左右のキーが押されたらRunアニメーションに遷移する様修正します。

Animation Parameter を付ける

Animation Parameter は遷移条件に使うパラメータです。Animation Parameterの追加は Animation View にあるParametersの+を選択して追加します。

bool 型でisRunパラメータを追加しました。追加するとConditionsに項目が追加されます。

isRunがtrueになった時「Run」アニメーションに遷移されます。

キー入力によるアニメーション切り替えの実装

新規にスクリプトを作成して、Player にアタッチします。

using UnityEngine;
using System.Collections;
 
public class PlayerScript : MonoBehaviour
{
	Animator anim;
 
	void Start()
	{
		anim = GetComponent( "Animator" ) as Animator;
	}
 
	void Update ()
	{
		// キーボードの左右キーでRunアニメーションを再生する。
		if ( Input.GetKey( KeyCode.LeftArrow ) || Input.GetKey( KeyCode.RightArrow ) )
		{
			anim.SetBool("isRun", true );
		}
		else
		{
			anim.SetBool("isRun", false );
		}
	}
}

GetComponent でAnimatorコンポーネントを取得してSetBoolで値を設定しています。 これでRunアニメーションに切り替え再生されます。

Run から Stand アニメーションに切り替わらない

スクリプトでは左右のキーが押されていない場合、isRunフラグはfalseになるのでStandアニメーションに戻る想定ですが上手くいきません。確認してみるとRunからStandへの遷移データを作成していませんでした。

Runへの遷移時と同様に、条件にConditionsにisRunを選択しisRunがfalseになった時「Stand」アニメーションに遷移する様に設定します。これで相互にアニメーションが切り替わる様になります。