툴/유니티

[C#] float값을 Remap하기(숫자값을 리맵,맵핑 하기)

스튜디오 오버그래픽스 2021. 8. 13. 17:36

'특정한 최솟값과 최대값을 범위로 가지는 수'최솟값과 최대값을 변경했을때 범위의 비율에 맞춰 값을 계산하는 것을 Remap이라고 표현한다.

ex) 만약 0~30의 범위안에 '20'이라는 숫자는 범위를 (-15) ~ 40 사이로 변경하면 약 21.666이 된다.

이처럼 범위를 변경하되 비율에 맞게 값을 재계산한다.

 

작업을 하다가 게임내의 시간의 변화를 기록할 float자료형인 변수 GameTime을 만들었고, 최솟값과 최대값이 0~24사이의 값을 가지는 변수로 사용했다.

(코드내에서 GameTime이라는 변수는 0~24사이의 값만 가지게되어있음)

그리고 GameTime이 0에서 24까지 변화함에 따라 게임내의 조명의 밝기가 0에서 100까지 커지게 만들고자 했다.

그래서 아래와 같이 remap이라는 함수를 사용했다.

 

사용한 코드 예시

void Update()
    {
        Debug.Log(remap(GameTime,0,24,0,100));
    }
    
public static float remap(float val, float in1, float in2, float out1, float out2)  //리맵하는 함수
    {
        return out1 + (val - in1) * (out2 - out1) / (in2 - in1);
    }

remap함수에 5개의 인자값을 넣어야함.

remap(변수, 변수의 최솟값, 변수의 최대값, 변경할 최솟값, 변경할 최대값)