Unity 게임 개발 심화 - 애니메이션 상태정보

오도독·2024년 6월 18일

내배캠

목록 보기
26/26
post-thumbnail

연속 공격 애니메이션을 적용할 방법을 고민하다 첫번째 공격 애니메이션이 진행 중일때 공격키가 한번 더 눌리면 두번째 공격 애니메이션이 실행되도록 하고자해서 애니메이션이 현재 진행중인지 체크하는 방법을 찾아본 결과 GetCurrentAnimatorStateInfo 라는 것을 알게 되었어요.

AnimatorStateInfo

AnimationStateInfo는 애니메이션의 상태정보를 확인할 수 있게 해줘요.
유니티 공식 문서를 보면 다음과 같이 나옵니다.

여러 정보들 중에서 저는 normalizedTime 을 사용했어요.
애니메이션의 정규화된 시간으로 0에서 1사이의 값을 가져서 애니메이션이 플레이중이지 않다면 0,
플레이 중이라면 0~1의 값을 가집니다.
다른 정보들도 다양한 방식들로 사용가능 할것 같아요.

GetCurrentAnimatiorStateInfo

GetCurrentAnimatiorStateInfo 는 현재상태의 정보와 함께 AnimationStateInfo의 값을 반환하는 Animator 클래스의 함수중 하나에요.

GetCurrentAnimatorStateInfo(int layerIndex)

레이어인덱스 값을 받을 매개변수를 사용하는데 이 부분은 잘 모르겠어요.

GetCurrentAnimatorStateInfo(0).IsName("애니메이션 이름")
이렇게 IsName으로 애니메이션 이름으로 상태를 확인할 애니메이션을 정하고 뒤에 AnimatorStateInfo의 정보들중 원하는 정보를 가져오면 돼요.


저는

float animTime = GetCurrentAnimatorStateInfo(0).nomalizedTime;

이런 식으로 해서 애니메이션이 플레이 중인지를 확인하려 했는데 애니메이션이 루프하게 되면 저 시간 값이 1보다 점점 커지기때문에 루프를 하지 않는 애니메이션의 시간값을 활용할때 사용하는것이 적절할것으로 보여요.

0개의 댓글