Network Mecanim Animator - cheona-thousand-man/Unity-myBasics-Wiki GitHub Wiki

๊ฐœ์š”

NetworkMecanimAnimator๋Š” Unity์˜ Mecanim Animator ์ปดํฌ๋„ŒํŠธ์™€ ์—ฐ๊ด€๋œ ์ƒํƒœ์™€ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’ ๋™๊ธฐํ™”

์ฐธ๊ณ : NetworkMecanimAnimator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ์ด์ƒ์ ์ธ ๋‹ต์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์ด ํฌ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

๋ชจ๋“  ์ปจํŠธ๋กค๋Ÿฌ ์ฝ”๋“œ๋Š” ์ž…๋ ฅ์„ State Authority์™€ Input Authority์— ์ ์šฉํ•˜๊ณ , Proxies์—๋Š” ์ ์šฉX(Fusion์˜ ์ž…๋ ฅ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™ ์ ์šฉ)

void FixedUpdateNetwork()
{
  // ์ž…๋ ฅ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ (StateAuthority ๋ฐ InputAuthority๊ฐ€ true),
  // ๊ทธ๋ฆฌ๊ณ  Forward Tick ์—์„œ๋งŒ Animator์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  if (GetInput(out var input) && Runner.IsForward)
  {
     // Animator์— ์ž…๋ ฅ ์ ์šฉ
  }
}

Fusion ์ž…๋ ฅ ์ฒ˜๋ฆฌ ์—†๋Š” Shared Mode

  • Shared Mode๋Š” Fusion ์ž…๋ ฅ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ, ์ž…๋ ฅ ์ˆ˜์ง‘๊ณผ ์ ์šฉ ์ง์ ‘ ์ฒ˜๋ฆฌ
  • ์ž…๋ ฅ์„ State Authority์—์„œ๋งŒ ์ ์šฉํ•˜๋„๋ก ์ œํ•œ
void FixedUpdateNetwork()
{
  // Shared Mode์—์„œ:
  // Animator์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ StateAuthority์—์„œ๋งŒ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  if (HasStateAuthority)
  {
     // Animator์— ์ž…๋ ฅ ์ ์šฉ
  }
}

SetTrigger()

  • Animator.SetTrigger() ๋Œ€์‹  NetworkMecanimAnimator.SetTrigger() ๋ฉ”์„œ๋“œ ๊ถŒ์žฅ
    • Animator ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐ’์„ NetworkMecanimAnimator๊ฐ€ ์บก์ฒ˜ํ•˜๊ธฐ ์ „์— ๊ธฐ๋ณธ bool ๊ฐ’์ด false๋กœ ์žฌ์„ค์ •๋  ์ˆ˜ ์žˆ์Œ
    • NetworkMecanimAnimator.SetTrigger()์—๋Š” passThroughOnInputAuthority ์˜ต์…˜O
      • ์ž…๋ ฅ ๊ถŒํ•œ(Input Authority)์—์„œ ์ฆ‰์‹œ Animator.SetTrigger() ํ˜ธ์ถœ