[Unity C#] 게임 수학

내발은개발내손은개발·2025년 12월 31일

제곱근

: 어떤 수 x에 대해 제곱의 대상 (result=num1^num2)

  • Mathf.Pow(float a,float b)
public float num1 = 2, num2 = 3;

void start(){
	float result = Mathf.Pow(num1, num2);
    Debug.Log(result);
}
64

루트

: 어떤 수의 거듭제곱을 푸는 연산 (√16 = 4)

  • Mathf.Sqrt(float a);
void start(){
	float result = Mathf.Sqrt(16f);
	Debug.Log(result);
}
4

로그

: 거듭제곱을 푸는 연산, Log의 밑 기준 몇 제곱인지 구하는 함수 (log₂(4))

  • Mathf.Log(float a)
void start(){
	float value1 = Mathf.Log10(1000f);
    float value2 = Mathf.Log(4f, 2f); log₂(4)
    Debug.Log("value 1 : " + value1 +", value 2 : " + value2);
}
value 1 : 3, value 2 : 2

반올림, 올림, 내림

  • Mathf.Round(float a) 반올림
  • Mathf.Ceil(float a) 올림
  • Mathf.Floor(float a) 내림

파이

: 원의 둘레

  • Mathf.PI (= 180f)

라디안

:호도법으로 각도를 측정한 단위

  • 도 -> 라디안 Mathf.Deg2Rad
  • 라디안 -> 도 Mathf.Rad2Deg
float rad = degree * Mathf.Deg2Rad; //도 -> 라디안 구하는 방식
float deg = radian * Mathf.Rad2Deg; // 라디안 -> 도 구하는 방식

벡터

: 크기와 방향을 가지고 있는 값

  • Vector3(x,y,z)

두 벡터 사이 거리 구하기

  • Distance : 특정 두 점의 거리 계산 √(x^2 + y^2 + z^2)
  • magnitude : 특정 벡터의 크기 계산 √(x^2 + y^2 + z^2)
  • sqrMagnitude : 특정 벡터의 크기의 제곱 (x^2 + y^2 + z^2)
  • normalized : 정규화된 벡터 (길이가 1인 방향 벡터)

내적 (Dot Product)

: 두 벡터 간의 크기와 방향 관계를 나타내는 연산 (두 벡터의 방향을 확인)

  • Vector3.Dot(Vector3 A, Vector3 B)

외적 (Cross Product)

: 두 벡터로부터 수직인 새로운 벡터를 생성하는 연산 (두 벡터가 이루는 평면의 수직 벡터 변환)
: 크기는 두 벡터로 이루어진 평면의 넓이와 관련

  • Vector3.Cross(Vector3 A, Vector3 B)

반사 (Reflection) (?)

: 입사 벡터와 법선을 기준으로 반대쪽 방향 계산

  • Vector3.Reflect(Vector3 inDirection, Vector3 inNormal) #inDirection : 입사 벡터, inNormal : 반사할 표면의 법선 벡터
Vector3 inDirection = new Vector3(1,-1,0).normalized;
Vector3 inNormal = Vector3.up;

Vector3 reflected = Vector3.Reflect(inDirection , inNormal);

Debug.Log($"입사각 : {inDirection}");
Debug.Log($"반사각 : {reflected}");
입사각 : (0.71, -0.71, 0.00)
반사각 : (0.71, 0.71, 0.00)

선형 보간 (Lerp)

: 두 점 사이의 부드러운 직선 경로

  • Mathf.Lerp(Vector3 a,Vector3 b,float c) #a : 시작 값, b : 도착 값, c : 0~1사이 비율

구면 선형 보간 (Slerp)

: 두 점 사이의 부드러운 둥근 경로

  • Quaternion.Slerp(Vector3 a, Vector3 b, float c)

행렬 (Matrix)

: 공간 변환(이동, 회전, 스케일)을 계산하는 수학 도구

역행렬 (Inverse Matrix)

: 변환을 되돌리는 행렬

회전 행렬 (Rotation Matrix)

: 회전을 행렬로 표현하여 벡터를 회전

오일러 각 (Euler Angles)

: X,Y,Z축을 기준으로 회전을 정의하는 방식

쿼터니언 (Quaternion)

: 4개의 값(x,y,z,w)로 구성된 회전 표현 방식

  • Quaternion.Euler(float x,float y, float z)

0개의 댓글