정의
- 현재 지점(current)에서 목표 지점(target)까지 최대 이동 거리(maxDistanceDelta)만큼 직선으로 등속이동
- 최대 이동 거리 = 매 프레임 이동하는 거리
Vector3.MoveTowards 이동 VS transform.Translate 이동
| Vector3.MoveTowards 이동 | transform.Translate 이동 | |
| 이동 방식 | 목표 지점까지 등속이동 | 변위(방향 * 이동거리)이동 |
| 필요한 정보 | 현재 위치, 목표 위치, 최대 이동 거리 | 이동방향 * 속도, (기준 좌표계) |
| 도착 판정 | 목표 지점에 도달하면 정지 | 목표 지점이 없음. 멈추는 로직이 있지 않으면 무한 전진 |
사용 이유
- 오브젝트를 직선으로 등속이동시키기 위해서
- 목표지점에 정확하게 도착하도록 하기 위해서
언제 사용해야 하는가
- 등속 직선 운동이 필요할 때
- 같은 속도로 움직이는 오브젝트(발판, 구름, UI, 클릭한 위치로 캐릭터 이동 등)
사용 방법
함수 정의
public static Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta);
- current = 시작 지점 위치 (Vector3)
- target = 도착 지점 위치 (Vector3)
- maxDistanceDelta = 이번 프레임에 이동할 거리
ex)
using UnityEngine;
public class Example : MonoBehaviour
{
public Transform endPos;
public float speed = 1.5f;
private void Update()
{
transform.position = Vector3.MoveTowards(transform.position, endPos.position, speed * Time.deltaTime);
}
}

Vector3.MoveTowards 이동 장점
- 목표지점 도달시 오브젝트가 떨리는 현상이 없다. (목표지점까지 정확하게 이동하기 때문)
- 목적지 도달 여부를 판별하기 위한 코드가 필요없다.
- 이로 인해 연산 비용이 낮다.
- transform.Translate, Vector3.Lerp, Vector3.Slerp으로 이동을 구현하면 목적지 도달 판별 코드가 필요함.
Vector3.MoveTowards 이동 단점
- 등속도로 이동하기 떄문에 단조로운 느낌을 준다.
- 시작점(current) 좌표계와 도착점(target) 좌표계를 섞어서 쓰면(시작점은 월드 좌표계, 도착점을 로컬 좌표계) 오브젝트가 이상한 곳으로 이동한다.
-> 좌표계를 통일시켜야 한다. - 오직 목표 지점으로 이동만 고려하기 때문에 주변에 무엇(벽, 낭떠러지)이 있더라도 목표를 향해 전진만 한다.
'유니티 > 이동' 카테고리의 다른 글
| [유니티(Unity)] 좌표이동 - Vector3.SmoothDamp 이동 (0) | 2026.05.06 |
|---|---|
| [유니티(Unity)] 좌표이동 - Vector3.Slerp 이동 (0) | 2026.05.04 |
| [유니티(Unity)] 좌표이동 - Vector3.Lerp 이동 (0) | 2026.05.02 |
| [유니티(Unity)] 좌표이동 - transform.localPosition 이동 (0) | 2026.05.02 |
| [유니티(Unity)] 좌표이동 - transform.Translate 이동 (0) | 2026.05.02 |