This document is about: FUSION 2
SWITCH TO

Network Mecanim Animator

개요

NetworkMecanimAnimator는 Unity의 메카님(Animator) 컴포넌트에 설정된 상태 및 파라미터 값을 동기화하는 역할을 합니다.

Unity의 Animator 컴포넌트는 시간의 역방향으로 되감거나 재시뮬레이션되는 것이 불가능하며, 특정 틱의 상태로 정확하게 설정할 수 없기 때문에 틱 단위의 정확한 애니메이션 처리를 보장할 수 없습니다.

이러한 "순방향 전용" 한계로 인해, NetworkMecanimAnimator는 재시뮬레이션을 시도하지 않으며, 상태 권한에서 프록시로만 Animator 컴포넌트를 동기화합니다. 입력 권한 또한 포워드 틱일 때만 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 입력 시스템을 사용하지 않는 Shared Mode

Shared Mode에서는 Fusion 입력 시스템을 반드시 사용할 필요는 없으며, 입력 수집 및 적용을 직접 처리할 수 있습니다. 이 경우, 입력은 State Authority에서만 Animator에 적용되도록 제한해야 합니다.

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() 메소드를 사용하는 것이 권장됩니다. 일반적으로 트리거에 대응하는 내부 bool 값이 NetworkMecanimAnimator가 값을 캡처하기 전에 false로 초기화될 수 있기 때문입니다.

또한, NetworkMecanimAnimator.SetTrigger()에는 passThroughOnInputAuthority 옵션이 있어서 Input Authority에서는 Animator.SetTrigger()를 즉시 호출하도록 처리할 수 있어 편리합니다.

Back to top