[Unity]애니메이션 이벤트 추가하기
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
Unity에서 캐릭터 애니메이션과 게임 로직을 연동할 때 스크립트에서 직접 타이밍을 제어하면 애니메이션 시작 시점에만 함수를 호출할 수 있어 어색한 동작이 발생하기 쉽다.
이 문제를 해결하는 것이 바로 애니메이션 이벤트(Animation Event) 이다. 애니메이션 이벤트를 활용하면 클립의 특정 프레임에 직접 함수 호출을 등록할 수 있어 차징 중 이펙트 재생, 발사 순간 사운드 트리거 등 애니메이션 흐름에 맞는 자연스러운 타이밍 제어가 가능하다.
게임 내에 기본 연속 공격을 적용하기 위해 OnAttackHitStart, OnComboWindowOpen, OnAttackEnd 함수를 만들어서 공격 시작할때, 중간(연속 공격 클릭 조건), 공격 끝날 때 애니메이션 타이밍을 제어했다.
public void OnAttackHitStart()
{
_sword.EnableHit();
}
칼에 있는 Collider를 활성화 시켜주는 함수
public void OnComboWindowOpen()
{
_canCombo = true;
}
연속 공격을 받기 위한 함수
public void OnAttackEnd()
{
ResetCombo();
_isAttacking = false;
_sword.DisableHit();
}
공격이 끝날때 콤보 횟수를 초기화하고 sword의 Collider도 비활성화 시켜준다


애니메이션 이벤트를 적용하고 싶은 FBX 파일에서 Events를 찾는다
Events는 계속 닫혀있어서 작업할때마다 열어줘야함

왼쪽 버튼에 이벤트+버튼을 눌러 이벤트를 추가해준다

이벤트에서 호출할 함수명을 적어준다
OnComboWindowOpen, OnAttackEnd도 원하는 프레임에 추가해준다
이때 Animator가 붙어있는 오브젝트에 해당 함수가 있는 스크립트가 붙어있어야 적용이 된다
테스트 결과 영상도 올리고 싶었지만 동영상은 지원 하지않아 패스..