부트캠프/Unity [ 스파르타 ]
[ 스파르타 ][TIL] 유니티 스파르타 7기 19일차 - 선형 보간 Lerp
맏난거
2025. 2. 17. 22:12
유니티에서 선형 보간(Linear Interpolation, Lerp)은 두 값 사이를 일정한 비율로 보간하는 기능을 의미해. 주로 움직임, 색상 변화, 애니메이션 등에 많이 사용됩니다.
1. Vector3.Lerp
Vector3.Lerp는 두 벡터 사이를 보간하는 함수입니다.
Vector3.Lerp(Vector3 a, Vector3 b, float t);
- a: 시작 위치
- b: 끝 위치
- t: 0과 1 사이의 값 (0이면 a, 1이면 b, 0.5면 중간값)
예제: 플레이어를 부드럽게 이동시키기
void Update()
{
transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * speed);
}
- targetPosition으로 점진적으로 이동함.
- Time.deltaTime * speed를 곱하면 프레임 속도에 영향을 받지 않고 자연스럽게 이동 가능.
2. Mathf.Lerp
Mathf.Lerp는 두 숫자 값을 보간할 때 사용합니다.
Mathf.Lerp(float a, float b, float t);
- a: 시작 값
- b: 끝 값
- t: 보간 값 (0~1)
예제: 화면 밝기 조절
float brightness = Mathf.Lerp(0, 1, Time.time / duration);
Time.time / duration을 사용해 0에서 1까지 자연스럽게 변화함.
3. Color.Lerp
Color.Lerp는 색상 값을 보간할 때 사용합니다.
Color.Lerp(Color a, Color b, float t);
예제: 색상 변경 애니메이션
void Update()
{
renderer.material.color = Color.Lerp(Color.red, Color.blue, Mathf.PingPong(Time.time, 1));
}
Mathf.PingPong(Time.time, 1)을 사용해서 색상이 계속 전환되도록 함.
4. 선형 보간 응용 (부드러운 감속)
선형 보간은 Lerp만 사용하면 속도가 일정하지만, 부드럽게 감속하려면 Lerp 대신 SmoothDamp를 사용할 수도 있습니다.
Vector3 velocity = Vector3.zero;
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, 0.3f);
SmoothDamp는 부드럽게 감속하며 목표 지점으로 이동함.
정리
- Vector3.Lerp: 위치 보간
- Mathf.Lerp: 숫자 보간
- Color.Lerp: 색상 보간
- 감속 효과를 원하면 SmoothDamp 활용