基本的にここで話されていることの翻訳なんですが、UnityのMecanimでアニメーションを行っている時に一時停止するには、animator.speed = 0
とすればできますが、この場合Animator配下にあるアニメーション全てが一時停止してしまうため、たとえばLayerを分けてAnimationを複数実行している場合に、個別で停止することができません。個別停止を一発で実現するようなAPIは現時点ではなく、ややハッキーな方法を取る必要があります。
- AnimatorのパラメータにAnimationスピードを表すFloat型のパラメータを追加します。名前は何でもよいですが、ここでは
MovingSpeed
とします。デフォルトの値は1.0
にします。
- 一時停止したいAnimationを選択して、Inspectorに表示される
Multiplier
の欄でParameter
にチェックを入れ、Multiplier
で先程作成したパラメータを選択します。
- Scriptで、一時停止したいタイミングで、以下のようにパラメータ値を変更します。
animator.SetFloat("MovingSpeed", 0.0f); // 一時停止
再開したいタイミングで、同様にパラメータ値を変更します。
animator.SetFloat("MovingSpeed", 1.0f); // 再開
このようにAnimationの幾つかの設定値はパラメータと連動させることができるので、一見プログラムからできなさそうなことでも実現可能です。