안녕하세요 슐리반입니다.
유니티 개발하면서 사용했거나 코드 읽으면서 본 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' 카테고리의 다른 글
[Unity] 2차원 배열 inspector 창에서 보여주기 (2) | 2020.08.19 |
---|---|
[Unity] 유니티 두 손가락 터치 드래그하여 카메라 이동 구현하기 (2) | 2020.07.29 |
[Unity] 안드로이드 APK 빌드하는 방법(ver.2019.2) (7) | 2020.07.29 |
[Unity] 카메라 Perspective와 Orthographic 모드 비교 (4) | 2020.07.29 |
[Unity] 손가락 터치 줌인/줌아웃 (0) | 2020.07.28 |