유니티

[유니티] Lerp 함수에 대한 이해와 사용

유니티 게임 개발 2025. 2. 21. 21:20

개념

Lerp는 Liner InterPolation(선형 보간법)의 줄임말이다.

여기서 선형 보간법이란,두 끝점의 값이 주어졌을 때, 그 사이에 위치한 값을 추정하기 위하여거리에 따라 선형적으로 계산하는 방식이다.

 

말이 좀 어려운데 쉽게 비유를 들자면,

 

자동차가 A지점에서 B지점으로 이동하는데,A지점에서는 시속 20km로 B지점에서는 80km로 주행했다.그러면 A와 B 중간 지점에서는 몇 키로로 달렸을지 구하려고 한다.당연히 아무도 정확히 알 수 없다.하지만, 주어진 값 끼리 선을 그어, 가장 자연스러운 값을 구할 수 있다.

이렇게 되면, 자동차가 A 지점에서 B 지점까지 이동할 때,

세상에서 가장 부드럽게 속도를 올렸을 때,

중간지점의 속도를 구할 수 있다.

 

 

 

유니티 예제

기본 사용법

OOO.Lerp(a, b, t);

 

a 는 시작점, b 는 도착점이다. t는 시작점과 도착점을 기준으로 t 시간때의 지점을 의미한다. 꼭 시간이 아니라, 수학적 계산을 하면 된다. t = 0.5 라면 a, b 의 중간지점. t = 2 라면, a에서 b로 이동한 거리 만큼 한 번 더 이동한 지점을 의미한다.

 

유니티 예제

using UnityEngine;

public class MoveObject : MonoBehaviour
{
    public Transform startPoint;  // 시작 위치
    public Transform endPoint;    // 목표 위치
    public float speed = 2.0f;    // 이동 속도
    private float t = 0f;

    void Update()
    {
        t += Time.deltaTime * speed; // 시간에 따라 t 증가 (0 → 1)
        transform.position = Vector3.Lerp(startPoint.position, endPoint.position, t);
    }
}

 

위 예제를 보면,

t는 시간에 따라 증가함을 알 수 있다.

때문에 transform.position 은 시간에 따라, startPoint.position에서 endPoint.position으로 이동한다.