This document is about: FUSION 2
SWITCH TO

Network Mecanim Animator

概要

NetworkMecanimAnimatorは、関連するUnity mecanimのAnimatorコンポーネントが持つパラメータのステートと値を同期します。

UnityのAnimatorコンポーネントは巻き戻しおよび再シミュレーションできず(前方実行向けの設計)、またティックのステートに正確に設定できないため、ティックの正確さが大切なアニメーションでは頼りにすることはできませんので、ご注意ください。

この「前方のみ」制限から、NetworkMecanimAnimatorは再シミュレーションを行わず、NetworkMecanimAnimatorAnimatorコンポーネントをステートオーソリティからプロキシへのみ同期します。インプットオーソリティはForwardティックでAnimatorへの変更も適用します。

備考: アニメーション同期にNetworkMecanimAnimatorが最適解とならないケースが多々あります。詳細は、アニメーションコンセプトとパターンセクションをご覧ください。

使用方法

コントローラーコードはインプットを、プロキシではなく、ステートオーソリティおよびインプットオーソリティに適用するべきです。Fusionのインプットシステムを使用する場合は、自動的にこのような使用方法となります。

C#

void FixedUpdateNetwork()
{
  // Only apply changes to the Animator if input is available
  // (which is true for StateAuthority and InputAuthority),
  // and only on Forward ticks (resimulation should be ignored).
  if (GetInput(out var input) && Runner.IsForward)
  {
     // Apply inputs to Animator
  }
}

Fusion Input処理を使用しないShared Mode

Shared ModeではFusion Input Systemが必須ではなく、自分でインプットの収集及び適用を行うことができます。この場合、インプットがステートオーソリティでのみ適用されるように制限してください。

C#

void FixedUpdateNetwork()
{
  // In Shared Mode:
  // Only apply changes to the Animator on the StateAuthority.
  if (HasStateAuthority)
  {
     // Apply inputs to Animator
  }
}

SetTrigger()

Animator.SetTrigger()の代わりにNetworkMecanimAnimator.SetTrigger()のパススルーメソッドを使用してください。トリガーは一時的であり、、NetworkMecanimAnimatorAnimatorコンポーネントの値を捉える前にバッキングブーリアンがFalseへリセットしてしまう可能性があります。 NetworkMecanimAnimator.SetTrigger()にはpassThroughOnInputAuthorityオプションもあり、こちらは便宜的に、インプットオーソリティへ Animator.SetTrigger()へ即時にパススルーを行います。

Back to top