최근 개발 중 쪼~~끔 수학 머리를 사용해서 수학 공식을 생각해서 특정 기능을 개발해야하는 순간이 있었는데 수학에 너무 약하기 때문에 고심하고 있을 때 지인 개발자께서 Animation Curve를 사용해보라는 제안을 하셨습니다. Animatin Curve는 존재 자체만 알고있었지 실제로 써본 적이 없었는데 이번에 써보면 너허어어어어무나 유용한 친구인 것을 깨닫게 되었습니다. 보통 수학 공식으로 결과값을 도출 해 내야 하는 경우에 Animation Curve를 쓰면 너무 유용할 것 같습니다.
아래 코드는 AnimationCurve를 사용해서 sphere의 움직임을 wave 처럼 움직이게 한 아주 심플한 예제 코드입니다.
using UnityEngine;
namespace AnimationCurvePractice
{
public class MoverWithAnimationCurve : MonoBehaviour
{
[SerializeField] private AnimationCurve x_animationCurve;
[SerializeField] private AnimationCurve y_animationCurve;
private float curTime;
[SerializeField] private float period = 2f;
void Update()
{
curTime += Time.deltaTime;
if (curTime >= period)
{
curTime -= curTime;
}
float xValue = x_animationCurve.Evaluate(curTime);
float yValue = y_animationCurve.Evaluate(curTime);
transform.position = new Vector3(xValue, yValue, 0);
}
}
}
curTime이 period 만큼 지나게 되면 다시 0으로 바뀌게 됩니다 (curTime -= curTime) 이게 update로 계속 돌고 있습니다. 그리고 이 curTime은 animation curve에서 input 값으로 들어가게됩니다. 위 코드에서는 animation curve가 2개가 있는데 각각 sphere의 x 포지션과 y 포지션을 계산해 줍니다. 아래 사진은 각각 x 값 담당 animation curve와 y 값 담당 animation curve 입니다.
실행을 해보면 아래 동영상과 같이 플레이 됩니다. 실시간으로 animation curve의 graph 모양을 바꿔서 다양하게 연출을 해볼 수도 있겠네요
앞으로 animation curve를 다양하게 써봐야겠네요
'Unity & C#' 카테고리의 다른 글
CustomEditor 활용하기 - Inspector Button만들기 (0) | 2022.04.06 |
---|---|
CustomEditor 활용하기 - bool 값으로 variable 보여주기 (0) | 2022.04.03 |
[C#] for loop에서 Lambda 사용 시 iteration variable 사용 주의 (0) | 2021.12.11 |
[유니티] Unity Remote 5 활용하여 모바일 개발하기 (0) | 2021.12.02 |
[C# 문법] Reference Type 과 Value Type의 차이점 (0) | 2021.11.14 |