[내일배움캠프 TIL] 애니메이션 트리거 초기화

KYJ의 Tech Velog·2023년 11월 30일
0

TIL

목록 보기
68/71
post-thumbnail

Today I Learned

게임이 완성되어 가던 차에 갑자기 몬스터 애니메이션에 문제가 생겼습니다. 잘 작동되던 공격 애니메이션이 처음 실행될 때 공격 애니메이션이 재생이 끝난 후에 다음 애니메이션으로 넘어가야 하는데 재생이 시작하자마자 한 프레임만에 다음 애니메이션으로 넘어가는 현상이 발생했습니다.

우리 프로젝트의 캐릭터들은 모두 FSM 패턴을 통해 애니메이션을 재생합니다. 상태가 변화될 때 애니메이션의 Trigger도 설정해서 애니메이션을 재생하도록 구현하였습니다. 이 때, 공격 트리거가 설정되고 공격 애니메이션이 재생이 시작되었을 때, 이전 애니메이션의 트리거가 꺼지지 않아 바로 공격 애니메이션의 재생이 끝나버리고 이전 애니메이션 트리거의 애니메이션이 재생이 되는 것이였습니다.

다음 상태로 전환된며 새 Trigger를 설정해줄 때, 이 Trigger를 저장해줍니다. 그리고 다음 새 Trigger를 설정할 때, 저장해둔 Trigger를 ResetTrigger 메서드를 통해 초기화해줍니다. 그러면 Trigger가 여러 개 겹치는 현상을 방지할 수 있습니다.

어떤 메서드를 만들 때, 메서드가 실행되지 않아야 할 조건에는 메서드를 종료해주는 것처럼 안전 코딩의 일종이라고 볼 수 있을 것 같습니다. 후에 일어날 수 있는 오류나 오작동을 미리 방지하는 것이죠.

anim = GetComponent<Animator>();
string curTrigger;

...

anim.ResetTrigger(curTrigger);
anim.SetTrigger(name);
curTrigger = name;

Tomorrow's Goal

  • 최종 프로젝트
  • 면접 질문 제출

0개의 댓글