웨이포인트 ( Waypoint )
웨이포인트는 게임 오브젝트가 이동할 경로상의 위치 지점을 의미한다.
Unity 에 내장된 클래스나 키워드가 아니라 , 개발자가 Transform 좌표를 여러 개 지정하 만든 사용자 정의 지점 집합이다.
경로상의 포인트라는 의미로 많이 사용될 뿐 , Unity 가 특별히 제공하는 클래스나 타입은 아니다.
웨이포인트는 개발자가 경로 이동 시스템을 구현할 때 관례적으로 많이 사용하는 이름이다.
게임 오브젝트 ( NPC , 적 AI , 카메라 등 )가 이동할 경로나 루트를 따라가기 위해 거쳐야 할 위치 정보를 저장한 것이다.
- 순찰하는 경비병이 일정한 길을 반복해서 돌아다닐 때
- 카메라가 특정 경로를 따라 움직일 때
- 자동차 , 드론 , 몬스터가 미리 설정된 길을 따라 이동할 때
이 때 각 지점이 바로 웨이포인트이다.
작동 원리
[SerializeField] private Transform[] waypoints;
- 웨이포인트 배열 ( List or Array ) 에 여러 지점을 등록해둔다.
- 캐릭터가 현재 목표 지점 ( Target Waypoint ) 으로 이동한다
- 해당 지점에 도달하면 다음 웨이포인트로 변경한다
- 모든 웨이포인트를 지나면
└ 다시 처음으로 돌아가거나 ( 루프 )
└ 멈추거나
└ 반대 방향으로 돌아가는 등의 로직을 적용할 수 있다.
예시 코드
using UnityEngine;
public class WaypointMover : MonoBehaviour
{
[SerializeField] private Transform[] waypoints;
[SerializeField] private float speed = 3f;
private int currentIndex = 0;
void Update()
{
if (waypoints.Length == 0) return;
// 현재 목표 지점
Transform target = waypoints[currentIndex];
// 목표지점으로 이동
transform.position = Vector3.MoveTowards(
transform.position,
target.position,
speed * Time.deltaTime
);
// 목표지점에 거의 도달하면 다음으로 전환
if (Vector3.Distance(transform.position, target.position) < 0.1f)
{
currentIndex = (currentIndex + 1) % waypoints.Length; // 루프
}
}
}
핵심 자료 구조
| 개념 | 설명 |
| Transform 배열 | 각 웨이포인트 위치를 저장한다 |
| Vector3.MoveTowards( ) | 오브젝트를 부드럽게 목표 지점으로 이동한다 |
| currentIndex | 현재 도달해야 할 웨이포인트의 인덱스 |
| Distance 비교 | 목표에 거의 도달했는지를 판정한다 |
| 루프 처리 | 마지막 지점 이후 처음으로 되돌아가도록 처리 가능 |
응용 예시
- Enemy Patrol : 적이 지정된 경로를 순찰
- Camera Path : 컷신이나 트레일러에서 카메라가 이동 경로를 따라간다
- Racing Game Track : 차량의 AI 주행 루트
- RTS / RPG : 아군 유닛이 지정한 목적기까지 이동할 때 경로 노드로 사용
정리
Waypoint 는 Transform 좌표를 이용한 이동 경로의 핵심 개념이다
Unity의 내장 키워드가 아닌 , 개발자가 직접 정의하는 위치 정보이며 경로 이동 , 순찰 등 다양한 상황에서 사용한다.
'🧊Unity Basic > 트랜스폼' 카테고리의 다른 글
| 트랜스폼 ( Transform ) (0) | 2025.10.16 |
|---|---|
| World Space & Local Space (0) | 2025.10.16 |
| 짐벌락 ( Gimbal Lock ) (0) | 2025.10.16 |