매 프레임 Lerp(a, b, 0.1f) 를 쓰면 생기는 일
카메라를 부드럽게 따라가게 하려고 매 프레임 Lerp 에 0.1 을 넣으면, fps 가 높은 기계에서 더 빨리 따라갑니다. deltaTime 을 곱해도 딱 맞지 않습니다. 남은 거리가 곱셈으로 줄어들기 때문이고, 비율을 1 − Exp(−k × deltaTime) 로 주면 fps 와 상관없어집니다. 거듭제곱부터 숫자로 따라갑니다.
Time.deltaTime 을 곱하는 이유
내 컴퓨터에서는 알맞던 캐릭터가 다른 컴퓨터에서는 두 배로 빨라집니다. Update 가 1초에 몇 번 불릴지 모르기 때문이고, deltaTime 은 "한 번에 얼마" 를 "1초에 얼마" 로 바꿔 줍니다.
쿼터니언을 몰라도 쓰는 법
쿼터니언은 "축 하나와 그 축으로 돈 각도" 를 네 숫자에 담은 회전입니다. 네 숫자를 직접 건드리지 않고, 함수로 만들고, 곱해서 합치고, q * v 로 벡터를 돌립니다. 곱하는 순서가 월드 기준과 자기 기준을 가릅니다.
오일러 각: eulerAngles 가 넣은 값과 다르게 나오고 짐벌 락이 생기는 이유
x 를 100 으로 넣은 회전을 읽으면 (80, 180, 180) 이 나옵니다. 오일러 각은 세 축으로 차례로 세 번 도는 것이라 같은 자세를 여러 숫자로 쓸 수 있고, x 가 90 이 되면 두 축이 같은 일을 해서 회전 방향 하나를 잃는 짐벌 락이 생깁니다. 축과 회전부터 따라갑니다.
로컬 좌표와 월드 좌표
같은 (2, 1) 도 월드 기준이면 한 자리, 캐릭터 기준이면 다른 자리입니다. 좌표계와 기저가 무엇인지부터, TransformPoint 가 축을 섞어 월드 자리로 옮기고 InverseTransformPoint 가 내적으로 되돌리는 과정을 작은 숫자로 따라갑니다.