アニメーションのスピードを変える

トップへ

参考ページ

http://raharu0425.hatenablog.com/entry/20140109/1389247546

Animatorを開く

まずアニメーションを複数作成する必要がある。
アニメーションはAssetsから画像ファイルを複数選択してHierarchyにドロップすると新規作成できる。
複数のアニメーションを作ったらAnimatorで状態管理を行う。

  1. アニメーションを設定したいキャラクターをHierarchyで探しInspectorを見る
  2. ”Animator”があるはずなのでControllerに設定してある名称をAssetsから探す。
    ※ない場合はAddComponentで追加してControllerのテキストボックスにAssetsからコントローラーをドロップする
  3. 対象のAnimatorをダブルクリックする。

状態と遷移条件を設定する

Animatorをダブルクリックすると四角と矢印がでてくる。
四角が状態で、矢印が遷移。

下記の例では歩行グラと停止グラを出しわける方法を記載する。

  1. Entryから伸びている遷移が指している状態の名前を「停止」にする。
  2. 何もないところを右クリック → Create → Empty
  3. 状態が作成されるので名前を「歩行」にする。
  4. 「歩行」のMotionのところにあらかじめ作っておいたAnimation(歩行グラフィック)をドロップする。
  5. 「停止」状態を右クリック → Make Transition → 「歩行」状態につける
  6. Animator タブの左上にある「Parameters」タブを開く。
  7. +マークを押す → Floatを押す → 名前に「speed」と設定する → デフォルト値は0.0のまま。
  8. 遷移の矢印を選ぶとInspectorに遷移条件が表示されるので、停止から歩行に変化する条件を設定する。
    Conditionsの右下にある+を押す → speed を選ぶ → Greaterを選ぶ → 0.1 と入力する。
  9. 歩行から停止についても同じように遷移を作成して条件を設定する。
    Condition は speed Less 0.1 とする。

キャラクターの動きに合わせた状態遷移を設定する

キャラクターの動作をスクリプトで検知して、Animatorに伝える。


public class Openguin : MonoBehaviour {

  private Rigidbody2D rb;
  private Animator animator;

  void Start () {
    rb = GetComponent();
    animator = GetComponent();
  }

  void Update () {

    // RigidBody2D からキャラクターの動作速度を取って、animatorのspeed値に入れる。
    if (rb.velocity.magnitude > 0.1f) {
      animator.SetFloat("speed", rb.velocity.magnitude);
    }
    else {
        animator.SetFloat("speed", 0f);
    }
  }
}

おまけ:初期状態を設定する

Entryから伸びている線を変更する方法を記載する。

  1. Entryを右クリックする。
  2. Set Statemachine Default State を押すと矢印が伸びてくるので任意の状態にくっつける。

おまけ:アニメーションを即時で切り替える

アニメーションが1ループ終わるのを待ってしまっているのが原因。
Has Exit Time を無効(チェックOFF)にする。

  1. Animator を開く。
  2. 切り替わらない遷移の矢印を選択する
  3. Inspector の Has Exit Time のチェックを外す