유니티 TransForm

정채운·2023년 12월 6일

유니티의 게임 오브젝트는 항상 하나의 transform 컴포넌트를 갖는다
트랜스폼이 없는 게임 오브젝트의 생성은 불가하다

부모-자식 관계 형성시
부모의 오브젝트가 이동, 회전, 스케일할 때 정확히 동일하게 동작한다

로컬 좌표(Space.Self)

로컬 좌표는 부모를 기준으로 값이 정의 된다
ex) transform.Translate(Vector3.forward * Time.deltaTime); (space.self생략 가능)

글로벌 좌표(Space.World)

게임 세계의 원점 (0,0,0)을 기준으로 값이 정의 된다
ex) transform.Translate(Vector3.forward * Time.deltaTime, Space.World);

  • 어떤 점이든 로컬 및 글로벌 좌표 간에 변환할 수 있도록 해 줍니다.
  • transform.position의 position은 world좌표
  • local좌표를 world좌표로 바꿔주는 transform.TransformDirection()
  • world좌표를 local좌표로 바꿔주는 transform.InverseTransformDirection()

비균등 스케일에 대한 제한사항

비균등 스케일은 몇몇 특정 경우에 유용하지만 보통은 그래픽 렌더링 속도가 느려지기 때문에 사용을 피해야 합니다. 또한 비균등 스케일을 사용하면 균등 스케일에서는 발생하지 않는 이상한 점이 나타날 수 있습니다.

  • 비균등 스케일 : (2, 4, 2)

  • 균등 스케일 : (2, 2, 2)

  • 특정 컴포넌트는 비균등 스케일을 완전히 지원하지 않는데 Sphere Collider, Capsule Collider, Light, Audio Source 등이 예이다
    이러한 컴포넌트의 특징은 radius 프로퍼티에 의해 정의되는 원형 또는 구형 요소를 포함한다

  • 부모가 비균등 스케일일때 자식이 회전을 할 때도 제대로 된 동작을 하지 못할 수 있다.

0개의 댓글