1. 좌표계 개념
1.1 월드 좌표(World Coordinate)
- 정의: 맵(게임 세계) 전체를 기준으로 하는 절대적인 좌표계입니다.
- 특징:
- 월드의 0,0,0 지점을 기준으로 x, y, z 축이 고정되어 있습니다.
- 게임 세상 모든 오브젝트가 공유하는 공통 좌표입니다.
- 활용:
- 오브젝트의 절대적인 위치나 방향을 구할 때 사용합니다.
1.2 로컬 좌표(Local Coordinate)
- 정의: 해당 오브젝트가 바라보는 방향을 기준으로 하는 상대적인 좌표계입니다.
- 특징:
- 오브젝트 자체가 기준점이 됩니다.
- 각 오브젝트마다 자신만의 좌표계를 가지고 있습니다.
- 로컬 좌표의 x, y, z 방향은 오브젝트의 방향에 따라 달라집니다.
- 활용:
- 오브젝트를 상대적인 방향으로 이동시키거나 회전시킬 때 사용합니다.
- 예: 플레이어 기준으로 "앞으로 이동" 시, 플레이어의 바라보는 방향이 기준이 됩니다.
2. 로컬 좌표와 월드 좌표 변환하기
2.1 변환 방법
- 아이콘:
- 화면 우측 상단에 있는 지구본 아이콘과 삼각형 아이콘을 클릭하여 변환합니다.
- 지구본 → 월드 좌표
- 삼각형 → 로컬 좌표
2.2 단축키
- Ctrl + ` 를 누르면 로컬 좌표 ↔ 월드 좌표 변환이 가능합니다.
3. 실습: 로컬 좌표와 월드 좌표 활용
3.1 실습 개요
플레이어가 몬스터의 방향으로 이동하도록 설정합니다.
3.2 단계별 실습
- 벡터 타입 변수 생성
- 벡터(Vector): 방향과 크기를 나타냅니다.
- 단위 벡터(Unit Vector): 크기를 1로 정규화한 벡터입니다.
- 각 객체의 위치 가져오기
- Get Actor Location 노드:
- 각 객체(플레이어, 몬스터)의 위치를 벡터값으로 가져옵니다.
- 두 객체 간의 벡터 구하기
- 공식:
[방향벡터=몬스터 위치−플레이어 위치]
- Normalize 노드:
- 위에서 구한 방향 벡터를 정규화(Normalization) 하여 단위 벡터를 생성합니다.
- 단위 벡터를 NormalizedDirection 변수에 저장합니다.
- 플레이어 이동 구현
- Event Tick 노드:
- Set Actor Location 노드:
- 이동 로직:
- 공식:
[새로운위치=현재위치+(단위벡터×속도×DeltaTime)]
- Delta Seconds: 매 프레임의 시간 변화량입니다.
- 속도를 곱하여 프레임마다 일정한 속도로 이동하도록 설정합니다.
- 이동 문제 해결
- 문제: 실행 시 에러가 발생하고 플레이어가 움직이지 않습니다.
- 원인: 객체의 이동 속성이 Static(정적)으로 설정되어 있습니다.
- 해결 방법:
- Mobility 속성을 Movable(이동 가능)로 변경합니다.
- 속도 유동적으로 설정하기
- 단위 벡터에 속도와 DeltaTime을 곱하여 이동합니다.
- 결과:
- 컴퓨터 성능에 상관없이 일정한 속도로 객체가 이동합니다.
- 플레이어의 이동 중단 조건
- Vector Length 노드:
- 두 객체(플레이어와 몬스터) 간의 거리를 구합니다.
- 조건:
- 만약 두 객체 간의 거리가 일정 사거리 이내라면 이동을 멈춥니다.
- Set Actor Location 노드의 실행을 조건에 따라 멈추게 합니다.
4. 월드 좌표와 로컬 좌표의 차이점 요약
구분 | 월드 좌표 | 로컬 좌표 |
---|
기준 | 게임 맵(세상)의 0,0,0을 기준 | 오브젝트의 방향과 위치를 기준 |
좌표 값 | 절대적인 값 | 상대적인 값 |
축 방향 | x, y, z 축이 고정 | 오브젝트의 방향에 따라 x, y, z 축이 변화 |
활용 사례 | 오브젝트의 절대 위치나 방향 계산 | 오브젝트의 상대 이동이나 회전 |
설정 방법 | 지구본 아이콘 | 삼각형 아이콘 |
5. 실습 정리
- 벡터 계산: 두 객체의 위치를 사용해 방향 벡터를 구합니다.
- 정규화: 방향 벡터를 단위 벡터로 변환합니다.
- 이동 구현: Event Tick과 DeltaTime을 활용해 속도에 따라 이동하도록 설정합니다.
- 문제 해결: Mobility를 Movable로 설정하여 이동 가능하게 합니다.
- 조건 추가: 특정 거리 내에 도달하면 이동을 멈추도록 설정합니다.