"게임 개발"을 할 때 중요한 요소는 몇 가지가 있다. 그중 하나가 수학의 실력이다.
보통 "게임 수학"이라고 부르는 과정이다. 이번 글에서는 많은 수학적 메서드를 모아놓은
클래스인 "Mathf" 클래스에 대해서 소개해보도록 하겠다. 개인적으로 많이 좋아하는 클래스이다.
참고로 Mathf에 없는 메서드가 간혹 가다 있는데, 이건 시스템의 쪽의 Math 클래스에 있으니까
인터넷에 나와있는데 Mathf에 없다면 시스템 클래스 안에 있는 Math 클래스로 가보길 권장한다.
https://alpaca-code.tistory.com/189
(이건 거의 확률이 0에 수렴할 것 같긴 한데, 수식을 써야 할 필요가 생긴다면 위의 글을 참고하라)
1. 사용.
사용하려면 Mathf. 메서드의 형태로 입력해 주면 된다.
예시를 하나 들어보겠다. 절댓값을 표현하려면 어떻게 해야 하는가?
float absFunc(float a) {
if(a > 0) {
return a;
} else {
return -a;
}
}
이렇게 한다고 생각했는가? 물론 이것도 좋지만 나는 아래의 코드를 쓸 것 같다.
float absFunc(float a) {
return Mathf.Abs(a);
}
Mathf 클래스 안에 있는 절댓값 함수를 사용한 코드이다.
물론 너무 의존적으로 사용해서는 안 되겠지만 모든 것에 의존하지 않겠다면
당신은 "유니티"라는 사기적인 게임 엔진부터 포기해야 한다.
아무튼 이렇게 Mathf. 을 써준 다음에 원하는 메서드를 써주면 된다.
위의 예시인 Abs의 경우 함수이지만 Mathf.PI의 경우 그냥 값이기 때문에
설명을 읽고 사용하는 것을 추천한다.
https://docs.unity3d.com/kr/2020.3/Manual/class-Mathf.html
2. Mathf 클래스의 기능들
Sin, Cos, Tan, A(rc) Sin, A Cos, A Tan, A tan2 가 있다.
여기서 나오는 A는 arc의 줄임말로 한국어로 표현하면 "역"이다. (반대라는 뜻)
따라서, 사인, 코사인, 탄젠트, 역사인, 역코사인, 역탄젠트이다.
벡터와 같이 활용해서 사용하면 각도를 얻을 수 있기도 하고 많이 응용 가능하다.
최소와 최대, 반내림과 반올림 등 값의 제한에 관한 부분도 있다.
추가로 로그, 상용로그, 앞서 말한 절댓값, 파이값 등도 있다.
자주 사용하는 걸로는 Mathf.pow(a, b)가 있는데, 이건 a의 b제곱이란 뜻이다.
다른 걸로는 제목에서 나온 sqrt가 있다. 제곱근 계산을 해주는 함수이다.
사실 세제곱근, 네제곱근을 바랄 수도 있는데, 지수법칙을 배운 사람이라면
Mathf.pow(a, b)로 n제곱근을 표현할 수 있기 때문에 활용이 중요하다.
3. 게임 수학의 활용
뭐 한 번에 모든 걸 이해할 수는 없는 분야라고 생각한다.
게임 수학은 난도가 낮은 편이 아니며 꾸준히 노력하고 사용하면서 부딪쳐야 한다.
https://alpaca-code.tistory.com/109
방향만을 나타내게 해주는 벡터의 정규화이다. 근데 이건 Mathf 키워드가 아니라
normalized라는 수학적인 메서드를 VectorN 클래스에서 지원해 주는 것이긴 하다.
https://alpaca-code.tistory.com/131
삼각함수 활용의 예시이다.
원형 발사체와 부채꼴 모양 발사체, 벡터 사이의 각도 구하기 등이 있다.
반대로 하면 각도로 벡터를 구할 수도 있다. (활용의 활용)
https://alpaca-code.tistory.com/112
참고로 삼각함수의 값은 라디안 값으로 나오기 때문에 "호도법" 개념을 알아야 한다.
혹시나 모르고 있는데 삼각함수를 써보려고 한다면 위 글을 참고하라.
여기까지 유니티의 수학 클래스, Mathf에 대해서 알아보았다. 개인적으로 정말 좋아하는 클래스이다.
게임 수학에 대해서 아는 게 전무하다면 이 클래스는 크게 중요하지 않다고 생각하긴 하나
어느 정도 성장한 이후에는 난관에 부딪쳤을 때 수학으로 풀어나가는 경우가 많았다.
아무 노력도 안 하고 있다면 조금씩 익혀보는 것을 추천한다.
이상으로 도움이 되었길 바라며,
끝.
'게임 개발 > 게임수학' 카테고리의 다른 글
벡터의 곱셉 - 벡터의 내적. (정의, 계산법, 활용법) (2) | 2024.04.11 |
---|---|
벡터의 외적. (정의, 크기 계산법, 계산 방법, 방향 결정법, 활용법) (0) | 2023.11.03 |
오일러각의 정의, 문제점과 사원수의 특징, 사용이유 (0) | 2023.10.12 |
게임수학) 게임을 만들때 삼각함수를 쓰는 예. (0) | 2023.01.20 |
단위 벡터로 만들기. 벡터 크기 1로 만들기. 벡터의 정규화 하는법. (2) | 2023.01.17 |
댓글