원하는 기능 : 애니메이션이 끝나고 n초 후에 다시 재생. 해결: 해결 방법은 많겠지만, 내가 선택한건 애니메이션 이벤트와 커스텀 함수를 이용했다.
애니메이션을 클릭해서 인스펙터창에 나온 Loop Time을 해제한다.
애니메이션이 끝나면 들어올 스크립트를 생성한다.
// 변수 생성
Animator anim;
void Awake()
{
// 스크립트가 붙어있는 오브젝트에서 Animator 컴포넌트 가져오기.
anim = GetComponent<Animator>();
}
// IEnumerator: 코루틴만의 반환형 인터페이스. (앞에 I가 붙는 것은 인터페이스라고 한다)
// yield : 코루틴의 반환 키워드
IEnumerator EndAnim(){
// new Wait을 기입하고 자동완성 부분을 보면 유니티에서 제공하는 함수가 몇가지 있다.
// 그 중에 나는 5초 딜레이가 필요하기 때문에 아래와 같이 작성한다.
yield return new WaitForSeconds(5f);
// loop 를 걸어두지 않아서 멈추어있는 애니메이션을 다시 플레이.
// DeadEnemy 0: 재생할 애니메이션 클립 이름
// -1: 모든 레이어를 대상
// 0f: 애니메이션의 시작 시간
anim.Play("DeadEnemy 0", -1, 0f);
}
애니메이션 오브젝트에 스크립트 연결
애니메이션 끝난 부분에, 이벤트를 걸어준다. ㄱ. 마우스를 드래그해서 하얀색 세로줄을 이벤트 걸어줄 위치해 놓는다. ㄴ. 왼쪽 북마크 모양을 눌러 이벤트를 걸어준다. ㄷ. 생성된 북마크(오른쪽 빨간 네모상자)를 클릭하면 오른쪽에 인스펙터창이 열린다.
내가 만든 함수를 선택한다. ( 주의할 점은 오브젝트에 위에 만든 스크립트를 넣어와야 EndAnim이 보인다.)