본문 바로가기
게임 개발(유니티)/멋쟁이 사자처럼 3기_회고록

[멋쟁이사자처럼 유니티 TIL] 2024_11_26(화) 강의 요약 및 정리

by goraku97 2024. 11. 27.

회전

오일러 회전 : X, Y, Z

  순서대로 하나의 축씩 회전

  0 ~ 360도로 표시된 사람이 알아보기 쉬운 회전값

쿼터니언 회전 : X, Y, Z, W

  가상의 축 기반으로 3축이 동시에 회전

  사람이 알아보기 힘든 회전값

 


[예제] 3차원에서 태양계 회전

Rotate : 특정 축으로 회전 기능

RotateAround : 특정 대상을 기준으로 회전

**** Material 들이 깨진상태로 나온다면, Material Shader를 Standard 로 변경할 것

     (해당 에셋은 Universal Render Pipeline 전용 메터리얼이기 때문에

      Built-in Render Pipeline 렌더링 시스템 사용시, 에셋이 깨질 수 있음)

 

*** 태양을 제외한, 수성, 금성,지구,화성,목성,토성,천왕성,해왕성,명왕성 객체에는  

     해당 컴포넌트의 Target 에 태양을 할당(공전효과 적용)

 

* 해당 컴포넌트의 rotSpeed, rotAroundSpeed 에는 난수(R(1, 50)) 적용

 

- public Transform target;

  // 공전을 할때 필요한 대상을 설정하기위한 코드. 

  //  public 이기 때문에, Inspector 창에서 트랜스폼 타입의 변수선언 가능

 

- public float rotSpeed, rotArtoundSpeed = 0f;

  // 초기값을 선언(상기의 코드에서는 0) 함으로서, 기본값이 0부터

     시작하도록 의도한 것임을 명시함.

  // public 이기 때문에, Inspector 창에서 rotSpeed, rotArtoundSpeed

     의 실수값을 입력가능

 

- void Update()

  // 매 프레임마다 적용이 되야하기 때문에 Update 함수 사용

 

- transform.Rotate(Vector3.up * rotSpeed * Time.deltaTime);

  // 자전을 하기 위한 코드

  // 오브젝트를 특정 축을 기준(transform.Rotate으로, y축을 고정한 상태

     (Vector3.up_ (0, 1, 0))에  rotSpeed Time.deltaTime 를 곱함.

  // 오브젝트가 자기 자신의 y축을 기준으로 프레임 속도와 무관하게 rotSpeed에 따라 회전.

 

- transform.RotateAround(target.position, Vector3.up, 

   rotArtoundSpeed * Time.deltaTime);

   // 공전을 하기 위한 코드

   // 오브젝트를 특정 대상을 기준(transform.RotateAround으로, 공전할 때

      중심이 되는 위치(target.position)와,  y축을 고정한 상태

      (Vector3.up_ (0, 1, 0))에서, rotArtoundSpeed  Time.deltaTime 를 곱함.

   // 오브젝트가 target의 y축을 기준으로 프레임 속도와 무관하게

       rotArtoundSpeed 속도로 회전.