본문 바로가기
Engine/Unity

Unity Transform Component

by 뇌 속의 통 2024. 10. 19.

Game Object의 가장 기본이 되는 Component

Game Object를 생성 시 처음부터 갖고 있다.

 

Transform에는 Scale, Position, Rotation 3개의 Property가 있으며, 말 그대로 각각 크기, 위치, 회전 값을 저장한다.

Game Object의 trasform 멤버변수로 Transform Component를 호출할 수 있다.

 

1. Rotation

Game Object의 회전 값을 저장하는 변수.

유니티에서는 Quaternion을 기본으로 사용한다. 우리가 흔히 사용하는 오일러각의 경우 짐벌락이라는 문제가 있기 때문이다.

 

다만 쿼터니언은 어려운 개념이기 때문에 제대로 알지 못하면 쓸 수가 없다.

그래서 이번에는 오일러각을 쿼터니언으로 변환해주는 Quaternion.Euler()를 사용하여 값을 계산해주도록 하자.

- 유니티측에서도 쿼터니언을 쓰기 보단 주어진 함수를 사용하도록 권장한다.

 

회전을 시켜주는 방법은 크게 4가지가 있다.

transform.rotate = Quaternion.Eulor(0, 20, 0);

직접 로테이션에 값을 대입하는 방법

 

Vector3 NewVector3 = new Vector3(0, 0, 0);
trasform.Rotate(NewVector3);

Rotate 함수를 이용하여 회전 값을 더해주는 방법

 

Vector3 NewVector3 = new Vector3(0, ,0 ,0);
transform.forward = NewVector3;

오브젝트의 정면 방향을 특정 방향으로 변환 시키는 방법

 

Vector3 NewVector3 = new Vector3(0,0,0);
trasnform.LookAat(NewVector3);

오브젝트가 바라볼 좌표를 지정해주는 방법

 

 

 * 짐벌락: 같은 방향으로 오브젝트의 두 회전 축이 겹치는 현상

- 오일러 각에서는 각 축 하나하나 순서대로 계산하기 때문에 특정한 축들이 겹치는 현상이 발생한다.

겹쳐지게 되면 한축의 계산이 안되는 문제가 발생한다.

 

2. Position

x, y, z축의 값을 받으며, 유니티의 경우에는 왼손좌표계를 사용한다.

x와 y축을 어떻게 설정할지에 따라 Y-up, Z-up이 정해지는데 앞으로 나가는 방향을 y로 설정한 경우 3번째 축인 z가 위로 향하게 되므로 Z-up(언리얼)을 위 방향을 y로 설정한 경우 Y-up(유니티)이 된다.

 

Transform의 Position을 바꾸는 방법은 대표적으로 2가지가 있다.

Vector3 NewPosition = new Vector3(0, 0, 0);
transfrom.position = NewPosition;

Position에 직접 Vector값을 대입하여 해당 위치로 움직이게 만들어주는 방법

- 이는 텔레포트, 리스폰 등과 같이 새로운 위치를 받아서 이동하는 것에 적당하다.

 

Vector3 NewVector3 = new Vector3(0, 0, 0);
trasmform.Translate(NewVector3)

Translate 함수를 이용한다.

전달된 인자값은 Position에 직접 대입하는 것과 달리 계속 해서 더해지는 값이기 때문에 캐릭터가 움직이거나, 물체가 움직일 때 사용하기 적당하다.

 

3.Scale

크기 값을 저장하는 변수

크기 값은 보통 Local 좌표를 기준으로 크기를 조절한다.

World를 기준으로 한 경우 오브젝트의 각도가 다른 경우 Local, World에서 변화하는 Scale이 달라지기 때문이다.

 

trasnform.localscale = new Vector3(0, 0.1, 0);

Local 좌표 기준으로 Scale을 변경하는 방법

 

trasnform.lossyscale = new Vector3(0, 0.1, 0);

World 좌표 기준으로 Sclae을 변경하는 방법

 

Position이나 Rotation은 기본이 World고, 별도의 LocalPosition, LocalRotation 변수가 존재한다.

 

'Engine > Unity' 카테고리의 다른 글

Unity Coroutine  (0) 2025.02.20
Unity Drag & Drop  (0) 2025.02.19
Unity MathF  (0) 2025.02.17
Unity Transform  (2) 2025.02.07
Unity Render Pipeline(URP와 Built-in RP 차이)  (1) 2024.10.24