Motion

[最終更新 2020/01/30]

 

概要

Motionを使用することで、UnityのMecanimでステートマシンを組まずにスクリプトからアニメーションを再生することが出来ます。

Motionを使用するにはCubismFadeControllerコンポーネントとUnityのAnimatorが必要です。
AnimatorコンポーネントにAnimatorControllerを設定した場合、Motionは再生されずにAnimatorControllerのアニメーションが再生されます。

該当のチュートリアル記事は こちら をご覧ください。

Motionは以下の処理を行っています。

  1. PlayableGraphを作成
  2. CubismMotionLayerを作成
  3. アニメーション再生
  4. アニメーション停止

 

PlayableGraphを作成

PlayableGraphはアニメーションなどを出力するためのものです。
こちらの詳細につきましては、Unity公式のドキュメントをご覧ください。

この処理はCubismMotionController.OnEnable()で行っています。

 

CubismMotionLayerを作成

CubismMotionLayerを利用すると、複数のモーションを並列して再生させることができます。

この処理はCubismMotionController.OnEnable()で行っています。

 

 

複数のレイヤーでモーションを同時に再生させたときに、それらが同一のCubismParameter.Valueを操作すると、後に設定される値で上書きされます。
上書きするウェイトは、CubismMotionLayer.SetLayerWeight(float weight)で設定することができます。
CubismMotionLayerにウェイトを設定した場合、AnimationLayerMixerPlayableにも同時にウェイトを設定する必要があります。

AnimationLayerMixerPlayableの詳細につきましては、Unity公式のドキュメントをご覧ください。

 

 

アニメーション再生

CubismMotionController.PlayAnimation(AnimationClip clip, int layerIndex = 0, bool isLoop = true, float speed = 1.0f) を使うことで、アニメーションの再生が出来ます。

  • AnimationClip clip:再生するアニメーションクリップ。
  • int layerIndex:アニメーション再生レイヤーのインデックス。
  • int priority:再生するアニメーションの優先度。現在再生されているアニメーションに差し込んで再生させる場合、そのアニメーションに設定されたpriorityよりも大きな値にする。
  • bool isLoop:アニメーションはループ再生かどうか、デフォルトはループ再生。
  • float speed:アニメーションの再生速度、範囲は0以上、デフォルトは1(通常の再生速度)。

 

アニメーション停止

指定インデックスのアニメーションを停止する場合は CubismMotionController.StopAnimation(int animationIndex, int layerIndex = 0) を使います。

  • int animationIndex:停止するアニメーションのインデックス。
  • int layerIndex:停止するアニメーションのレイヤーインデックス。

すべてのアニメーションを停止する場合は CubismMotionController.StopAllAnimation() を使います。

© 2010 - 2021 Live2D Inc.