새로 생성한 스크립트
- Test_EulerAngle : eulerAngles함수로 x 무한회전
- Test_Rotate : Rotate() 함수로 y 무한회전
- Test_LocalRotation : 부모 밑에 자식의 오일러 각도 확인
- Test_ParentRotation , Test_ParentRotation_Loacl : 부모 자식 관계의 오브젝트로 주위 회전 예시
- Test_RotateAround : 부모 자식 관계 없이 타겟을 중심으로 주변으로 도는 예시 / 타겟을 보면서 회전하거나 타겟 중심으로 회전하지만 시점 방향은 한쪽 고정 하는 예시
- Test_Transform : 회전 변환(오일러 각도 행렬 곱하기)로 축 회전하면 어떤값이 들어가나 예시(ex. x축에 -90회전을 주면 위쪽 수직으로 보게된다)
- Test_LookRotation : 타겟의 좌표와 자신의 좌표로 방향을 구해서 LookRotation함수를 이용하여 타겟을 바라보는 LookAt함수를 직접 구현 예시
- Test_Slerp : 선형보간과 비슷하지만 사용상황(선형보간은 벡터에 사용해야하고, 구형보간은 회전 또는 구형태 처럼 곡선에 사용한다.)이 다른 구형 보간 확인 예시
- Test_RotateToward : 보간과 비슷하지만 사용상황(보간은 시작부터 목표 각도까지의 중간값을 0~1의 범위로 찾을 수 있게하고, RotateToward는 시작부터 목표각도까지 도달하는 속도를 조절하여 도달하는 함수다.)이 다른 Quaternion.RotateToward 함수 사용 예시
오일러 앵글
- 0 ~ 360도
- 유니티는 오일러 각도를 사용한다.
- 0 ~ 180 이후 그 자리 그대로 -180 ~ 0으로 360도 회전한다.
CUI와 GUI
- CUI : Character User Interface로 문자를 기반한 실행 환경이다.
- CLI라는 컴퓨터 명령 인터페이스를 생각하면 된다.(윈도우의 cmd창)
- GUI : Graphic User Interface로 사용자가 직접 보고 상호작용 할 수 있는 아이콘이나 텍스트을 의미한다.
에디트모드 와 런타임모드
- 에디트모드 : 인스펙터 상에서 게임을 실행하지 않고 설정을 변경하는 방법
- 런타임모드 : 게임을 실행하는 도중 설정을 변경하는 방법
행우선 결합, 열 우선 결합
- 행우선은 왼쪽에서 오른쪽으로 결합한다. (TRS)
- 변환할 대상이 앞에서 들어온다.( 변환할 대상* 행렬)
- 열우선은 오른쪽에서 왼쪽으로 결합한다. (SRT)
- 변환할 대상이 뒤에서 들어온다. (행렬 * 변환할 대상)
회전 변환(열우선 행렬 곱)을 이용한 축회전
- 열우선 회전으로 변화될 값은 앞에, 변화 시킬 값은 뒤에 나온다.
- 회전 방향의 + -는 해당 측면에서 꼬챙이로 꽂고 돌리는 상상을 하면 편하다.
Vector3 direction = new Vector3(0, 0, 1); //전방을 바라보게된다.
Vector3 direction2 = transform.rotation * direction; //rotation은 쿼터니온이다. / *는 회변 변환을 한 것이다. / 열 우선 변환이니 변화할 값은 뒤에온다.
Lerp와 Slerp
- Slerp의 S는 spline이다.
- 회전이나 구형태의 오브젝트는 선형으로 보간하면 안된다.
- 시작부터 끝의 도달점이 선형은 일정하지만, 구나 회전은 곡선이기때문에 시작은 선보다 크고 빠르지만, 중간은 느려지고 마지막에 다시 빨라지기 떄문이다.
- 때문에, 회전과 구형태는 Slerp로 보간을 해야한다.
- 선형보간은 벡터나 스칼라에서만 쓴다.
- 0 ~ 1까지의 범위를 갖고 시작 점부터 목표 각도까지의 범위를 0~ 1로 조절하면서 도달한다.
- 시작점부터 목표 각도까지의 중간각도를 찾을때 사용한다.
- 구형보간은 구면(곡선)에서 사용한다.
- 10분녹음에 보간을 왜 사용하는지 나온다.
Quaternion.RotateTowards
- 보간과 비슷한 기능이지만 사용하는 상황이 다르다.
- ex. 나는 0도 ~ 80도의 각도를 갖고있고 그곳의 중간 각도를 찾고싶어 → 선형보간 Quaternion.Lerp 함수
- 특정 속도를 받아 목표 각도까지 도달할거야 → 구형보간 Quaternion.Slerp함수