목표
- 오브젝트가 특정 경로를 따라 이동하게 구현
- 좌표와 애니메이션을 이용해 오브젝트가 움직이며 이동하게 구현
오브젝트 이동
오브젝트가 특정 경로를 따라 이동하는 것을 구현하기 전에, 유니티에 존재하는 이동 방법들에 대해 먼저 알아보자. 우리가 어떤 오브젝트를 생성했을 때 그 오브젝트의 인스펙터창을 보게 되면 다음과 같은 Transform 컴포넌트가 항상 존재한다.
이 Transform 컴포넌트는, 유니티 공식 사이트에 따르면 Scene 속 각 Object의 Position(위치), Rotation(회전), Scale(크기)를 결정한다고 쓰여 있다. 쉽게 말해 좌표에 관한 정보를 담고 있다고 생각하면 되겠다. 따라서 이러한 위치를 프레임마다 변경한다면 우리는 마치 이 오브젝트가 이동하는 것처럼 보일 것이다. 이러한 개념에서 착안하여 다음 두 가지 방법을 알아보자.
- transform.Translate
유니티 공식 문서에 따르면 transform의 프로퍼티 중 Translate라는 속성이 존재한다.
사용하는 방법은 다양하지만, 결국에는 물체를 특정 방향 혹은 위치로 이동시킨다는 것이다. 예를 들어 아래에 나와있는 물체를 x축으로 +3만큼 이동시키고 싶다면 다음과 같이 코드를 작성하면 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move : MonoBehaviour
{
void Start()
{
this.transform.Translate(new Vector3(3, 0, 0));
}
}
이러한 코드 외에도 공식 문서에 나와있는 것처럼 다양한 방법으로 translate를 활용할 수 있다.
- transform.position
이또한 유니티 공식 문서에 다음과 같이 정의되어 있다.
Transform의 월드 스페이스 위치를 직접적으로 변경하여 이동한다는 정도로 해석할 수 있는데, 주어진 좌표로만 이동하기 때문에 방향이 따로 고려되지 않는다는 특징이 있다. 위의 예시처럼 (0,0,0)을 기준으로 (3,0,0)으로 이동시키고 싶다면 다음과 같이 작성하면 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move : MonoBehaviour
{
void Start()
{
this.transform.position += new Vector3(3, 0, 0);
}
}
- transform.Translate vs transform.position
그렇다면 두 이동 방법의 차이점은 무엇일까?
지금 보시는 것과 같이 사각형 큐브는 x, z축이 시계방향으로 회전해있다. 그리고 원형 큐브는 반시계방향으로 회전해있다. 이상태에서 사각형에는 transform.position(new Vector3(3,0,0)) 을 이용해 x축으로 3만큼 이동하게 하고, 구에는 transform.Translate(new Vector3(3,0,0)) 을 이용해 x축으로 3만큼 이동하게 하면 어떻게 될까?
구는 월드에서 제시하는 축과 전혀 다른 방향으로 움직였지만, 사각형은 월드에서 제시한 x축을 따라 움직였다. 여기서 두 이동에 관한 차이점을 확인 할 수 있다. Translate를 이용한 이동은 자신의 축을 기준으로 하는, 즉 로컬 좌표를 기준으로 동작하므로 월드에서 가리키는 x축이 아닌 자신의 x축을 따라 이동하였다. 하지만 position을 이용한 이동은 자신의 방향이 어찌되었든 월드에서 제시한 방향을 따라 이동하였다. 이를 통해 두 이동의 차이는 월드 좌표를 기준으로 동작하느냐, 로컬 좌표를 기준으로 동작하느냐에 있다.
요약
- 유니티에서 이동하는 방법은 크게 2가지, transform.Translate와 transform.position을 이용한 방법이 존재한다.
- transform.Translate는 로컬 좌표를 기준으로 동작하고, transform.position은 글로벌 좌표를 기준으로 동작한다.
'Game > Unity' 카테고리의 다른 글
[유니티] 프리팹(Prefabs)과 감지(Detection), 충돌(Collider) (1) (0) | 2023.01.26 |
---|---|
[유니티] 오브젝트 이동 (2) (0) | 2023.01.23 |
[유니티] 단축키, 팁 모음 (0) | 2023.01.19 |
[유니티] 카메라 조작 및 단축키 (0) | 2023.01.18 |
[유니티] 기초 UI (2) | 2023.01.17 |