====== 050 スプライトアニメーションの切り替え ====== ===== 概要 ===== Unityの機能であるMecanim を使って立ち(Stand) / 走る(Run)の2つのアニメーションを切り替えます。 事前に二つ以上のアニメーションが作成済みであること。 アニメーションの作り方は[[wiki:unity:tips:049]]参照。 ==== Animation Controllerの設定 ==== Animation Controllerはアニメーションファイル(.anim)作成時に自動で作成されます。 {{:wiki:unity:tips:unity_anim_ctrl_btn.png?200|}} Animation Controller選択すると構造やパラメータが表示されます。(Animation View) {{:wiki:unity:tips:unity_anim_ctrl.png?200|}} オレンジ色になっている「Stand」が最初に再生されるデフォルトのアニメーションです。 この「Stand」や「Run」をAnimation State と呼びます。 ==== アニメーションの遷移データをつくる ==== 「Stand」のAnimation Stateを右クリック -> Make Transition で遷移先を指定する矢印が現れます。 この状態で遷移先の「Run」Animation State を選択して関連付けます。 {{:wiki:unity:tips:unity_anim_ctrl_joint.png?200|}} 再生するとアニメーションが「Stand」から「Run」へと遷移します。 ==== アニメーションが遷移する条件を付ける ==== 遷移先をした矢印をクリックしてInspectorのConditionsから条件を設定できます。 初期設定はExit Time: 1.00となっていたので一定時間経過した後Runアニメーションに遷移していました。 キーボードの左右のキーが押されたらRunアニメーションに遷移する様修正します。 ==== Animation Parameter を付ける ==== Animation Parameter は遷移条件に使うパラメータです。Animation Parameterの追加は Animation View にあるParametersの+を選択して追加します。 {{:wiki:unity:tips:unity_anim_addparam.png?200|}} bool 型でisRunパラメータを追加しました。追加するとConditionsに項目が追加されます。 {{:wiki:unity:tips:unity_anim_addparam2.png?200|}} 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への遷移データを作成していませんでした。 {{:wiki:unity:tips:unity_anim_param_set.png?200|}} Runへの遷移時と同様に、条件にConditionsにisRunを選択しisRunがfalseになった時「Stand」アニメーションに遷移する様に設定します。これで相互にアニメーションが切り替わる様になります。