인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

pandadog님의 프로필 이미지
pandadog

작성한 질문수

유니티(Unity)로 시작하는 게임개발: Part 4. 궁수의 전설 프로토타입 만들기

대기시간을 코드로 구현

GetCurrentAnimatorStateInfo(0).normalizedTime

작성

·

1.2K

0

선생님, 안녕하세요.

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

Has Exit Time을 간단하게 

GetCurrentAnimatorStateInfo(0).normalizedTime

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

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

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

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

답변 3

1

UDevApp님의 프로필 이미지
UDevApp
지식공유자

안녕하세요.

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

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

찾아보니 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

UDevApp님의 프로필 이미지
UDevApp
지식공유자

아뇨 ㅎㅎ 아는척이라니요

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

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

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

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

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

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

감사합니다 ^^

0

pandadog님의 프로필 이미지
pandadog
질문자

네! 선생님!

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

선생님의 강의를 보다가,

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

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

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

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

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

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

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

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

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

pandadog님의 프로필 이미지
pandadog

작성한 질문수

질문하기