250427 TIL

박소희·2025년 4월 27일

Unity_7기

목록 보기
78/94

애니메이터의 state의 motion(clip) 코드로 변경해주기

  • 블럭 성공여부에 따라 클립도 바꿔줘야 플레이 시 정상적으로 애니메이션이 출력된다.
private Animator animator;
private AnimatorOverrideController animatorController;

private void Awake(){
    animator = transform.GetChild(0).GetComponent<Animator>();
    //animator를 복제하여 animatorController 만들기
    animatorController = new AnimatorOverrideController(animator.runtimeAnimatorController);
    //animator에 복제된 animatorController 연결 -> 원본이 아닌 복제본 사용하게 됨
    animator.runtimeAnimatorController = animatorController;
}

public void SetGhost(){
    foreach (var clip in animatorController.animationClips)
    {
        if (clip.name == DataManager.Instance.blockDict[id].failSequence)
        {
            animatorController[DataManager.Instance.blockDict[id].failSequence] = SuccessSequence;
        }
	}
}
AnimatorOverrideController

기존의 AnimatorController를 복제해 그 곳에 연결된 AnimationClip만 다른 것으로 바꾸는 클래스

  • 기본 AnimatorController 구조는 유지
  • 특정 State에 연결된 AnimatorClip만 바꿀 수 있다.
  • state가 아닌 AnimationClip의 이름을 비교하여 바꾼다.

0개의 댓글