時間更新設定
UpdateModeを変更することでクロスコンポーネントごとにシミュレーション時間の進行方法を変更することができます。
これは特にキャラクターをFixedUpdate()で移動させる場合に重要です。
Unityでは描画システムの更新ループと物理システムの更新ループの2つの異なる時間管理システムが同居しています。
そのためキャラクターが利用する更新ループに合わせてMagicaClothの更新タイミングを合わせないと正しくシミュレーションが動作しません。
この設定を間違うとシミュレーションに不可解な振動が発生します。
Normal
Unityの基本的なUpdate()のタイミングで時間を進行させます。
このモードはキャラクターの移動をUpdate()もしくはLateUpdate()で行い、アニメーションをNormalで更新することを前提としています。
Unity Physics
Unityの物理システムの更新タイミングで時間を進行させます。
このモードはキャラクターの移動をFixedUpdate()で行い、アニメーションをAnimate Physicsで更新することを前提としています。
Unscaled
Normalと同じくUpdate()のタイミングで時間を進行させます。
ただしNormalと異なりUnityのタイムスケール(Time.timeScale)に影響されません。
これはtimeScale=0によりゲームを停止させたままインベントリなどでキャラクターにクロスシミュレーションを適用する場合に便利です。
この場合はアニメーションもUnscaled Timeに設定することが必要です。
Animator Linkage
キャラクターのAnimatorのUpdateModeに連動して適切な更新モードを自動的に設定します。
Animatorが存在しない場合はNormal更新となります。
Animator.UpateMode | MagicaCloth.UpdateMode |
Normal | Normal |
Animate Physics (Fixed) | Unity Physics |
Unscaled Time | Unscaled |