오늘은 Mathf 함수를 정리해보겠다.
솔직히 자주 쓰인다가 아니라 매일 아니 매시간,, 쓰일정도이다.
어떤 기능이 있는지 한눈에 보고 내가 필요한 로직에 어떤걸 쓰면 적합할지 파악하고 싶기도 하고
문제가 생겼을때 이게 정확히 어떤 기능을 했는지 알아야 문제파악이 쉽기때문에 한번에 정리를 해두려고 한다.
기능과 게임개발에 적용할만한 부분, 그리고 예제로 정리해보도록 하겠다.
1. Clamp : 특정 값을 min과 max 사이로 제한한다.
ex) 체력, 마나 등의 수치를 0 미만으로 내려가지 못하게 하고 최대치를 지정할 때
Mathf.Clamp(value, min, max)
2. Lerp : 두 값(a,b) 사이를 t의 비율에 따라 선형 보간 한다. (1에서 10으로 바뀐다고하면 바로 바뀌는게 아닌 중간지점을 만들어서 부드럽게 만들어 준다는 뜻)
ex) 오브젝트의 자연스러운 위치이동, 카메라 줌 등 부드러운 전환이 필요할때 많이 쓰인다.
Mathf.Lerp(a, b, t)
3. MoveTowards : current에서 target으로 maxDelta만큼 이동한다.
ex) Lerp와 비슷하게 사용된다. 일정한 속도로 목표에 다가갈때 유용하다. or 틱데미지도 가능
Mathf.MoveTowards(current, target, maxDelta)
4. PingPong : t가 증가할때마다 0과 length사이를 반복하는 값을 반환한다.
ex) 반복하는 움직임 혹은 깜박이는 효과 등 (t 는보통 time.time를 설정함.) t에따라서 재밌는 기능을 만들 수 있을것같음
Mathf.PingPong(t, length)
5. Sin, Cos, Tan : 삼각함수를 통해 주어진 각도(라디안)의 사인, 코사인, 탄젠트 값을 반환
ex) 각도, 회전 등에 사용 (이해도 잘 안되고 쓰기 싫지만 제일 많이 쓰인다.ㅡㅡ;)
Mathf.Sin(angle)
Mathf.Cos(angle)
Mathf.Tan(angle)
6. Atan2 : y와 x의 비율을 사용해, 두 점 사이의 각도를 반환한다.
ex) 2D게임에서 목표 지점의 방향(각도)을 계산할때 유용함
Mathf.Atan2(y, x)
7. Abs : 주어진 값을 절대값을 반환한다.
ex) 거리 계산에 매우 유용함
Mathf.Abs(value)
8. Pow : f의 p제곱을 반환
ex) 걍 잘 안쓰이긴함
Mathf.Pow(f, p)
9. Sqrt : f의 제곱을 반환
ex) 거리계산 등에 사용, 유클리드 거리계산에 자주 사용된다고 한다.(안써봄)
Mathf.Sqrt(f)
10. Max, Min : 여러개의 값 중 가장 큰 값 혹은 가장 작은 값을 반환
ex) 여러 수치의 최댓값 혹은 최솟값을 비교해서 사용할때
Mathf.Max(a, b)
Mathf.Min(a, b)
11. Sign : 주어진 값의 양수와 음수에 따라 1또는 -1을 반환
ex) 방향계산 혹은 방향전환이 필요할 때
Mathf.Sign(value)
12. Floor, Ceil, Round : Floor : 소수점 이하 버림 / Ceil : 소수점 이하 올림 / Round : 소수점을 반올림
ex) 좌표나 속성의 값을 정수 단위로 맞출때, 혹은 정렬에 유용
Mathf.Floor(value)
Mathf.Ceil(value)
Mathf.Round(value)
13. Deg2Rad, Rad2Deg : 각도를 라디안으로 혹은 라디안을 각도로 변환할때 사용
ex) 각도를 이용하여 회전수치를 구하거나, 그 반대일 때 자주 사용됨
Mathf.Deg2Rad
Mathf.Rad2Deg
14. SmoothStep : 부드러운 전환을 제공하는 보간함수, 시작과 끝이 완만하게 이어진다고 한다.
ex) 천천히 가속, 감속할때 사용한다고 한다. UI애니메이션이나 카메라 움직임에 사용됨 (한번써봐야겠음)
Mathf.SmoothStep(from, to, t)
15. Log, Log10 : Log는 자연 로그, Log10은 상용 로그를 반환
ex) 게임의 성장 곡선 혹은 경험치 계산에서 사용됨
Mathf.Log(f)
Mathf.Log10(f)
16. InverseLerp : value가 a와 b사이에서 얼마나 떨어져 있는지 비율로 반환 (0~1사이)
ex) 체력 등의 상황을 UI등에 적용할때 유용함
Mathf.InverseLerp(a, b, value)