본문 바로가기
개발/Unity

[Unity] 알아두면 유용한 Mathf 클래스 함수 정리

by 슐리반 2020. 7. 29.

안녕하세요 슐리반입니다.

유니티 개발하면서 사용했거나 코드 읽으면서 본 Mathf 클래스 함수를 정리해보려고 합니다.

 

 

Mathf.Abs (float value)

value에 대한 절대값을 반환해준다.

 

 

Mathf.Clamp (float value, float min, float max)

min(최소값)과 max(최대값) 범위 안에서 value값을 반환해준다.

매개변수로(현재좌표, 최소좌표, 최대좌표)로 사용될 수 있고 x와 y축의 범위를 제한시킨다는 의미이다.

 

(사용된 예_줌인/아웃)

Mathf.Clamp(GetComponent<Camera>().fieldOfView,perspectiveZoomMin, perspectiveZoomMax);

 

 

Mathf.PingPong(float value, float Max)
value값이 Max(최대값)에 도달하게 되면 -값이 되고 0이 되면 다시 Max(최대값)까지 +
특정지점을 반복해서 왔다갔다 하는 경우 사용하면 좋다.

(사용된 예_x좌표 이동)

transform.position = new Vector3(Mathf.PingPong(Time.time, 3), transform.position.y, transform.position.z);

x축으로 3만큼 이동 후 다시 0으로 이동 반복

 

 

Mathf.Lerp(float from, float to, float t)

시작점(from)과 종료점(to) 사이의 보간값(0과 1사이의 실수값)(t)에 해당하는 값을 반환한다.

오브젝트를 부드럽게 이동하거나 회전할 시에 사용한다.

Lerp함수는 선형 보간함수라고 한다.

 

유니티 상에서 쉽게 설명하면,

어떤 수치에서 어떤 수치로 값이 변경 되는데 뚝! 바뀌지 않고 부드럽게 변경되고 싶을 때 사용합니다.

 

  • Mathf.Lerp -> 숫자 간의 선형 보간
  • Vector2.Lerp -> Vector2간의 선형 보간
  • Vector3.Lerp(A위치, B위치, 0과1사이의 실수) -> Vector3간의 선형 보간
  • Quaternion.Lerp -> Quaternion간의 선형 보간 (회전)

(사용된 예_A가 B위치로 이동)

Vector3.Lerp(A.transform.position, B.transform.position, Time.deltaTime * speed)

 

 

Mathf.SmoothStep(float from, float to, float t)

Lerp함수와 유사하지만, SmoothStep함수는 모든 값을 Lerp함수와 똑같이 할당하더라도

시간이 흐를 수록 속도가 높아지고, to위치에 다다르면 속도가 점점 줄어드는 효과를 나타낸다.

 


[출처]

"Unity Documentation"

https://docs.unity3d.com/kr/530/ScriptReference/Mathf.html

 

Unity - 스크립팅 API: Mathf

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. 닫기

docs.unity3d.com