• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

GetCurrentAnimatorStateInfo(0).normalizedTime

21.03.28 18:26 작성 조회수 928

0

선생님, 안녕하세요.

덕분에 즐겁게 공부하고 있습니다.

Has Exit Time을 간단하게 

GetCurrentAnimatorStateInfo(0).normalizedTime

을 사용하여 구현하는 방법도 있을 것 같은데요.

PlayAnim() 에 아래와 같은 조건을 넣는 것이죠.

우려되는 문제가 있을까요?

if (animator.GetCurrentAnimatorStateInfo(0).IsName("PlayerAttack") && animator.GetCurrentAnimatorStateInfo(0).normalizedTime <= 1.0f)
    return;

답변 3

·

답변을 작성해보세요.

1

안녕하세요.

재미있게 들으시고 계시다니 너무 감사드립니다. ^^

프로그래밍이 답이 있는게 아니니까요. 원하는대로 정확히 동작만 한다면 문제는 없습니다.

찾아보니 normalizedTime 이 애니메이션의 시간을 0에서 1로 구분한 시간이라 1이 끝났다고 생각할수 있겠네요. 

https://docs.unity3d.com/ScriptReference/AnimationState-normalizedTime.html

그래서 구글에서 찾아보니 문제가 조금 있는 것처럼 보이는데 아래 링크의 글 아래쪽에 밑에 분이 해결책을 올려주셨네요. 

https://forum.unity.com/threads/animator-getcurrentanimatorstateinfo-0-normalizedtime-infinity.906236/

테스트를 안해봤는데 나중에 Part4 강의 완료하고 테스트 해보도록 하겠습니다.

우선 강의작업이 안끝나서요 ㅠ 계속 작업하고 있습니다. 

그리고 저같은 경우는 우선 0.583 이 값이 어디에서 나오는지 확인해보고 이 다음다음 강의에서 실제 애니메이션의 시간을 불러와서 코드에서 작업하고 있습니다.  눈에 보이는게 이해가 더 쉬운거 같아서 그렇게 적업을 했었고요. 

그리고 강의를 찍는 당시 normalizeTime 을 몰랐습니다. ㅎ

이런 문제는 사실 원하시는대로 깔끔하게 작동하면 아무 문제 없습니다. 딱히 큰문제가 없어 보이고요.

다시한번 말씀드리지만 프로그래밍에서 답이 하나만 있지 않으니까요. 

질문 감사드리고요. 또 부담없이 질문해주세요 감사합니다. 좋은 밤 되세요.

0

아뇨 ㅎㅎ 아는척이라니요

절대 그렇게 생각하고 말씀드린거 아니고요

혹시 강의 진행에 있어서 더 좋은 방법이 있으면 말씀해주셔도 괜찮습니다

이쪽일이 여러가지 답중에서 하나를 골라서 하는 일이니까요

생각한대로 프로그래밍을 작성할수만 있으면 어떻게 해도 관계없다는 걸 말씀드리고 싶었습니다

저도 계속 배워야 하고요 다른 분들에게 듣고 배워서 알아가는 것도 거부감도 별로 없으니까요

말씀하시고 싶은 내용은 편하게 말씀해주세요

감사합니다 ^^

0

pandadog님의 프로필

pandadog

질문자

2021.03.28

네! 선생님!

저도 normalizeTime 을 원래 알았던 것은 아니에요 ㅎ

선생님의 강의를 보다가,

GetCurrentAnimatorStateInfo 에 대해 자세히 알고 싶어,

구글링 하다가 알게 되었고, 

normalizeTime 을 사용해보니 결과물이 같은 것 같아

그저 확인차 질문 드린 거에요. 

절대 '아는척' 하려고 올린 질문이 아닙니다. ㅠ.ㅠ

선생님 강의로 처음 유니티 시작하는 입문자입니다.

답변 주셔서 정말 감사합니다.

강의 끝날 때까지 화이팅입니다!

저도 끝까지 완주하겠습니다!