정의
- 유니티 물리 엔진(Rigidbody) 없이 현재 위치를 기준으로 변위(방향 * 이동거리)만큼 이동
- 기본적으로 로컬 좌표계를 기준으로 이동한다. (월드 좌표계로도 설정 가능하다)
transform.position VS transform.Translate
| transform.position 이동 | transform.Translate 이동 | |
| 이동 방식 | 위치 설정 이동 | 변위 이동 |
| 이동 기준 좌표계 | 월드 좌표 | 로컬 좌표 (월드 좌표 선택 가능) |
| 연산 방식 | 좌표를 직접 계산하여 좌표값을 덮어씌워 이동 단 로컬 이동은 쿼터니언 연산을 해야함. |
Translate 함수가 자동으로 좌표를 계산하여 이동 |
| 사용처 | 순간이동, 좌표 고정, | 특정 지점까지 이동 |
cf) 변위 = 처음 위치와 나중 위치 사이 벡터(직선거리 * 방향)
ex)
using UnityEngine;
// transform.position 이동
public class Example1 : MonoBehaviour
{
private void Update()
{
transform.position += Vector3.forward * 1.0f * Time.deltaTime;
}
}
// transform.Translate 이동
public class Example2 : MonoBehaviour
{
private void Update()
{
transform.Translate(Vector3.forward * 1.0f * Time.deltaTime);
}
}
사용 이유
- 복잡한 연산(Quaternion 연산) 없이 로컬 좌표 이동을 할 수 있기 때문에
- transform.Translate는 기본적으로 로컬 좌표 기준 이동이다. 오브젝트의 Rotation이 변하더라도 변한 Rotation을 기준으로 방향이 설정되고 이동한다.
언제 사용해야 하는가
- 물리적인 충돌이 필요가 없는 단순 플레이어 이동, 지속적인 움직임
- 단순 플레이어 이동 = 상하좌우 이동
- 지속적인 움직임 = 총알, 화살, 구름, 배경 등
- 유니티 물리 엔진(Rigidbody)을 사용하지 않고 일정한 방향으로 이동해야 할 때
- 부모 오브젝트의 회전에 맞춰서 이동해야 할 때
사용 방법
함수 정의
public void Translate(Vector3 translation);
- translation = 이동 방향(Vector3) + 이동 속도(float)
public void Translate(Vector3 translation, Space relativeTo = Space.Self);
- translation = 이동 방향(Vector3) * 이동 속도(float)
- relativeTo = 이동 차원 (월드 좌표 or 로컬 좌표)
- Space.Self = 로컬 좌표
- Space.World = 월드 좌표
ex) 로컬 좌표 기준 z축 방향으로 speed 속도로 이동
using UnityEngine;
public class Example : MonoBehaviouur
{
public float speed = 1.0f;
private void Update()
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
}
ex) 월드 좌표 기준 z축 방향으로 speed 속도로 이동
using UnityEngine;
public class Example : MonoBehaviouur
{
public float speed = 1.0f;
private void Update()
{
transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World);
}
}
transform.Translate 이동 장점
- Quaternion 연산을 Translate 메서드 내부적으로 처리하므로 수학적 실수를 방지할 수 있다.
- Translate 메서드 두번째 매개변수로 기준 좌표를 바꿀 수 있어 유연하다. (로컬 좌표 : Space.Self, 월드 좌표 : Space.World)
transform.Translate 이동 단점
- 유니티 물리 엔진(Rigidbody)을 사용하지 않아 물리 현상을 처리할 수 없다.
- 물리 현상을 직접 구현해야 한다.
- ex) 터널링 현상 = 이동 거리가 벽의 두께보다 커서 오브젝트가 벽을 뚫고 이동하는 현상
'유니티 > 이동' 카테고리의 다른 글
| [유니티(Unity)] 좌표이동 - Vector3.MoveTowards 이동 (0) | 2026.05.05 |
|---|---|
| [유니티(Unity)] 좌표이동 - Vector3.Slerp 이동 (0) | 2026.05.04 |
| [유니티(Unity)] 좌표이동 - Vector3.Lerp 이동 (0) | 2026.05.02 |
| [유니티(Unity)] 좌표이동 - transform.localPosition 이동 (0) | 2026.05.02 |
| [유니티(Unity)] 좌표이동 - transform.position 이동 (0) | 2026.05.02 |