유니티/이동

[유니티(Unity)] 좌표이동 - transform.localPosition 이동

RꞮbble 2026. 5. 2. 21:32

 

정의

  • 유니티 물리 엔진(Rigidbody) 없이 부모 오브젝트의 위치를 기준으로 오브젝트의 상대적 좌표를 직접 수정하여 원하는 위치로 이동
  • 로컬 좌표계를 기준으로 이동한다. (부모 오브젝트가 없을 경우 월드 좌표계와 동일하게 이동한다)

 

사용 이유

  • 부모 오브젝트로부터 일정 거리를 유지하며 이동하기 위해서 
  • 오브젝트를 지정된 위치로 정확하게 이동하기 위해
  • 유니티 물리 연산(Rigidbody)을 사용하지 않기 위해서 
  • 순간적인 이동처리를 하기 위해서 
    • ex) 텔레포트, 포탈이동
  • 물리적인 영향을 받지 않는 이동을 처리하기 위해서 
    • ex) 구름 이동

 

언제 사용해야 하는가

  • 부모 오브젝트를 기준으로 자식 오브젝트를 움직여야 할때
    • 캐릭터의 장신구, 무기처럼 부모 오브젝트와 함께 움직여야 하는 물체를 다뤄야 할때 
    • 차량, 방 내부 소품의 위치를 바꿔야 할때 
    • 애니메이션으로 움직이는 부모 오브젝트의 특정 지점에 특정 오브젝트를 고정하거나 위치를 수정할때 
    • 패널 UI(부모 오브젝트) 안에 있는 UI들의 위치를 조정할 때 
  • 오브젝트를 지정된 위치로 정확하게 이동해야 할 때
  • 순간적인 이동을 해야 할 때
  • 물리적인 영향을 받지 않는 이동을 해야 할 때 

 

사용 방법

  • Update에서 transform.localPosition을 수정

 

ex) 

using UnityEngine;

public class Example : MonoBehaviour
{
    public float speed = 1.0f;
    
    private void Update()
    {
        transform.localPosition += Vector3.forward * speed * Time.deltaTime;
    }
}

 

 

transform.localPosition 이동 장점

  • 로컬 좌표계가 기준이므로 Quaternion 연산을 하지 않고 로컬 이동이 가능하다.
    • 부모 오브젝트가 기울어져 있더라도 기울어진 방향대로 움직인다. 
  • 좌표를 직접 설정해 이동하는 것이므로, 정확한 이동이 가능하다. 
  • 유니티 물리엔진(Rigidbody)을 사용하지 않아 연산 비용이 저렴하다. 

 

transform.localPosition 이동 단점

  • 물리 현상을 직접 구현해야 한다. 
    • 직접 구현하지 않으면 오브젝트가 벽을 뚫거나 점프를 할 수 없다. 
    • 캐릭터 오브젝트와 카메라 오브젝트의 이동 타이밍이 어긋나 카메라 오브젝트가 벌벌 떨릴 수 있다. 
      ex) 지터링 현상