Ad Block 한번만 꺼주시면 안될까요..?
게임 개발/게임수학

유니티) 제곱근, n제곱 등 수학적 메서드를 사용하는 방법. (Mathf)

UniCoti(유니코티) 2024. 1. 24.

"게임 개발"을 할 때 중요한 요소는 몇 가지가 있다. 그중 하나가 수학의 실력이다.
보통 "게임 수학"이라고 부르는 과정이다. 이번 글에서는 많은 수학적 메서드를 모아놓은
클래스인 "Mathf" 클래스에 대해서 소개해보도록 하겠다. 개인적으로 많이 좋아하는 클래스이다.
 
참고로 Mathf에 없는 메서드가 간혹 가다 있는데, 이건 시스템의 쪽의 Math 클래스에 있으니까
인터넷에 나와있는데 Mathf에 없다면 시스템 클래스 안에 있는 Math 클래스로 가보길 권장한다.
 
https://alpaca-code.tistory.com/189

 

유니티에서 수학 식을 작성하는 방법. -TEXDraw-

유니티에서 수학 식을 작성해야 할 일은 거의 없지만, 나는 개인적으로 수학을 좋아해서 수학 문제를 내는 게임이라면 활용할 수 있을 것 같아 글을 남겨본다. 먼저, 이 글에서는 에셋을 소개한

alpaca-code.tistory.com

(이건 거의 확률이 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

 

중요 클래스 - Mathf - Unity 매뉴얼

Unity의 Mathf 클래스는 게임 및 앱 개발에 일반적으로 필요한 삼각 함수, 로그 함수, 기타 함수를 비롯한 일반적인 수학 함수 컬렉션을 제공합니다.

docs.unity3d.com


2. Mathf 클래스의 기능들

삼각함수 메서드 7개.
삼각함수 7개.

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

 

유니티) 2, 3차원에서 적용 가능한 벡터의 정규화 방법.

위치를 이동시키는 코드를 짜 본 사람이라면 누구나 공감할만한 주제가 하나 있다. 그것은 바로 대각선으로 이동할 때 빠르게 간다는 것이다. 상하좌우로 움직이는 코드를 만들었다면, 상 또는

alpaca-code.tistory.com

 
방향만을 나타내게 해주는 벡터의 정규화이다. 근데 이건 Mathf 키워드가 아니라
normalized라는 수학적인 메서드를 VectorN 클래스에서 지원해 주는 것이긴 하다.
 
https://alpaca-code.tistory.com/131

 

게임수학) 게임을 만들때 삼각함수를 쓰는 예.

1. 원형 발사체. Vector2 dirVec = new Vector2(Mathf.Cos(Mathf.PI * 2 * i / roundNum) , Mathf.Sin(Mathf.PI * 2 * i / roundNum)); rigid.AddForce(dirVec.normalized * 6f, ForceMode2D.Impulse); 2. 부채꼴 모양 발사체. Vector2 dirVec = new Vector2(Mat

alpaca-code.tistory.com

삼각함수 활용의 예시이다.
원형 발사체부채꼴 모양 발사체, 벡터 사이의 각도 구하기 등이 있다.
반대로 하면 각도로 벡터를 구할 수도 있다. (활용의 활용)
 
https://alpaca-code.tistory.com/112

 

각도법, 호도법. (차이점, 사용되는 곳)

이번 글에서는 각도 법과 호도법에 대하여 조금 알아보겠다. 먼저, 각도 법과 호도법은 그 사용하는 의미가 모두 회전에 관한 것이다. 이 두 개념은 모두 회전을 위해 사용되는 것이며, 지금부터

alpaca-code.tistory.com

참고로 삼각함수의 값은 라디안 값으로 나오기 때문에 "호도법" 개념을 알아야 한다.
혹시나 모르고 있는데 삼각함수를 써보려고 한다면 위 글을 참고하라.


여기까지 유니티의 수학 클래스, Mathf에 대해서 알아보았다. 개인적으로 정말 좋아하는 클래스이다.
게임 수학에 대해서 아는 게 전무하다면 이 클래스는 크게 중요하지 않다고 생각하긴 하나
어느 정도 성장한 이후에는 난관에 부딪쳤을 때 수학으로 풀어나가는 경우가 많았다.
아무 노력도 안 하고 있다면 조금씩 익혀보는 것을 추천한다. 


이상으로 도움이 되었길 바라며,
 
끝.

 

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

댓글

💲 추천 글