LoginSignup
11

More than 5 years have passed since last update.

UnityのMecanimで個別のAnimationを一時停止する

Last updated at Posted at 2017-07-21

基本的にここで話されていることの翻訳なんですが、UnityのMecanimでアニメーションを行っている時に一時停止するには、animator.speed = 0とすればできますが、この場合Animator配下にあるアニメーション全てが一時停止してしまうため、たとえばLayerを分けてAnimationを複数実行している場合に、個別で停止することができません。個別停止を一発で実現するようなAPIは現時点ではなく、ややハッキーな方法を取る必要があります。

  1. AnimatorのパラメータにAnimationスピードを表すFloat型のパラメータを追加します。名前は何でもよいですが、ここではMovingSpeedとします。デフォルトの値は1.0にします。
    スクリーンショット_2017-07-22_午前1_07_28.png

  2. 一時停止したいAnimationを選択して、Inspectorに表示されるMultiplierの欄でParameterにチェックを入れ、Multiplierで先程作成したパラメータを選択します。
    スクリーンショット_2017-07-22_午前1_08_54.png

  3. Scriptで、一時停止したいタイミングで、以下のようにパラメータ値を変更します。

    animator.SetFloat("MovingSpeed", 0.0f); // 一時停止

    再開したいタイミングで、同様にパラメータ値を変更します。

    animator.SetFloat("MovingSpeed", 1.0f); // 再開

このようにAnimationの幾つかの設定値はパラメータと連動させることができるので、一見プログラムからできなさそうなことでも実現可能です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11