내일배움캠프 43일차 TIL - 애니메이션 이벤트 호출

권태하·2024년 6월 17일
0
post-thumbnail

애니메이션 클립에서 이벤트를 추가한다면 직접 시간을 계산해서 함수를 호출하는 것보다 훨씬 간편하게 원하는 위치에서 함수 호출이 가능하다

예를들어서 무기를 휘두르고 데미지가 들어가는 함수가 발동해야하는데, 그냥 이벤트가 호출되면 무기가 적에게 닿지도 않았는데 데미지가 들어가서 체력이 변동되거나 적이 죽어버릴 수 있는 것이다.

이를 해결하기 위해 일정 시간 후에 데미지가 들어가게 할 수도 있지만, 위에서 언급한 데로 애니메이션 클립이 어느정도 진행되서 모션상으로 데미지가 들어갈 위치가 될 때 함수를 호출해주게 이벤트를 추가하면 조금 더 간편하게 게임 세팅을 할 수가 있다.

주의할 점은 애니메이터가 있는 오브젝트에 호출할 함수가 컴포넌트로 붙어있어야 한다는 점. 그리고 함수의 사용 추적이 어려워질 수 있다는 점이 있겠다.

Unity에서 애니메이션 이벤트를 사용하여 특정 시점에 함수를 호출하려면, 먼저 애니메이션 클립에 이벤트를 추가하고, 그 이벤트가 발동할 때 실행될 함수를 정의해야 합니다. 여기서 주의해야 할 점은 애니메이션 이벤트로 호출되는 함수는 해당 게임 오브젝트의 활성화 상태에 관계없이 실행되어야 하므로, OnDisable에서 gameObject.SetActive(false);를 호출하는 것은 애니메이션 이벤트가 제대로 작동하지 않을 수 있는 상황을 만들 수 있습니다.
애니메이션 이벤트로 함수를 호출하는 방법은 다음과 같습니다:
1.	애니메이션 클립에 이벤트 추가: Unity 에디터에서 애니메이션 클립을 열고, 애니메이션 타임라인에서 이벤트를 추가하고 싶은 지점에 마우스 오른쪽 버튼을 클릭하여 'Add Animation Event'를 선택합니다. 이렇게 하면 타임라인에 새로운 이벤트 마커가 생성됩니다.
2.	함수 이름 지정: 생성된 애니메이션 이벤트에는 'Function' 필드가 있습니다. 이 필드에 호출하고자 하는 함수의 이름을 입력합니다. 이 함수는 애니메이션을 포함하는 게임 오브젝트의 스크립트에 정의되어 있어야 합니다.
3.	함수 정의: 스크립트 내에 애니메이션 이벤트에서 호출할 함수를 정의합니다. 이 함수는 매개변수를 가질 수도 있고, 가지지 않을 수도 있습니다. 예를 들어, void MyFunction() 또는 void MyFunction(int param)과 같은 형태가 될 수 있습니다.

profile
스터디 로그

0개의 댓글

관련 채용 정보