게임 오브젝트가 3D 공간 안에서 어떻게 배치되고 변형되는지 학습
좌표계
3D 공간에서는 위치를 표현하기 위해 X, Y, Z 세 축을 사용
Location = (300, 100, 50)
X 방향으로 300
Y 방향으로 100
Z 방향으로 50
World Coordinate
World 좌표는 게임 전체 공간을 기준으로 하는 좌표
World Location = (1000, 0, 0)
게임 월드의 기준점에서 X 방향으로 1000만큼 떨어져 있다는 뜻
| 상황 | 예시 |
| Actor의 절대 위치 확인 | GetActorLocation() |
| 특정 위치에 오브젝트 생성 | SpawnActor |
| 두 Actor 사이 거리 계산 | Target - Start |
| 전체 맵 기준 위치 저장 | Save Data, Map Data |
Local Coordinate
오브젝트 자신을 기준으로 하는 좌표
Actor가 바라보는 방향과 자신의 축을 기준으로 판단
| 상황 | 예시 |
| 캐릭터가 바라보는 방향으로 이동 | Forward Movement |
| 무기 Socket 기준 이펙트 생성 | Weapon Socket VFX |
| 자식 오브젝트 배치 | Parent / Child |
| 회전된 오브젝트 기준 이동 | AddActorLocalOffset |
Actor가 회전하면 Actor의 Local X, Local Y, Local Z축도 함께 회전
→ 같은 X 이동이라도 World X 이동과 Local X 이동은 결과가 달라질 수 있음
World X 이동은 항상 월드의 X축 방향으로 이동
Local X 이동은 Actor 자신의 X축 방향, 즉 Actor가 바라보는 방향 기준으로 이동
World와 Local의 차이
| 구분 | 기준 | 의미 |
| World | 게임 전체 공간 | 레벨의 고정된 축 |
| Local | 오브젝트 자신 | Actor의 회전과 방향 기준 |
Actor를 Yaw 90도로 회전시킨 뒤 이동한다고 가정
- World X 이동 = 게임 월드의 X축 방향으로 이동
- Local X 이동 = Actor 자신이 바라보는 방향 기준으로 이동
Relative Coordinate
부모 오브젝트를 기준으로 하는 좌표
World 이동과 Local 이동 비교
두 함수는 모두 Actor를 이동시키지만 기준이 다름
AddActorWorldOffset(FVector(100.0f, 0.0f, 0.0f));
AddActorLocalOffset(FVector(100.0f, 0.0f, 0.0f));
| 함수 | 기준 |
| AddActorWorldOffset | 월드 좌표 기준 이동 |
| AddActorLocalOffset | Actor 자신의 로컬 좌표 기준 이동 |
Actor가 회전하지 않았다면 두 이동이 비슷하게 보일 수 있지만, Actor를 Yaw 90도로 회전시키면 차이가 명확해짐
Transform
오브젝트가 공간 안에서 어떻게 배치되어 있는지를 나타내는 값
세 가지 정보로 구성
- Location
- Rotation
- Scale
Location (오브젝트의 위치)
Current Location = (0, 0, 0)
Movement = (100, 0, 0)
Next Location = Current Location + Movement
Next Location = (100, 0, 0)
Rotation (오브젝트의 회전)
| 값 | 의미 |
| Pitch | 위 / 아래 방향 회전 |
| Yaw | 좌 / 우 방향 회전 |
| Roll | 좌우로 기울어지는 회전 |
Scale (오브젝트의 크기 배율)
| Scale 값 | 의미 |
| (1, 1, 1) | 원래 크기 |
| (2, 2, 2) | 전체 2배 크기 |
| (0.5, 0.5, 0.5) | 전체 절반 크기 |
| (2, 1, 1) | X축 방향으로만 2배 |
| (1, 1, 0.5) | Z축 방향으로만 절반 |
Scale은 단순히 크기만 바꾸는 값이 아님
실제 프로젝트에서는 여러 요소에도 영향을 줄 수 있음
- Collision 크기
- 물리 반응
- 애니메이션
- 머티리얼 타일링
- 이펙트 크기
- 배치 간격
비균등 Scale은 주의
Uniform Scale = (2, 2, 2)
Non-uniform Scale = (2, 1, 0.5)
메시가 늘어나 보이거나, 충돌 크기와 시각적 크기가 어긋나는 문제를 만들 수 있음
Unreal Transform 관련 함수
| 목적 | 함수 |
| 현재 위치 가져오기 | GetActorLocation() |
| 현재 회전 가져오기 | GetActorRotation() |
| 현재 스케일 가져오기 | GetActorScale3D() |
| 위치 설정 | SetActorLocation() |
| 회전 설정 | SetActorRotation() |
| 스케일 설정 | SetActorScale3D() |
| 월드 기준 이동 | AddActorWorldOffset() |
| 로컬 기준 이동 | AddActorLocalOffset() |
| 월드 기준 회전 | AddActorWorldRotation() |
| 로컬 기준 회전 | AddActorLocalRotation() |
Viewport
Unreal Editor에서 개발자나 아티스트가 레벨을 바라보고 편집하는 작업 화면 (작업자가 보는 화면)
- Actor의 위치
- Actor의 회전
- Actor의 스케일
- Move / Rotate / Scale Gizmo
- World / Local 좌표 전환
- Perspective View
- Camera View
Camera
실제 게임 화면을 결정하는 Actor (플레이어가 보는 화면)
Camera도 Actor이기 때문에 Transform을 가짐
Camera Location = 카메라가 어디에 있는가
Camera Rotation = 카메라가 어느 방향을 바라보는가
Viewport와 Camera의 차이
| 구분 | Viewport | Camera |
| 목적 | 에디터에서 월드 편집 | 실제 게임 화면 결정 |
| 사용자 | 개발자 / 아티스트 | 플레이어 / 게임 로직 |
| 기준 | 작업자의 편집 시점 | Camera Actor |
| 결과 | 에디터 작업 화면 | 플레이 화면 |
'TA' 카테고리의 다른 글
| TA 6강 / 디자인 기초 1, 2 (0) | 2026.07.10 |
|---|---|
| TA 5강 / 기초 물리 (0) | 2026.07.02 |
| TA 4강 / 각도와 삼각함수 기초 (0) | 2026.07.02 |
| TA 2강 / Vector (0) | 2026.06.19 |
| TA 1강 / TA이해하기 (0) | 2026.06.11 |