툴/유니티

Animation Curve 사용하기

스튜디오 오버그래픽스 2022. 2. 26. 01:25

목표한 시간에 도달할때까지 값의 변화를 선(곡선)으로 지정하는 방법.

 

"오브젝트가 10초에 걸쳐서 x축으로 10만큼 자연스럽게 이동하게 만든다."

라고하면 1초에 x축으로 1씩 등속운동을 할수도 있지만, 속력이 서서히 빨라지는 가속도 운동도 있을수 있고, 빠르게 이동후에 서서히 부드럽게 감속할수도 있다.

 

보통 값의 자연스러운 변화를 만들때 mathf.lerp를 썼었지만

-목표한 값에 완벽히 도달하지 못하고 목표값 근처에서만 머물게됌

-값에 도달하게 되는 시간을 정확히 지정해줄수 없음

이러한 단점들이 있었다.

 

이러한 점을 AnimationCurve를 사용해서 보완가능.

스크립트를 만들고 public AnimationCurve를 추가하면

Inspector에서 Animation Curve창이 나옴.

처음엔 빈 창이고 만들고자 하는 가장 적합한 선을 밑에서 선택

기본 선이 그려지고 선에 우측 클릭으로 점을 추가해서 선 형태 변경 가능.

점에 우측클릭을 해서 값을 지정하거나 세부적인 설정 가능.

 

AnimationCurve의 x축은 인풋값(시간)이고 y축은 결과값으로 볼수 있음.

float자료형 i를 AC.Evalute에 넣으면

만든 AnimationCurve에서 i에 해당하는 결과값이 나온다.

 

-활용하기-

목표한 시간동안 AnimationCurve의 형태대로 x축 이동하기

AnimationCurve의 x축은 최대1인 상태로 원하는 곡선 만들기

AnimationCurve의 목표값에 도달할때까지 걸릴 시간을 지정할 변수(GoalTime)생성

게임내에서 흐르는 시간을 지정할 변수(t)생성

실제 시간을 의미하게 하기 위한 코드 " t = t + Time.deltaTime "

시간에 따른 커브의 결과값 코드 " AC.Evaluate(t/GoalTime) "

 

10초 동안 AnimationCurve의 형태대로 값이 변화하게 하기위해서

GoalTime에 "10"을 입력