트랜스폼 ( Transform )

2025. 10. 16. 22:19·🧊Unity Basic/트랜스폼

트랜스폼 ( Transform )

모든 오브젝트는 반드시 Transform 컴포넌트를 가지고 있고 , 위치 이동은 이 컴포넌트에서 지원하는 기능을 통해 구현된다.

Transform Component 는 GameObject가 좌표계 상에 위치하기 위해서 꼭 필요한 컴포넌트이다.

그렇기 때문에 모든 GameObject가 기본적으로 가지고 있다.

Transform 을 적절히 사용하기 위해선 게임 수학을 알아야 한다. 캐릭터의 이동과 점프 등 게임 수학이 들어있지 않는 게임은 없다.

그 중 게임 수학의 기본인 벡터와 행렬이 Transform 과 아주 밀접하기 때문에 병행하며 공부해야한다.

유니티에서 Transform 은 모든 게임 오브젝트가 반드시 가지고 있는 기본 컴포넌트
그 오브젝트의 위치 , 회전 , 크기의 정보를 담고 있다.

공간에서의 좌표와 방향, 크기를 담당하는 컴포넌트라고 할수 있다.

오브젝트의 위치 ( Position ) , 회전 ( Rotation ) , 크기 ( Scale ) 정보를 담고 있다.

 

 

1. 주요 구성 요소

속성 설명 예시
Position 월드 좌표계 ( World Space ) 기준의 오브젝트 위치 ( x , y , z )
Rotation 오브젝트의 회전 상태 ( Quaternion ) 으로 저장 transform.rotation = Quaternion.Euler( 0 , 90 , 0 )
Scale 오브젝트의 크기 조정 transhform.localScale = new Vector3 ( 2 , 1 , 1 )

 

1. Position

  • 유니티에서 오브젝트의 위치 정보는 x , y , z 3축으로 구성되어 있다.
  • 유니티에서 Vector3  클래스를 통해 간편하게 다룰 수 있으며, 이를 사용해 게임 오브젝트의 위치 이동을 구현할 수 있다.
// Position을 직접적으로 변경하는 방법
Transform.position = new Vector3(x, y, z);

// Translate 함수를 이용한 축(x, y, z) 기준의 위치이동 방법
Transform.Translate(Direction * Speed);

// 선형 보간을 이용해 거리에 따라 빠르게 이동하며 천천히 감속하는 방법
Transform.position = Vector3.Lerp(StartPosition, EndPosition, Interpolation)

// 목표지점을 향해 일정한 속도로 이동하는 방법
Transform.position = Vector3.MoveTowards(transform.position, Target.Position, Speed);

 

 

2. Rotation

  • 인스펙터의 Transform 컴포넌트에서는 회전값이 포지션과 동일하게 x , y , z 축으로 보여진다.
  • 하지만 내부 동작은 4원소를 사용하는 쿼터니언 ( Quaternion )을 통해 이뤄진다.
  • 이는 연산속도가 빠르고 3축을 사용했을 때의 짐벌락 ( Gimbal Lock ) 현상을 방지하는 데 효과적이다.
  • 쿼터니언은 유니티 입문 시점에서는 이해하기 복잡한 개념이다. 
  • 이 때문에 보다 직관적인 3축으로 조정할 수 있도록 Quaternion 클래스의 Euler 를 사용한다.
// rotation에 값을 직접 지정해 회전하는 방법
Transform.rotation = Quaternion.Euler(x, y, z);

// Rotate 함수를 이용한 회전
Transform.Rotate(Vector3.up, Speed);

// RotateAround를 이용한 중심축 기준으로 회전
Transform.RotateAround(Target.position, Vector3.up, Speed);

// LookAt을 이용한 대상을 향해 회전시키기
Transform.LookAt(Target.position);

 

짐벌락 ( Gimbal Lock )

 

짐벌락은 3D 회전을 사용할 때 발생하는 회전 축 손실 문제이다.

짐벌락에 대한 자세한 내용은 다음 페이지에 정리한다.

짐벌락 ( Gimbal Lock )

▲ 클릭

 

 

3. Scale

직관적인 이름 그대로 게임 오브젝트의 크기를 비율로 지정할 수 있는 요소이다.

// Scale 조절
Transform.localScale = new Vector3(x, y, z);

// lossyScale은 부모 오브젝트의 스케일에 상관 없이 자신 고유의 Scale 수치를 반환
Transform.lossyScale

 

 

2. 자주 사용하는 Transform 관련 함수

함수 기능 예시
Translate( ) 지정한 방향으로 이동 transform.Translate(Vector3.forward * speed * Time.deltaTime)
Rotate( ) 지정한 축으로 회전 transform.Rotate(Vector3.up * 90 * Time.deltaTime)
LookAt( ) 지정한 대상 방향으로 회전 transform.LookAt(target)
SetParent( ) 부모 오브젝트 변경 transform.SetParent(newParent)
GetChild( int index ) 자식 Transform 가져오기 transform.GetChild(0)
Find( string name ) 이름으로 자식 찾기 transform.Find("PlayerModel")

 

 

 

