선형 보간

Tutorial

Beginner

+10XP

10 mins

(39)

Unity Technologies

선형 보간

게임 제작 시 두 값을 선형적으로 보간하면 유용한 경우가 있습니다. 선형 보간은 Lerp라는 함수를 통해 이루어집니다.

이 튜토리얼은 스크립팅의 기초 프로젝트에 포함되어 있습니다.

이전: LookAt

다음: Destroy

1. 선형 보간

게임 제작 시 두 값을 선형적으로 보간하면 유용한 경우가 있습니다. 선형 보간은 Lerp라는 함수를 통해 이루어집니다. 선형 보간은 주어진 두 값 사이의 일정 비율에 해당하는 값을 찾는 것입니다. 예를 들어 숫자 3과 5를 50%로 선형적으로 보간한 결과는 숫자 4입니다. 4는 3과 5 사이의 50% 지점에 있기 때문입니다.

Unity에는 다양한 유형에 사용 가능한 여러 Lerp 함수가 있습니다. 방금 예를 든 경우에서 이에 상응하는 함수는 Mathf.Lerp 함수이며 다음과 같습니다.

// 이 경우, 결과 = 4
float result = Mathf.Lerp (3f, 5f, 0.5f);

Mathf.Lerp 함수는 3개의 플로트 파라미터를 사용합니다. 하나는 보간 시작 값을, 다른 하나는 보간 끝 값을, 마지막 플로트는 보간 거리를 나타냅니다. 이 경우 보간 값은 0.5로, 50%를 의미합니다. 값이 0이면 이 함수는 '시작' 값을 반환하고, 값이 1이면 '끝' 값을 반환합니다.

Lerp 함수의 다른 예로는 Color.Lerp와 Vector3.Lerp가 있습니다. 이 함수는 Mathf.Lerp와 완전히 동일하게 작동하지만 시작 및 끝 값이 Color 유형과 Vector3 유형입니다. 각각의 경우에 세 번째 파라미터는 그대로 보간되는 양을 나타내는 플로트입니다. 이 두 함수의 결과는 각각 특정 색상 2개를 블렌딩한 색상, 특정 벡터 2개 사이의 일정 비율에 해당하는 벡터가 되겠습니다.

다른 예시를 살펴보겠습니다.

Vector3 from = new Vector3 (1f, 2f, 3f);
Vector3 to = new Vector3 (5f, 6f, 7f);

// 이 경우 결과 = (4, 5, 6)
Vector3 result = Vector3.Lerp (from, to, 0.75f);

이 경우 결과는 (4, 5, 6)입니다. 4는 1과 5 사이의 75% 지점에 있고, 5는 2와 6사이의 75% 지점에 있으며, 6은 3과 7의 75% 지점에 있기 때문입니다.

Color.Lerp를 사용하는 경우에도 동일한 원칙이 적용됩니다. Color 구성에서 색상은 빨간색, 파란색, 초록색, 알파를 나타내는 4개의 플로트로 표현됩니다. Lerp 사용 시 이러한 플로트는 Mathf.Lerp 및 Vector3.Lerp와 마찬가지로 보간됩니다.

상황에 따라 시간이 지나며 값을 매끄럽게 전환하는 데 Lerp 함수를 사용할 수 있습니다. 다음 코드를 살펴보세요.

void Update ()
{
    light.intensity = Mathf.Lerp(light.intensity, 8f, 0.5f);
}

0에서 시작하는 광원 강도는 첫 Update 호출 후 4로 설정되며 그 다음 프레임은 6, 7, 7.5 등으로 설정됩니다. 따라서 여러 프레임을 거치면서 광원 강도는 8로 향하게 되지만 변경 속도는 목표에 다가갈수록 느려집니다. 강도는 여러 프레임을 거치면서 변합니다. 프레임 속도에 구애받지 않으려면 다음 코드를 사용하면 됩니다.

void Update () { light.intensity = Mathf.Lerp(light.intensity, 8f, 0.5f * Time.deltaTime); }

void Update ()
{
    light.intensity = Mathf.Lerp(light.intensity, 8f, 0.5f * Time.deltaTime);
}

그러면 강도는 프레임이 아닌 초를 기준으로 변경됩니다.

값을 매끄럽게 전환하려는 경우 SmoothDamp 함수를 사용하는 것이 가장 좋을 수 있습니다. 매끄러운 전환 효과를 원하는 대로 구현할 수 있는 경우에만 Lerp를 사용하세요.

Complete this Tutorial