반응형
Unity 애니메이션 종료 시점 처리

Unity에서 애니메이션 종료 시점 처리하는 방법

Unity에서 애니메이션이 종료될 때 특정 동작을 실행하려면 여러 가지 방법이 있습니다. 대표적인 방법을 정리해 보겠습니다.

1. Animation 이벤트 활용

애니메이션의 특정 프레임에서 이벤트를 호출하는 방식입니다.

using UnityEngine; public class AnimationEventHandler : MonoBehaviour { public void OnAnimationEnd() { Debug.Log("애니메이션 종료!"); // 추가 동작 실행 } }

2. Animator State 이벤트 활용

애니메이션 상태가 종료될 때 자동으로 감지하는 방법입니다.

using UnityEngine; public class AnimationStateHandler : StateMachineBehaviour { override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Debug.Log("애니메이션 종료 감지!"); // 추가 동작 실행 } }

3. 코드에서 직접 애니메이션 종료 감지

애니메이터의 상태 정보를 체크하여 애니메이션 종료를 감지하는 방식입니다.

using UnityEngine; public class AnimationChecker : MonoBehaviour { public Animator animator; private bool isPlaying = false; void Update() { if (isPlaying && animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1.0f) { isPlaying = false; Debug.Log("애니메이션 종료!"); // 추가 동작 실행 } } public void PlayAnimation(string animationName) { animator.Play(animationName); isPlaying = true; } }

4. Coroutine을 이용한 대기 후 실행

애니메이션 길이를 직접 계산하여, 종료 후 실행하는 방식입니다.

using UnityEngine; using System.Collections; public class AnimationCoroutine : MonoBehaviour { public Animator animator; public void PlayAnimation(string animationName) { StartCoroutine(WaitForAnimation(animationName)); } private IEnumerator WaitForAnimation(string animationName) { animator.Play(animationName); float length = animator.GetCurrentAnimatorStateInfo(0).length; yield return new WaitForSeconds(length); Debug.Log("애니메이션 종료!"); // 추가 동작 실행 } }

어떤 방법을 선택해야 할까?

방법 장점 단점
Animation 이벤트 직관적, UI에서 설정 가능 모든 애니메이션에 일일이 설정해야 함
Animator State 이벤트 애니메이션 상태별로 감지 가능 추가적인 State Machine Behaviour 필요
코드에서 직접 감지 일반적인 동작 감지 가능 Update()를 계속 실행해야 함
Coroutine 사용 특정 애니메이션 길이만큼 대기 가능 애니메이션이 변경되면 코드 수정 필요

결론

- 애니메이션마다 실행해야 할 동작이 다르면 Animation 이벤트 사용
- 특정 애니메이션 상태에서만 감지하려면 State Machine Behaviour 사용
- 코드에서 전체적으로 관리하려면 Animator 상태 체크 사용
- 일정 시간 후 실행하려면 Coroutine 사용

이 중 Animation 이벤트State Machine Behaviour가 가장 권장되는 방법입니다.
상황에 맞는 방식을 선택해서 사용하면 됩니다! 🚀

728x90
반응형

+ Recent posts