행렬: 크기 · 회전 · 이동을 한 번에 담는 표
부모를 돌리면 자식도 같이 도는 것은 엔진이 꼭짓점마다 행렬을 곱하기 때문입니다. 행렬이 무엇인지부터, 행렬 × 벡터가 열을 섞는 계산이라는 것, 크기 · 회전 · 이동을 TRS 순서로 합치는 이유까지 작은 숫자로 따라갑니다.
투영: 벽에 막힌 이동을 벽을 따라 미끄러지게 바꾸기
벽에 비스듬히 부딪힌 캐릭터가 멈추지 않고 벽을 따라 미끄러지게 하려면, 이동 벡터에서 벽으로 파고드는 조각만 빼면 됩니다. 그 조각을 내적으로 구하는 법과 ProjectOnPlane · Reflect 가 하는 일을 작은 숫자로 따라갑니다.
외적: 왼쪽인가 오른쪽인가
내적은 앞뒤만 알려 주고 왼쪽과 오른쪽은 가리지 못합니다. 외적은 두 벡터에 모두 수직인 벡터를 만들고, 바닥 위의 두 방향이면 그 y 부호가 왼쪽과 오른쪽을 알려 줍니다. 수직 · 법선 · 왼손 좌표계부터 작은 숫자로 따라갑니다.
내적: 적이 앞에 있나 뒤에 있나
백어택 판정과 시야각 판정은 Vector3.Dot 한 줄입니다. 내적은 같은 자리끼리 곱해서 더한 숫자이고, 부호는 앞과 뒤를, 값은 사이각의 cos 를 알려 줍니다.
방향 (x, y) 로 각도 구하기: 총구를 마우스로 돌리는 Atan2
2D 게임에서 총구를 마우스 쪽으로 돌리려면 방향 (x, y) 에서 각도를 구해야 합니다. 세로 ÷ 가로 가 tan 이고, 그 비율에서 각도를 거꾸로 찾는 것이 Atan 입니다. Atan 이 정반대 방향을 가리지 못하는 이유와 Atan2 가 그것을 고치는 과정을 숫자로 따라갑니다.