Unity의 Remap 기능 이해 : 손쉬운 값 매핑

Remap이란?

값을 한 범위에서 다른 범위로 쉽게 매핑할 수 있게 해주는 함수입니다. 선형 보간법을 사용하여 입력 범위 내에서 입력 값의 위치를 ​​기준으로 출력 범위에서 해당 값을 계산합니다.

public static float Remap(float value, float inputMin, float inputMax, float outputMin, float outputMax)
{
    return outputMin + (value - inputMin) * (outputMax - outputMin) / (inputMax - inputMin);
}

주의

inputMax값이 Value보다 낮을 경우 의도한 값이 나오지 않습니다!(즉, value값이 inputMin과 inputMax 사이에 존재해야한다는 뜻입니다!!!)


예시

0에서 1000 범위의 값이 있고 0에서 200 범위의 해당 속도 값에 매핑하려는 상황을 고려해 보겠습니다.

 

float distance = 500.0f; // Input distance value
float minDistance = 0.0f;
float maxDistance = 1000.0f;
float minSpeed = 0.0f;
float maxSpeed = 200.0f;

float speed = Remap(distance, minDistance, maxDistance, minSpeed, maxSpeed);

 

이 예제에서 500의 거리 값은 100이 되는 해당 속도 값에 매핑됩니다. 이는 500의 거리에서 속도가 'Remap' 함수에 의해 정의된 매핑에 따라 100으로 설정됨을 의미합니다.

 


Clamp와 Remap의 차이

Clamp와 Remap의 주요 차이점은 다음과 같습니다.

  • 'Clamp'는 값이 범위를 초과하면 최소 또는 최대로 고정하여 특정 범위로 값을 제한합니다.
  • 'Remap'은 입력 범위와 출력 범위 사이에 선형 보간을 수행하여 한 범위에서 다른 범위로 값을 매핑합니다.

 

  • 'Clamp'는 값이 정의된 범위 내에 있도록 합니다.
  • Remap은 한 범위에서 다른 범위로 비례적으로 값을 변환합니다.

 

  • 'Clamp'는 값을 지정된 범위로 직접 제한합니다.
  • Remap은 입력 범위 내에서 입력 값의 위치를 ​​기준으로 새 값을 계산하고 출력 범위에 매핑합니다.