• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

animator.SetFloat() 함수 질문

19.08.22 21:43 작성 조회수 855

0

 animator.SetFloat("애니파라미터", value , damptime, Time.deltaTime);

PlayerMovement 2 강좌에서 나오는 설명으로는

애니메이션이 이전값에서 지금 설정하려는 값으로 부드럽게 만들어준다고 알려주셧는데요

(이전값이라는게 어떤걸 말하고 지금 설정하려는 값이라는게 어떤걸 말하는거죠? 이전 프레임값? 현재 프레임값?)

제가 이해한 바를 적으면 질문글이 더 어지러워질것 같아서 요약해서 질문드리면

각 파라미터 값의 역할을 알고 싶습니다.

 

Mathf.SmoothDamp(현재, 타겟, 변화량, 현재에서 타겟까지 변화하는 시간)와 달리 이해하기 어렵네요

(무슨 곡선을 그리는지 모르겟지만 대충 처음엔 빠르고 점차 수렴하는걸로 봐서는 로그곡선인가요?)

답변 1

답변을 작성해보세요.

2

이전 값이라는 것은 현재  animator.SetFloat("애니파라미터", value , damptime, Time.deltaTime);이 실행되기 직전에 "애니메이터파라미터"가 당장 가지고 있던 값을 의미합니다.

value는 현재 내가 할당하고 '싶은' 값입니다.

직전의 값을 preValue라고 가정하겠습니다. 값을 부드럽게 이어준다는 의미는, 기본적으로 value에 가까워지도록 값을 변경하되, 지연시간이 클수록 preValue와 value 사이에서 preValue에 더 가까운 값이 찍히게 한다는 의미입니다.

반대로 지연시간이 짧을수록 preValue와 value 사이에서 value에 더 가까운 값이 현재 값으로 찍힙니다. 하지만 그러면 값이 급격하게 변하게 느껴지겠죠.

- 지연시간을 늘려 값의 변화를 부드럽게 이어지도록 그래프를 그리면 그릴수록, value에 가까워지는건 맞는데, 지연시간이 짧은 경우에 비해선 value에 '덜' 가까워진다는 의미입니다.

dampTime은 이전값에서 value에 도달하는데 걸리는데 소요될것이라 가정하는 지연시간입니다. 길면 길수록 value보다는 이전값에 가까운 값이 애니메이터 파라미터에 할당될 것입니다.

Time.deltaTime이 할당된 곳은 이전에 값을 변경한 순간에서 시간이 얼마나 흘렀는지 알기 위해, 이전의  animator.SetFloat() 실행과 현재의 animator.SetFloat() 실행 사이의 시간 간격을 할당하는 곳 입니다. 우리의 예제에서는 직전의 실행과 현재 실행 사이의 시간 차가 Time.deltaTime만큼 나오므로 Time.deltaTime을 할당했습니다.