주의 사항

  • Transform 은 게임 오브젝트의 물리적인 상태를 직접 변경한다.
    └ Rigidbody 가 붙은 오브젝트에서는 물리 이동은 Rigidbody를 통해 해야 한다.
    └ ( transform.position 으로 직접 이동 시 물리 충돌이 무시될 수 있다 )
  • Quaternion 회전 값은 사람이 읽기 어렵기 때문에 회전 작업 시에는 Euler 각도로 사용하는 것이 좋다.

 

 

참고 자료

Transform

https://docs.unity3d.com/kr/2021.3/ScriptReference/Transform.html

Quaternion

https://docs.unity3d.com/kr/2021.3/Manual/class-Quaternion.html

 

'🧊Unity Basic > 트랜스폼' 카테고리의 다른 글

Waypoint  (0) 2025.10.19
World Space & Local Space  (0) 2025.10.16
짐벌락 ( Gimbal Lock )  (0) 2025.10.16
'🧊Unity Basic/트랜스폼' 카테고리의 다른 글
  • Waypoint
  • World Space & Local Space
  • 짐벌락 ( Gimbal Lock )
DevHoChan
DevHoChan
맨땅에서 시작하는 코딩 도전
  • DevHoChan
    Debugging Life
    DevHoChan
  • 전체
    오늘
    어제
    • 분류 전체보기 (374)
      • 🕹️Game Life (1)
      • 🖥️Computer Science (5)
      • 📖TIL (141)
        • 🔥Projects (16)
        • 💡DevTips (5)
        • 🤔발생한 문제와 해결 (5)
        • 🔮Unity Graphics (5)
        • 🎤Interview (3)
        • ✅CodingTest (9)
      • 🚀Game Release (4)
      • 🧊Unity Basic (58)
        • 📌용어 사전 (1)
        • 에디터&인터페이스 (3)
        • 디버그 (1)
        • 라이프사이클 (4)
        • 게임오브젝트 (4)
        • 프리팹 (1)
        • 오브젝트풀링 (4)
        • 애트리뷰트 (2)
        • 트랜스폼 (4)
        • 물리&충돌 (1)
        • 프레임&델타타임 (4)
        • 코루틴&이벤트 (7)
        • 수학&보정함수 (3)
        • 디자인패턴 (9)
        • UGUI (3)
        • 벡터 ( Vector ) (3)
        • 씬 ( Scene ) (2)
        • 데이터 관리 (2)
      • ⭐C Sharp (99)
        • 📌용어 사전 (1)
        • 📌문법 사전 (6)
        • 메모리 관리 (3)
        • 00. 문법 (17)
        • 01. 변수 (3)
        • 02. 자료형 (2)
        • 03. 연산자 (6)
        • 04. 조건문 (2)
        • 05. 반복문 (2)
        • 06. 배열 (3)
        • 07. 메서드(함수) (7)
        • 08. 열거형 (3)
        • 09. 구조체 (2)
        • 10. 참조 (2)
        • 11. 객체 지향 (11)
        • 12. 델리게이트 (3)
        • 13. 디자인 패턴 (7)
        • 14. LINQ (1)
        • 📂▼자료구조 (2)
        • 15-1. 제네릭 (3)
        • 15-2. 배열 (4)
        • 15-3. 리스트 (2)
        • 15-4. 스택과 큐 (2)
        • 15-5. 딕셔너리 해시테이블 (2)
        • 15-6. 트리와 그래프 (3)
      • 📊Algorithm (16)
        • BigO (2)
        • 정렬 (4)
        • 셔플 (2)
        • 탐색 (6)
        • 최적화 (1)
      • 📝Game Design (16)
      • 🤖​AI Tools (12)
        • AI 리뷰 분석 (6)
        • Player2 (0)
        • 3D 모델링 (1)
        • 2D 스프라이트 (0)
        • 이미지 (2)
        • 사운드 (1)
        • 동영상 (1)
        • 문서 (1)
      • 🌍Network (6)
      • 🌱Github (11)
        • 기본 개념 (7)
        • 명령어 (1)
        • 도구 활용 (1)
      • ⚙️Visual Studio (5)
        • 🔧설치 및 환경설정 (2)
        • ⌨️HotKey (1)
        • 🚨디버깅 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    유니티
    OOP
    게임기획
    문법
    GitHub
    부트캠프
    til
    기획
    객체지향
    메모리관리
    자료형
    unity
    게임디자인
    CodingTest
    디자인패턴
    c#
    csharp
    gamedesign
    자료구조
    algorithm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
DevHoChan
트랜스폼 ( Transform )
상단으로

티스토리툴바