- 수학적으로는 4차원 복소수를 이용한 회전 표현 방법이다. (x, t, z, w) 형태로 표현합니다.
※ 그렇다고 직접 x, y, z, w 값을 조정할 생각은 하지 말 것!! ※- 직접 값을 변경하거나 계산하는 대신, Unity의 내장 함수를 사용하는 것이 좋다.
(e.g. Quaternion.Euler, Quaternion.LookRotation, Quaternion.Slerp 등)
삼각함수는 각도를 통해 삼각형들의 각 변의 비율을 알아낼 수 있는 함수
(삼각함수는 비율을 알기 위해 [각도 -> 비율]을 구하는 함수, 탄젠트(tan)는 그 중에서도 밑변과 높이의 비율)
- 삼각함수에서 아크(arc)-가 붙으면 삼각함수의 역함수인 역삼각함수를 말한다. [각도 -> 비율]이 [비율 -> 각도]가 되는 것이다.
즉, 아크탄젠트 함수는 삼각함수인 탄젠트의 역함수다. 가로와 세로의 비에 따른 각도를 계산하는 데 사용된다.- 2D에서 점 또는 벡터에 대한 각도를 찾는 데 아크탄젠트 함수가 종종 사용된다.
- 여기다가 개발자들이 편하게 쓸려고 한 가지를 더 추가한다.
비율말고도 x, y 자체가 양수인지 음수인지를 360도를 다 구분해낼 수 있게 했다. (원래는 x, y와 같은 부호이지만 둘다 양수, 둘다 음수이거나 x, y가 다른 부호이지만 x가 음수이거나 y가 음수인 상황 때문에 아크탄젠트로는 180도 각도 범위에서만 알아낼 수 있다.)
이러한 구현을 개발자들은 Atan2라고 이름 붙이고, 밑변 / 높이였던 탄젠트의 기본 개념을 적용해 y, x 순으로 인수를 넣는다.- 이를 통해 점 (x, y)에서, Math.Atan2(y, x) 함수를 사용하여 벡터가 x축과 이루는 각도를 [-π, π]까지의 값으로 얻을 수 있다.(π로 표현된 각도를 180도가 되도록 표현하는 방법을 호도법, 그리고 그 단위를 라디안이라고 부른다.)
- Atan2를 활용해서 객체가 특정 방향을 향하도록 만들거나 두 점 사이의 각도를 계산할 때 유용하다.
직렬화는 개체의 상태를 나중에 저장, 전송 또는 재구성할 수 있는 형식으로 변환하는 프로세스다.
유니티에서는 스크립트의 Public 필드만 직렬화할 수 있다. 하지만 [SerializeField]를 사용하면 Private 필드도 직렬화할 수 있다.
열거형은 상수형 값에 의미를 부여하기 위해 사용한다.
비트 연산자는 레이어의 비트 필드를 조작하기 위해 사용된다. 주로 AND (&), OR (|), XOR (^), NOT (~)이 포함되어있다.
- AND (&) : 두 비트 필드 모두에서 해당 비트가 설정되어 있을 때만 결과 비트를 설정한다. 이를 통해 특정 레이어의 존재 여부를 확인할 수 있다.
- OR (|) : 두 비트 필드 중 하나라도 해당 비트가 설정되어 있으면 결과 비트를 설정한다. 이는 새로운 레이어를 추가할 때 유용하다.
- XOR (^) : 두 비트 필드에서 해당 비트가 서로 다를 때만 결과 비트를 설정한다. 이는 두 레이어의 차이를 찾을 때 사용된다.
- NOT (~) : 모든 비트를 반전시킨다. 이는 특정 레이어를 제외시킬 때 유용하다.
비트 시프트 연산 : 1 << n 은 1을 n번째 비트 위치로 시프트한다.
- 오브젝트 풀링은 객체를 미리 생성해 두고 필요할 때 가져다 사용하고, 사용이 끝나면 다시 풀에 반납하는 방식을 말한다.
- 오브젝트 풀링은 생성(Instantiate)과 소멸(Destroy)이라는 비용이 큰 작업을 최소화 함으로써 성능을 향상시키는 데 중요한 역할을 합니다.
- 문자열 비교는 상대적으로 연산 비용이 큰 작업이다. "StringToHash"는 문자열을 고유한 정수 값인 해시 값으로 변환하여 이 연산 비용을 크게 줄일 수 있다.
- 해시 값은 고유하기 때문에 다른 문자열이 동일한 해시 값을 갖는 확률이 매우 낮다.
이를 활용해 문자열을 해시로 변환하면 효율적으로 문자열을 비교할 수 있다.- 또한 "StringToHash" 함수는 문자열을 해시 값으로 변환할 때 일방향으로 작동하기 때문에, 해시 값을 다시 원래의 문자열로 변환하는 것은 불가능하다.