Transform

댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
어디에 있는지 (Position) , 얼마나 돌아가 있는지 (Rotation), 얼마나 크기가 변했는지 (Scale) 를 관리하는 컴포넌트입니다.
모든 게임 오브젝트에 반드시 하나 있고 떼어낼 수 없습니다.
Position, Rotation, Scale 모두 X, Y, Z 총 세칸이 있습니다.
세 값을 한 묶음으로 담는 형식이 바로 ==Vector3== 입니다.
| 축 | 방향 | 화살표 색 |
|---|---|---|
| X | 오른쪽 | 빨강 |
| Y | 위 | 초록 |
| Z | 앞 | 파랑 |
| 상수 | 값 | 뜻 |
|---|---|---|
Vector3.zero | (0, 0, 0) | 원점, 또는 아무 방향도 아님 |
Vector3.one | (1, 1, 1) | 세 축이 모두 1 |
Vector3.right | (1, 0, 0) | 오른쪽 |
Vector3.up | (0, 1, 0) | 위 |
Vector3.forward | (0, 0, 1) | 앞 |
반대쪽을 가리키는 Vector3.left·down·back도 있습니다. 값이 각각 음수로 바뀐 것입니다.
뱡향과 크기를 함께 담은 값을 벡터(Vector)라고 합니다.
==Vector3==는 방향과 자리로 사용될 수 있는데
방향으로 쓸 때 중요해지는 것이 길이입니다. 이 값을 돌려주는 것이 ==magnitude== 입니다.
Vector3 right = Vector3.right;
Debug.Log($"VectorLength: right의 길이는 {right.magnitude}입니다.");
출력 :
VectorLength: right의 길이는 1입니다.
길이를 1로 맞춘 같은 방향의 벡터를 돌려주는 것은 ==normalized== 입니다.
방향만 가져오고 크기는 알아서 정하는 용으로 사용됩니다.
Vector3 diagonal = Vector3.right + Vector3.forward;
Vector3 unitDiagonal = diagonal.normalized;
Debug.Log(unitDiagonal.magnitude);
출력 :
1
transform 이나 rotation의 경우 세개의 축 중에 한개의 축만 바꾸고 싶을 때는
세개의 축을 새로 만들어 대입을 해줘야합니다.
필드가 아니라 프로퍼티로 선언되어 있기 때문입니다.
transform.position.x = 1f; -> 컴파일 오류 발생
transform.position = new Vector3(1f, transform.position.y, transform.position.z); -> 올바른 방법
==transform.rotation== 이 돌려주는 것은 ==Quaternion== 이라는 다른 형식입니다.
세계 전체의 원점을 기준으로 한 값 : ==월드좌표==
부모를 기준으로 한 값 : ==로컬좌표==
==localScale== : 부모를 기준으로 한 배율
==lossyScale== : 부모들의 배율까지 전부 곱해진 결과
| 월드 기준 | 로컬 기준 |
|---|---|
position | localPosition |
rotation | localRotation |
eulerAngles | localEulerAngles |
(읽기 전용) lossyScale | localScale |
==transform.Translate(new Vector3(0f, 0f, 5f));==
-> 지금 자리에서 z축으로 5f 만큼 이동하라
==transform.position = new Vector3(0f, 0f, 5f);==
-> 0,0,5의 위치로 이동하라
자기 앞쪽(파란축)이 대상을 향하도록 회전을 통째로 바꿉니다.
대상의 위치가 바뀌면 매 프레임 다시 불러야 합니다.
transform.LookAt(_target);transform.LookAt(new Vector3(0f, 0f, 0f));==transform.LookAt()== 메서드는 오브젝트를 직접 회전하는 반면,
==Quaternion.LookRotation()== 메서드는 회전할 쿼터니언을 생성하는 것 입니다.
transform.LookAt(_targetTransform);
transform.rotation = Quaternion.LookRotation((_targetVector - transform.position).normalized);
현재 쿼터니언과 목표 쿼터니언을 향해 회전하는 쿼터니언을 생성합니다.
이 메서드는 LookAt, LookRotation 메서드와는 다르게 즉시 회전하는 것이 아닌 일정한 속도로 회전합니다.
public static Quaternion RotateTowards(Quaternion from, Quaternion to, float maxDegreesDelta)
from -> 현재쿼터니언
to -> 목표쿼터니언
maxDegreesDelta -> 회전속도
![[Unity] LOD](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1789912609623-ww36y9/_____2026-09-20_225147.png)
LOD 개념 및 연습
코루틴과 UniTask의 차이
의존성 주입 개념
![[Unity] LOD](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1789912609623-ww36y9/_____2026-09-20_225147.png)