Unity 공부 (14)

도토코·2025년 3월 11일

Unity공부

목록 보기
14/22

Chapter 6

Animation 기초


Animator Component

  • Controller
    • 애니메이션 상태(State)와 전환(Transition)을 관리하는 Animator Controller를 연결하는 곳
      • 캐릭터나 오브젝트의 애니메이션을 제어하고 상태를 변경하는 기능을 담당한다.
  • Avatar
    • 주로 3D 캐릭터에서 사용하는 설정으로, 캐릭터의 본() 구조를 정의한 Avatar 파일을 연결하는 곳
      • 유니티의 Humanoid 리깅 시스템에서 애니메이션을 올바르게 적용하도록 도와준다.
      • Avatar를 설정하지 않으면 애니메이션이 올바르게 동작하지 않을 수 있다.
  • Apply Root Motion
    • 애니메이션에서 위치롸 회전 변화를 게임 오브젝트에 적용할지 여부를 결정하는 옵션
      • 체크 O : 애니메이션에 포함된 이동 및 회전 값이 실제 오브젝트에 반영된다.
      • 체크 X : 이동 및 회전 값을 코드(예: transform.position)에 직접 제어해야 한다.
  • Animate Physics
    • 애니메이션이 물리 엔진(Physics 2D/3D)과 함께 실행될지 결정하는 옵션
      • 체크 O : Fixedupdate()에서 애니메이션이 업데이트 된다. (물리 연산과 동기화)
      • 체크 X : Update()에서 애니메이션이 업데이트 된다. (기본 설정)
  • Update Mode
    • 애니메이션이 언제 업데이트 될지를 설정하는 옵션
      • Normal(기본값) : 프레임 속도(FPS)에 따라 Update()에서 실행된다.
      • Animate Physics : FixedUpdate()에서 실행되며, 물리 엔진과동기화 된다.
        • RigidBody 기반 케릭터가 있을 때 사용
      • Unscaled Time : Time.timeScale에 영향을 받지 않는다.(예:일시정지 화면에서 애니메이션 유지)
        • 게임이 멈춰도 UI 애니메이션을 계속 실행하고 싶을 때 사용
  • Culling Mode
    • 애니메이션이 화면에 보이지 않을 때 실행 여부를 결정하는 옵션
      • Always Animate : 항상 애니메이션 실행
        • 온라인 멀티플레이어 게임에서 항상 애니메이션을 실행해야 할 때
      • Cull Update Transform(기본값) : 카메라에 보이지 않으면 애니메이션 업데이트를 중지하지만, Transform 데이터는 유지
      • Cull Completely : 카메라에 안 보이면 애니메이션을 완전히 멈춤
        • 성능 최적화를 위해 화면 밖의 적 캐릭터 애니메이션 중지

정리

옵션설명
Controller애니메이션 상태(State)와 전환을 관리하는 Animator Controller
Avatar3D 캐릭터의 본(Bone) 구조를 설정하는 Avatar
Apply Root Motion애니메이션의 이동 & 회전값을 실제 적용할지 여부
Animate Physics물리 연산과 동기화할지 결정 (FixedUpdate()에서 실행)
Update Mode애니메이션이 언제 실행될지 (Normal, Animate Physics, Unscaled Time)
Culling Mode화면에 보이지 않을 때 애니메이션 실행 여부 (Always Animate, Cull Completely)

상황에 따른 애니메이션 추력

캐릭터의 Animator에 들어가면 처음에는 Any State, Entry, Exit 이렇게 3개의 State만 존재하는 것을 확인 할 수있다.
그곳에 WAIT와 RUN에 해당하는 애니메이션을 집어넣어주면 WAITRUN이 State로 추가되어 있는 것을 볼 수있고 먼저 넣은 State에게 Entry State로부터 Transition이 이어져 있는 것을 볼 수 있다.
이것이 의미하는 바는 Play를 하였을 때 그 즉시 Entry와 이어진 State가 실행된다는 것이다.
만약 이 transition을 바꿔주고 싶다면 아래와 같이 Entry를 좌클릭 하여 Set StateMachine Default State를 눌러 원하는 State에 이어주면 된다.

    void Update()
    {
        if(_moveToDest)
        {
			...
        }

        if(_moveToDest)
        {
            Animator anim = GetComponent<Animator>();
            anim.Play("RUN");
        }
        else
        {
            Animator anim = GetComponent<Animator>();
            anim.Play("WAIT");
        }
    }

그리고 위와 같이 코드 상에서 Animator의 Component를 불러와 원하는 State를 플레이해주면 된다.

profile
코(딩)(꿈)나무

0개의 댓글