[Unity] Vector3.Lerp(선형보간)이란?

SunowMin·2025년 1월 13일

Unity

목록 보기
3/3

0. Vector3.Lerp란 무엇일까?

Vector3.Lerp는 두 개의 3차원 벡터(Vector3) 사이를 선형 보간하는 함수



1. 선형 보간(Linear Interpolation)이란 무엇일까?

  • 선형보간이란
    • 두 지점 사이의 값을 일정한 비율로 계산하여 중간값을 구하는 방법으로,
    • 마치 두 지점을 직선으로 연결했을 때, 그 직선 위에 있는 특정 지점을 찾는 것
  • 기본 형태
    • A 지점의 값이 0이고 B 지점의 값이 100이라고 가정했을 때, 이 두 지점의 정확히 중간 지점의 값은 5가 됨
  • 공식
    • A 지점의 값을 ‘a’, B 지점의 값을 ‘b’라고 하고, 두 지점 사이를 ‘t’라는 비율로 보간한다고 가정 (’t’는 0과 1 사이의 값을 가지며, 0은 A 지점을, 1은 B 지점을 나타냄)
    • 보간된 값은 다음 공식으로 계산
      • 결과값 = (1 - t) a + t b
    • 위 공식에 따르면
      • t가 0이면 결과값은 a가 됨
      • t가 1이면 결과값은 b가 됨
      • t가 0.5이면 결과값은 a와 b의 정확히 중간값이 됨


2. 유니티의 Vector3.Lerp는 무엇일까?

  • Vector3.Lerp는 3차원 벡터에 대해 위에서 설명한 선형 보간을 수행하는 함수로, 두 벡터 사이의 중간 벡터를 계산하는 데 사용됨
public static Vector3 Lerp(Vector3 a, Vector3 b, float t);
  • a : 시작 벡터

  • b : 끝 벡터

  • t : 보간 비율 (0과 1 사이의 값)

  • 유니티 코드 예시

    • startPosition에서 endPosition으로 duration 시간 동안 부드럽게 이동
    • t 값을 0과 1 사이로 정규화하여 시간을 비율로 변환하는 것이 핵심
using UnityEngine;

public class LerpExample : MonoBehaviour
{
    public Transform startPosition;
    public Transform endPosition;
    public float duration = 1f;

    private float timeElapsed = 0f;

    void Update()
    {
        if (timeElapsed < duration)
        {
            timeElapsed += Time.deltaTime;
            float t = timeElapsed / duration; // 0과 1 사이의 값으로 정규화

            transform.position = Vector3.Lerp(startPosition.position, endPosition.position, t);
        }
    }
}
  • 유니티에서의 선형 보간(Lerp) 종류


참고. 공식 문서에서의 Vector3.Lerp

https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Vector3.Lerp.html

선언

public static Vector3 Lerp(Vector3 a, Vector3 b, float t);

매개변수

a시작 값, t = 0일 때 반환됨
b끝 값, t = 1일 때 반환됨
ta와 b 사이를 보간하는 데 사용되는 값

반환

Vector3 보간값은 a + (b - a) * t와 같음


설명

두 지점 사이를 선형 보간합니다.

0개의 댓글