부트캠프/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 활용