ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Unity | 크로스페이드(Crossfade) 애니메이션 적용
    다시한번 개발자도전! 2026. 1. 22. 17:20

     

    < 크로스페이드(Crossfade) >

    • 두 개의 상태가 전환될 때, 하나는 서서히 사라지고(Fade-out) 동시에 다른 하나는 서서히 나타나게(Fade-in) 하여 그 사이를 부드럽게 연결하는 기술

     


    1. 애니메이션 크로스페이드 (Animator.CrossFade)

    유니티 애니메이터(Mecanim)에서 상태를 바꿀 때, SetTrigger나 SetBool을 쓰면 미리 설정된 '트랜지션(Transition)' 선을 따라감. 하지만 CrossFade() 함수를 쓰면 코드 한 줄로 즉시 부드러운 전환이 가능함.

    • 특징: 트랜지션 선을 일일이 연결하지 않아도 됨.
    • 동작이 딱딱하게 끊기며 변하는 '팝핑(Popping)' 현상을 막고 자연스러운 움직임을 만들기 위해 씀.
     Animator animator;
     void Start()
     {
         animator = GetComponent<Animator>();
         Invoke("ChangeAnimation", 5f); //스타트 후 5초뒤 애니메이션이 바뀜
     }
    
     void ChangeAnimation()
     {
         animator.CrossFade("Wmove", 0.2f);
     }

    트렌지션을 연결하지 않아도 애니메이션 변경이 가능해짐

     

    ❗주의 할 점❗

    • 도큐먼트에서는 CrossFade("Wmove", 0.2f) 처럼 문자열을 직접 쓰는 것을 지양함. 문자열은 매번 비교 연산을 하기 때문에 성능을 갉아먹음. 대신 Animator.StringToHash를 쓰길 권장함.

    2. 크로스페이드(Crossfade)원리 : 선형 보간(Lerp, Linear Interpolation)

    크로스페이드가 부드럽게 느껴지는 이유는 수학적으로 선형 보간(Lerp) 원리를 사용하기 때문. 유니티의 Mathf.Lerp, Vector3.Lerp, Color.Lerp 모두 이 공식 하나로 돌아감.

    📌 공식 

    Result = (A \times (1 - t)) + (B \times t)

    이 공식은 사실 우리가 이해하기 쉽게 줄이면 다음과 같음:

    "결과값 = 시작점(A)에서 목표점(B)까지 t(비율)만큼 간 지점"

    • A (시작값): 현재 상태 (예: 사라질 애니메이션의 강도 100%)
    • B (목표값): 바뀔 상태 (예: 나타날 애니메이션의 강도 100%)
    • t (비중/시간): 0에서 1 사이의 값 (0이면 완전한 A, 1이면 완전한 B)

     

    💡크로스페이드 작동원리💡

    더보기

    🔍 크로스페이드에서의 작동 원리

     

    크로스페이드가 진행되는 동안 t값은 시간에 따라 0에서 1로 변함.

    1. 시작 시점 (t = 0$):👉 A만 보이고 B는 안 보임.(A \times 1) + (B \times 0) = A
    2. 중간 지점 (t = 0.5$):👉 두 상태가 50%씩 겹쳐 보임. 
    3. (A \times 0.5) + (B \times 0.5) = 절반씩 섞임
    4. 종료 시점 (t = 1):👉 A는 완전히 사라지고 B만 남음.
    5. (A \times 0) + (B \times 1) = B

     


    3. CrossFade vs SetTrigger (성능 및 관리)

    비교 항목 SetTrigger (Transition) CrossFade (Script-based)
    제어 방식 에디터에서 선으로 연결 스크립트에서 이름으로 호출
    유연성 조건(Parameter)에 종속됨 언제 어디서든 즉시 실행 가능
    메모리/성능 상태 머신 데이터 미리 로드 호출 시 문자열 해싱(Hashing) 비용 발생
Designed by Tistory.